Docker 部署思源笔记实现多人协作(更新版本:1.2.3)

前言

最近准备将协作平台从 HackMD 迁徙到思源笔记。
这主要是因为我个人笔记使用思源,而团队笔记使用 HackMD,不免有些混乱。
再加上思源的块信息实在是很好的平台,基于丰富的信息有很多可操作性,后续也有一定的相关的计划,所以现在打算开始迁徙。


首先买了一台服务器、、、1v 512MB,英国,凑合用用。

安装了 Debian10.3,准备开始操作。

(可选操作)准备工作

一下都是可选的步骤,主要是为了安全性等考虑。

先更新一下系统:apt update 然后 apt upgrade,更新完重启一下,如果出问题了,则重装系统、、、

设置一下时区:timedatectl set-timezone Asia/Shanghai

更改 SSH 端口:vim /etc/ssh/sshd_config,修改 Port 22,然后 systemctl restart sshd
断开连接,使用新的端口重新连接。

然后最好取消掉密码登陆。
在本机配置 SSH 密钥,然后上传到服务器。可以参考这篇文章

最后配置一下防火墙,打开 SSH 端口和思源端口 6806 即可,可能你的服务商会提供安全组策略。

部署思源 Docker

先参考这篇文章安装 Docker

apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common 
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt update
apt install docker-ce

然后 Docker 装好了,开始部署思源笔记。

docker pull b3log/siyuan

然后考虑一下参数,我看的帮助文档里的参数有些过时了,可以通过 -h 参数输出帮助。
需要注意的地方:指定 workspace 的位置方便后续处理,设置授权码 password,这里替换为你想设置的密码。

docker run -v /siyuanworkspace:/siyuanworkspace -p 6806:6806 b3log/siyuan -resident -workspace /siyuanworkspace -accessAuthCode password

理论上换个端口会安全一点、、、

打开 networkServe 配置

重要:运行之后会生成配置,在 1.2.3 版本之后,要去配置文件中将 networkServe 设置为 true 才能正常访问。

image.png

配置文件大概位置: /siyuanworkspace/conf/conf.json


浏览器访问 http://ip:6806:/,提示需要输入密码,密码是你刚刚设置的授权码。

image.png

大功告成。

测试完毕后,可以这样运行:

docker run -d -v /siyuanworkspace:/siyuanworkspace -p 6806:6806 b3log/siyuan -resident -workspace /siyuanworkspace -accessAuthCode password

这样在 detached mode 中运行,就可以后台运行了。

试了一下,虽然用的是国外服务器,但没有什么延迟的感觉。

(可选操作)绑定域名

绑定个域名好记一点、、、实际上,添加一条 A 记录就可以了,没有什么额外的工作。

image.png

(可选操作)使用 MegaSync 同步

我的最初目的是多人协作编辑一个笔记本,我还希望这个笔记本能被同步到本地,这样我可以在别的笔记本中引用它。

首先需要注意,在笔记本根目录下创建一个 assets 文件夹,这样资源文件就会单独保存到这个文件夹,而与 Workspace 隔离开。

我现在使用的同步盘是 Mega,因此我考虑用 Mega 同步对应的文件夹到本地。可以使用 Mega CMD 进行操作。

下载好之后,通过 scp -P port localpath root@ip:remotepath 进行上传。根据官网教程进行安装。

这个 MegaCMD 是个全功能客户端,我们只需要 Sync 就好了,无需过多了解。事实上有一个非常详细的 UserGuide.

mega-login email password

登陆完成之后,准备开始同步。由于我已经在本地创建好了对应的笔记本并同步到 Mega,因此路径上需要稍作调整。
请在操作前备份。

MEGA 路径:/MEGAsync/SiYuan/data/Gaokao/
服务器路径:/siyuanworkspace/data/Gaokao

需要注意,在同步前要创建对应的文件夹。例如 mkdir /siyuanworkspace/data/Gaokao

然后开始同步。

mega-sync /siyuanworkspace/data/Gaokao /MEGAsync/SiYuan/data/Gaokao

稍微等待一会,进去 ls 就可以看到文件全部同步过去了。

image.png

顺利同步、、、

大概尝试了一下,新建文档之类的是可以顺利同步过去的,但是有一定的延迟。

但是如果同时修改某个文档,是无法同步的。

这不是可靠性很高的同步方案,请谨慎使用。

(可选操作)打包一个第三方客户端

曾经我写过一篇在 Linux 下使用 Nativefier 打包思源笔记的文章,其实这个操作在任何平台都适用。
对于任意的网页,我们都可以打包成一个 Electron 应用。

因此我们可以打包一个 Windows 程序分享给他人使用。(虽然我是 Linux 用户、、、)
这样可以做到类似客户端的体验,比如托盘、常驻后台、单例模式之类的,详细请访问原文章吧。

nativefier --name "RemoteSiyuan"  -i /home/clouder/Pictures/Icons/Siyuan.ico --single-instance --tray -e 13.1.0 http://address:6806 

image.png

Linux 下测试正常,转到 Windows 虚拟机测试。

image.png

看起来很正常。在 Windows 下同样损失了思源自带的标题栏,因为这是网页打包。
往好处想,这也让 UI 变得更协调美观了……

更新

更新时,先停止之前的容器。

docker container list
docker stop ....

再次 pull:

docker image pull b3log/siyuan

然后再次运行即可。

结语

实际上用 Docker 部署思源笔记的 Kernel 是非常简单的。
其实直接运行 Kernel 的二进制文件是一种更简单的方法,但还是建议大家按官方文档来吧。

目前尚未投入使用,日后可能会有附加反馈。

  • 思源笔记使用心得
    72 引用 • 272 回帖 • 9 关注
  • Docker

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

    415 引用 • 865 回帖 • 280 关注
2 操作
Clouder 在 2021-07-30 12:45:49 更新了该帖
Clouder 在 2021-07-30 12:45:25 更新了该帖

广告 我要投放

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...