Docker实战 | 使用Docker部署Donetick任务与家务管理应用

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界面友好,功能实用,非常适合家庭或个人进行日常事务协作与跟踪。未来可进一步探索其自动化调度与多设备同步能力,提升使用体验。

相关推荐
流星白龙1 小时前
【Docker】4.NameSpace空间隔离实战
java·运维·docker
有续技术2 小时前
哈斯 (Haas) 机床 IP、端口号配置内容总结
运维·服务器
小张同学a.2 小时前
LAMP架构2
linux·运维·网络·架构·负载均衡
千河殇 多想和她2 小时前
如何在Reaonix中使用CodeGraph以及CodeGraph效果实测经验分享
linux·运维·ubuntu
VortMall2 小时前
出海引流运维双升级|VortMall微服务商城系统v1.3.12 升级更新
运维·微服务·facebook
心念枕惊2 小时前
新写了个直播录制工具,可录制抖音快手斗鱼直播
运维·服务器·数据库
躺不平的理查德2 小时前
CMAKE备忘录
linux·运维·服务器
9624562 小时前
跨域与私有网络访问限制排查实录
运维·服务器·网络
雨辰AI2 小时前
K8s 达梦数据守护集群部署|容器化高可用生产落地指南
云原生·容器·kubernetes