ガイド
Docker Compose でデプロイ
同梱の docker-compose.prod.yml と install.sh を使ったシングルホストの本番デプロイ。
高性能なサーバーが1台あり、10分で AskAIs Customer Service を動かしたい? これがその道筋です。同時接続 ~500 訪問者程度までに適しています。それ以上の規模では Kubernetes ガイドへ進んでください。
前提条件
- Docker 24+ と `docker compose` v2 が入った Linux ホスト
- ≥ 2 vCPU、4 GB RAM(8 GB 推奨)
- ホストを指すドメイン(Caddy / Cloudflare / nginx 経由の TLS 用)
ワンライナーインストール
git clone https://github.com/singlink/singlink
cd singlink
APP_DOMAIN=chat.acme.com bash scripts/install.shこのスクリプトは:
- docker + openssl を確認します
- 強力なランダムシークレットを含む
.env.prodを生成します(モード 600) - 3つのイメージ(web / ws / worker)をビルドします
docker compose -f docker-compose.prod.yml up -dでスタック全体を起動します- web コンテナ内で
prisma migrate deployを実行します
動作するもの
- postgres — pgvector PG16
- redis — pub/sub + キュー(パスワード保護)
- minio — 添付ファイル用の S3 互換ストレージ
- web / ws / worker — 3つのアプリプロセス
- nginx — ポート 8080 のリバースプロキシ(WS アップグレード対応)
TLS の追加
同梱の nginx はポート 8080 で HTTP/1.1 を終端します。前段に TLS 終端プロキシを配置してください:
Caddy(最も簡単)
# /etc/caddy/Caddyfile
chat.acme.com {
reverse_proxy localhost:8080
}Cloudflare Tunnel(インバウンドポート不要)
cloudflared tunnel create singlink
cloudflared tunnel route dns singlink chat.acme.com
cloudflared tunnel run --url http://localhost:8080 singlinkDay-2 運用
# Logs
docker compose -f docker-compose.prod.yml logs -f
# Restart everything
docker compose -f docker-compose.prod.yml restart
# Stop (data persists in named volumes)
docker compose -f docker-compose.prod.yml down
# Upgrade
git pull
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d --build
docker compose -f docker-compose.prod.yml exec web pnpm db:deploy
# Backups (run from cron daily)
docker compose -f docker-compose.prod.yml exec -T postgres \
pg_dump -U singlink singlink | gzip > /backups/singlink-$(date +%F).sql.gzworker のスケールアウト
AI worker のレプリカを増やします(Redis BullMQ が分散を処理します):
docker compose -f docker-compose.prod.yml up -d --scale worker=4Kubernetes へ移行するタイミング
- 高可用な postgres / redis が必要な場合(マネージドの RDS / ElastiCache)
- トラフィックの急増時に自動スケーリングが必要な場合
- 複数リージョンにまたがって運用する場合
- SLA 上、シングルホストのダウンタイムが許容できない場合
その場合は Kubernetes / Helm へ進んでください。