feat: ship blog platform admin and deploy stack

This commit is contained in:
2026-03-31 21:48:39 +08:00
parent a9a05aa105
commit 313f174fbc
210 changed files with 25476 additions and 5803 deletions

View File

@@ -0,0 +1,62 @@
# Compose runtime variables (package image deployment)
BACKEND_PORT=5150
FRONTEND_PORT=4321
ADMIN_PORT=4322
# 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=
# admin 浏览器请求 backend API 优先读取这个公开地址。
# 如果留空admin 会在生产环境按“当前访问主机 + :5150”回退。
# 如果你采用推荐方案admin 域名同域转发 /api 到 backend
# 建议直接填后台域名 origin例如
# ADMIN_API_BASE_URL=https://admin.example.com
ADMIN_API_BASE_URL=
# admin 页面里的“打开前台 / AI 问答 / 文章预览”链接优先读取这个运行时变量。
# 如果你不是直接把前台暴露在 http://<host>:4321而是走独立域名 / HTTPS / 反向代理,
# 建议设置为正式前台地址,例如:
# ADMIN_FRONTEND_BASE_URL=https://your-frontend.example.com
ADMIN_FRONTEND_BASE_URL=
APP_BASE_URL=http://localhost:5150
DATABASE_URL=postgres://<user>:<password>@<external-db-host>:5432/termi_api
REDIS_URL=redis://<external-redis-host>: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