Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

76 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

茶多楼 chatterrow

翻訳

English | 日本語 | Français | Deutsch | 简体中文 | 繁體中文 | Español | Português (Brasil) | Português (Portugal) | 한국어

業務の一元管理を支える機能をチャットに詰め込みました

Chatterrow サービス紹介

image image image

Laravel 13、Inertia 3、Svelte 5で構築した、Discord風UIのプロジェクト型グループウェアです。

プロジェクトごとにチャンネルを作り、チャット、タスク、ファイル、ガントチャートを一元管理します。リアルタイム配信にはLaravel Reverb、Officeファイルの読取専用プレビューにはONLYOFFICE Document Serverを使用します。

オンプレグループウェアの利点 (茶多楼はApp Server部分のサービスとなります)

image

主な機能

  • プロジェクト管理: プロジェクト名、内容、開始日、終了日、メンバーを設定
  • チャンネル: プロジェクト内の会話・タスク・ファイルをチャンネル単位で整理
  • リアルタイムチャット: Laravel Reverbによるメッセージ、スレッド、返信数の同期
  • 安全なMarkdown: HTMLエスケープ、HTTP(S) URL制限、Shikiコードハイライト
  • 添付ファイル: ファイル/フォルダのD&D、10件単位アップロード、画像・PDF・Officeサムネイル
  • ファイルプレビュー: 画像・PDFの中央ビューア、ONLYOFFICEによるOfficeプレビュー、Escで終了
  • Office/PDFのマークダウン変換保存: バックグラウンドでMarkdown化してAI学習に利用しやすくします
  • タスク管理: 開始日・開始時刻・終了日・終了時刻、優先度、メモ、完了状態
  • ガントチャート: プロジェクトまたはチャンネル単位の期間表示
  • 期限リマインダー: スケジューラとキューワーカーによる自動通知
  • テーマ: ダーク/ライトモード対応
  • キーボード操作: メッセージ送信とタスク作成はCmd+EnterまたはCtrl+Enter。IME確定Enterは送信しません

技術構成

レイヤー 技術
Backend Laravel 13 / PHP 8.5+
Frontend Inertia 3 / Svelte 5 / Tailwind CSS 4 / Vite 8
Database SQLiteまたはPostgreSQL
Realtime Laravel Reverb(WebSocket)
Preview Shiki / ONLYOFFICE / poppler / ImageMagick
Conversion Microsoft MarkItDown 0.1.7(PDF / DOCX / XLSX / PPTX)
Queue Redis / Laravel queue worker
Office ONLYOFFICE Document Server Community Edition(JWT、読取専用)
Production Ubuntu nginx-extras / PHP-FPM / Supervisor / Certbot

本番要件

  • Ubuntu 24.04 LTSまたはUbuntu 26.04 LTS(amd64)
  • PHP 8.5 CLI/FPMとRedis拡張
  • Python 3.10以上、MarkItDown 0.1.7、Redis Server
  • sudoを使用できる一般ユーザー、またはrootユーザー
  • 2 CPU、2 GB RAM、30 GB空きディスク以上(ONLYOFFICE公式推奨は40 GB以上)
  • 4 GB以上のswapを推奨
  • TCP 80/443をインターネットから到達可能にする
  • アプリ用のDNS名

例:

chat.example.com  A/AAAA -> サーバー

ONLYOFFICEはアプリと同じドメインの/onlyoffice/で公開します。ONLYOFFICE、Reverb、アプリ内部取得用の8080、8081、8090番ポートは外部公開しないでください。クラウドファイアウォールやホスト側ファイアウォールでは、SSH用ポートと80/443だけを許可します。

Ubuntu環境への自動セットアップ

新規のUbuntu Serverで本リポジトリを取得してsetup.shを実行します。ドメイン、データベース、Let's Encryptメールアドレスを対話的に確認します。一般ユーザーまたはrootユーザーで実行できます。

apt install -y git

git clone https://github.com/askdkc/chatterrow.git
cd chatterrow
./setup.sh

