站点已经替“家庭数字生活”圆了很多愿望:代码进了 Gitea、照片进了 Immich、影音进了 Jellyfin、密码进了 Vaultwarden、笔记进了 Memos、账本进了 Firefly III——但有一类每天都在发生、却总是靠“脑子里记着”和“微信置顶聊天”硬撑的事务没被正面处理:任务。家里的水电要续费、孩子的作业要签字、项目明天要交差、下个月要完成一次体检……这些任务散落在脑子里死死记着,忘一件就慌一次。滴答清单、Todoist 这些工具很好用,但会员按月收费,待办数据也全程存在别人的服务器上。Vikunja 用一个自托管的看板把家庭和工作的任务统一管起来:待办、项目、多人协作、日历提醒一块面板全搞定。这篇文章把它从零到一讲透。
一、为什么自建任务看板
任务管理工具的痛点是典型的“三高”:数据在别人手里、价格在涨、功能的通用模型不对。混乱的待办最根本的问题从来不是“工具不够多”,而是“没有一处所有任务都能归集的地方”。自托管一款任务看板,等于拥有一个永远不涨价、数据完全私有的“家庭任务中枢”。你可以清晰看到水电费几号该交、孩子的兴趣班下周几有课、工作上的待办还剩几件——所有内容一屏看清,不再依赖某个 App 的会员续费。
二、Vikunja 是什么,为什么选它
自托管任务管理的主要候选有 Planka、Focalboard、Leantime 和今天的主角 Vikunja。Planka 长得像 Trello,交互顺滑但偏“纯看板”;Focalboard 已经停止积极维护;Vikunja 则是三者的综合优等生:它既是看板(看板视图)、又是清单(列表视图)、又是日历(带 remind 提醒),还内置多人协作和分享链接,最重要的是它由活跃社区持续维护、协议开放,被很多团队和个人玩家当作滴答清单的私有化平替。
Vikunja 的几个贴心细节特别像“为家庭场景设计”:项目可以设优先级和标签、每条任务可以加子任务和备注、看板支持拖拽、还有到期日 + 提醒通知(邮件或接上本站的 ntfy 统一推送)。一家人的事务在一张面板上各奔各的节奏,互不干扰又能互相看见。
三、准备工作与目录规划
Vikunja 由前端和后端两个模块组成,官方推荐用 docker compose 一起编排。数据全部落在它的 SQLite 或 Postgres 数据库里,因此只要把 compose 所在目录整体纳入备份,就万无一失。建议固定在 /opt/vikunja 下。
如果你希望任务提醒能实时推给手机,建议提前准备好可用的发信能力(最基本的 SMTP 配置即可),这样 Vikunja 的邮件提醒才不会被服务商判别为垃圾信。
四、Docker Compose 部署 Vikunja
在服务器上执行:
mkdir -p /opt/vikunja
然后创建 /opt/vikunja/docker-compose.yml:
services:
api:
image: vikunja/api:latest
container_name: vikunja-api
environment:
- VIKUNJA_SERVICE_PUBLICURL=https://todo.example.com
- VIKUNJA_DATABASE_TYPE=sqlite
- VIKUNJA_DATABASE_PATH=/db/vikunja.db
- VIKUNJA_MAILER_ENABLED=true
- VIKUNJA_MAILER_HOST=smtp.example.com
- VIKUNJA_MAILER_PORT=587
- VIKUNJA_MAILER_USERNAME=
- VIKUNJA_MAILER_PASSWORD=
- VIKUNJA_MAILER_FROMEMAIL=notify@example.com
volumes:
- ./files:/app/vikunja/files
- ./db:/db
restart: unless-stopped
frontend:
image: vikunja/frontend:latest
container_name: vikunja-frontend
restart: unless-stopped
proxy:
image: nginx:alpine
container_name: vikunja-proxy
restart: unless-stopped
ports:
- "8084:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- api
- frontend
其中 proxy 的 nginx.conf 负责把 / 指向前端、把 /api 指向 api 模块。把它写好后执行 docker compose up -d,通过 http://IP:8084 打开,注册第一个账号即为管理员。
上线后把 VIKUNJA_SERVICE_PUBLICURL 改成真实域名,再用 Caddy 反代加 HTTPS,一个正式可用的家庭任务中枢就位。
五、开始把任务“收编”进来
首次进入先建两个大分类:一个“家庭”,一个“工作”。家庭里按孩子、家务、缴费建项目;工作里按项目名建工程项目。每条任务可以随手标注优先级、截止时间、负责人标签,看板视图下直接把卡从“待办”拖到“进行中”再拖到“完成”,整个过程零学习成本。
一个很实用的做法是给自动生成重复任务:例如“每月 1 号检查水电缴费”“每周日写周报”,Vikunja 支持在任务里设定重复规则,到期自动生成新任务并发提醒,把“别忘了”交给系统而不是交给你自己。
六、多人协作与家庭共享
在项目设置里邀请家人或同事加入协作:对方用自己的账号登录后,就能在同一张面板上认领任务、拖拽状态、互相看到进度。不想给对方账号的时候,还可以使用“分享链接”——把某张看板生成一个只读或可编辑的公开链接,家人不用注册也能一眼看到家庭里的任务全貌。
配合 Vikunja 的日历同步功能,把“截止日”镜像到自己的系统日历,无论你习惯用手机日历还是桌面日历,任务提醒都不会漏。
七、备份与安全
Vikunja 的数据全在 /opt/vikunja/files(附件)和 SQLite 数据库里,备份它们就是备份整个任务中枢,建议用 restic 做异地增量备份。安全上,管理员开启强密码并启用两步验证;如果不是纯内网使用,务必把 8084 端口用反代藏起来、关掉公网直连端口,避免被扫描爆破。
结语
从“脑子里记着”到“看板上一清二楚”只有一层 docker compose 的距离。当你把水电、作业、项目统一放进自托管的 Vikunja,你换回的是一片不再靠记忆力硬扛的轻松,和一份永远属于全家的任务地图。先建好家庭看板,从今天第一条待办开始。




