プロジェクト

全般

プロフィール

機能 #585 » rental-env-production.sh

www user, 2025-06-18 15:23

 
# /root/projects/rental-system/.env.production
# 機材予約システム 本番環境設定ファイル

# ======================================
# アプリケーション基本設定
# ======================================
NODE_ENV=production
PORT=3000
APP_NAME=機材予約システム
APP_URL=https://rental.call2arm.com
APP_VERSION=1.0.0
COMPANY_NAME=株式会社サンプル
COMPANY_DOMAIN=call2arm.com

# ======================================
# データベース設定
# ======================================
DB_PATH=/app/data/rental_system.db
DB_TIMEOUT=30000
DB_MAX_CONNECTIONS=10
DB_POOL_SIZE=5
DB_BACKUP_ENABLED=true
DB_BACKUP_INTERVAL=86400000
DB_VACUUM_INTERVAL=604800000

# ======================================
# JWT認証設定
# ======================================
# 本番環境では以下を強力なランダム文字列に変更
JWT_SECRET=CHANGE_THIS_TO_RANDOM_SECRET_64_CHARS_FOR_PRODUCTION_USE_ONLY
JWT_EXPIRES_IN=24h
JWT_REFRESH_EXPIRES_IN=7d
JWT_ISSUER=rental.call2arm.com
JWT_AUDIENCE=rental-system-users

# ======================================
# セッション設定
# ======================================
# 本番環境では以下を強力なランダム文字列に変更
SESSION_SECRET=CHANGE_THIS_TO_RANDOM_SESSION_SECRET_32_CHARS_PRODUCTION
SESSION_TIMEOUT=1800000
SESSION_SECURE=true
SESSION_HTTP_ONLY=true
SESSION_SAME_SITE=strict

# ======================================
# LINE WORKS OAuth設定
# ======================================
# 実際の値はLINE WORKS Developer Consoleから取得
LINEWORKS_CLIENT_ID=YOUR_ACTUAL_LINEWORKS_CLIENT_ID
LINEWORKS_CLIENT_SECRET=YOUR_ACTUAL_LINEWORKS_CLIENT_SECRET
LINEWORKS_REDIRECT_URI=https://rental.call2arm.com/auth/callback
LINEWORKS_SCOPE=openid profile user
LINEWORKS_AUTH_URL=https://auth.worksmobile.com/oauth2/v2.0/authorize
LINEWORKS_TOKEN_URL=https://auth.worksmobile.com/oauth2/v2.0/token
LINEWORKS_USER_INFO_URL=https://www.worksapis.com/v1.0/users/me

# ======================================
# LINE WORKS Bot設定
# ======================================
# 実際の値はLINE WORKS Developer Consoleから取得
LINEWORKS_BOT_ID=YOUR_ACTUAL_BOT_ID
LINEWORKS_BOT_SECRET=YOUR_ACTUAL_BOT_SECRET
LINEWORKS_BOT_ACCESS_TOKEN=YOUR_ACTUAL_BOT_ACCESS_TOKEN
LINEWORKS_BOT_API_URL=https://www.worksapis.com/v1.0
LINEWORKS_WEBHOOK_VERIFY=true

# ======================================
# セキュリティ設定
# ======================================
BCRYPT_ROUNDS=12
RATE_LIMIT_WINDOW_MS=900000
RATE_LIMIT_MAX_REQUESTS=100
RATE_LIMIT_SKIP_SUCCESSFUL_REQUESTS=false

# CORS設定
CORS_ORIGIN=https://rental.call2arm.com
CORS_CREDENTIALS=true
CORS_METHODS=GET,POST,PUT,DELETE,OPTIONS
CORS_ALLOWED_HEADERS=Content-Type,Authorization,X-Requested-With

# IP制限設定(カンマ区切り、本番では社内IPに限定)
ALLOWED_IPS=0.0.0.0/0
# ALLOWED_IPS=192.168.0.0/16,10.0.0.0/8,172.16.0.0/12