ローカル開発・検証環境や閉域網など、インターネットからアクセスできる公開ドメインとHTTPSが不要な場合は、--no-sslを付けて実行してください。Let's Encryptは使用せず、HTTPのみで構成します。chatterrow.testなどのローカルドメインを使用する場合は、事前にDNSまたは/etc/hostsでこのサーバーへ名前解決できるようにしてください。

./setup.sh --domain chatterrow.test --database sqlite --no-ssl

setup.sh 実行時にsudoのパスワードを聞かれます。sudoパスワード不要でsudo可能なユーザーの場合は下記の例のように--sudo-nopasswdオプションを付けて実行します。

./setup.sh --sudo-nopasswd

仮にオプションなしで実行した場合、パスワード不要のsudoが検出されると、セットアップを開始せず--sudo-nopasswdの使用方法を表示して終了します。

setup.shを実行後の入力例:

Application domain (e.g. chat.example.com): chat.example.com
Application database:
  1) sqlite
  2) postgresql
Select database (default: 1): 2
Let's Encrypt email (optional): admin@example.com
(中略)
PostgreSQL password (leave blank to generate):

ONLYOFFICEの公開URLはhttps://<アプリドメイン>/onlyofficeです。上の例ではhttps://chat.example.com/onlyofficeです。

セットアップは以下を自動実行します。

  1. Ubuntu公式nginx-extras、PHP 8.5、PostgreSQL、Redis、RabbitMQ、Node.js 24を構成
  2. PHP拡張、Poppler、ImageMagick、Ghostscript、日本語フォントをaptで導入し、ImageMagickの絶対パスを.envへ設定
  3. Python仮想環境.markitdown/venvへMarkItDown 0.1.7を構築し、pip checkとCLIバージョンを検証
  4. PostgreSQLをCPU数と搭載RAMに合わせて調整
  5. PostgreSQL選択時は、実行ユーザー(DEPLOY_USER)と同名のSUPERUSER LOGINロールを構成
  6. ONLYOFFICE Document ServerをJWT有効、内部8080番(ONLYOFFICE_PORTで変更可能)で導入
  7. クローン済みリポジトリへ依存関係、フロントエンド、マイグレーションを適用
  8. nginxでアプリ、ONLYOFFICE、Reverb、ONLYOFFICE内部ダウンロード経路を構成
  9. SupervisorでRedisキュー10プロセス、Reverb、スケジューラをwww-dataとして常駐
  10. Certbotで証明書を発行し、certbot.timerとnginx reload hookを有効化
  11. unattended-upgradesでnginxを含むUbuntuセキュリティ更新を日次適用
  12. PHP 8.5、Redis、PostgreSQL、ONLYOFFICE、Supervisor、アプリのヘルスチェックを実行

nginxはUbuntuのAPTパッケージだけを使用します。

macOSローカルOnlyOffice

macOSではLinux用のOnlyOfficeパッケージをインストールせず、AppleのcontainerでDocumentServerを起動します。Apple siliconとmacOS 26以降が必要です。

  1. Apple Containerをインストールします。
  2. brew install imagemagickでImageMagickをインストールします。
  3. Laravelアプリの.envを用意します。存在しない場合、setup.sh.env.exampleをコピーします。
  4. APP_URLを実際のローカルURLに合わせます。
  5. リポジトリのルートでセットアップを実行します。macOSでは--domain--databaseは不要です。
cd /path/to/chatterrow
./setup.sh

既存の.env全体を上書きすることはありません。更新対象は次のONLYOFFICE設定と、検出したImageMagickの絶対パスです。

ONLYOFFICE_ENABLED
ONLYOFFICE_DOCUMENT_SERVER_URL
ONLYOFFICE_PUBLIC_URL
APP_ONLYOFFICE_INTERNAL_URL
ONLYOFFICE_JWT_SECRET
ONLYOFFICE_ALLOW_DOWNLOAD
ONLYOFFICE_ALLOW_PRINT
IMAGEMAGICK_PATH

