PassNAT LogoPassNAT

自托管待办工具Vikunja极简部署指南,飞牛NAS用Docker搭建看板式任务管理并远程访问

作者

小编

发布时间

Curving abstract shapes with an orange and blue gradient

项目介绍

Vikunja 是一个自己部署的待办 / 任务管理工具,一个人用、一家人用、一个小团队用都合适。要干的活一条条塞进清单,做完一拖就完事。

它同时提供列表、看板、甘特图和表格四种视图 —— 随手记的清单用列表,推进中的事情切到看板拖卡片,需要看排期就切甘特图。每条任务能设截止日期、优先级、提醒、子任务和标签;支持 CalDAV,手机上用系统自带的日历 App 也能同步。数据全部落在自己的 NAS 上。

1.x 起后端和前端合并成了单个容器,一个容器 + 一个 SQLite 就能跑,不用另起数据库。

项目地址:点我跳转

部署安装

装在自己的 NAS 上之后,它默认只能在家里的网络里打开 —— 而待办清单偏偏是「人在外面想起来还有件事没办」的时候最要紧。我家是移动宽带,没有公网 IP,所以用 帕斯内网穿透 把它开放到公网,飞牛的应用中心里就能直接装到插件,不用另外找工具。

⚠ 这一期的步骤顺序跟别的教程不一样:先建隧道,再部署。因为 Vikunja 2.x 的编排里必须填公网地址(下面那个 VIKUNJA_SERVICE_PUBLICURL),这一行留空或者填错,容器起来会立刻退出、被 restart 策略反复拉起,看着像崩溃循环,其实是配置不合法。所以得先把隧道建好、拿到地址,再写编排。

第一步:先建隧道,拿到公网地址

在飞牛的应用中心里直接搜 PassNAT,装上,账号登一次就行。

打开插件,点创建隧道:名字随便起;接入节点和传输协议都留默认;本地 IP 这一栏留默认的 127.0.0.1,不用去查自己 NAS 的局域网地址;本地端口填 3456 —— 这是下一步编排里要用的端口,先填上,容器还没起也不影响建隧道。

建好之后点开详情,最左边那个电源键按一下,公网地址就在这儿了,形如「IP:端口」。先记下来,下一步编排里要填的就是它。

第二步:准备编排文件

下面这份编排要认三处。

1services:
2 vikunja:
3 image: vikunja/vikunja
4 environment:
5 VIKUNJA_SERVICE_PUBLICURL: http://你的公网地址:端口/
6 ports:
7 - "3456:3456"
8 volumes:
9 - ./files:/app/vikunja/files
10 - ./db:/db
11 restart: unless-stopped

镜像 image: vikunja/vikunja —— 官方镜像,这里不写版本号,跟官方文档的写法一致,拉到的就是当前版本;项目以后更新了,在飞牛里重新构建一次就跟上了。

VIKUNJA_SERVICE_PUBLICURL —— 把它换成你自己刚才拿到的那个公网地址,结尾的斜杠要带上,而且要跟你实际在浏览器里敲的地址一模一样。这一行不填、或者跟实际访问地址对不上,容器起不来。

端口 "3456:3456" —— 左边是宿主机端口,也就是建隧道时填的那个;右边是容器内端口,别动。左边被别的服务占了就改左边,比如 "3457:3456",改了的话隧道那边的本地端口也要跟着改。

下面 volumes 那两行是数据:附件存在 files 目录,SQLite 数据库存在 db 目录,都在项目目录下面,容器重建也不会丢。

还有一个建议长期部署时加上的:VIKUNJA_SERVICE_SECRET —— JWT 的签名密钥,填一串足够长的随机字符。不填的话每次容器重启都会重新生成,已经登录的人都要重新登录一次。(老文档里的 VIKUNJA_SERVICE_JWTSECRET 是废弃写法,以 _SECRET 为准。)

第三步:在飞牛上建 Compose 项目

回飞牛桌面,打开 Docker,切到上面的 Compose,点新增项目,项目名称填 vikunja。

路径这一栏点开,右上角新建一个文件夹,名字随便起,建好选中它,点确认。编排和上面说的 files、db 两个目录以后都放在这儿,重建也不丢。

来源选「创建 docker-compose.yml」,把编排贴进去,勾上「创建项目后立即启动」,点创建。等它把镜像拉完,列表里看到「正在运行」就成了。

⚠ 以后要改 VIKUNJA_SERVICE_PUBLICURL(比如重建了隧道、地址变了),改完要在项目的 ⋯ 菜单里点一次「构建」才会生效;而且项目在运行中的时候 YAML 配置页是只读的,得先把项目停掉再改。

第四步:在公网地址上把账号建好

拿这个公网地址打开,第一次进来是登录页,点下面的「创建账户」注册第一个用户:用户名、电子邮箱地址、密码,三个都填完那个「创建账户」按钮才会亮起来。

注册默认是开着的,也就是说知道你地址的人都能注册。所以建好自己的账号之后,如果是一个人用,建议在编排里加上 VIKUNJA_SERVICE_ENABLEREGISTRATION: "false" 再重新构建一次,把注册关掉。

怎么用

进去之后左边点「新项目」建一个清单,名字比如「这周要办的」。建好进去,在「添加任务…」那一栏里一条一条把事情敲进来,回车就是一条。

点开一条任务,截止日期、优先级、提醒、子任务、标签都能填,做完打个勾就行。

切到看板视图,每条任务就是一张卡片,做完一件把卡片拖到 Done 那一列。手机上打开同一个公网地址也是这么拖,页面是自适应的。要看排期就切甘特图,填了截止日期的任务会排成时间条。

一些使用上的细节

数据在项目文件夹的 files 和 db 两个目录里。想搬到另一台机器,把整个文件夹拷过去、用同样的编排起一个容器就能接着用 —— 记得把 VIKUNJA_SERVICE_PUBLICURL 改成新地址。

支持 CalDAV:在手机日历 App 里添加一个 CalDAV 账户,服务器填你的公网地址,就能把带截止日期的任务同步到系统日历里。

暂时不想让外面访问的话,去 PassNAT 插件里把那条隧道的电源关掉就行。⚠ 但这一期有个特殊的地方:隧道关掉之后公网地址打不开,而 VIKUNJA_SERVICE_PUBLICURL 还指着它 —— 内网直接敲 NAS 地址加 3456 会因为地址对不上而跳转异常。所以这一期的用法是隧道常开;真要长期关,就把那一行改成内网地址再构建一次。