# 同步服务端部署(daywk.linyux.cn 子域名方案) 服务端是整个系统的**唯一数据权威**:认证、九张业务表、用户管理、每日自动备份都在这里。 客户端(桌面 / 网页 / 安卓)只是实时缓存,详见仓库根 README。 ## 一、DNS 解析(先做) 在域名服务商处添加 A 记录: daywk.linyux.cn → 124.221.192.176 ## 二、获取部署文件并启动服务 cd /opt git clone https://gitea.linyux.cn/root/daywork.git daywork 2>/dev/null || (cd daywork && git pull) cd daywork/server docker compose up -d --build **警告:绝对不要删除 server/data 目录** —— 这里是所有用户的正式数据(注册表、业务数据、每日备份)。 首次全新部署(且确认 data 目录从未存在过)无需任何清理动作,服务端首次启动会自动生成签名密钥。 另外,客户端内置「数据纪元」保护:即使服务器数据目录意外重建,任一保留本地缓存的设备在下次同步时会自动把全量数据推回服务器。 容器 internlog-sync 加入 mynet 网络(与 caddy 同网络,Caddy 可用容器名访问)。 ## 三、Caddyfile 新增站点 在 /opt/caddy 的 Caddyfile 顶部(或任意位置)添加: daywk.linyux.cn { reverse_proxy internlog-sync:3780 } 其余站点不动。重载: docker exec caddy caddy reload --config /etc/caddy/Caddyfile Caddy 会自动为 daywk.linyux.cn 申请并续期 HTTPS 证书(需 DNS 已生效且 80/443 可达)。 ## 四、验证 curl https://daywk.linyux.cn/api/health 应返回 {"ok":true}。 ## 重要:该域名同时是应用入口 同步服务容器同时托管了网页应用本体(daywork 仓库 intern-log/dist 的构建产物,随仓库提交以便容器直接 COPY)。 手机与电脑浏览器直接打开 https://daywk.linyux.cn 就是应用(可添加到主屏幕作为 PWA);/api 路径为数据接口。 ## 五、账号体系 - 注册 / 登录全部经由服务端(POST /api/auth/register、/api/auth/login),密码仅存 PBKDF2 哈希 - **管理员:用户名 xionglin**(服务启动时自动赋予 role=admin,存量注册表也会自动迁移) - 管理员专用接口(客户端「用户管理」页使用,非管理员一律 403): - GET /api/admin/users 用户列表(含数据量) - POST /api/admin/users/create 新建账号 - POST /api/admin/users/password 重置任意用户密码 - POST /api/admin/users/delete 删除账号及其全部数据(不能删自己) - 客户端"登录密码修改"对应 POST /api/auth/password;"删除此用户"对应 POST /api/auth/delete ## 六、数据与运维 - 数据目录:/opt/daywork/server/data - registry.json 用户注册表(用户名 / 角色 / PBKDF2 哈希) - users/.json 每用户全部业务表数据 + 墓碑 - backups/<日期>/ 每日快照。**当日首份不可变**(完整证据链),同日再备份写入 `<日期>_t<时分秒>` 副本 - backups/weekly/<日期>/ 每周一额外深快照,保留 8 份 - 保留策略:每日快照 14 天;写入均为「临时文件 + fsync + 原子改名」,断电不会留下半截文件 - 用户数据文件若解析失败会被自动隔离为 `<文件>.corrupt-<时间戳>` 并在日志中大声报错,绝不静默当作空数据 - 墓碑自动回收:删除标记保留 14 天后自动清除(足够覆盖离线设备),文件不会无限膨胀 - 单次同步携带 ≥20 条墓碑(大批删除)时,服务端会**先自动快照再应用删除**,可随时回滚 - **异地备份(推荐开启)**:在 docker-compose.yml 的 internlog-sync 服务加环境变量,备份自动上传腾讯云 COS: environment: COS_SECRET_ID: <你的 SecretId> COS_SECRET_KEY: <你的 SecretKey> COS_BUCKET: <桶名-AppId,如 footprint-1435255581> COS_REGION: <地域,如 ap-guangzhou> 开启后每次本地备份都会同步上传(含 latest/ 覆盖版);上传状态可随时查看: curl https://daywk.linyux.cn/api/health 返回 backup: "ok" / "failed: ..." / "local-only"(未配置)。 - 会话安全:修改密码或管理员重置密码后,该用户**所有旧登录令牌立即失效**(各端自动用保存的凭据重新登录,用户无感知) - 登录防爆破:同一 IP 十分钟内密码错误满 10 次将临时拒绝(429) - 更新版本:cd /opt/daywork && git pull && cd server && docker compose up -d --build - 同步协议:POST /api/sync(Bearer token;推送差异并返回权威全量快照) - 实时通知:GET /api/events?token=...(SSE,同账号任意端有变更即广播 change) - 手工备份:直接打包 server/data 目录即可(纯 JSON 文件) ## 七、客户端 应用 → 设置 → 多端数据同步:地址填 https://daywk.linyux.cn(默认即是)。 登录即自动绑定云端并全量拉取;本机仅存加密的自动登录凭据,退出登录后需重新输入密码。