macOS開発時:Valet・Herd・artisan serveの自動判定

setup.shvaletherdコマンドの有無、APP_URL/up127.0.0.1:<ポート>/upの応答を確認して接続方法を選択します。Valet/Herd側とartisan serve側の両方が応答する場合は、APP_URLのValet/Herd側を優先します。

開発サーバー .envAPP_URL 自動設定されるAPP_ONLYOFFICE_INTERNAL_URL
Laravel Valet http://chatterrow.test http://chatterrow.test
Laravel Herd http://chatterrow.test http://chatterrow.test
php artisan serve http://localhost:8000 http://chatter-host.container.internal:8000

artisan serveを使う場合は、セットアップ前またはプレビューを開く前に起動します。

php artisan serve --host=127.0.0.1 --port=8000

自動判定を上書きする場合:

MACOS_APP_SERVER=artisan ./setup.sh
MACOS_APP_SERVER=artisan MACOS_ARTISAN_PORT=9000 ./setup.sh
MACOS_APP_SERVER=valet ./setup.sh
MACOS_APP_SERVER=herd ./setup.sh

セットアップは以下を行います。

  • container system startでApple Containerを起動
  • onlyoffice/documentserver:latestを毎回pullし、arm64で起動
  • OnlyOfficeを127.0.0.1:8086へ公開
  • CPU 4、メモリ4 GB、共有メモリ2 GBを割り当て
  • コンテナのDNSサーバーを1.1.1.1へ固定
  • JWTを有効化し、.envへ共有秘密鍵を設定
  • macOSでsetup.shを実行するたび、名前付きボリュームを残してOnlyOfficeコンテナを再作成
  • chatter-host.container.internal203.0.113.150経由でmacOSのloopbackへ接続
  • Valet/Herdではアプリのホスト名をコンテナ内だけ203.0.113.150へ割り当て
  • 選択言語に対応するSource Han Sans/Noto Serif CJKを取得・検証し、OnlyOfficeのフォント一覧を再生成
  • ONLYOFFICE_DOCUMENT_SERVER_URLONLYOFFICE_PUBLIC_URLAPP_ONLYOFFICE_INTERNAL_URLを更新
  • DocumentServerとLaravelの/upをヘルスチェック

DNSサーバーを上書きする場合は環境変数を指定します。値はIPv4アドレスで指定してください。

Cloudflareの1.1.1.1からGoogleの8.8.8.8に変更して実行する例:

MACOS_CONTAINER_DNS=8.8.8.8 ./setup.sh

永続データには次の名前付きボリュームを使用します。

chatterrow-onlyoffice-data
chatterrow-onlyoffice-logs
chatterrow-onlyoffice-cache
chatterrow-onlyoffice-postgresql

コンテナの確認・停止:

container list
container logs chatterrow-onlyoffice-documentserver
container stop chatterrow-onlyoffice-documentserver

ヘルスチェック:

curl -fsS http://127.0.0.1:8086/healthcheck
container exec chatterrow-onlyoffice-documentserver \
    curl -fsS --max-time 5 "$(sed -n 's/^APP_ONLYOFFICE_INTERNAL_URL=//p' .env)/up"

コンテナとボリュームの完全初期化テスト

次の操作はOnlyOffice内部のPostgreSQL、設定、キャッシュ、ログを削除します。必要なデータがある場合は実行しないでください。

container stop chatterrow-onlyoffice-documentserver
container delete chatterrow-onlyoffice-documentserver
container volume delete \
    chatterrow-onlyoffice-data \
    chatterrow-onlyoffice-logs \
    chatterrow-onlyoffice-cache \
    chatterrow-onlyoffice-postgresql
./setup.sh

Apple Containerの名前付きボリュームcontainer run --volume <名前>:<パス>で存在しない場合に暗黙に作成されるため、上記手順でボリューム作成を含む初期構築を確認できます。

CJKフォントとPDF出力

