下载与部署

先部署中枢,
再从任何设备打开。

TaskDock 由一个自托管中枢和若干客户端组成。中枢用 Docker 运行,网页端随中枢一起提供;Android 客户端从 GitHub Releases 下载。

v2.0.0-rc.37 预览版 · 发布于 2026年10月13日
当前发布均为预发布版本,正式使用前请先备份数据。
发布说明
01 · 中枢

Docker 镜像

运行在 NAS、家用服务器或云主机上。镜像发布在 GitHub Container Registry,服务器上不需要源码,也不需要 Node.js。

ghcr.io/igngserver/taskdock:2.0.0-rc.37
02 · 网页

浏览器 / PWA

中枢启动后,用浏览器打开你配置的 APP_ORIGIN 地址就能使用,无需安装客户端。使用 HTTPS 时可以安装为 PWA 并离线打开。

默认 http://服务器地址:48731
03 · 手机

Android

原生客户端,登录时填写你的中枢地址。APK 附在每个 Release 中,由发布流程构建并签名。

TaskDock-2.0.0-rc.37-android.apk

部署五步完成

用 Docker Compose
部署中枢。

以下步骤与产品仓库的 README 和部署说明一致。服务器只需要 Docker 与 Docker Compose。

1

准备文件

在服务器上建一个空目录,下载 compose.yaml 和 .env.example,然后复制一份环境变量文件。

cp .env.example .env
2

填写 .env

至少填写下面这些项。随机密钥可以用 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_USERNAME
OWNER_PASSWORD
首次初始化的 Owner 账号。密码至少 6 位。
ACCESS_TOKEN_SECRET访问令牌密钥。
REFRESH_TOKEN_PEPPER刷新令牌保护密钥。
3

选择版本并启动

使用明确的版本号,方便升级和回滚。下面的版本号是当前最新发布。

启动
$ 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 预览版,请写明确的版本号;生产环境同样建议固定版本。
4

初始化 Owner

TaskDock 是单用户设计。由部署端执行一次初始化,读取 .env 里的 Owner 账号与 BOOTSTRAP_TOKEN。

docker compose --profile operations run --rm bootstrap
初始化成功后,从 .env 中删除 OWNER_PASSWORD,并删除或轮换 BOOTSTRAP_TOKEN。
5

打开并登录

浏览器访问 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 附件。