# 前言
# 官方思源笔记 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 等不同设备都可以用我修改了权限后的思源笔记镜像了。这也是我想写这篇文章的一个原因,让更多的小白用户都能用上思源笔记,支持开源开发者!
后面如果我不出意外,应该会和官方镜像保持同步更新的节奏~
# 部署思源笔记
# 下载镜像
部署就很简单了,首先在极空间 Docker 镜像界面搜索 siyuan,然后找到 ylsislove/siyuan 版本的,点击下载。
这里可能会有用户碰到点击下载后显示不出版本信息,或镜像无法拉取的问题。这是因为国内有些地区的网络无法访问 Docker Hub,所以拉取不到镜像。有这个问题的用户可以在博客给我留言,我抽空就把最新镜像导出成文件,上传到极空间后,就可以在本地镜像下用上传文件的方式导入镜像了。
选择当前最新版本,点击下载,下载完成后就可以在本地镜像中看到,双击开始配置容器。
# 配置容器
- 基础设置:可以根据自己需求设置,名称随便取
- 文件夹路径:需要选择一个极空间文件夹,来持久化保存我们的文件
- 网络:保持默认就行
- 端口:这里需要设置两个端口映射,
6806
是思源笔记访问端口,6807
可以在思源笔记里配置成服务发布端口。所以这两个端口都需要映射出去,我选择映射成26806
和26807
这两个空闲端口,小伙伴也可以自己映射成其他端口,都是 no problem - 别名:保持默认即可
- 环境:也保持默认即可,
ACCESSAUTHCODE
字段我们在命令那一栏配置 - 命令:这里比较重要,我们要在自定义命令中配置工作空间路径,授权码,和默认语言这三项,如图片所示,把我下面这行配置粘过去即可,记得自己改一下授权密码
--workspace=/siyuan/workspace --accessAuthCode=123456789 --lang=zh_CN |
- 能力:保持默认即可
最后点击应用,不出意外的话容器就会创建成功啦,创建成功后,记得点击容器的日志按钮,出现如下日志,说明容器配置的没问题。
再打开我们在极空间映射的文件夹,也正常映射出了文件。
最后,在浏览器访问 极空间IP:26806
地址,能正常访问思源笔记,思源笔记部署篇完美结束~
# 发布服务
在思源笔记左上角点击「 设置 」,找到「 发布 」选项,然后打开发布功能
注意端口要和容器中设置的端口对应。
设置完毕后,就可以在浏览器访问 极空间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,买了!
购买完成后,在「 我的域名 」栏目下就能看到刚购买的域名,刚购买的域名状态应该是 域名命名审核中
,这里耐心等待一两天,审核通过后,就可以正常使用了~
待更~
# WebDAV 备份
待更~
~
~
~
这段时间要经常加班,所以只能尽量抽时间把这篇教程写完,喜欢的话欢迎在评论区给我留言,(づ ̄3 ̄)づ╭❤~
~