--languagejazh_CNzh_TWkoを指定すると、地域ごとに異なる漢字字形を混在させないため、対応するCJKフォントを選択します。Ubuntuではfonts-noto-cjkをOnlyOffice導入前にインストールし、中国語・韓国語を選んだ場合は下表の固定フォントも/usr/share/fonts/opentype/chatterrowへ取得してOnlyOfficeカタログを再生成します。macOSでは隔離されたOnlyOfficeコンテナのカスタムフォント領域へ同じフォントを登録します。

言語 ゴシック/画面向け 明朝・宋体向け
ja Source Han Sans JP Noto Serif CJK JP
zh_CN Source Han Sans CN Noto Serif CJK SC
zh_TW Source Han Sans TW Noto Serif CJK TC
ko Source Han Sans KR Noto Serif CJK KR

Source Han Sansは2.005Rの地域別subset OTF(Light / Regular / Bold)、Noto Serif CJKはSerif2.003の言語別OTF(Regular / Bold)に固定しています。いずれもSIL Open Font License 1.1です。

ガントチャートのPDF出力では、zh_CNzh_TWkoを選択したセットアップ時に、jsPDFで検証済みのSource Han Sans 2.005R地域別Variable TTFもpublic/fontsへダウンロードします。日本語版TTFはリポジトリに同梱済みです。PDF生成時は現在の表示言語からJP/CN/TW/KRを選択します。

フォントはchatterrow-onlyoffice-dataボリューム内の/var/www/onlyoffice/Data/custom-fontsへ保存されます。セットアップを再実行した場合はコンテナ内ファイルのSHA-256を確認し、一致していれば再ダウンロードしません。

固定ウェイト版の登録後、setup.shは既存のAllFonts.jsfont_selection.binを削除してからallfontsgenを実行します。既存ファイルを残すとallfontsgenがカタログを再利用し、新しいフォントを登録しない場合があるためです。

OnlyOffice 9.4のconverterは、Microsoft OfficeのCJKテーマフォントをNanumGothicDroid Sans Fallbackへ置換する場合があります。fontconfigのaliasだけではこの変換経路に効きません。そのためscripts/patch-onlyoffice-font-catalog.phpが、サーバー側font_selection.binとブラウザ側2個のAllFonts.jsへ言語別の補正を適用します。

  • 日本語: Yu Gothic/Meiryo系とYu Mincho/MS Mincho系
  • 簡体字: Microsoft YaHei/SimHei系とSimSun/FangSong系
  • 繁体字: Microsoft JhengHei系とMingLiU/PMingLiU系
  • 韓国語: Malgun Gothic/Gulim系とBatang系
  • converterのNanumGothicDroid Sans Fallback参照を、選択言語のSans/Serif実体へ変更

このカタログはDOCX、XLSX、PPTXの変換とブラウザ表示で共用されます。補正後にJSキャッシュを生成し、docserviceとconverterを再起動してからDocumentServerのキャッシュを消去します。カタログ形式や必須フォント名が将来のlatestで変わった場合は、誤ったカタログを使わずセットアップをエラー終了します。

標準のdocumentserver-generate-allfonts.shは不要なプレゼンテーションテーマも再生成し、Apple Container環境ではその工程が終了しない場合があるため呼び出しません。

フォントカタログ更新時はOnlyOfficeの文書キャッシュ世代も変わるため、既に開いたDOCXも古いEditor.binを再利用せず再変換されます。

既存コンテナがGenerating presentation themesで応答しなくなっている場合も、そのまま./setup.shを再実行してください。macOSでは実行のたびにonlyoffice/documentserver:latestをpullし、既存のOnlyOfficeコンテナを強制的に作り直します。上記4個の名前付きボリュームは削除しないため、OnlyOfficeの永続データは保持されます。

MicrosoftのCJKフォントは同梱・再配布しません。OnlyOfficeコンテナ内では次の代替設定を使用します。

