Docmost 第四批：在线演示与数据隔离
授权：2026-10-19，沿用原服务器，独立子域名，保留全部既有修改。
基线：Docmost 1e7461aee2f61d5508f2892935e038a26870cfec；门户 0d284bb56189e849fedabd71443f0661a15e28b8。

1. 保存当前开发库全行哈希和原始维修、门户文件校验；本批不写这些数据库或源目录。
2. 两个限量演示槽，每槽独立 PostgreSQL、Redis、应用密钥和文件目录。每位访客持有不可预测 HttpOnly 会话 Cookie；有效期20分钟，满员返回忙碌状态。实例初始化失败、清理失败不可再次出租。
3. 网关只接受同源会话变更；浏览器不能指定槽或身份。HTTP/WS转发剥离 Cookie、Authorization 和签名头，按当前会话注入内部身份。每个会话在准备就绪后才生效。硬到期关闭长连接并停止应用，之后仅清理自己的数据。
4. 服务端验证 HMAC 签名身份与 JWT 主体一致；HTTP、协同编辑、Socket.IO均覆盖。角色切换关闭原连接并重新加载编辑器。普通部署默认关闭演示边界。
5. 默认拒绝未列出的 API；禁止上传、导出、用户/工作区管理、外发通知、集成与真实凭证。限制HTTP/WS消息大小、累计写入、页面/评审数量、连接数、请求频率。使用虚构文档与作者/评审者/只读三角色。
6. 应用显示演示标识、剩余时间、角色切换和结束按钮。源码下载无需演示容量，继续绑定当前构建并保留上游说明。
7. 部署配置不挂 Docker socket；数据库和Redis不暴露公网，网关只绑定主机127.0.0.1，通过独立Nginx子域名提供TLS。部署前检查现有服务器容量，不停用其他应用。
8. 验证两访客隔离、角色越权、旧令牌、到期WebSocket、容量、清理失败/重启、评审发布完整流程、源码一致性和既有数据保持。通过后才开放门户在线入口；DNS/SSH受阻时保留可部署产物并准确报告未上线。

文件范围：scripts/demo/{pool,gateway,runtime}.mjs及测试、Compose/Dockerfile；服务端demo身份边界；客户端demo会话栏与少量布局集成；部署手册及验收证据。门户仅在在线验证后更新真实地址。
