云服务器 Docker 部署思源笔记
type
Post
status
Published
date
May 26, 2023
slug
siyuan
summary
tags
工具
思源笔记
icon
本文使用 Caddy 进行反向代理,caddy 介绍及教程:caddy Docker 容器代理介绍与使用 | insv の blog
本文大量使用该教程的前置知识,请务必至少浏览一遍该教程:caddy Docker 容器代理介绍与使用 | insv の blog
0. 介绍
为什么使用思源笔记
- 我对 Notion 类的以 block 为核心的笔记笔记喜欢
- 同时在使用 Notion 和 Flowus,但他们都没有 tab 功能。如果使用网页端,需要同时开几个浏览器 tab,和其他资料 tab 混在一起,切换非常痛苦;如果使用客户端,需要同时开几个窗口(Notion 似乎只能有一个窗口,Flowus 允许用户新建多个窗口),也会乱糟糟的堆在一起
使用 Docker 部署思源笔记的优势
- 思源笔记桌面端启动速度不太令人满意,尤其是如果使用了云同步服务
- 个人设备较多,所以对全平台无感切换比较在意。虽然配置了 S3 同步,但多设备同时编辑导致的文件冲突仍无可避免,只有 Docker 服务这一份反而降低了冲突导致文件丢失的风险
使用 Docker 部署思源笔记的一些不足
- 无法像 Notion 这样:每一个页面都有唯一的 URL,方便我们拷贝当前页面地址到其他地方,日后能通过点击该链接地址迅速定位到当前页面。
1. 思源笔记 docker-compose.yml
第3, 4 行表示将 workspce 目录更改为所有者 ID 为 1000 和组 ID 为 1000。
因为思源笔记镜像默认使用普通用户
siyuan
(uid 1000/gid 1000)来启动内核进程。
如果不修改所有权,是无法将数据持久化的内容如下:
🚧 关于第 12 行实现数据的持久化的一些记录
思源笔记在2021年前后似乎变了很多设定。其 dockerhub 文档是这样说的”
--workspace
指定工作空间文件夹路径,在宿主机上通过 -v
挂载到容器中”,但事实上docker-compose.yml中就算使用 --workspace
指定工作目录,也无法生效。
数据无法持久化到外部,这个缺陷让我试图放弃思源笔记,但这篇讨论中@ovst的评论解决了我的问题。如果你使用过思源笔记的本地端,看过它的文件组织结构,就能发现我们的笔记本是存储在 data 目录下的,如下图。
所以 docker 容器数据持久化到外部的核心思想是找到 data 目录
- 启动思源笔记容器
- 通过
docker ps
命令找到思源笔记容器 ID,如下图。复制该 ID
- 使用命令
docker exec -it 上图红框内ID sh
,进入容器内部
- 使用
find -name data
命令找到 data 目录,初始目录/opt/siyuan
下没有。需要先切换到 ~ 目录,然后再用find -name data
查找,显示路径为./Documents/SiYuan/data
。但必须用绝对路径,所以我们通过echo $PWD
得知当前目录为/home/siyuan
。故最终目录为/home/siyuan/Documents/SiYuan/data
2. Caddyfile 配置
在 Caddyfile 中追加:
修改
example.com
为你的域名3. 设置 sy.example.com
的 DNS 解析到服务器 IP
4. 启动
5. 配置
在浏览器地址栏输入
sy.example.com
(修改 example.com
为你的域名) 即可进入思源笔记界面5.1 修改语言为简体中文
使用快捷键
Alt+P
打开设置,搜索 language
,在右侧下拉菜单中选择 简体中文
5.2 打开访问限制
我们能发现,任何人只要输入
sy.example.com
就可以访问我们的笔记,这太不安全了,所以设置一个访问密码,只有输入密码后才能访问思源笔记的内容使用快捷键
Alt+P
打开设置,搜索 访问授权码
,点击右侧 设置
,输入授权码新开一个隐私窗口,输入
sy.example.com
,会要求输入授权码一般情况下,我们输入了后,浏览器会记住,所以不会出现打开一次笔记就需要我们输入授权码的繁琐情况
6. 迁移
数据卷
workspace
中不只保存了笔记本,我们的配置也存在其中。所以迁移到新服务器只需要这一个文件夹就能完全恢复成迁移前的样子。当我们需要把思源笔记服务从当前服务器(记为 A ),迁移到新的服务器(记为 B )上
6.1 在当前服务器 A 上
拷贝 siyuan 目录下的文件(docker-compose.yaml)和目录(workspace)
6.2 在新服务器 B 上
拷贝 siyuan 目录下的文件(docker-compose.yaml)和目录(workspace)到服务器 B 上 的 ~/siyuan 目录
和第 1 步类似,仍需要为 workspace 目录修改所有者/组
第2, 3, 4 步无变化
7. 导入表情
- 下载上面的压缩包,解压到
workspace/data/emojis
目录下
注意 emojis 下只能有一级文件夹,即如下图 DIY 目录,如果里面还有个目录 tmp,tmp 中的图标是无法被思源读取的
- 在设置中,找到
文档图标使用系统原生 Emoji
项目,关闭开关