Office指定フォント(DOCX / XLSX / PPTX) 代替フォント
游明朝 / Yu Mincho / MS Mincho Noto Serif CJK JP
游ゴシック / Yu Gothic / Meiryo / MS Gothic Source Han Sans JP
Microsoft YaHei / SimHei Source Han Sans CN
SimSun / NSimSun / FangSong Noto Serif CJK SC
Microsoft JhengHei Source Han Sans TW
MingLiU / PMingLiU Noto Serif CJK TC
Malgun Gothic / Gulim / Dotum Source Han Sans KR
Batang / BatangChe Noto Serif CJK KR

文字欠けと不適切な欧文フォントへの置換は解消しますが、游フォントとの字幅差があるため改行位置やページ数まで完全一致する保証はありません。完全一致が必要なら、利用許諾を確認した游フォント実体をOnlyOfficeのカスタムフォント領域へ別途配置してください。

登録状態の確認:

container exec chatterrow-onlyoffice-documentserver \
    awk '$1 == "nameserver" { print $2 }' /etc/resolv.conf
container exec chatterrow-onlyoffice-documentserver \
    fc-match '游明朝:lang=ja'
container exec chatterrow-onlyoffice-documentserver \
    fc-match '游ゴシック Light:lang=ja'

期待値は順に1.1.1.1NotoSerifCJKjp-Regular.otfSourceHanSansJP-Light.otfです。

macOSではOnlyOfficeの編集権限は付与せず、ReadOnlyプレビューのままです。DocumentServerの変換APIを利用する場合も、このReadOnly設定とは独立して使用できます。

非対話セットアップ

Ubuntuの自動化環境では--domain--databaseが必須です。macOSローカルOnlyOfficeセットアップでは不要です。

./setup.sh \
    --domain chat.example.com \
    --email admin@example.com \
    --database postgresql

オプション

オプション デフォルト 説明
--domain <domain> 対話入力 アプリの公開ドメイン
--email <email> Let's Encrypt登録・期限通知メール
--database <driver> 対話時はsqlite sqliteまたはpostgresql
--language <locale> 既存.envまたはja enjazh_CNzh_TWkoなど
--db-name <name> chatterrow アプリ用PostgreSQL DB名
--db-user <name> chatterrow アプリ用PostgreSQLロール
--db-password <password> 自動生成 アプリ用PostgreSQLパスワード
--app-dir <path> setup.shのあるリポジトリ /homeまたは/var/www配下の配備先
--repo <url> GitHub SSH URL 配備するGitリポジトリ
--onlyoffice-image <image> onlyoffice/documentserver:latest macOSで毎回pullして使用するDocumentServerイメージ
--sudo-nopasswd off パスワード無しsudoユーザー向け。sudo -vを省略
--no-ssl off Certbotを省略しHTTPで構成

同名の大文字環境変数も使用できます。例: DOMAINDATABASEDB_NAMEDB_USERDB_PASSWORDDEPLOY_USERSUDO_NOPASSWDONLYOFFICE_PORTONLYOFFICE_JWT_SECRET

PostgreSQLパスワードを省略すると64桁のランダム値を生成し、次の場所へ保存します。

/etc/chatterrow/database-password  root:root 0600
/home/ubuntu/chatterrow/.env       <deploy-user>:www-data 0640

PostgreSQLを選択した場合、実行ユーザー(DEPLOY_USER、未指定時は一般ユーザー実行ならid -un、root実行ならroot)と同名のPostgreSQLロールをLOGIN SUPERUSERとして作成または更新します。アプリ接続用のDB_USERは別の非特権ロールとして維持されます。

PostgreSQL自動調整

PostgreSQLはONLYOFFICEでも必要なため、アプリでSQLiteを選んだ場合もインストール・調整します。Ubuntu上に複数のPostgreSQLクラスタがある場合は、誤ったクラスタを変更しないようセットアップを停止します。

設定ファイル:

/etc/postgresql/<version>/<cluster>/conf.d/99-chatterrow-tuning.conf

主な計算基準:

