Super Productivity Docker部署完整指南:1 条命令跑起来,WebDAV 同步任务数据
【免费下载链接】super-productivitySuper Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.项目地址: https://gitcode.com/GitHub_Trending/su/super-productivity
Super Productivity 是一款自带时间盒与时间跟踪的待办应用。用 Docker 部署它的 Web 版,再把任务数据接到 WebDAV 上,笔记本、台式机、手机就能共享同一份任务。本文完成两件事:把容器跑起来,把数据同步打通。
如果你要在多台设备间共享任务
本地版把数据存在浏览器里,换台设备就什么都没了。Docker 部署的 Web 版解决访问问题,WebDAV(一种通用的文件同步协议,这里当作同步后端用)解决数据问题:容器只负责把应用发出去,任务数据走 WebDAV 在服务端落盘,任何设备连上同一个地址就能拉回最新状态。
最小可行部署:单容器跑通 Web 版
官方镜像已发布在容器仓库中,一条命令即可运行。前置条件只需装好 Docker:
# 以 8080 端口发布容器内的 80 端口 docker run -d -p 8080:80 super-productivity/super-productivity:latest浏览器打开http://localhost:8080,能看到任务创建界面即部署成功。数据存在浏览器本地,容器不提供持久化——想跨设备同步,继续往下走。
多架构镜像构建与拉取
项目提供了三个 Dockerfile,按需取用:
- Dockerfile:生产构建。node:22 编译前端,最终产物放进
nginx:1镜像,运行时只依赖 Nginx - Dockerfile.e2e.dev / Dockerfile.e2e.dev.fast:端到端测试环境,配合 docker-compose.e2e.yaml 使用,日常部署用不到
拉取时指定架构,镜像默认与宿主机平台一致,跨架构加--platform:
# Apple Silicon 上直接拉;x86 服务器拉 arm64 就换成 linux/arm64 docker pull --platform linux/arm64 super-productivity/super-productivity:latest--platform参数只在镜像仓库同时发布了对应架构时才有效。要自己发布双架构镜像,用 Buildx:
docker buildx build --platform linux/amd64,linux/arm64 \ -t 你的用户名/super-productivity:latest \ --push .构建完成后,--push会把两种架构打包成同一个 tag,客户端按docker run -d -p 8080:80 你的用户名/super-productivity:latest拉取即可。
同步配置拆解:哪些文件真正要改
把 WebDAV 同步接入进来,先克隆仓库取几个文件(仓库是只读的,只复制、不修改):
git clone https://gitcode.com/GitHub_Trending/su/super-productivity mkdir sp && cd sp cp ../super-productivity/docker-compose.yaml ./ cp ../super-productivity/webdav.yaml ./需要关注的只有下面几处:
| 位置 | 作用 | 推荐值 |
|---|---|---|
webdav.yamlusers段 | WebDAV 登录账号、密码及各自的数据目录 | 改掉默认的admin/admin;多用户时每人一条记录,directory指向/data下独立子目录 |
docker-compose.yaml 的app服务环境变量 | 预填应用设置页里的同步配置,首次打开就不用手动输 | 见下方.env示例 |
| nginx/default.conf.template | 把/webdav/开头的请求转发给同步后端 | 保持默认即可 |
app服务通过环境变量预填设置,在部署目录里建一个.env,变量名与 compose 文件一致:
WEBDAV_BASE_URL=http://localhost:8080/webdav/ WEBDAV_USERNAME=admin WEBDAV_SYNC_FOLDER_PATH=/ SYNC_INTERVAL=15 IS_COMPRESSION_ENABLED=true IS_ENCRYPTION_ENABLED=false启动整组服务:
docker compose up -ddocker compose ps里各服务状态正常、浏览器访问http://localhost:8080能打开应用即部署成功。打开应用的设置页,同步方式已自动填为 WebDAV,填上刚才的密码即可开始同步。
启动入口 docker-entrypoint.sh 会把上面的环境变量写进容器的同步默认值文件;Nginx 模板则把/webdav/的请求剥掉前缀后转发给后端,转发目标由环境变量WEBDAV_BACKEND决定。
反向代理接入与数据持久化
多开一个端口没必要。app 容器内置了 Nginx 代理模板,只要把WEBDAV_BACKEND指到 webdav 服务,/webdav/就能从 8080 一个端口出去:
# deploy.yaml 放在部署目录,与 webdav.yaml 同级services: app: image: johannesjo/super-productivity:latest ports: - "8080:80" environment: WEBDAV_BACKEND: http://webdav:2345 # Nginx 转发目标 WEBDAV_BASE_URL: http://localhost:8080/webdav/ SYNC_INTERVAL: 15 volumes: - ./data:/data # 宿主机目录落盘,重启不丢 deploy: resources: limits: cpus: "1" memory: 512M # 静态站点,够用两个注意点:
- 数据持久化优先用宿主机目录挂载(如上
./data),指向一块你记得定期备份的磁盘;compose 文件里的webdav_data命名卷同样有效,但清理容器时要单独记得docker volume命令 - 改完
webdav.yaml里的密码后执行docker compose up -d让 webdav 服务重新加载配置
排错速查
- 打开 8080 无响应→
docker compose ps看 app 是否 running,再docker compose logs app确认端口映射是否为8080:80 - 同步一直失败→
curl -I http://localhost:8080/webdav/验证代理是否通,再核对webdav.yaml与.env里的账号密码是否一致 - 重建容器后数据没了→ 确认目录挂载是否生效,或直接从应用设置页导出一份完整备份 JSON 留存
部署形态就是两个容器:一个发应用,一个存同步文件。新设备连上同一个 WebDAV 地址,数据自然跟过来。
更多同步方式与数据管理细节见官方文档 docs/wiki/2.13-Run-with-Docker.md 和 docs/wiki/4.23-Managing-Your-Data.md。
【免费下载链接】super-productivitySuper Productivity is an advanced todo list app with integrated Timeboxing and time tracking capabilities. It also comes with integrations for Jira, GitLab, GitHub and Open Project.项目地址: https://gitcode.com/GitHub_Trending/su/super-productivity
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考