前言

之前一直用的是语雀,有一说一,语雀其实也是挺好的,免费,而且还支持微信发消息直接自动上传为小记,很方便

但是嘛,毕竟是别人的,肯定不如私有部署的安全

本来是打算部署一个typecho拿来当自己的文档的,但是感觉emm有点丑,也不太擅长折腾主题,所以想着有没有这种现成的,支持私有化部署的

百度了一下,发现还不少,最出名的就是思源笔记,就不说了,本文的重点

其他的还有:

https://think.codingit.cn/https://github.com/zadam/trilium/https://github.com/mattermost/focalboard

等等等等、、、、、、

优秀的开源笔记、知识、文档管理系统非常多,就不一一列举啦

用思源笔记只是我个人觉得它的界面很好看,很舒服,如下:

37B8BDB9.png

(当然这不是我的图,我还没部署好呢)

官方宣传:

在部署的过程中踩了一些不小的坑,所以记录一下下

思源笔记官网:

https://b3log.org/siyuan/

思源笔记GitHub地址:

https://github.com/siyuan-note/siyuan

思源笔记Docker镜像地址:

https://hub.docker.com/r/b3log/siyuan

部署

普通部署方式:

docker run -d -v workspace_dir_host:workspace_dir_container -p 6806:6806 b3log/siyuan --workspace=workspace_dir_container --accessAuthCode=xxx
  • workspace_dir_host:宿主机上的工作空间文件夹路径

  • workspace_dir_container:容器内工作空间文件夹路径,和后面 --workspace 指定成一样的

  • accessAuthCode:访问授权码,请务必修改,否则任何人都可以读写你的数据

为了简化,建议将 workspace 文件夹路径在宿主机和容器上配置为一致的,比如将 workspace_dir_hostworkspace_dir_container 都配置为 /siyuan/workspace,对应的启动命令示例:

docker run -d -v /siyuan/workspace:/siyuan/workspace -p 6806:6806 -u 1000:1000 b3log/siyuan --workspace=/siyuan/workspace/ --accessAuthCode=xxx

需要注意的是,宿主机目录是绝对路径哦,如果有需要,请务必改为相对路径

上面这些内容都在官方GitHub文档里写了,我们重点讲Docker-Compose部署

dcker-compose.yml 示例:

version: "3.9"
services:
  main:
    image: b3log/siyuan
    command: ['--workspace=/siyuan/workspace/', '--accessAuthCode=${AuthCode}']
    user: '1000:1000'
    ports:
      - 6806:6806
    volumes:
      - /siyuan/workspace:/siyuan/workspace
    restart: unless-stopped
    environment:
      # A list of time zone identifiers can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
      - TZ=${TimeZone}
  • ${AuthCode} 请务必修改为一个字符串,这是相当于访问笔记的密码

  • ${TimeZone} 也请修改为自己所在地区的时区名称,例如:Asia/Shanghai

需要注意的还有,数据持久化的映射目录,默认是绝对路径,如果在意的话请务必修改为指定路径或者相对路径

务必额外注意官方文档中提到的这句话,也就是说,在启动容器之前,需要自行创建好宿主机的工作目录,并且执行sudo chown -R 1000:1000 /siyuan/workspace (注意是否修改了路径)

我自己的配置文件示例:

services:
  main:
    image: docker.m.daocloud.io/b3log/siyuan:v3.1.3
    command: ['--workspace=/siyuan/workspace/', '--accessAuthCode=123456789']
    user: '1000:1000'
    ports:
      - 8001:6806
      - 8000:6808
    volumes:
      - ./siyuan/workspace:/siyuan/workspace
    restart: unless-stopped
    environment:
      # A list of time zone identifiers can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
      - TZ=Asia/Shanghai

启动容器示例:

sudo docker-compose up -d

部署成功示例:

20240813191953.png

忽略这个已经退出的示例(

隐藏端口

使用 NGINX 反向代理可以隐藏 6806 端口,请注意:

  • 配置 WebSocket 反代 /ws

注意

  • 请务必确认挂载卷的正确性,否则容器删除后数据会丢失

  • 不要使用 URL 重写进行重定向,否则鉴权可能会有问题,建议配置反向代理

限制

  • 不支持桌面端和移动端应用连接,仅支持在浏览器上使用

  • 不支持导出 PDF、HTML 和 Word 格式

  • 不支持导入 Markdown 文件

如果项目启动失败,请一定检查好宿主机的目录路径、目录权限、容器启动用户

20241015更新

建议不要用 1000 用户启动,配置文件如下:


services:
  main:
    image: b3log/siyuan:latest
    command: ['--workspace=/siyuan/workspace/', '--accessAuthCode=xxxxxxxxx']
    # user: '1000:1000'
    ports:
      - 8001:6806
      - 8000:6808
    volumes:
      - ./siyuan/workspace:/siyuan/workspace
    restart: unless-stopped
    environment:
      # A list of time zone identifiers can be found at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
      - TZ=Asia/Shanghai