下面我给你一套真实可用、一步一步落地的方案:
👉 使用 Docker 部署 Todo 任务管理器(以开源项目 Vikunja 为例)
之所以选 Vikunja:
✅ 开源
✅ Web UI + API
✅ Docker 官方支持
✅ 个人 / 团队 Todo 管理都合适
✅ 常被当作 Todoist 的自建替代方案
一、Todo 任务管理器选型说明
为什么选 Vikunja?
| 项目 | 说明 |
|---|---|
| 项目地址 | https://vikunja.io |
| 类型 | Todo / 任务管理 |
| 架构 | 前端 + 后端 API |
| 支持 | 多用户 / 项目 / 标签 / 截止日期 |
| 部署方式 | Docker / Docker Compose |
二、部署前准备
1️⃣ 环境要求
- Linux / macOS / Windows
- Docker ≥ 20.x
- Docker Compose ≥ v2
检查:
docker -v
docker compose version
2️⃣ 端口规划(默认)
| 服务 | 端口 |
|---|---|
| Web UI | 3456 |
| API | 3456(前后端已整合) |
三、方式一:最快体验(单容器,测试用)
⚠️ 不推荐生产,只适合快速体验
docker run -d \
--name vikunja \
-p 3456:3456 \
vikunja/vikunja
访问:
http://服务器IP:3456
默认账号(首次进入可创建管理员)
四、方式二:Docker Compose(强烈推荐 ⭐⭐⭐⭐⭐)
这是标准 & 生产可用方案。
1️⃣ 创建目录结构
mkdir -p vikunja/{db,files}
cd vikunja
2️⃣ 编写 docker-compose.yml
version: "3.9"
services:
vikunja:
image: vikunja/vikunja
container_name: vikunja
restart: unless-stopped
ports:
- "3456:3456"
environment:
VIKUNJA_DATABASE_TYPE: sqlite
VIKUNJA_DATABASE_PATH: /db/vikunja.db
VIKUNJA_SERVICE_JWTSECRET: supersecretkey
VIKUNJA_SERVICE_FRONTENDURL: http://localhost:3456
volumes:
- ./db:/db
- ./files:/files
📌 说明:
- 使用 SQLite(简单可靠)
- 数据持久化到宿主机
- 单容器即可运行
3️⃣ 启动服务
docker compose up -d
4️⃣ 查看状态
docker compose ps
5️⃣ 浏览器访问
http://服务器IP:3456
首次进入:
- 创建管理员账号
- 开始添加 Todo 任务
五、使用 MySQL / PostgreSQL(进阶)
适合:多用户 / 团队使用
示例:MySQL 版本(常用)
version: "3.9"
services:
db:
image: mysql:8
container_name: vikunja-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: vikunja
MYSQL_USER: vikunja
MYSQL_PASSWORD: vikunja
volumes:
- ./mysql:/var/lib/mysql
vikunja:
image: vikunja/vikunja
container_name: vikunja
depends_on:
- db
ports:
- "3456:3456"
environment:
VIKUNJA_DATABASE_TYPE: mysql
VIKUNJA_DATABASE_HOST: db
VIKUNJA_DATABASE_USER: vikunja
VIKUNJA_DATABASE_PASSWORD: vikunja
VIKUNJA_DATABASE_DATABASE: vikunja
VIKUNJA_SERVICE_JWTSECRET: supersecretkey
volumes:
- ./files:/files
启动:
docker compose up -d
六、Todo 管理功能一览(部署后可用)
✔ 创建任务
✔ 截止日期 / 优先级
✔ 标签(Tag)
✔ 项目 / 清单(List)
✔ 已完成 / 未完成
✔ 多用户协作
七、常见问题排查
❌ 页面打不开
docker logs vikunja
检查:
- 端口是否放行
- Docker 是否正常运行
❌ 数据丢失?
⚠️ 必须使用 volume:
volumes:
- ./db:/db
❌ 外网访问地址不正确
VIKUNJA_SERVICE_FRONTENDURL: http://你的域名
八、安全与生产建议(重要)
1️⃣ 使用反向代理(Nginx)
server {
listen 80;
server_name todo.example.com;
location / {
proxy_pass http://127.0.0.1:3456;
proxy_set_header Host $host;
}
}
2️⃣ 强烈建议启用 HTTPS
- Nginx + Let’s Encrypt
- 或 Traefik / Caddy
九、升级方式(不会丢数据)
docker compose pull
docker compose down
docker compose up -d
十、是否还有更轻量的 Todo 方案?
| 项目 | 适合场景 |
|---|---|
| Vikunja | 完整任务管理 ⭐⭐⭐⭐⭐ |
| TodoMVC | 学习前端 |
| Kanboard | 看板型任务 |
| Taiga | 项目管理 |
十一、一句话总结(必记)
使用 Docker 部署 Todo 任务管理器,
Docker Compose 是最佳方式,
SQLite 适合个人,MySQL 适合团队,
数据一定要做 volume 持久化。
发表回复