fnOS 部署 Vikunja:Docker Compose 搭建私人待办平台与权限问题处理

前言

在 NAS 上部署待办工具,看起来无非就是写一份 Docker Compose、启动容器,再打开浏览器注册账号。但真正开始装 Vikunja 时,最容易卡住的反而不是功能配置,而是挂载目录的读写权限。

本文会以 fnOS 为环境,从创建 Vikunja 数据目录开始,配置 filesdb 的权限,再通过 Docker Compose 启动容器,并把容器运行用户固定为对应 UID,避免数据库和附件目录因为权限不匹配导致服务异常。部署完成后,再进入 Vikunja 本身的使用流程。

Vikunja 不只是简单的“打勾式待办清单”。同一套任务可以继续按项目组织,设置截止时间,并用于团队成员之间的任务分配和进度管理。文章中会实际创建任务、团队和项目,看看它从个人待办扩展到小型项目管理以后具体怎么使用。

最后还会通过 cpolar 给 3456 端口增加公网访问入口,并配置固定二级子域名,让部署在 NAS 上的 Vikunja 不只是在家里记任务,在手机流量或异地电脑上也能继续查看和更新。

这篇文章最终要完成的,是一套 数据留在自己 NAS、可以长期运行,同时能够跨设备使用的私人任务管理平台

image-20260723163705202

1.什么是Vikunja?

Vikunja 是一款完全开源、支持私有化自托管的任务 / 项目管理工具,对标付费工具 Todoist、Trello、飞书项目,兼顾个人日常待办与多人团队协作,最大特色是数据完全由自己掌控,同时拥有现代化清爽 UI,也就是前文提到的 “颜值与实力并存” 的开源待办软件Vikunja。

基础技术信息

  1. 开发语言:后端采用 Go 语言编写,前端基于 Vue.js,程序轻量化、响应速度极快,页面交互无长时间加载等待。
  2. 开源协议:采用 AGPLv3 开源协议,代码完全公开可查阅,无后台隐私收集、无厂商锁定,你可以随时导出全部任务数据自由迁移Vikunja。
  3. 部署方式:官方提供一键 Docker 镜像,可部署在 fnOS、群晖等 NAS、Linux 服务器、云主机,默认使用 SQLite 轻量数据库,大型团队可切换 MySQL/PostgreSQL。
  4. 项目成熟度:开发时长超 8 年,2026 年初正式发布 1.0 稳定版,GitHub 近 4k 星标,Docker 镜像下载量超 700 万,社区维护活跃Vikunja。

核心功能亮点

  1. 四种任务视图,一套数据自由切换

同一批任务支持4种可视化模式,无需重复创建数据:

  • 列表视图:日常待办、购物清单、简单计划首选;
  • 看板视图:适配敏捷开发、流程跟踪,对标Trello;
  • 甘特图:中长期项目进度规划、任务依赖管理;
  • 表格视图:批量筛选、编辑、导出任务数据Vikunja。
  1. 完备的任务管理能力,不输付费工具

支持优先级、截止时间、重复周期任务、子任务分层、标签分类、文件附件上传、邮件 / 站内提醒、自定义筛选视图,同时支持 CalDAV协议,可与手机系统日历、备忘录双向同步任务。

  1. 团队协作功能

支持创建命名空间、多级子项目,项目可分享给其他用户,支持任务指派、操作动态记录、精细化权限管控,小型团队、工作室可完全替代付费协作软件。

两大使用模式

  1. 自托管(推荐NAS用户)

    免费无任何功能限制,所有任务、文件数据存储在你自己的NAS / 服务器中,不存在第三方平台泄露、关停丢失数据的风险,也是本文部署教程的核心使用方式。

  2. 官方云端订阅

    不想自建服务的用户可选择官方托管云,按月付费,数据存储在欧盟合规服务器,适合不想折腾部署的用户。

对比商业工具的核心优势

  1. 无功能付费锁:Trello、Todoist 的甘特图、表格导出、多看板等高级功能均需开通会员,而 Vikunja 自托管后全部功能免费开放;
  2. 数据主权完全自主:商业工具数据存厂商服务器,Vikunja 本地部署数据仅存你的硬件,隐私安全性更高;
  3. 轻量化低资源占用:Docker 单容器运行,NAS 低配置硬件也能流畅运行,无需高额硬件开销;
  4. 无广告、无强制推送,界面简约清爽,长期使用体验舒适。

适用人群

  1. 个人用户:收纳生活琐事、工作计划、学习备考清单,替代手机自带备忘录;
  2. 技术爱好者、NAS玩家:fnOS、群晖自建私有服务,实现数据本地存储;
  3. 小型团队、工作室:免费完成项目分工、进度跟踪,省去协作软件订阅成本。

2.安装前提条件

2.1ssh远程连接到飞牛

  • 开启【SSH 服务】
  • 使用终端(Windows PowerShell / Mac Terminal)登录:

在设置—>SSH中开启SSH服务:

463c5f2aa280d7887420494b8b8f852e

27abe7f94baeaebc1738b60b1ba78933

e16c7480a399e50f627439329422c5a7

2.2验证docker是否开启

使用命令:

docker -v 
systemctl status -v

也可以直接在飞牛主页查看(其他机器也是这样的哦~)

bc2a0952beed8ca143a171bb000b2b23

3.安装Vikunja

首先创建一下安装的目录并进入到该目录:

mkdir -p /docker/Vikunja
cd /docker/Vikunja
chown -R 1000:1000 ./files ./db
chmod -R 777 ./files ./db

image-20260723154032599

创建并编辑 docker-compose.yml文件:

version: "3"
services:
  vikunja:
    image: vikunja/vikunja:latest
    container_name: vikunja
    environment:
      - VIKUNJA_SERVICE_PUBLICURL=http://192.168.42.147:3456
      - VIKUNJA_SERVICE_SECRET=45c1428dbdf63826b7b1a999e012df3b
      - VIKUNJA_DATABASE_PATH=/db/vikunja.db
    ports:
      - "3456:3456"
    volumes:
      - ./files:/app/vikunja/files
      - ./db:/db
    restart: unless-stopped
    # 强制容器内运行用户uid=1000,彻底解决权限不匹配
    user: "1000:1000"

image-20260723153933034

启动容器:

docker compose up -d

image-20260723154105863

部署完成后,在浏览器中输入 http://飞牛IP:346 就能看到Vikunja的界面:

c687e96f2577492cd882cf6bb11f2765

4.使用Vikunja

4.1 登录访问

首次登录要先注册账号密码:

4ba2d426c2679586bc09aeef60ba24e1

注册完成后,返回登录:

b16dce3caf1a3b3df3a3535df4ac28b4

登录成功后,到达主页面:

2ba8c155fcf64303948fc42cf739a5aa4.2 创建任务

我们来创建第一个任务:

image-20260723162154318

勾选前面即可分清任务完成与否:

image-20260723162228064

为该任务设置完成时间:

image-20260723162606133

image-20260723162731239

你们还可以编辑这些:

image-20260723162803300

4.3 创建团队

也可以创建团队,为了方便分配团队人员工作:

image-20260723163031519

image-20260723163044913

管理团队人员:

image-20260723163156389

4.4 创建项目

创建项目:

image-20260723163308304

image-20260723163325255

为该项目添加任务:

image-20260723163409880

这里还有不同的形式:

image-20260723163439021

我们通过Docker在fnOS NAS部署完成Vikunja私有待办平台后,默认仅能在局域网内访问,外出通勤、异地办公时无法随时查看、编辑个人任务清单,而多数家庭宽带不具备公网IP,手动设置路由器端口转发操作繁琐且存在安全隐患;这时我们就可以搭配轻量内网穿透工具cpolar使用,它无需复杂网络配置,只需建立一条加密隧道,就能将NAS上本地3456端口运行的Vikunja服务映射生成专属公网访问链接,手机流量、外地电脑均可随时随地连接我们自建的待办系统,完美解决内网服务远程访问的痛点。

5.安装cpolar实现随时随地开发

5.1 什么是cpolar?

cpolar是一款安全高效的内网穿透工具,无需公网IP或复杂配置,只需一条命令,即可将本地服务器、Web服务或任意端口映射到公网,让你随时随地远程访问内网应用,特别适合开发调试、远程运维和应急部署等场景。

5.2 部署cpolar

cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。

❤️以下是安装cpolar步骤:

使用一键脚本安装命令:

sudo curl https://get.cpolar.sh | sh

image-20250725104019896

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)

sudo systemctl status cpolar

22e5adfaf290a17fc3384bb296055259

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://ip:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:

打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

8a6698b1bf26d64ba3645827fbfb1c29

6.配置公网地址

登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:

  • 隧道名称:可自定义,本例使用了:Vikunja,注意不要与已有的隧道名称重复
  • 协议:http
  • 本地地址:3456
  • 域名类型:随机域名
  • 地区:选择China Top

image-20260723163924196

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

image-20260723164032351

访问成功。

image-20260723164046059

7.保留固定公网地址

使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

image-20250918151358733

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我使用的是Vikunja,大家可以自定义。填写备注信息,点击保留。

image-20260723164131612

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image-20260723164158987

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名
  • 地区: China Top

点击更新

image-20260723164226489

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

image-20260723164246137

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问的页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

image-20260723164312249

总结

Vikunja 比普通待办清单更进一步的地方,是它可以从一条简单任务逐步扩展到项目、团队和不同管理视图,同时又保留了自托管的优势,任务和附件数据都可以放在自己的 NAS 中。

这次部署里更值得记住的其实是目录权限处理。Docker 容器能启动,并不代表挂载的数据目录一定能够正常读写,提前把 UID 和目录权限理顺,后面的升级和长期运行会省掉不少排查时间。

再通过 cpolar 增加固定公网入口以后,这套部署在 fnOS 上的任务系统也可以继续用于异地办公和多设备访问。对于已经有 NAS、又不想把所有任务长期放在第三方平台的人来说,Vikunja 提供的是一种比较完整的自托管选择。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值