# XSS保護
XSS_PROTECTION=true
CONTENT_TYPE_NOSNIFF=true
FRAME_OPTIONS=DENY

# ======================================
# ログ設定
# ======================================
LOG_LEVEL=info
LOG_FILE=/app/logs/application.log
LOG_MAX_SIZE=10485760
LOG_MAX_FILES=5
LOG_DATE_PATTERN=YYYY-MM-DD
LOG_ZIP_ARCHIVED=true

# アクセスログ
ACCESS_LOG_ENABLED=true
ACCESS_LOG_FILE=/app/logs/access.log
ACCESS_LOG_FORMAT=combined

# エラーログ
ERROR_LOG_ENABLED=true
ERROR_LOG_FILE=/app/logs/error.log
ERROR_LOG_STACK_TRACE=false

# デバッグログ(本番では無効)
DEBUG_MODE=false
VERBOSE_LOGGING=false
SQL_LOGGING=false

# ======================================
# ファイルアップロード設定
# ======================================
UPLOAD_MAX_SIZE=52428800
UPLOAD_ALLOWED_TYPES=image/jpeg,image/png,image/gif,image/webp,application/pdf,text/csv
UPLOAD_DIR=/app/uploads
UPLOAD_TEMP_DIR=/app/temp
UPLOAD_CLEANUP_INTERVAL=3600000

# 画像処理
IMAGE_RESIZE_ENABLED=true
IMAGE_MAX_WIDTH=1920
IMAGE_MAX_HEIGHT=1080
IMAGE_QUALITY=85

# ======================================
# 通知設定
# ======================================
NOTIFICATION_ENABLED=true
NOTIFICATION_QUEUE_ENABLED=true
NOTIFICATION_RETRY_ATTEMPTS=3
NOTIFICATION_RETRY_DELAY=5000

# リマインダー設定
REMINDER_ENABLED=true
REMINDER_HOURS_BEFORE=24
REMINDER_SCHEDULE=0 9 * * *

# 通知制限
MAX_NOTIFICATIONS_PER_USER_PER_DAY=20
MAX_NOTIFICATIONS_PER_HOUR=5
NOTIFICATION_RATE_LIMIT=true

# ======================================
# 予約システム設定
# ======================================
# 予約制限
MAX_RESERVATION_DAYS=30
MAX_RESERVATIONS_PER_USER=10
MIN_RESERVATION_HOURS=1
MAX_RESERVATION_HOURS=168

# 予約変更制限
RESERVATION_CHANGE_DEADLINE_HOURS=72
RESERVATION_CANCEL_DEADLINE_HOURS=24

# 営業日設定
BUSINESS_DAYS=1,2,3,4,5
BUSINESS_HOURS_START=09:00
BUSINESS_HOURS_END=18:00

# ======================================
# メンテナンス設定
# ======================================
MAINTENANCE_MODE=false
MAINTENANCE_MESSAGE=システムメンテナンス中です。しばらくお待ちください。
MAINTENANCE_START_TIME=
MAINTENANCE_END_TIME=

# アーカイブ設定
ARCHIVE_ENABLED=true
ARCHIVE_SCHEDULE=0 3 * * 0
ARCHIVE_RETENTION_MONTHS=3

# ======================================
# バックアップ設定
# ======================================
BACKUP_ENABLED=true
BACKUP_SCHEDULE=0 2 * * *
BACKUP_RETENTION_DAYS=30
BACKUP_DIR=/app/backup
BACKUP_COMPRESSION=true

# 外部バックアップ(オプション)
EXTERNAL_BACKUP_ENABLED=false
EXTERNAL_BACKUP_S3_BUCKET=
EXTERNAL_BACKUP_S3_REGION=
EXTERNAL_BACKUP_S3_ACCESS_KEY=
EXTERNAL_BACKUP_S3_SECRET_KEY=

