# ===== Server ===== NODE_ENV=production PORT=3001 APP_BASE_URL=http://localhost:3001 # ===== DB ===== DATABASE_URL=postgresql://blog:blog@postgres:5432/linkshare?schema=public # ===== Redis (BullMQ) ===== REDIS_HOST=redis REDIS_PORT=6379 REDIS_PASSWORD= # ===== Session (后端登录态 cookie) ===== SESSION_COOKIE_SECRET=change_me SESSION_COOKIE_NAME=linkshare_session SESSION_COOKIE_SECURE=false SESSION_COOKIE_HTTPONLY=true # ===== OAuth2 Provider ===== OAUTH2_ISSUER=http://localhost:3001 OAUTH2_ACCESS_TOKEN_TTL_SECONDS=3600 OAUTH2_REFRESH_TOKEN_TTL_SECONDS=2592000 OAUTH2_TOKEN_SIGNING_PRIVATE_KEY=-----BEGIN PRIVATE KEY----- ... -----END PRIVATE KEY----- OAUTH2_TOKEN_SIGNING_PUBLIC_KEY=-----BEGIN PUBLIC KEY----- ... -----END PUBLIC KEY----- # Provider default client(给 web/admin 使用) OAUTH2_DEFAULT_CLIENT_ID=web-client OAUTH2_DEFAULT_CLIENT_SECRET=change_me OAUTH2_DEFAULT_REDIRECT_URI=http://localhost:3000/auth/callback # ===== AI (BYOK via OpenRouter/AiMixHub) ===== AI_PROVIDER=openrouter AI_API_KEY=change_me AI_BASE_URL=https://openrouter.ai/api/v1 AI_MODEL_NAME=meta-llama/llama-3.1-70b-instruct AI_REVIEW_ENABLED=true AI_REVIEW_TEMPERATURE=0.2 # ===== SMTP ===== SMTP_HOST=smtp.example.com SMTP_PORT=587 SMTP_USER=user@example.com SMTP_PASS=change_me SMTP_FROM="LinkShare Blog " # ===== Visitor analytics cookie ===== VISITOR_COOKIE_NAME=linkshare_visitor VISITOR_COOKIE_MAX_AGE_DAYS=365 # ===== Link access ===== LINK_URL_MODE_DEFAULT=slug_token # ===== Security ===== PASSWORD_SALT_ROUNDS=12 # ===== Rate Limiting ===== THROTTLE_TTL=60000 THROTTLE_LIMIT=100