Docker 伺服
在服务器或 NAS 上运行思源,最简单稳定的方案是使用官方 Docker 镜像
b3log/siyuan。部署完成后,通过浏览器访问 http://服务器 IP:6806 即可使用。先确认工作空间挂载正确。 思源数据保存在工作空间目录中,如果
-v 或 volumes 写错,容器删除后可能会造成数据丢失。公开访问时务必设置强访问授权码。适用场景
- 适合在 Linux 服务器、NAS、Unraid、TrueNAS、群晖等环境中长期运行
- 适合只需要通过浏览器访问思源的场景
- 不适合把 Docker 版当作桌面端或移动端的同步服务
镜像信息
- 镜像名称:
b3log/siyuan
程序结构
容器内程序位于
/opt/siyuan/,主要结构如下:appearance:图标、主题、多语言资源
guide:帮助文档
stage:界面和静态资源
kernel:思源内核程序
entrypoint.sh:容器启动入口脚本
当前 Docker 镜像入口为:
启动时最终会运行思源内核,并把工作空间路径、访问授权码等参数传给内核。
1 分钟启动
以下示例把宿主机和容器内的工作空间都统一为
/siyuan/workspace,这样最不容易写错路径。启动后访问:
查看运行状态:
停止和启动:
参数说明
-v /siyuan/workspace:/siyuan/workspace:把宿主机目录挂载为容器内工作空间
-p 6806:6806:把思源 Web 端口暴露到宿主机
PUID:容器内运行用户的用户 ID,未设置时默认1000
PGID:容器内运行用户的用户组 ID,未设置时默认1000
--workspace:指定思源工作空间路径
--accessAuthCode:访问授权码,请务必改成强密码
可以用下面命令查看当前 Linux 用户的 UID 和 GID:
如果宿主机工作空间属于当前用户,例如 UID/GID 是
1001:1002,则要同步调整目录权限和环境变量:Docker Compose 部署
更推荐长期使用 Docker Compose,方便升级、重启和维护。
在服务器上创建
compose.yaml:同目录创建
.env:启动:
查看日志:
关闭:
环境变量写法
除了命令行参数,也可以使用环境变量指定工作空间和访问授权码:
如果命令行参数和环境变量同时存在,命令行参数优先级更高。
不建议公开部署时关闭访问授权码。如果只在完全可信的内网环境中使用,可以通过下面变量跳过授权码:
权限处理
官方镜像会通过
entrypoint.sh 根据 PUID 和 PGID 创建或调整容器内的 siyuan 用户。现在通常不需要再额外传 -u 1000:1000。如果出现无法创建文件、无法保存、启动时报
permission denied,优先检查:然后让目录所属用户和容器环境变量保持一致:
反向代理和隐藏端口
如果需要通过域名访问,建议使用 NGINX、Caddy、Traefik 等反向代理,并把 Docker 端口只绑定到本机。
Docker 端口改为:
Docker Compose 写法:
NGINX 示例:
建议使用独立域名或子域名,例如
siyuan.example.com。不要用 URL 重写把思源挂到某个子路径下,否则鉴权和 WebSocket 可能出现异常。升级
升级前先备份工作空间。使用 Compose 时推荐流程如下:
生产环境更稳妥的做法是固定镜像版本,例如:
确认新版正常后再修改版本号升级。可在 Docker Hub Tags 或 GitHub Releases 查看版本。
备份和恢复
思源 Docker 部署最重要的是工作空间目录。建议定期备份整个
/siyuan/workspace,不要只备份容器。备份:
恢复:
如果使用快照、云盘或 NAS 备份,也要确保备份的是宿主机上的工作空间目录,而不是容器内部目录。
安全建议
--accessAuthCode必须设置为强密码
- 公网访问建议开启 HTTPS
- 使用反向代理时,容器端口尽量只绑定
127.0.0.1
- 云服务器安全组只开放必要端口,例如 80、443
- 不要把工作空间目录放到会被第三方同步盘实时同步的位置
- 不要把
.env中的访问授权码提交到公开仓库
常见问题
打开页面后要求输入授权码
输入启动参数或环境变量中设置的
accessAuthCode。如果忘记了,查看 Compose 文件、.env 文件或 Docker 启动命令。容器启动后访问不了
依次检查:
- 容器是否运行:
docker ps
- 日志是否报错:
docker logs siyuan或docker compose logs -f
- 服务器防火墙和云服务器安全组是否放行 6806
- 如果用了反向代理,确认
/ws已经正确代理 WebSocket
提示权限不足或无法保存
通常是宿主机目录权限和
PUID/PGID 不一致。检查目录所有者后执行:如果你的
PUID/PGID 不是 1000:1000,请替换为实际值。升级后数据不见了
优先检查
volumes 或 -v 是否指向了原来的宿主机目录。只要原工作空间目录还在,通常重新挂载正确路径即可恢复。反向代理后登录或连接异常
不要使用 URL 重写;优先使用独立域名或子域名。确认
/ws WebSocket 代理配置正确。当前限制
Docker 伺服版有一些限制:
- 不支持桌面端和移动端应用连接,仅支持浏览器使用
- 不支持导出 PDF、HTML 和 Word 格式
- 不支持导入 Markdown 文件
参考资料
上一篇
手机伺服
下一篇
资源文件
Loading...