サーバを立てる¶
Taylis のサーバは、Linux のサーバ 1 台に Docker Compose で立てます。Redis・Kafka・Kubernetes などは使いません。 数十人・数百万件のメッセージまでを、この構成のまま扱えるように作っています。
必要なもの¶
| もの | 内容 |
|---|---|
| サーバ | Linux(Debian 12 / 13 で確かめています)、2 vCPU / メモリ 4 GB 以上がおすすめ(2 GB ならスワップを足す) |
| ソフトウェア | Docker Engine と compose プラグイン |
| ドメイン名 | サーバを指す DNS の名前(例 chat.example.com) |
| ポート | TCP 80 と 443(証明書の取得にも使います)。HTTP/3 を使うなら UDP 443 |
| ディスク | 添付ファイルの分(移行するなら数 GB)、バックアップの置き場所 |
プッシュ通知を使うなら、Apple Developer Program(iOS)と Firebase のプロジェクト(Android)も必要です (プッシュ通知)。
構成¶
flowchart TD
U["利用者の<br>アプリ・ブラウザ"] -- "HTTPS" --> C
subgraph host["Docker Compose"]
C["caddy<br>TLS・ブラウザ版"] --> APP["app<br>FastAPI・WebSocket"]
APP --> DB[("db<br>PostgreSQL + PGroonga")]
APP --> OS[("objectstore<br>versitygw")]
subgraph closed["外に出られないネットワーク"]
CV["converter<br>Gotenberg"]
end
APP --> CV
end
APP -. "プッシュ" .-> P["APNs / FCM"]
| サービス | 役割 |
|---|---|
caddy |
TLS の終端(証明書は自動で取得)、/api/* をアプリへ、それ以外はブラウザ版を配信 |
app |
Taylis のサーバ本体(Python / FastAPI)。起動のときにデータベースの移行を自動で適用します |
db |
PostgreSQL と、日本語・英語の全文検索の PGroonga |
objectstore |
添付ファイルの置き場所(versitygw。ふつうのディレクトリの上に S3 の API を載せます) |
converter |
Office の文書を PDF にしてプレビューを作ります(外のネットワークには出られません) |
データの置き場所は、PostgreSQL と versitygw のデータディレクトリの 2 か所だけ です。バックアップもこの 2 つを 取ります(バックアップと復元)。
進め方¶
- クイックスタート:サーバを起動して、最初の管理者を作ります。
- 必要に応じて:
- 既存のリバースプロキシの後ろで(nginx などがすでに 80 / 443 を使っているサーバ)
- プッシュ通知(APNs / FCM)
- 文書のプレビュー
- バックアップと復元 を毎日動かします。
- 更新と自動デプロイ:新しいバージョンへの更新、GitHub のタグからの自動デプロイ。
- Slack / Mattermost / Notion からの移行。
- うまくいかないときは 困ったとき。
このサイトには要点だけを書いています。手順と設定の全体は、リポジトリの infra/README.md と infra/.env.example にあります。
サーバの担当者はすべてのメッセージを読めます
サーバ・データベース・バックアップを扱える人は、非公開チャンネルや DM を含むすべてのメッセージを技術的には 読めます。誰がサーバを扱うかを決め、利用者に伝えてください(プライバシーとデータの扱い)。