# Compose runtime variables (package image deployment) BACKEND_PORT=5150 FRONTEND_PORT=4321 ADMIN_PORT=4322 # 建议在小内存主机上给每个服务设置明确上限,避免 backend 在 AI 重建索引时 # 把整台主机拖进 swap 抖动。默认值与 compose.package.yml 保持一致。 BACKEND_MEMORY_LIMIT=768m BACKEND_MEMORY_SWAP_LIMIT=768m BACKEND_WORKER_MEMORY_LIMIT=1g BACKEND_WORKER_MEMORY_SWAP_LIMIT=1g FRONTEND_MEMORY_LIMIT=256m FRONTEND_MEMORY_SWAP_LIMIT=256m ADMIN_MEMORY_LIMIT=128m ADMIN_MEMORY_SWAP_LIMIT=128m # frontend SSR 服务端访问 backend 用这个内部地址(compose 默认可直接使用) INTERNAL_API_BASE_URL=http://backend:5150/api # 浏览器里评论 / AI 问答 / 搜索等请求优先读取这个公开 API 地址。 # 如果留空,frontend 会在生产环境按“当前访问主机 + :5150/api”回退。 # 走反向代理时建议显式设置,例如: # PUBLIC_API_BASE_URL=https://your-frontend.example.com/api PUBLIC_API_BASE_URL= # 前台 /_img 图片优化端点默认只放行“当前站点同域”图片。 # 如果你的文章封面或对象存储图片来自额外 CDN / R2 公网域名, # 可以在这里填逗号分隔的 host 列表,例如: # PUBLIC_IMAGE_ALLOWED_HOSTS=cdn.example.com,pub-xxxx.r2.dev PUBLIC_IMAGE_ALLOWED_HOSTS= # 如果你要启用 IndexNow 自动提交,请填写一个你自己的 key。 # frontend 会在 /indexnow-key.txt 暴露这个 key,配合 `pnpm indexnow:submit` 使用。 INDEXNOW_KEY= # admin 浏览器请求 backend API 优先读取这个公开地址。 # 如果留空,admin 会在生产环境按“当前访问主机 + :5150”回退。 # 如果你采用推荐方案(admin 域名同域转发 /api 到 backend), # 建议直接填后台域名 origin,例如: # ADMIN_API_BASE_URL=https://admin.example.com ADMIN_API_BASE_URL= # admin 页面里的“打开前台 / AI 问答 / 文章预览”链接优先读取这个运行时变量。 # 如果你不是直接把前台暴露在 http://:4321,而是走独立域名 / HTTPS / 反向代理, # 建议设置为正式前台地址,例如: # ADMIN_FRONTEND_BASE_URL=https://your-frontend.example.com ADMIN_FRONTEND_BASE_URL= APP_BASE_URL=http://localhost:5150 DATABASE_URL=postgres://:@:5432/termi_api REDIS_URL=redis://:6379 JWT_SECRET=change-me-before-production JWT_EXPIRATION_SECONDS=604800 RUST_LOG=info # 邮件确认 / 通知投递需要 SMTP SMTP_ENABLE=false SMTP_HOST=localhost SMTP_PORT=1025 SMTP_SECURE=false SMTP_USER= SMTP_PASSWORD= SMTP_HELLO_NAME= # 启用 TinyAuth / Pocket ID / Caddy forward_auth 时建议: # - TERMI_ADMIN_TRUST_PROXY_AUTH=true # - TERMI_ADMIN_LOCAL_LOGIN_ENABLED=false # - 额外配置一个共享密钥,并在 Caddy 转发 /api 到 backend 时附带: # X-Termi-Proxy-Secret: {$TERMI_ADMIN_PROXY_SHARED_SECRET} TERMI_ADMIN_TRUST_PROXY_AUTH=false TERMI_ADMIN_LOCAL_LOGIN_ENABLED=true TERMI_ADMIN_PROXY_SHARED_SECRET= # Optional: override package tags if needed BACKEND_IMAGE=git.init.cool/cool/termi-astro-backend:latest FRONTEND_IMAGE=git.init.cool/cool/termi-astro-frontend:latest ADMIN_IMAGE=git.init.cool/cool/termi-astro-admin:latest