# ======================================
# 監視・メトリクス設定
# ======================================
HEALTH_CHECK_ENABLED=true
HEALTH_CHECK_ENDPOINT=/health
HEALTH_CHECK_TIMEOUT=5000

# メトリクス収集
METRICS_ENABLED=true
METRICS_PORT=9090
METRICS_ENDPOINT=/metrics

# パフォーマンス監視
PERFORMANCE_MONITORING=true
SLOW_QUERY_THRESHOLD=1000
MEMORY_USAGE_ALERT_THRESHOLD=85

# ======================================
# キャッシュ設定
# ======================================
CACHE_ENABLED=true
CACHE_TTL=3600
CACHE_MAX_SIZE=1000
CACHE_TYPE=memory

# 静的ファイルキャッシュ
STATIC_CACHE_ENABLED=true
STATIC_CACHE_MAX_AGE=2592000
STATIC_CACHE_IMMUTABLE=true

# API レスポンスキャッシュ
API_CACHE_ENABLED=false
API_CACHE_TTL=300

# ======================================
# パフォーマンス設定
# ======================================
# 圧縮設定
COMPRESSION_ENABLED=true
COMPRESSION_LEVEL=6
COMPRESSION_THRESHOLD=1024

# クラスタリング(本番負荷に応じて調整)
CLUSTER_ENABLED=false
CLUSTER_WORKERS=auto

# Keep-Alive設定
KEEP_ALIVE_TIMEOUT=5000
HEADERS_TIMEOUT=60000

# ======================================
# デバッグ・開発設定(本番では無効)
# ======================================
DEBUG_MODE=false
DEVELOPMENT_MODE=false
HOT_RELOAD=false
SOURCE_MAPS=false

# プロファイリング(本番では無効)
PROFILING_ENABLED=false
CPU_PROFILING=false
MEMORY_PROFILING=false

# ======================================
# 外部サービス連携(将来拡張用)
# ======================================
# メール通知(将来実装)
EMAIL_ENABLED=false
SMTP_HOST=
SMTP_PORT=587
SMTP_SECURE=true
SMTP_USER=
SMTP_PASS=
EMAIL_FROM=noreply@call2arm.com

# Slack通知(将来実装)
SLACK_ENABLED=false
SLACK_WEBHOOK_URL=
SLACK_CHANNEL=#general

# Teams通知(将来実装)
TEAMS_ENABLED=false
TEAMS_WEBHOOK_URL=

# ======================================
# システム情報・メタデータ
# ======================================
DEPLOYMENT_DATE=2025-06-18
DEPLOYED_BY=development-team
ENVIRONMENT=production
SERVER_LOCATION=VPS-root
TIMEZONE=Asia/Tokyo

# Git情報(デプロイ時に設定)
GIT_COMMIT_HASH=
GIT_BRANCH=main
GIT_TAG=v1.0.0

# ======================================
# 注意事項・セキュリティ
# ======================================
#
# 🔒 セキュリティ重要事項:
# 1. JWT_SECRET と SESSION_SECRET は本番環境で必ず変更すること
# 2. LINE WORKS の実際のクライアントID・シークレットを設定すること
# 3. ALLOWED_IPS を社内ネットワークに限定すること(必要に応じて)
# 4. このファイルの権限を 600 (所有者のみ読み書き) に設定すること
# 5. 定期的にシークレットキーのローテーションを実施すること
#
# 🔧 設定変更後の作業:
# 1. docker-compose down && docker-compose up -d
# 2. nginx -t && systemctl reload nginx
# 3. 動作確認とログチェック
#
# 📋 監視項目:
# 1. /health エンドポイントの応答確認
# 2. /var/log/nginx/rental.call2arm.com.*.log の確認
# 3. docker-compose logs rental-app の確認
# 4. システムリソース使用量の確認
(5-5/6)