【Docker项目实战】使用Docker部署Donetick任务与家务管理应用
【Docker项目实战】使用Docker部署Donetick任务与家务管理应用
一、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正常运行。
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版本
root@jeven:~# docker -v
Docker version 28.3.3, build 980b856
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven:~# docker -v
Docker version 28.3.3, build 980b856
四、拉取Donetick镜像
下载Donetick容器镜像,如下所示:
docker pull donetick/donetick
null
五、部署Donetick服务
5.1 创建部署目录
• 创建部署目录
mkdir -p /data/donetick/{config,data} && cd /data/donetick
• 设置目录权限
chmod -R 777 /data/donetick/
5.2 编辑配置文件
在宿主机的../config目录下,新建及编辑selfhosted.yaml文件
vim ./config/selfhosted.yaml
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文件,内容如下所示:
vim docker-compose.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容器。
docker compose up -d
null
5.5 查看Donetick容器状态
检查Donetick容器运行状态,确保Donetick容器正常启动。
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服务正常运行。
docker compose logs
null
六、访问Donetick服务
6.1 访问Donetick首页
浏览器地址: http://<个人的服务器IP>:2021,访问Donetick首页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。
null
注册账号:自定义填写账号信息,填写完毕后,确认创建即可。
null
null
6.2 添加任务及效果
点击左下角的“+”选项,添加新任务。填写任务名称、任务描述等信息,确认创建即可。
null
null
七、总结
通过本次实践,我们成功使用Docker部署了Donetick任务与家务管理应用,实现了高效、便捷的个人任务管理服务。整个部署过程简洁流畅,得益于Docker容器化技术的可移植性和环境隔离优势。Donetick界面友好,功能实用,非常适合家庭或个人进行日常事务协作与跟踪。未来可进一步探索其自动化调度与多设备同步能力,提升使用体验。
- 点赞
- 收藏
- 关注作者
评论(0)