コンテンツにスキップ

クイックスタート(本番)

必要なもの

  • Docker & Docker Compose
  • 独自ドメイン(ActivityPub の ID に使用されるため、後から変更できません
  • TLS 終端(nginx + Let's Encrypt、または Cloudflare Tunnel)

1. セットアップ

git clone https://github.com/nekonoverse/nekonoverse.git
cd nekonoverse

# 環境変数を設定
cat <<'EOF' > .env
DB_PASSWORD=<強力なパスワード>
DOMAIN=your-domain.example
SECRET_KEY=$(openssl rand -base64 32)
DEBUG=false
FRONTEND_URL=https://your-domain.example
S3_SECRET_ACCESS_KEY=<強力なパスワード>
EOF

2. nginx 設定

TLS 終端 + リバースプロキシを設定します。nginx/prod.conf を環境に合わせて編集してください。

Cloudflare Tunnel を使う場合は デプロイガイド を参照。

3. 起動

# UDS 構成 (推奨)
docker compose -f docker-compose.prod.yml up -d

TCP 構成

TCP 構成を使う場合は cp docker-compose.yml.example docker-compose.yml でコピーし、docker compose up -d で起動。詳細は デプロイガイド を参照。

4. 管理者ユーザーの作成

初回は CLI で管理者を作成します。対話型プロンプトで入力できます。

docker compose -f docker-compose.prod.yml exec -it app python -m app.cli create-admin
  Create Admin User

Username: neko
Email: neko@example.com
Password:
Password (confirm):
Display name [neko]: ねこ

Admin user created: neko (neko@example.com)
  role: admin

引数を直接指定することもできます:

docker compose -f docker-compose.prod.yml exec app python -m app.cli create-admin \
  --username neko \
  --email neko@example.com \
  --password your-secure-password

5. 初期設定

作成した管理者でログインし、管理画面(/admin)から以下を設定します:

  • サーバー名 — インスタンス名
  • サーバー説明 — インスタンスの説明文
  • サーバーアイコン — ファビコン・PWA アイコン
  • ユーザー登録 — 一般ユーザーの登録を開放するかどうか

環境変数

.env ファイルで設定します。

変数名 説明 デフォルト
DB_PASSWORD PostgreSQL パスワード (必須)
DOMAIN サーバーのドメイン名 localhost
SECRET_KEY セッション・HMAC 署名用の秘密鍵 (必須)
DEBUG デバッグモード (false で HTTPS) true
FRONTEND_URL フロントエンドの URL(パスキー検証で使用) http://localhost:3000
S3_ACCESS_KEY_ID S3 アクセスキー nekonoverse
S3_SECRET_ACCESS_KEY S3 シークレットキー changeme-s3
S3_BUCKET S3 バケット名 nekonoverse

CLI コマンド

コマンド 説明
python -m app.cli create-admin 管理者ユーザーの作成
python -m app.cli reset-password パスワードリセット
python -m app.cli detect-focal-points 既存画像の顔検出一括実行

create-admin / reset-password は引数なしで対話型、--username 等の引数付きで非対話型として動作します。

detect-focal-pointsFACE_DETECT_URL が設定されている環境で、フォーカルポイント未設定の画像に対して顔検出を一括実行します。--concurrency オプションで並列度を指定できます(デフォルト: 4)。

本番更新手順

GHCR のイメージを使っている場合:

# UDS 構成 (docker-compose.prod.yml) — nginx 再起動不要
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d

# TCP 構成 (docker-compose.yml) — nginx 再起動が必要
docker compose pull
docker compose up -d
docker compose restart nginx

UDS 構成と TCP 構成

docker-compose.prod.yml では全サービス間通信を Unix Domain Socket で行うため、コンテナ再作成時に nginx の再起動が不要。TCP 構成 (docker-compose.yml) では内部 IP が変わるため restart nginx が必要。

Docker イメージタグ

タグ 内容 用途
latest 最新リリースのビルド 安定版を使いたい場合
20260311-1 特定リリース (yyyymmdd-x) バージョン固定したい場合
unstable develop ブランチの最新ビルド 最新の開発版を試したい場合

注意事項

  • DEBUG=false で HTTPS モードになります。nginx または Cloudflare で TLS 終端してください
  • DOMAIN は ActivityPub ID に使用されるため、運用開始後は変更できません
  • UDS 構成ではサービス間を Unix Domain Socket で接続し、TCP ポートを外部に公開しません