群晖 nas 部署可以自动更新版本的思源笔记

开始之前,缘起

首先说明为什么有这么一篇文章,因为网上看过太多的文章关于在群晖 nas 上部署 docker 版本的思源笔记,但是都不够完整的,只是写到部署完成能打开网页进去就结束了,或者写的太复杂我根本不懂那么深入的 docker 容器技术 看不懂啊,而且他们也只是完成了部署,但是思源笔记基本每周都会有新版本更新啊,我需要部署后它能自己完成新版本更新才能算完整吧,而且群晖 nas 上的 Container Manager 本身就有一个硬伤就是不能拉取新版本去升级已经部署在用的版本啊, 而且如果配置的存储空间如果没有做对映射 不更新是可以正常使用,一旦更新你的数据就没了啊,整个项目被重置了啊等等问题,那么本篇文章除了完成部署思源笔记后,我还要让它随时保持最新,我需要完全解决以下的问题才是我需要的状态:

  1. 基于群晖 nas 的 Container Manager(docker)部署思源笔记
  2. 思源发布新版本后,能自动完成新版本升级
  3. 部署完成后能基于 S3 进行多端数据源同步
  4. 自动升级版本后的历史笔记完整都在,如果工作空间基于 S3 设置了数据同步,内容也都完整存在
  5. 完全傻瓜式,不做多余的任何一点配置,多了就乱,我需要让完全不懂 docker 的人都能看懂,因为我就是因为看不懂网上那些文章写的各种配置项代表什么意思,自己一遍又一遍的摸索安装了不下 20 次,不行我就删掉重来,而不是去人工修改配置文件(因为看不懂改的内容代表啥意思)

准备工作

首先你的群晖 Container Manager(docker) 本身要能正常的加载镜像仓库,这里在国内的群晖好像从 2024 年中就一直被墙了,下图已经解决了镜像仓库获取的能力,这一步我已经具备了,所以暂时不再这里介绍,如果你在打开这里是无法使用的,那么可能就无法完全照做了,照做之前先解决你获取镜像的能力。如何解决可以搜索一下网上的文章,我有空可能会写一下,但是操作动手起来可能有点难。

image

开始

直接获取思源笔记的镜像,选中后点下载

image

然后到映像界面,这里是已经下载到本地的镜像,但是还没有部署起来,那么选中刚刚下载好的 b3log/siyuan 镜像,标签选择对后面配置自动更新也有关系,如果要想极度简单且保持最新版本,就选中 latest , 而不要选中历史的版本标签,虽然后面使用 watchtower 也能强行更新到最新版本,但是配置对我而言过于复杂

image

点运行进入到设置界面,容器名称自己随便起个名字,这个名字后面使用 watchtower 进行容器更新的时候会用到,其他勾选项自己根据实际来,因为后面还能改,我这里都没勾选,

image

然后可以直接下一步,进入到高级设置页面

端口设置

这里意思是将 docker 里面思源笔记的 6806 端口映射在 nas 上的端口 是个啥,如果你要设就设置一样的端口号,如果有冲突就换一个或者根本就不填,那么群晖 nas 会自动给你分配一个,我就因为安装了很多次,这个端口被之前安装的容器占用了,索性就不设置了,启动后 访问依然可以使用 6806 访问。

image

存储空间设置

这一步很重要,到这里我看了网上好多的人各种的设置,可是我照做怎么都不能完全满足我前面列出的基本要求,要么是运行不起来,说我的工作空间不能加载,要么就是运行起来之后存储空间的设置没有从容器里面映射到 nas 到 docker 共享文件夹下的思源笔记文件夹,这就导致如果我手动更新或者重装新版本 历史的笔记就会丢掉。经过无数次的尝试以及阅读官方的 docker 安装说明,终于明白并且只需要做最简单的设置,多余的东西都不需要做。

先解释一下这个添加文件夹的意义,前面选的路径是思源笔记最终要存储数据的工作空间位置,而后面那一段是指 docker 容器内部的思源笔记对应的工作空间路径,这里就是把里面的工作空间位置指向实际的存储位置就对了。然后官方文档明确说了 它的加载顺序就会有 默认/siyuan/workspace 这个位置,那么只需要直接将这个位置映射出来即可,我直接映射到 nas 下创建的共享文件夹 docker/siyuan/workspace;

这里需要注意/docker/siyuan/workspace 这一个路径的文件夹必须在 File Station 里去提前建立好,否则部署完 启动就会报错导致无法启动容器。 这里之前看别人的文章都有各种设置路径的,本身他们的设置也没错,因为他们还需要设置下面的 HOME 参数跟存储空间的设置有关系,可是我不懂,所以多余的东西我都不做,这是要做的第一个设置点。

image

环境变量

这里,我什么都没动,默认是啥就是啥,反正我是要保证一个原则尽量少的动作,避免其他人无法做对, 我这里指出了 HOME 的这个变量,这个选项其他文章都很多都会自己去改,改的我发懵,改的我跟上面的的存储空间设置找不准位置,所以我就不要改。

image

执行命令

这里这是最后一点设置,必不可少,但只需要输入-accessAuthCode xxxxx 即可,xxxx 可以自己改,这是用于部署完成启动后从浏览器去访问思源笔记 需要用到的进入密码, 不设置还不行,会启动不了,看了其他人的文章,这里还设置了 workspace 的位置,而我这里没有设置了,因为官方文档说了启动的时候会去按顺序加载 workspace ,而我不想走那么多的弯路,直接让其使用默认的位置 所以不再设置,只是在第一步里把这个默认位置映射了出去仅此而已。实际上整个配置就结束了,多一点配置都是多余,特别讨厌那些懂技术的喜欢炫技 一堆乱七八糟的参数 花里胡哨的。直接下一步 直到完成。

image

去到 Container Manager 的容器界面,就可以看到思源笔记已经运行起来了,然后再去 File Station 看看 docker/siyuan/workspace 目录下,一堆数据文件就在这里了,证明容器内的存储空间已经映射到了这个目录进行存储,即便容器里面的思源笔记更换了,删除了,都不会影响数据的存储。

image

使用 watchtower 实现自动更新思源笔记

  1. 继续在群晖的镜像仓库中搜索 containrrr/watchtower ,然后点下载, 下载完成后 就结束了 不要去运营部署和运行,对的你没看错就是下载好就行了​image

  2. 然后打开群晖的控制面板,找到右下角的那个任务计划

    image

    新建一个自定义脚本的任务,在编辑任务的用户帐号选择 root , 任务名称自己随便写一个,然后在计划 tab 选项页配置一个执行检查更新的计划,然后在任务设置 tab 页面的运行命令框填入以下脚本

    docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once siyuan

    image

    这里只需要知道最后一个 siyuan 是指群晖 Container Manager 里面 部署并运行中的思源笔记的那个容器的名称(是的就是名称不是别的),然后如果需要邮件通知就填写好自己的邮箱(前提是你的 nas 以及配好了发送邮件的服务)即可。

  3. 如果需要验证一下是否可行,那么就保存好这个任务之后,选中并运行一次看看邮件发送的日志,然后看看更新的情况即可。

到此,关于群晖 docker 部署 思源笔记以及保持思源笔记自动更新官方最新版本的能力就具备了, 至于我开始提到的几点问题的 3、4 就是另外一个话题且那个会简单很多就不在这里介绍了。 做完这些如果你的群晖 nas 能外网访问,那么理论上你在任何地方都可以通过浏览器去访问自己的思源笔记随时随地进行记录,将思源的本地话变成了互联网话, 因为我偶尔出门不带电脑就带个 ipad ,但我的 ipad 仅有 64G 的空间,我根本不想安装一个移动端 app 再去下载一份数据在 ipad 上存储,所以我可以在 iPad 的浏览器上直接访问,至少节省我 iPad 空间 2 个 G(我现在的笔记内容就这么大了)。本篇文章就是在 ipad 上编辑完成,文章配图是电脑上后补的。 整体而言非常 OK。

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    26513 引用 • 110281 回帖 • 1 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    498 引用 • 934 回帖 • 2 关注
  • 群晖nas
    1 引用 • 2 回帖
3 操作
evano 在 2025-05-07 14:34:33 更新了该帖
evano 在 2025-05-07 10:16:38 更新了该帖
evano 在 2025-05-07 10:12:21 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • linyuanmuyu via macOS

    卡在第一步,docker 无法获取镜像,我先研究下这个前置任务吧

    1 回复
  • EzioTAuditore

    dockerhub 已经无法直接访问了,需要去配置一下镜像加速,换一个镜像源。