Docker实战 | 使用Docker部署Donetick任务与家务管理应用
- 一、Donetick介绍
-
- [1.1 Donetick简介](#1.1 Donetick简介)
- [1.2 Donetick主要特点](#1.2 Donetick主要特点)
- [1.3 平台支持](#1.3 平台支持)
- 二、本次实践规划
-
- [2.1 本地环境规划](#2.1 本地环境规划)
- [2.2 本次实践介绍](#2.2 本次实践介绍)
- 三、本地环境检查
-
- [3.1 检查Docker服务状态](#3.1 检查Docker服务状态)
- [3.2 检查Docker版本](#3.2 检查Docker版本)
- [3.3 检查docker compose 版本](#3.3 检查docker compose 版本)
- 四、拉取Donetick镜像
- 五、部署Donetick服务
-
- [5.1 创建部署目录](#5.1 创建部署目录)
- [5.2 编辑配置文件](#5.2 编辑配置文件)
- [5.3 编辑部署文件](#5.3 编辑部署文件)
- [5.4 创建Donetick容器](#5.4 创建Donetick容器)
- [5.5 查看Donetick容器状态](#5.5 查看Donetick容器状态)
- [5.6 检查Donetick容器日志](#5.6 检查Donetick容器日志)
- 六、访问Donetick服务
-
- [6.1 访问Donetick首页](#6.1 访问Donetick首页)
- [6.2 添加任务及效果](#6.2 添加任务及效果)
- 七、总结
一、Donetick介绍
1.1 Donetick简介
Donetick是一款开源、用户友好的任务与家务管理应用,旨在帮助个人和团队高效组织日常事务。通过丰富的自定义功能和协作特性,Donetick 让任务管理更智能、直观且富有乐趣,适用于家庭、小型团队或个人习惯养成。
1.2 Donetick主要特点
- 任务与协作管理:支持个人使用或与家人朋友共同创建、分配和跟踪任务,实现高效协作。
- 自然语言输入:用日常语言描述任务(如"每周一倒垃圾"),系统自动识别时间与重复规则。
- 灵活调度机制:支持每日、每周、每月等固定周期,以及基于完成历史的智能自适应排期。
- 自动任务轮换:可根据完成数量最少者、轮转顺序或随机方式自动分配任务,保障公平性。
- 时间追踪功能:记录任务耗时,支持单次会话或多阶段累计统计,便于效率分析。
- 子任务与组织管理:可拆分任务为可嵌套的子任务,并通过优先级(P1--P4)和自定义标签分类管理。
- 照片附件支持:允许为任务添加图片,支持本地存储或集成 AWS S3、Cloudflare R2 等云存储服务。
- NFC 快速完成:写入 NFC 标签后,扫描即可一键标记任务完成,实现物理交互自动化。
- 多平台通知提醒:支持通过移动应用(iOS/Android)、Telegram、Discord、Pushover 等接收提醒。
- REST API 接口:提供完整的 REST API,便于自定义集成、自动化脚本和第三方工具对接。
- Home Assistant 集成:可通过官方插件在 Home Assistant 中查看和管理任务,融入智能家居生态。
- 实时同步与离线访问:设备间实时同步任务状态,同时支持有限的离线浏览与操作。
- 数据洞察与分析:提供任务完成情况的可视化统计,支持按标签、状态等多维度分析。
- 仪表盘视图:管理员可在大屏设备上查看整合任务、日历与动态的仪表板,适合家庭共享展示。
- 安全登录与认证:支持本地账户、OAuth2/OIDC(如 Authentik)登录,并启用 TOTP 多因素验证。
- Things 数据追踪:可记录非任务型数据(如体重、开关状态),并触发任务自动完成。
- 完成时间限制:可设定任务仅在截止前特定时段内可完成,防止过早"打卡"。
- 积分激励系统:通过完成任务获得积分,增加趣味性与持续参与动力。
1.3 平台支持
平台支持:
✅ iOS(TestFlight 测试版)| ✅ Android(APK 下载)| ✅ Web| ✅ Docker 部署| ✅ 自托管
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。
| hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 |
|---|---|---|---|---|
| jeven01 | 192.168.3.88 | Ubuntu 24.04.2 LTS | 28.3.3 | Donetick |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署Donetick任务管理工具。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
bash
root@jeven:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Tue 2025-09-02 11:41:03 UTC; 27s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 782009 (dockerd)
Tasks: 19
Memory: 96.5M (peak: 105.5M)
CPU: 1.750s
CGroup: /system.slice/docker.service
└─782009 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
3.2 检查Docker版本
检查Docker版本
bash
root@jeven:~# docker -v
Docker version 28.3.3, build 980b856
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
bash
docker compose version
四、拉取Donetick镜像
下载Donetick容器镜像,如下所示:
bash
docker pull donetick/donetick

五、部署Donetick服务
5.1 创建部署目录
- 创建部署目录
bash
mkdir -p /data/donetick/{config,data} && cd /data/donetick
- 设置目录权限
bash
chmod -R 777 /data/donetick/
5.2 编辑配置文件
在宿主机的.../config目录下,新建及编辑selfhosted.yaml文件
bash
vim ./config/selfhosted.yaml
bash
name: "selfhosted"
is_done_tick_dot_com: false
is_user_creation_disabled: false
database:
type: "sqlite"
migration: true
jwt:
secret: "bjP8LtuQ5ZtV82LYiPsi9vgFWuDp6wKN"
session_time: 168h
max_refresh: 168h
server:
port: 2021
read_timeout: 10s
write_timeout: 10s
rate_period: 60s
rate_limit: 300
cors_allow_origins:
- "http://localhost:5173"
- "http://localhost:7926"
# The below are required for the Android app to work
- "https://localhost"
- "capacitor://localhost"
serve_frontend: true
logging:
level: "info"
encoding: "json"
development: false
scheduler_jobs:
due_job: 30m
overdue_job: 3h
pre_due_job: 3h
realtime:
enabled: true
sse_enabled: true
heartbeat_interval: 60s
connection_timeout: 120s
max_connections: 1000
max_connections_per_user: 5
event_queue_size: 2048
cleanup_interval: 2m
stale_threshold: 5m
enable_compression: true
enable_stats: true
allowed_origins:
- "*"
5.3 编辑部署文件
在部署目录下,创建docker-compose.yaml文件,内容如下所示:
bash
vim docker-compose.yaml
yaml
services:
donetick:
image: donetick/donetick
container_name: donetick
restart: unless-stopped
ports:
- 2021:2021
volumes:
- ./data:/donetick-data
- ./config:/config
environment:
- DT_ENV=selfhosted
- DT_SQLITE_PATH=/donetick-data/donetick.db
5.4 创建Donetick容器
执行以下命令,创建Donetick容器。
bash
docker compose up -d

5.5 查看Donetick容器状态
检查Donetick容器运行状态,确保Donetick容器正常启动。
bash
root@jeven:/data/donetick# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
donetick donetick/donetick "/donetick" donetick 14 minutes ago Up 14 minutes 0.0.0.0:2021->2021/tcp, [::]:2021->2021/tcp
5.6 检查Donetick容器日志
检查容器运行日志,确保Donetick服务正常运行。
bash
docker compose logs

六、访问Donetick服务
6.1 访问Donetick首页
浏览器地址:
http://<个人的服务器IP>:2021,访问Donetick首页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

注册账号:自定义填写账号信息,填写完毕后,确认创建即可。


6.2 添加任务及效果
点击左下角的"+"选项,添加新任务。填写任务名称、任务描述等信息,确认创建即可。


七、总结
通过本次实践,我们成功使用Docker部署了Donetick任务与家务管理应用,实现了高效、便捷的个人任务管理服务。整个部署过程简洁流畅,得益于Docker容器化技术的可移植性和环境隔离优势。Donetick界面友好,功能实用,非常适合家庭或个人进行日常事务协作与跟踪。未来可进一步探索其自动化调度与多设备同步能力,提升使用体验。