設定 基準
shared_buffers RAMの20%、128 MBから8 GBの範囲
effective_cache_size RAMの60%、256 MBから64 GBの範囲
maintenance_work_mem RAMの5%、64 MBから1 GBの範囲
work_mem RAM、shared_buffers、最大接続数から安全側に算出
max_connections CPUとRAMから50から300の範囲で算出
parallel workers CPU数から算出し上限を設定

このサーバーではPHP、ONLYOFFICE、Redis、RabbitMQも同居するため、PostgreSQL専用サーバーより保守的な割り当てです。再実行すると現在のCPU数とRAMから再計算されます。

ポート構成

Ubuntu本番環境:

ポート 用途 公開範囲
80 / 443 nginx、Certbot、公開Web インターネット
8080 ONLYOFFICE Document Server localhost向け
8081 Laravel Reverb localhost向け
8090 ONLYOFFICEから署名済みファイルを取得 127.0.0.1のみ
5432 PostgreSQL ローカル接続を推奨

macOSローカル環境:

ポート 用途 公開範囲
8086 Apple Container上のONLYOFFICE Document Server 127.0.0.1のみ
8000 php artisan serveの既定ポート 127.0.0.1のみ

Valet/Herd使用時、LaravelアプリはAPP_URLのホスト名と通常のHTTP/HTTPSポートで動作します。artisan serveのポートはAPP_URLまたはMACOS_ARTISAN_PORTから決定します。

SSLと自動更新

Certbotは/var/www/letsencryptを固定ACME webrootとして使用し、challengeをLaravelへ渡さずにアプリドメインの証明書をnginxへ設定します。同じ証明書で/onlyoffice/も配信します。certbot.timerが更新時期を定期確認し、更新成功後にnginxをreloadします。セットアップ時にはdry-runも実行します。

unattended-upgradesはUbuntuのsecurity originを日次で確認し、nginxnginx-extras、対応するlibnginx-mod-*を依存関係ごと更新します。nginx以外のセキュリティ更新も維持します。通常の-updates pocketは自動適用しません。

sudo systemctl status certbot.timer
sudo certbot certificates
sudo certbot renew --dry-run
sudo systemctl status apt-daily-upgrade.timer
sudo unattended-upgrade --dry-run --debug

運用

プロセス確認

php8.5 --version
php8.5 -m | grep -E 'redis|pdo_sqlite|pdo_pgsql'
redis-cli ping
sudo supervisorctl status 'chatterrow-queue:*'
sudo supervisorctl restart 'chatterrow-queue:*'
sudo supervisorctl restart chatterrow-reverb chatterrow-schedule
sudo tail -f /var/log/chatterrow-queue_*.log /var/log/chatterrow-queue-error_*.log

Queueワーカーは/usr/bin/php8.5 artisan queue:work redis --sleep=3 --tries=5 --max-time=3600を10プロセスで実行します。10件すべてがRUNNINGであることを確認してください。

Markdown変換の再処理

失敗したファイルと、一定時間更新されていないpendingprocessingファイルを再投入します。

php artisan files:markdown
php artisan files:markdown --server=1 --stale-after=900
php artisan queue:work redis --once

files:markdownは旧Office形式(DOC、XLS、PPT、ODF)をMarkdown変換対象にしません。これらのONLYOFFICEプレビュー機能は引き続き利用できます。

アプリ更新

同じ設定でsetup.shを再実行できます。既存のPostgreSQLパスワードとTLS有効nginx設定は保持され、Gitはfast-forward可能な場合だけ更新されます。

cd /path/to/chatterrow-source
./setup.sh --domain chat.example.com --database postgresql --email admin@example.com

バックアップ

SQLite:

sudo install -d /backup
sudo -u www-data sqlite3 /home/ubuntu/chatterrow/database/database.sqlite \
    ".backup /backup/chatterrow-$(date +%F).sqlite"
sudo rsync -a /home/ubuntu/chatterrow/storage/app/ /backup/storage-app/
sudo rsync -a /home/ubuntu/chatterrow/storage/markdowned-docs/ /backup/markdowned-docs/

PostgreSQL:

sudo install -d /backup
sudo -u postgres pg_dump --format=custom chatterrow > /backup/chatterrow-$(date +%F).dump
sudo rsync -a /home/ubuntu/chatterrow/storage/app/ /backup/storage-app/
sudo rsync -a /home/ubuntu/chatterrow/storage/markdowned-docs/ /backup/markdowned-docs/

主な環境変数

変数 説明
APP_URL アプリの公開URL
DB_CONNECTION sqliteまたはpgsql
QUEUE_CONNECTION Redisキュー(redis
MARKITDOWN_PATH MarkItDown CLIのパス。未指定時は.markitdown/venv
MARKITDOWN_TIMEOUT 1ファイルあたりの変換タイムアウト秒数
MARKITDOWN_PYTHON_MIN_VERSION MarkItDown環境に必要なPythonの最低バージョン(3.10)
IMAGEMAGICK_PATH magickまたはconvertの絶対パス
REVERB_APP_ID/KEY/SECRET Reverb認証情報
REVERB_HOST/PORT/SCHEME ブラウザとLaravelが接続する公開WebSocket
REVERB_SERVER_HOST/PORT Reverbの内部listen先。セットアップでは127.0.0.1:8081
REVERB_ALLOWED_ORIGINS Reverbへの接続を許可する公開ドメイン
ONLYOFFICE_DOCUMENT_SERVER_URL Laravelから接続するONLYOFFICE内部URL(Ubuntuでは127.0.0.1)
ONLYOFFICE_PUBLIC_URL ブラウザから見えるONLYOFFICE公開URL
APP_ONLYOFFICE_INTERNAL_URL ONLYOFFICEがファイルを取得する内部アプリURL
ONLYOFFICE_JWT_SECRET ONLYOFFICEと共有するJWT秘密鍵

トラブルシューティング

症状 確認
502 Bad Gateway sudo systemctl status php*-fpmsudo nginx -t
リアルタイム更新されない sudo supervisorctl status chatterrow-reverb、ブラウザNetworkの/app/接続
添付プレビューが生成されない /var/log/chatterrow-queue-error_*.log、ONLYOFFICE/Poppler/ImageMagick
exec: convert: not found command -v magickまたはcommand -v convertの絶対パスをIMAGEMAGICK_PATHへ設定後、php artisan optimize:clear
Markdown変換に失敗する storage/logs/laravel.log/var/log/chatterrow-queue-error_*.logphp artisan files:markdown
Redisキューが処理されない redis-cli pingphp8.5 -mredissudo supervisorctl status 'chatterrow-queue:*'
Officeプレビューが開かない(Ubuntu) curl http://127.0.0.1:8080/healthcheck、JWT秘密鍵、8090番内部URL、php artisan files:previews
Officeプレビューが開かない(macOS) curl http://127.0.0.1:8086/healthcheck、JWT秘密鍵、APP_ONLYOFFICE_INTERNAL_URL、コンテナ内から/upへの到達性
PostgreSQLへ接続できない .envsudo -u postgres pg_isready/etc/chatterrow/database-password
証明書を発行できない アプリドメインのA/AAAA、インターネットからの80番到達性、/var/log/letsencrypt/

ローカル開発

composer install
composer markitdown:install
cp .env.example .env
php artisan key:generate
touch database/database.sqlite
php artisan migrate
npm ci
npm run dev

別ターミナルでLaravelとReverbを起動します。

php artisan serve
php artisan reverb:start --port=8081
php artisan queue:work redis

Redis Serverが起動していない場合は、macOSではbrew services start redis、Ubuntuではsudo systemctl enable --now redis-serverを実行してください。

検証:

php artisan test
php artisan files:markdown
npm run test:unit
npm run lint:check
npm run types:check
npm run build

ライセンス

MIT。ONLYOFFICE Docs Community Editionを導入する場合はAGPLv3の条件も確認してください。

About

Managing Projects and Tasks via Chat / チャットベースのプロジェクト&タスク管理

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages