Docker 镜像
运行在 NAS、家用服务器或云主机上。镜像发布在 GitHub Container Registry,服务器上不需要源码,也不需要 Node.js。
ghcr.io/igngserver/taskdock:2.0.0-rc.37下载与部署
TaskDock 由一个自托管中枢和若干客户端组成。中枢用 Docker 运行,网页端随中枢一起提供;Android 客户端从 GitHub Releases 下载。
运行在 NAS、家用服务器或云主机上。镜像发布在 GitHub Container Registry,服务器上不需要源码,也不需要 Node.js。
ghcr.io/igngserver/taskdock:2.0.0-rc.37中枢启动后,用浏览器打开你配置的 APP_ORIGIN 地址就能使用,无需安装客户端。使用 HTTPS 时可以安装为 PWA 并离线打开。
原生客户端,登录时填写你的中枢地址。APK 附在每个 Release 中,由发布流程构建并签名。
TaskDock-2.0.0-rc.37-android.apk部署五步完成
以下步骤与产品仓库的 README 和部署说明一致。服务器只需要 Docker 与 Docker Compose。
至少填写下面这些项。随机密钥可以用 openssl rand -base64 48 生成;真实密钥不要提交到 Git。
| 变量 | 说明 |
|---|---|
TASKDOCK_PORT | 对外 HTTP 端口,默认 48731;被占用时可以换成其他五位端口。 |
APP_ORIGIN | 访问 TaskDock 的完整地址,例如 https://tasks.example.com 或 http://192.168.1.10:48731。 |
CORS_ALLOWED_ORIGINS | 允许访问的前端地址,通常与 APP_ORIGIN 相同。 |
POSTGRES_PASSWORD | 数据库密码。 |
BOOTSTRAP_TOKEN | 首次初始化 Owner 用的一次性令牌,只在部署端使用,客户端不会要求填写。 |
OWNER_USERNAMEOWNER_PASSWORD | 首次初始化的 Owner 账号。密码至少 6 位。 |
ACCESS_TOKEN_SECRET | 访问令牌密钥。 |
REFRESH_TOKEN_PEPPER | 刷新令牌保护密钥。 |
使用明确的版本号,方便升级和回滚。下面的版本号是当前最新发布。
$ export APP_VERSION=2.0.0-rc.37 $ docker compose pull $ docker compose --profile operations run --rm migrate $ docker compose up -d # 检查就绪状态(使用 HTTPS 或自定义端口时按 APP_ORIGIN 修改) $ curl -fsS http://服务器地址:48731/health/ready
latest 只指向正式稳定版本,不会指向预发布版本。要使用 2.0 预览版,请写明确的版本号;生产环境同样建议固定版本。TaskDock 是单用户设计。由部署端执行一次初始化,读取 .env 里的 Owner 账号与 BOOTSTRAP_TOKEN。
docker compose --profile operations run --rm bootstrap.env 中删除 OWNER_PASSWORD,并删除或轮换 BOOTSTRAP_TOKEN。浏览器访问 APP_ORIGIN 并登录;Android 客户端安装后填写同一个中枢地址。HTTP 地址可以使用,但页面会显示安全警告,密码与会话信息会明文传输。公网环境请使用 HTTPS:需要反向代理时,可以启用 Compose 中的 gateway(Caddy)profile,注意不要让两个服务占用同一个宿主机端口。
运维升级、回滚与版本
按备份与恢复文档生成并校验备份,再把 APP_VERSION 改成目标版本,依次执行 pull、migrate、up -d。
把 APP_VERSION 改回上一个版本,并根据备份恢复文档处理数据库。不要直接删除旧的数据库卷。
版本号遵循语义化版本。普通发布默认是预发布版本,例如 2.0.0-rc.37;只有明确选择正式发布时,才会生成正式 Release。
每次发布都会在 GitHub Release 中用中文写明更新内容、已知问题和安装包状态。Docker 镜像单独发布在 GHCR,不是 Release 附件。
文档产品仓库