Files
daywork/server/DEPLOY.md
T

4.1 KiB
Raw Blame History

同步服务端部署(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
rm -rf data
docker compose up -d --build

注:rm -rf 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/<日期>/ 每日自动本地备份(启动与每次注册表变更也会触发,保留最近 14 天)
  • 异地备份(推荐开启):在 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(默认即是)。 登录即自动绑定云端并全量拉取;本机仅存加密的自动登录凭据,退出登录后需重新输入密码。