# 2024-10-26 更新
用最新的官方 v3.1.10 版本试了下,发现在命令自定义里设置 「 '--lang=zh_CN' '--accessAuthCode=123456789' 」和在 EntryPoint 自定义里 '/opt/siyuan/entrypoint.sh' 命令后面跟上「 '--lang=zh_CN' '--accessAuthCode=123456789' 」两种写法都可以,容器都能正确创建并启动~
此外,这两天极空间官方终于上线了 SSH 功能了,有了 SSH 功能后,比较熟悉操作的小伙伴就可以直接在命令行部署思源笔记镜像,命令可以参见:官方文档 Docker 部署
这里考虑到一些小伙伴是小白用户,且 SSH 功能开启后,会失去极空间官方软件部分的售后服务和技术支持,所以有能力的小伙伴可以使用 SSH 部署思源笔记,不想折腾的小伙伴还是可以继续下面教程的方式部署思源笔记~~
# 2024-10-06 更新
在官方思源笔记 Docker 的 v3.1.8 版本更新中,已完善了权限问题,支持在 Docker 的环境变量中设置 PUID 和 PGID,详情参见:https://github.com/siyuan-note/siyuan/pull/12596
所以小伙伴就可以直接使用 v3.1.8 及后续版本的官方思源笔记 Docker 镜像了,不用再担心权限问题~后续如果没有其它问题,我自己编译的思源笔记镜像就停留在了 v3.1.8 版本,完美的结束了自己的使命了哈哈
不过在极空间的 Docker 里使用官方思源笔记镜像,也还是需要有些小细节要注意的,下面我会把配置细节给小伙伴展示出来
使用官方的镜像容器一直在重启的小伙伴可以可以对照下我的配置看看哪里没配置对~
# 部署官方思源笔记细节
# 前言(已过时,看顶部 10 月 6 号的更新说明)
# 官方思源笔记 Docker 版权限问题
官方思源笔记 Docker 地址:https://hub.docker.com/r/b3log/siyuan
在极空间部署官方的 Docker 镜像会遇到权限问题,具体表现为映射文件夹后启动会报错,如下:
报错原因是因为:官方的思源笔记 Docker 镜像是使用的默认创建的普通用户 siyuan
(uid 1000/gid 1000)来启动内核进程的,但极空间文件夹是 root 用户权限,当创建 docker 镜像时做了文件夹映射后,普通用户 siyuan
是没有权限在设置的目录下创建新的文件夹
所以报错原因就如上图所示:在设置的目录下创建 temp 文件夹失败,镜像就会启动不成功,一直反复重启。
# 修改了权限后的思源笔记 Docker 镜像
借助极空间论坛 zsource 大佬镜像自助编译的思路,将思源笔记官方的 Dockerfile 文件里的启动用户改为 root 用户,完美解决创建 Docker 容器文件夹路径映射后权限不足的问题。
修改了 Dockerfile 文件的代码仓我也上传到了 GitHub 上,地址:https://github.com/ylsislove/siyuan-z4
同时借助 GitHub Action,可以自助编译成不同架构的 Docker 镜像,这样极空间 z4 和 z2Pro 等不同设备都可以用我修改了权限后的思源笔记镜像了。这也是我想写这篇文章的一个原因,让更多的小白用户都能用上思源笔记,支持开源开发者!
后面如果我不出意外,应该会和官方镜像保持同步更新的节奏~
# 部署思源笔记
# 下载镜像(已过时,看顶部 10 月 6 号的更新说明)
部署就很简单了,首先在极空间 Docker 镜像界面搜索 siyuan,然后找到 ylsislove/siyuan 版本的,点击下载。
这里可能会有用户碰到点击下载后显示不出版本信息,或镜像无法拉取的问题。这是因为国内有些地区的网络无法访问 Docker Hub,所以拉取不到镜像。有这个问题的用户可以在博客给我留言,我抽空就把最新镜像导出成文件,上传到极空间后,就可以在本地镜像下用上传文件的方式导入镜像了。
选择当前最新版本,点击下载,下载完成后就可以在本地镜像中看到,双击开始配置容器。
# 配置容器
- 基础设置:可以根据自己需求设置,名称随便取
- 文件夹路径:需要选择一个极空间文件夹,来持久化保存我们的文件
- 网络:保持默认就行
- 端口:这里需要设置两个端口映射,
6806
是思源笔记访问端口,6807
可以在思源笔记里配置成服务发布端口。所以这两个端口都需要映射出去,我选择映射成26806
和26807
这两个空闲端口,小伙伴也可以自己映射成其他端口,都是 no problem - 别名:保持默认即可
- 环境:也保持默认即可,
ACCESSAUTHCODE
字段我们在命令那一栏配置 - 命令:这里比较重要,我们要在自定义命令中配置工作空间路径,授权码,和默认语言这三项,如图片所示,把我下面这行配置粘过去即可,记得自己改一下授权密码
--workspace=/siyuan/workspace --accessAuthCode=123456789 --lang=zh_CN |
- 能力:保持默认即可
最后点击应用,不出意外的话容器就会创建成功啦,创建成功后,记得点击容器的日志按钮,出现如下日志,说明容器配置的没问题。
再打开我们在极空间映射的文件夹,也正常映射出了文件。
最后,在浏览器访问 极空间IP:26806
地址,能正常访问思源笔记,思源笔记部署篇完美结束~
# 发布服务
在思源笔记左上角点击「 设置 」,找到「 发布 」选项,然后打开发布功能
注意端口要和容器中设置的端口对应,同时,不想设置密码的话,设置界面的「 服务 Basic 认证 」也要关闭。
设置完毕后,就可以在浏览器访问 极空间IP:26807
地址,就能看到笔记被发布出去了~
发布模式(端口 6807)和普通模式(端口 6806)的区别就是:发布模式访问笔记本是只读的,其他人是无法更改你的笔记内容的,只能浏览,这对于喜欢分享笔记的朋友来说就非常友好啦~
# 外网访问
外网访问的方式有很多,比如如果有小伙伴能向运营商申请到公网 IP 的话,直接在浏览器输入公网 IP:26806 就能访问到思源笔记了。
但有些地区的运营商可能不会向普通民众开放公网 IP,所以这里我们就需要借助一台能公网访问的云服务器来实现内网穿透,使用云服务的公网 IP 来访问极空间内网的思源笔记。
云服务器的选购也有很多种,比如阿里云、腾讯云、华为云等等。之前我一直用的是腾讯云的云服务器,最近发现在腾讯云购买一台新的服务器价格贵的有点离谱
所以我这里以炭云的云服务器为例,小伙伴也可以自行选购其他家更便宜的云服务器~
# 购买云服务器
炭云云服务器页面:https://www.coalcloud.net/aff.php?aff=714
可以在右上角先注册一个账号,注册完成后,选择云服务器栏目下的「 香港 HK BGP PRO(EQHK2)」服务器,选择香港地区有挺多好处的,比如网络访问不受限,可以直接拉取 Docker 镜像或 GitHub 仓库,域名不用备案等等~
不过推荐大家有时间还是去搞一下域名备案,这样以后万一炭云跑路了,也可以直接把域名直接挂到国内的云服务器上,不用担心域名访问受限 hh~
可以看到有一款比较便宜的云服务器,1 核 500M 内存,虽然配置比较拉,但带宽比腾讯云之类的云服务器慷慨多了,月租 19 块钱还要什么自行车哈哈哈
配置也简简单单,镜像选择 Ubuntu 20.04
,这里我就选择按月支付,用支付宝支付,轻轻松松购买完成~
购买完成后,可以在左侧的云服务器栏目中,看到我们购买后的云服务器,点进去后就能看到更详细的信息~
耐心等待服务器创建完成,在这个过程中,我们需要安装一款 SSH 客户端,用来连接我们的云服务器,这里我使用的是 Termius,小伙伴也可以选择其他自己更喜欢的软件,都没问题~
# 连接云服务器
Termius 下载地址:https://termius.com/download/windows
如果因为网络原因下载太慢的话,我把安装包也放到了我的云盘里,也可以直接从我的云盘里下载~阿宇云盘
安装完成后,看到我们浏览器也配置完毕了,接下来就可以连接我们的云服务器了,跟着我的操作来,肯定没问题~
首先在服务器详情界面确认我们的 IP 地址和 Root 密码,然后在 Termius 里点击 Add,选择 New Host,然后输入我们的 IP 地址,用户名输入 root,密码输入我们的 Root 密码,配置完成后,点击右上角退出编辑界面~
在主页面双击我们刚刚配置的服务器,然后选择 Add and continue
,就能成功连接到我们的云服务器啦~
# 安装 NPS
在我们的云服务器上,需要安装 NPS,即服务端软件
在极空间 Docker 上,安装 NPC,这是客户端软件,用来连接 NPS 服务端,连接成功后,就可以配置各种各样的转发,来访问我们内网的服务~
NPS 官方 GitHub 地址是:https://github.com/ehang-io/nps
但作者已经有三年没更新了,版本号停留在了 v0.26.10
有一个叫 yisier 的大佬在官方仓库的基础上,继续更新了些新的功能,仓库地址是:https://github.com/yisier/nps
目前最新版本是:v0.26.19,下载地址:https://github.com/yisier/nps/releases/tag/v0.26.19
这里不用急着把 NPS 下载到本地,因为考虑到有些小伙伴由于网络原因,访问不了 GitHub,这时我们把云服务器选在香港就能派上用场啦~
我们可以直接在云服务器上下载就行,依次输入以下命令,如图片所示~
注意,因为博客有防盗机制,所以直接复制的话会带一串文本,所以记得在粘贴到 Termius 前,把多余的文本内容删除掉,只保留命令内容~
wget https://github.com/yisier/nps/releases/download/v0.26.19/linux_amd64_server.tar.gz | |
mkdir nps | |
tar -zxf linux_amd64_server.tar.gz -C nps/ | |
cd nps/ | |
ls | |
./nps install |
如上图三所示,安装完成后,就可以用 nps start
命令启动 NPS 服务端了~
用 nps stop
可以停止 NPS 服务端,用 nps restart
可以重启 NPS 服务端~
我们在云服务器用 nps start
启动 NPS,然后在浏览器输入 云服务器IP:8081
,就能看到 NPS 的管理界面了,如下图
用户名默认 admin,密码默认 123,这里的配置信息都在 /etc/nps/conf/nps.conf 中配置,这里我教大家怎么修改这个配置文件~
在 Termius 工具中,使用 SFTP,连接到我们的云服务器,然后定位到 /etc/nps/conf/ 目录下,就能看到 nps.conf 配置文件了
把 nps.conf 文件拖拽到左边,放到自己电脑上一个比较容易找的目录下~
然后用记事本打开 nps.conf 文件,就能看到配置文件的内容了,如下图
主要修改以下地方:
- 日志位置修改为
/root/nps/nps.log
- 用户名和密码修改为自己的
- Web 管理端口改成一个别人不容易猜到的(可选)
- 管理面板开启验证码校验
修改完以后,记得 Ctrl+S 保存,然后把 nps.conf 文件拖拽回 Termius 的 SFTP 界面,就能上传到云服务器的 /etc/nps/conf/ 目录下了~
然后在 Termius 终端输入 nps restart
,即可重启 NPS 服务端
再次在浏览器输入 云服务器IP:配置文件中的端口
,出现验证码就表示我们的配置文件修改成功~
用我们在配置文件中的用户名和密码登录,进入 NPS 的管理界面,然后点击左边的 客户端
,可以看到有一条默认的数据
点击删除图标,删除默认的这条数据,然后点左上角新增,可以主要填写:
- 备注:极空间
- 压缩:是
- 加密:是
其他选项可以留空,也可以按自己需求填写。其中 Basic 认证用户名和密码如果填写了,就会在后面我们要内网穿透的网页上,比如访问思源笔记网页端,会多出来一个弹窗,正确输入我们这里设置的 Basic 认证用户名和密码,才能访问到我们内网穿透的网页服务~
这里我就不设置 Basic 认证用户名和密码了,感兴趣的小伙伴可以自己试试~
唯一认证密钥也留空,系统将会自动生成一个唯一认证密钥,小伙伴也可以自己设置唯一认证密钥,后面在极空间 Docker 里部署 NPC 服务时,会用到这个唯一认证密钥~
设置完以上三项后,点击新增按钮即可保存
接下来就到我们极空间 Docker 里部署 NPC 客户端了~
# 安装 NPC
在极空间 Docker 仓库里搜索 npc,选择 yisier 大佬的,当前最新版本是 v0.26.19,点击下载
考虑到有小伙伴访问 Docker 仓库有网络问题,所以我也把 yisier/npc:v0.26.19 导出成了 tar 文件,在我的 阿宇云盘 https://pan.aayu.today/
里将 npc 下载到电脑上,然后上传到极空间,接着在 Docker 里选择「 本地镜像 」->「 导入镜像 」->「 从极空间导入 」,选择我们刚刚下载上传的 npc_v0.26.19.tar 文件,导入成功后,就能在本地镜像里看到 npc 镜像了~
接下来需要首先把 npc 的配置文件 conf 目录上传到极空间,保存到自己的一个目录下
npc 的配置文件 conf 目录可以在 GitHub 仓库里下载,地址是:https://github.com/yisier/nps
如果 GitHub 不好访问的话,也可以在我的 阿宇云盘 里下载 npc 的配置文件 conf 目录压缩包,解压后,上传到极空间自己的目录下
在正式创建 npc 容器前,需要先编辑下 npc.conf 文件,如果在极空间直接双击 npc.conf 文件,会弹出不支持在线编辑的提示框
可以选择将该文件下载到电脑上,用记事本打开,编辑完后,在上传到极空间~
也可以选择在极空间将该文件重命名为 npc.txt,后缀改成 txt 后,就可以双击在极空间在线编辑了~
这里我就选择第二种方式编辑了,双击打开后,将除 [common]
外的其余部分全部删除,因为这些都是对我们无用的默认配置,这里不删的话,后面连上 NPS 服务端后,就会在服务端管理界面出现用不到的默认数据,在这里直接删除就比较省事~
然后将配置文件中的 server_addr
改成我们的云服务器 IP,端口用 8025
, vkey
改成 NPS 服务端生成的唯一认证密钥,如上图~
修改完成后,记得 Ctrl+S 保存,然后再把 npc.txt 文件名重命名为 npc.conf
记得修改完后要把 npc.txt 文件名重命名为 npc.conf 哦
配置文件弄好后,就可以双击 npc 镜像,按如下配置创建 npc 容器:
后面 别名
、 环境
、 命令
、 能力
等都保持默认即可,最后点击应用,容器创建成功后,点击容器的日志按钮,出现如下日志,说明 NPC 容器配置成功~
这是再返回到 NPS 的管理界面,点击左侧的 客户端
,刷新就能看到我们刚刚配置的 NPC 客户端连接成功了~
# 配置内网穿透
接下来就是很开心的配置内网穿透服务啦~
因为我们现在还没有域名,所以就先点击左侧的 TCP隧道
,创建一条能访问我们在内网的思源笔记服务的隧道吧~
点击左上角新增按钮,可以按如下配置填写:
- 客户端 ID:如果你和我一样操作步骤来的,这里应该也填 4,如果不确定,点击左侧客户端栏目,看下我们之前创建的客户端 ID,确认后填写到这里即可
- 备注:随便写
- 服务端 IP:保持默认即可
- 服务端端口:随便写
- 目标 IP 端口:这个就比较重要了,填写极空间内网 IP 和思源笔记发布服务的端口,发布服务端口我们在前面映射的是 26807,所以这里填写
极空间内网IP:26807
配置完成以后,接下来就是见证奇迹的时刻
在浏览器输入 云服务器IP:配置的服务端端口
,就能访问到我们在 内网
的思源笔记发布服务啦~
用同样的方法,可以将思源笔记的普通模式,即可编辑模式(端口 26806),也创建一条 TCP 隧道,这样就可以在外网随时随地编辑思源笔记了~
# 绑定域名
想要通过域名访问内网的思源笔记,首先就需要我们有一个域名呀~
域名怎么来,得购买!因为我之前都是在腾讯云买的域名,所以这里就以腾讯云为例,小伙伴也可以选择其他域名服务商~
腾讯云域名注册地址:https://console.cloud.tencent.com/domain
小伙伴在这里就可以挑选自己心爱的域名,当然,一些比较好记好听的域名价格都会比较昂贵,这里切记要量力而行,挑选一个对自己有意义的域名即可~
这里随手搜了下我对象的名字,完美匹配到一个可注册的域名,真是好运哈哈哈
首年 14,续费 32,三年价格 78,买了!
购买完成后,在「 我的域名 」栏目下就能看到刚购买的域名,刚购买的域名状态应该是 域名命名审核中
,这里耐心等待一两天,审核通过后,就可以正常使用了~
抱歉托更了很久,今天继续更新,接下来就是配置域名解析了~
点击域名右侧的解析按钮,就可以给域名配置个 A 记录,将域名解析到我们的云服务器 IP 上~
记录值填写自己云服务器的 IP 地址,然后点击保存
如果想直接解析主域名,在主机记录里填写 @,如果想解析二级域名,比如 www,填写 www 即可
这里因为部署的是笔记服务,所以我就在主机记录里填写 notes,这样就能通过 notes.fuzhiling.top
访问到思源笔记了~
同理,如果未来在极空间还部署了个人博客服务,可以在主机记录里再新增一个 blog,这样就能通过 blog.fuzhiling.top
访问到个人博客了~
配置好域名解析服务后,通常需要等 5-10 分钟,让域名解析生效。
趁这段时间,我们先返回 NPS 管理界面,点击域名解析,然后点击新增,填写内容如下:
重点关注红框内容,其余内容默认即可~
点击保存后,接下来就是见证奇迹的时刻,在浏览器输入 notes.fuzhiling.top
,成功通过域名访问到了思源笔记,而且也不用再记服务的端口号了~
# 配置 HTTPS 服务
可以看到,现在我们在浏览器访问,域名前面还会有个不安全的提示,这是因为我们目前配置的是 HTTP 服务,接下来就教小伙伴怎么配置 HTTPS 服务~
访问腾讯云的 SSL 证书服务:https://console.cloud.tencent.com/ssl
点击申请免费证书按钮,每个人有 50 个免费证书名额,所以最多可以申请 50 个域名的证书~
提交申请后,就耐心等待吧,如果是白天申请的话,通常 5 分钟内就能审核通过,夜晚的话可能等待时间要稍微长点~
审核通过后,点击右边的下载按钮,选择 Nginx 下载即可
下载完后解压缩,然后返回我们的 NPS 管理界面,编辑我们之前配置的域名解析,首先将「 模式 」从 HTTP 改成 HTTPS
然后我们直接将解压缩后的 .pem 后缀文件拖拽到 「 HTTPS 证书 」输入框,将 .key 后缀文件拖拽到 「 HTTPS 密钥 」输入框,如下图所示
然后我们将「 自动 HTTPS(301)」也可以从否改成是,这样即使在浏览器输入 HTTP 地址,也会自动跳转到 HTTPS 地址了~
配置完成后点击保存,然后再次在浏览器输入 notes.fuzhiling.top
,就能看到访问的已经是安全的 HTTPS 服务了~
# WebDAV 备份
终于更新到最后一部分啦哈哈
这里需要说明一下,如果想给思源笔记用 WebDAV 备份,需要在思源笔记里登录账号,并开通思源笔记的功能特性服务,详情参见:思源笔记定价
有小伙伴可能就会想,你作为一个私人笔记软件,凭什么还需要让用户登录账号呢,如果有一天你们的服务器出问题了,无法登录了,那不就 GG 了吗?
这里其实不用担心,思源笔记创始人 D 已经在官方社区论坛里解释过这件事,感兴趣的小伙伴可以移步:S3/WebDAV 同步是否可离线激活
总结下来就是:将工作空间 /conf/conf.json 文件里的 userData 字段的值拷贝到新工作空间的配置文件中,就可以认为是登录状态了。
所以言归正传,如何将我们的笔记内容通过 WebDAV 备份到极空间呢?
首先需要在极空间系统设置里,开启 WebDAV 服务,如下图
然后我们可以在个人空间里创建一个文件夹,专门用来存储思源笔记备份文件
创建好以后,我们就可以打开思源笔记设置界面,注意需要注册并登录好账号,并开通思源笔记的功能特性服务
然后在设置里点击云端,在下拉框里选择 WebDAV,然后填写 Endpoint
、 Username
、 Password
主要这里,就需要用上文所教的的「 配置内网穿透 」步骤,创建一个 TCP 隧道或域名解析,将 极空间内网IP:5005
服务映射到 云服务器IP:5005
或一个新的域名上,这样就能通过外网访问到极空间的 WebDAV 服务了~
将上面的配置信息填写完后,点击下面的设置按钮,如果出现可选项,则表明我们上面的配置信息无误~
正常情况下,如果小伙伴和我一样操作,在极空间创建的备份文件夹是空的的话,点击设置按钮后就会出现 main 目录
如果在极空间创建的备份文件夹下再创建一个二级目录,比如叫 aa,那么点击设置按钮后,就不会出现默认的 main 目录,而是我们自己创建的文件夹 aa 目录啦~
当然,创建一个中文的二级目录名称,也是没问题的,这里我就将笔记备份到默认出现的 main 目录下
然后右上角会弹出一个提示框,如下图
我们把设置界面关掉,然后点击左上角的同步按钮,就会看到「 初始化同步密钥 」的弹出框了,输入一个自己能记住的密码,然后点击确定
然后就能看到思源笔记开始同步了,同步完成后,我们就能在极空间的备份文件夹下看到备份的笔记文件了~
~
完结撒花,有任何问题,欢迎在评论区给我留言(づ ̄3 ̄)づ╭❤~
~