Files
cms-SiteForge/docs/OPERATIONS_V6.md
T
浅念 8cea7dee20 chore: baseline V8.10.0-dev.1 with v8_workflows type-mapping fix and trade-pro spec
- SiteForge Enterprise V8.10.0-dev.1 upstream source (210 tests)
- Fix: v8_workflows._mapped_input now reads both 类型/分类 columns so WXR
  imports keep post/product types instead of collapsing to page
- Docs: trade-pro theme port spec (R3) and implementation plan

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-10-22 16:49:25 +08:00

2.6 KiB
Raw Blame History

SiteForge 6.0.0 — 运维与安全说明

运行架构

  • 单机 Compose:Web(认证及 API)、Worker(后台构建)、独立持久化数据卷、独立已发布文件卷;可选 Caddy HTTPS。
  • 数据:SQLite WAL;一个站点同时间最多一个运行中的构建任务。长期多节点部署要替换存储和任务中心。
  • 运行时只需公网暴露经正确配置的 HTTPS 反向代理。请不要把 8787 开放到公网。

日常排障

docker compose ps
docker compose logs --tail=100 siteforge
docker compose logs --tail=100 worker
docker compose exec siteforge python -c 'from app.version import VERSION;print(VERSION)'

正常时 GET /api/health 返回 {"status":"ok","name":"SiteForge","version":"6.0.0"}。Worker 未运行时 API 可以仍然健康,但构建会停留在 queued;因此应同时监测 Worker 容器。

数据安全

  • 密钥只保存在 .env 或平台密钥管理器;生产 HTTPS 将 SITEFORGE_COOKIE_SECURE=true。
  • 管理员密码至少 12 位,团队账号使用 scrypt 密码哈希;启用站点角色。
  • 发布权限、迁移 SEO 阻断和审核不能仅由客户端判断,必须遵从后端校验。
  • 不要任意加载第三方 Jinja/JS 主题代码;当前主题导入限制为声明式主题包。
  • 旧站采集应只针对已获得授权的站点,防止内部网络 SSRF。

备份/恢复

SQLite 正在运行时不要直接只复制一个 .sqlite3 文件;应使用 SQLite 在线备份 API,并同步备份 media、theme_packages、archives、builds、legacy 及部署文件。可先停止维护性写入,再执行卷快照。恢复必须在空白测试部署上演练后才能用于正式生产。

V5 升级

不要运行 docker compose down -v,不要覆盖 V5 的数据卷。使用全新 V6 Compose 名称和独立卷,检查账户、旧 URL/SEO、主题固定版本、素材、历史构建、发布根目录,再安排切换。

Worker 任务处理

  • 前端构建请求统一 HTTP 202 排队。
  • SITEFORGE_BUILD_TIMEOUT_SECONDS 默认 300,可调整 10–3600 秒。
  • SITEFORGE_BUILD_MAX_ATTEMPTS 默认 3,可调整 1–6。
  • 用户取消排队任务立即 cancelled;运行中进入 cancel_requested,Worker 会终止构建子进程并确认状态。
  • 临时任务错误才会指数退避重试;确定性数据错误标记 failed,避免无用重复尝试。
  • Worker 领取任务后更新租约;租约过期可能重试任务。对于进程崩溃时未清理的孤儿进程,当前实现尚未保证多机严格一次执行,正式集群版需进程组隔离及分布式租约协议。