2025年1月1日
設定ガイド
このガイドでは、Roxのすべての設定オプションを説明します。
環境変数
Roxは環境変数を通じて完全に設定されます。.env.exampleを.envにコピーして、必要に応じてカスタマイズしてください。
データベース設定
PostgreSQL(推奨)
DB_TYPE=postgres
DATABASE_URL=postgresql://username:password@host:5432/database
MySQL
DB_TYPE=mysql
DATABASE_URL=mysql://username:password@host:3306/database
SQLite
DB_TYPE=sqlite
DATABASE_URL=sqlite://./rox.db
ストレージ設定
ローカルストレージ
STORAGE_TYPE=local
LOCAL_STORAGE_PATH=./uploads
S3互換ストレージ
STORAGE_TYPE=s3
S3_ENDPOINT=https://your-account.r2.cloudflarestorage.com
S3_BUCKET_NAME=rox-media
S3_ACCESS_KEY=your-access-key
S3_SECRET_KEY=your-secret-key
S3_REGION=auto
対応プロバイダー:
- AWS S3
- Cloudflare R2
- MinIO
- DigitalOcean Spaces
サーバー設定
NODE_ENV=production
PORT=3000
FRONTEND_PORT=3001
FRONTEND_URL=https://your-domain.com
BACKEND_URL=https://api.your-domain.com
セキュリティ設定
JWT_SECRET=your-very-secure-random-string-at-least-32-chars
SESSION_SECRET=another-secure-random-string-at-least-32-chars
COOKIE_SECURE=true
COOKIE_DOMAIN=.your-domain.com
安全なシークレットの生成:
# opensslを使用
openssl rand -base64 32
# Bunを使用
bun -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
インスタンス設定
INSTANCE_NAME=あなたのインスタンス名
INSTANCE_DESCRIPTION=インスタンスの説明
[email protected]
INSTANCE_ICON_URL=https://your-domain.com/icon.png
連合設定
FEDERATION_ENABLED=true
FEDERATION_ALLOWLIST=
FEDERATION_BLOCKLIST=
SHARED_INBOX_ENABLED=true
例:
# 特定のインスタンスをブロック
FEDERATION_BLOCKLIST=spam.example.com,bad-actor.net
# 特定のインスタンスのみ許可
FEDERATION_ALLOWLIST=mastodon.social,misskey.io
キャッシュ設定
REDIS_URL=redis://localhost:6379
CACHE_TTL=3600
レート制限
RATE_LIMIT_ENABLED=true
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100
オプション:
RATE_LIMIT_ENABLED: レート制限を有効化(デフォルト:true)RATE_LIMIT_WINDOW_MS: 時間ウィンドウ(ミリ秒)(デフォルト:900000= 15分)RATE_LIMIT_MAX_REQUESTS: ウィンドウあたりの最大リクエスト数(デフォルト:100)
ログ設定
LOG_LEVEL=info
LOG_FORMAT=json
オプション:
LOG_LEVEL: ログレベル(debug,info,warn,error)LOG_FORMAT: ログ形式(jsonまたはpretty)
設定ファイル
docker-compose.yml
version: '3.8'
services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: rox
POSTGRES_USER: rox
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
dragonfly:
image: docker.dragonflydb.io/dragonflydb/dragonfly
ports:
- "6379:6379"
backend:
build: ./packages/backend
environment:
- DATABASE_URL=${DATABASE_URL}
- REDIS_URL=redis://dragonfly:6379
ports:
- "3000:3000"
volumes:
postgres_data:
ベストプラクティス
セキュリティ
.envファイルをコミットしない -.gitignoreに追加- 強力なシークレットを使用 - 最低32文字、ランダム
- シークレットを定期的にローテーション
- HTTPSを有効化 - 本番環境では常にSSL/TLS
パフォーマンス
- キャッシングを有効化 - パフォーマンス向上のためRedisを設定
- CDNを使用 - 静的アセットをCDN経由で配信
- データベースを最適化 - 一般的なクエリ用のインデックスを追加
環境別設定
開発環境
NODE_ENV=development
LOG_LEVEL=debug
LOG_FORMAT=pretty
RATE_LIMIT_ENABLED=false
本番環境
NODE_ENV=production
LOG_LEVEL=warn
LOG_FORMAT=json
COOKIE_SECURE=true
RATE_LIMIT_ENABLED=true
トラブルシューティング
データベース接続問題
# データベース接続をテスト
psql -h localhost -U rox -d rox
# DATABASE_URL形式を確認
echo $DATABASE_URL
ストレージ問題
# S3接続をテスト
aws s3 ls s3://your-bucket --endpoint-url=$S3_ENDPOINT
次のステップ
- デプロイメントガイド - Roxを本番環境にデプロイ
- アーキテクチャガイド - アーキテクチャを理解
- APIリファレンス - APIを探索