リバースプロキシ設定 — Nginx / Caddy / Traefik
リバースプロキシ設定 — Nginx / Caddy / Traefik
本番環境で Docmost を HTTPS で公開するとき、リバースプロキシの設定が必要です。リアルタイム共同編集(Yjs)は WebSocket を通す必要があります。
前提
- Docmost コンテナは内部で
3000番ポートで待ち受け APP_URLは ブラウザからアクセスする公開 URL(https://必須)と一致させる- OAuth・招待メール・公開リンクは
APP_URLを基準に生成される
→ 環境変数の詳細: 「必要インフラと環境変数リファレンス」(No.10.2)
Nginx の設定例
server {
listen 443 ssl http2;
server_name docs.example.com;
ssl_certificate /etc/ssl/certs/docs.example.com.crt;
ssl_certificate_key /etc/ssl/private/docs.example.com.key;
client_max_body_size 100M;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket(共同編集に必須)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 86400;
}
}
HTTP から HTTPS へリダイレクトする場合、APP_URL も https://docs.example.com に設定してください。
Caddy の設定例
docs.example.com {
reverse_proxy localhost:3000
}
Caddy は HTTPS 終端と WebSocket プロキシを自動処理します。APP_URL=https://docs.example.com を設定してください。
Traefik の設定例(Docker Compose ラベル)
labels:
- "traefik.enable=true"
- "traefik.http.routers.docmost.rule=Host(`docs.example.com`)"
- "traefik.http.routers.docmost.entrypoints=websecure"
- "traefik.http.routers.docmost.tls=true"
- "traefik.http.services.docmost.loadbalancer.server.port=3000"
Traefik v2 以降は WebSocket をデフォルトでサポートします。大きなファイルアップロード時は maxRequestBodyBytes を調整してください。
APP_URL との整合
| 設定 | 正しい例 | よくある誤り |
|---|---|---|
APP_URL |
https://docs.example.com |
http://localhost:3000(本番で使用) |
| プロキシ先 | http://docmost:3000(内部) |
公開 URL を proxy_pass に指定 |
X-Forwarded-Proto |
https |
未設定で HTTP 扱いになる |
よくある障害と対処
| 症状 | 原因 | 対処 |
|---|---|---|
| 共同編集がすぐ切れる | WebSocket がプロキシを通っていない | Upgrade / Connection ヘッダーを設定 |
| 413 Request Entity Too Large | プロキシのリクエストサイズ制限 | Nginx: client_max_body_size を拡大 |
| 無限リダイレクト | HTTP ↔ HTTPS のループ | APP_URL と SSL 終端の整合を確認 |
| 招待メールのリンクが壊れる | APP_URL が内部 URL のまま |
公開 HTTPS URL に変更して再起動 |
| ログイン後に別ドメインへ飛ぶ | APP_URL と実際のドメイン不一致 |
ドメインを統一 |
関連ナレッジ
- Docker 起動: 「Docker Compose クイックスタート」(No.10.1)
- 環境変数: 「必要インフラと環境変数リファレンス」(No.10.2)
- 共同編集トラブル: 「リアルタイム編集・同期のトラブル」(No.11.3)
- 公式ドキュメント: https://docmost.com/docs