思源笔记——个人知识库软件
思源笔记——个人知识库软件

思源笔记——个人知识库软件

标签
Docker
创建时间
Jan 10, 2022 01:26 PM
上次编辑时间
Last updated February 13, 2023

一、思源笔记官方说明

Docker 伺服

在服务器上伺服思源最简单的方案是通过 Docker 部署,镜像名称是 b3log/siyuan

文件结构

整体程序位于 /opt/siyuan/ 下,基本上就是 Electron 安装包 resources 文件夹下的结构:
  • appearance:图标、主题、多语言
  • guide:帮助文档
  • stage:界面和静态资源
  • kernel:内核程序

启动入口

构建 Docker 镜像时设置了入口:ENTRYPOINT [ "/opt/siyuan/kernel" ],使用 docker run b3log/siyuan 并带参即可启动:
  • -workspace 指定工作空间文件夹路径,在宿主机上通过 v 挂载到容器中
更多的参数可参考这里。下面是一条启动命令示例:
docker run -v workspace_dir_host:workspace_dir_container -p 6806:6806 b3log/siyuan --workspace=workspace_dir_container
  • workspace_dir_host:宿主机上的工作空间文件夹路径
  • workspace_dir_container:容器内工作空间文件夹路径,和后面 --workspace 指定成一样的
为了简化,建议将 workspace 文件夹路径在宿主机和容器上配置为一致的,比如将 workspace_dir_hostworkspace_dir_container 都配置为 /siyuan/workspace,对应的启动命令示例:docker run -v /siyuan/workspace:/siyuan/workspace -p 6806:6806 -u 1000:1000 b3log/siyuan --workspace=/siyuan/workspace/

用户权限

镜像中是使用默认创建的普通用户 siyuan(uid 1000/gid 1000)来启动内核进程的,所以在宿主机创建工作空间文件夹时请注意设置该文件夹所属用户组:chown -R 1000:1000 /siyuan/workspace,在启动容器时需要带参数 -u 1000:1000

隐藏端口

使用 NGINX 反向代理可以隐藏 6806 端口,请注意:
  • 配置 --servePath 参数为你的域名,例如 --servePath=yourdomain.com
  • 配置 WebSocket 反代 /ws

内核参数

  • -workspace
用于指定工作空间文件夹路径,不指定时的默认值是 ~/Documents/SiYuan/
  • -wd
内核工作目录路径,不指定时按内核可执行文件入口自动获取。
  • -servePath
用于指定伺服路径(host:port),默认值为 window.location.hostname+":6806"
例如需要通过域名访问时,请将该值设置为 yourdomain.com,端口留空则表示使用协议默认端口,需要通过 NGINX 反向代理请求到 6806 端口。
  • -resident
使用 --resident=true 指定后内核将常驻内存,默认 true
设置为 false 后会每隔 30 秒检查一次活动会话列表,如果没有活动会话则退出内核进程。
  • -readonly
使用 --readonly=true 指定后内核将以只读模式运行,所有写入操作将被禁止。
  • -accessAuthCode
用于指定浏览器访问鉴权密码,设置后会覆盖 conf.json 中的 authCode。
  • -ssl
使用 --ssl=true 后将使用 https 和 wss 协议进行伺服。

二、群晖命令行部署的方式

部署方式

  1. 进入群晖终端,一般使用管理员账号比如 admin
  1. 使用 root 用户权限:sduo -i
  1. 拉取镜像 docker pull b3log/siyuan:latest
  1. 进入 docker 文件夹 cd /volume1/docker
  1. 创建一个文件夹,用来存储数据做映射文件夹 mkdir siyuan
  1. 修改 siyuan 文件夹权限 sudo chown -R 1000:1000 ./siyuansudo chmod 700 ./siyuan
  1. 创建容器:
docker run --name siyuan \ -it -d --restart=always \ -v /volume1/docker/siyuan:/siyuan/workspace \ -p 6806:6806 \ -u 1000:1000 \ b3log/siyuan:latest \ --resident=true \ --workspace=/siyuan/workspace/ \ --servePath=yourdomain.com:8000 \ --ssl=true
群晖 docker 部署补充说明
  1. -name siyuan 启用一个容器名为 siyuan 的容器
  1. -restart=always 容器自启
  1. p 6806:6806 端口映射(思源笔记目前必须使用6806,其他的端口会无法使用)
  1. v /volume1/docker/siyuan:/siyuan/workspace 映射文件夹
  1. u 1000:1000 使用默认创建的普通用户 siyuan(uid 1000/gid 1000)来启动内核
  1. -resident=true 使用 -resident=true 指定后内核将常驻内存,默认 true。设置为 false 后会每隔 30 秒检查一次活动会话列表,如果没有活动会话则退出内核进程。
  1. 使用 --servePath 配置域名,例如:--servePath=yourdomain.com 或者指定端口 --servePath=yourdomain.com:8000
  1. 使用群晖自带反代,需要配置 WebSocket
  1. 如果反代到 https,需要 --ssl=true
 
部署完毕,可以使用浏览器访问 <群晖 IP>:6806 或者你反代的域名

我的实例

代码如下
docker run --name siyuan \ -it -d \ --restart=always \ -v /volume1/docker/siyuan:/siyuan/workspace \ -p 6806:6806 -u 1000:1000 \ b3log/siyuan:latest \ --resident=true \ --workspace=/siyuan/workspace/ \ --servePath=cinas.cn:9000 \ --ssl=tru
反代 6806 端口到 域名 https://cinas.cn:9000
又或者如下反对到二级域名https://siyuan.cinas.cn:8000 ,则更改为为 --servePath=siyuan.cinas.cn:8000

四、宝塔面板通过Docker安装思源

宝塔安装好docker之后,进入宝塔终端拉取镜像
docker pull b3log/siyuan:latest
进入文件夹
cd /www/wwwroot/
创建文件夹
mkdir siyuan
设置文件夹权限
sudo chown -R 1000:1000 ./siyuan sudo chmod 700 ./siyuan
部署思源
docker run \ --name siyuan \ -it -d \ --restart=always \ -v /www/wwwroot/siyuan:/siyuan/workspace \ -p 6806:6806 \ -u 1000:1000 \ b3log/siyuan:latest \ --resident=true \ --workspace=/siyuan/workspace/
可以部署为只读模式,当成个人wiki公开浏览,可以先按照上面部署,然后删除容器,重新安装下面的部署
docker run \ --name siyuan \ -it -d \ --restart=always \ -v /www/wwwroot/siyuan:/siyuan/workspace \ -p 6806:6806 \ -u 1000:1000 \ b3log/siyuan:latest \ --resident=true  \ --workspace=/siyuan/workspace/ \ --readonly=true
完整部署加反代 ,并且启用https
docker run \ --name siyuan \ -it -d \ --restart=always \ -v /www/wwwroot/siyuan:/siyuan/workspace \ -p 6806:6806 \ -u 1000:1000 \ b3log/siyuan:latest \ --resident=true  \ --workspace=/siyuan/workspace/ \ --servePath=wiki.cinas.cn \ --ssl=true
完成部署之后,需要在宝塔添加一个新站点,域名使用上面部署的域名,PHP版本使用纯静态,然后配置SSL,开启强制https。
反向代理docker容器,目标url为思源默认端口http://127.0.0.1:6806,编辑反向代理配置文件,配置 WebSocket 在配置文件中加入如下代码:
proxy_pass http://127.0.0.1:6806; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; #配置 WebSocket,加入下面这一段代码 proxy_connect_timeout 30s; proxy_read_timeout 86400s; proxy_send_timeout 30s; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade";
这样就可以通过域名访问服务器上宝塔部署的思源笔记。

五、升级容器

## 拉取新的docker docker pull b3log/siyuan:latest ## 停止容器 docker stop siyuan ## 删除容器 docker rm siyuan
重新部署
docker run \ --name siyuan \ -it -d \ --restart=always \ -v /volume1/docker/siyuan:/siyuan/workspace \ -p 6806:6806 \ -u 1000:1000 \ b3log/siyuan:latest \ --resident=true \ --workspace=/siyuan/workspace/ \ --servePath=yourdomain.com:8000 \ --ssl=true
或者重新部署为只读
docker run \ --name siyuan \ -it -d \ --restart=always \ -v /volume1/docker/siyuan:/siyuan/workspace \ -p 6806:6806 \ -u 1000:1000 \ b3log/siyuan:latest \ --resident=true \ --readonly=true \ --workspace=/siyuan/workspace/ \ --servePath=yourdomain.com:8000 \ --ssl=true