Docker一键部署思源笔记:打造私有化知识库并打通内外网访问

张开发
2026/4/14 21:25:11 15 分钟阅读

分享文章

Docker一键部署思源笔记:打造私有化知识库并打通内外网访问
1. 为什么选择Docker部署思源笔记思源笔记作为一款本地优先的开源知识管理工具最大的优势就是数据完全掌握在自己手中。但传统安装方式需要配置Java环境、处理依赖关系对新手来说门槛较高。而Docker就像个应用集装箱把思源笔记和它需要的运行环境打包在一起彻底解决了在我电脑上能跑到你那就报错的经典难题。我实测过三种部署方式原生安装、虚拟机部署和Docker方案。最省心的还是Docker——去年给团队搭建知识库时用Docker在10分钟内就完成了5台服务器的部署。特别是当需要升级版本时只需要替换镜像就能完成完全不用担心环境差异导致的问题。私有化部署还有个隐藏好处你的笔记数据永远不会被第三方扫描。去年某知名云笔记被曝出内容分析丑闻时我们团队就因为早用Docker自建了思源笔记完美避开了这场隐私危机。数据存在自己的硬盘上用起来心里踏实多了。2. 五分钟快速部署思源笔记2.1 准备工作首先确保你的系统已经安装Docker。在Linux终端输入以下命令检查docker --version如果显示版本号如Docker version 20.10.17说明已经安装。没有安装的话用这个命令快速安装curl -fsSL https://get.docker.com | sh建议专门为思源笔记创建数据目录。我习惯放在/opt下这样即使重装系统只要不格式化这个分区数据就不会丢失sudo mkdir -p /opt/siyuan/workspace sudo chown -R $USER:$USER /opt/siyuan # 避免权限问题2.2 启动容器官方镜像的拉取和运行可以一条命令搞定docker run -d \ --name siyuan \ -v /opt/siyuan/workspace:/siyuan/workspace \ -p 6806:6806 \ -e ACCESS_AUTH_CODEyourpassword \ b3log/siyuan这里有几个关键参数需要注意-v参数把容器内的/siyuan/workspace映射到本地的/opt/siyuan/workspace这样数据就持久化保存了-p将容器端口6806映射到主机相同端口ACCESS_AUTH_CODE环境变量设置访问密码建议不要用简单的password启动后访问http://localhost:6806输入密码就能看到熟悉的界面了。我第一次部署时犯了个错误——没等容器完全启动就急着访问结果报了502错误。后来学会用docker logs siyuan查看日志发现是初始化数据库需要时间等1分钟就好了。3. 数据备份与迁移实战3.1 定期备份方案Docker部署最爽的就是备份简单。因为数据都映射在本地目录直接用rsync就能搞定rsync -avz /opt/siyuan backup_server:/backups/siyuan_$(date %Y%m%d)更专业的做法是用crontab设置每日自动备份。这是我的备份脚本示例#!/bin/bash BACKUP_DIR/backups/siyuan TIMESTAMP$(date %Y%m%d_%H%M%S) tar -czf $BACKUP_DIR/siyuan_$TIMESTAMP.tar.gz /opt/siyuan/workspace find $BACKUP_DIR -type f -mtime 30 -delete # 自动删除30天前的备份3.2 跨设备迁移技巧去年我换了新笔记本迁移过程异常简单在新电脑上按前面步骤安装Docker把旧电脑的/opt/siyuan目录整个拷贝过来用同样的docker run命令启动容器实测从旧机器关机到新机器恢复使用整个过程不到15分钟。相比之下我同事用某商业笔记软件光同步冲突就处理了半天。4. 安全访问方案详解4.1 基础防护配置默认部署存在两个安全隐患端口直接暴露在公网使用HTTP明文传输解决方法是在Docker前加个Nginx反向代理。这是我的配置片段server { listen 443 ssl; server_name notes.yourdomain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://localhost:6806; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }配置好后记得修改docker run命令去掉-p 6806:6806改为--network host这样Nginx和思源笔记就能通过本地网络通信外部只能访问到加密的HTTPS端口。4.2 企业级安全加固对于团队使用场景我推荐这些额外措施在Nginx配置HTTP Basic认证auth_basic Restricted Access; auth_basic_user_file /etc/nginx/.htpasswd;设置IP白名单只允许办公室IP访问启用思源笔记的定期数据加密功能上个月我们公司遭遇了一次撞库攻击正因为做了这些防护攻击者连登录页面都没能打开。5. 高级技巧与故障排查5.1 性能优化方案当笔记数量超过1000篇时可能会遇到卡顿。通过这几个Docker参数可以显著提升性能docker run -d \ --name siyuan \ --memory 2g \ # 限制内存用量 --cpus 2 \ # 分配2个CPU核心 -v /opt/siyuan/workspace:/siyuan/workspace \ -v /opt/siyuan/siyuan.log:/siyuan/logs/siyuan.log \ b3log/siyuan另外建议启用定期碎片整理。在思源笔记的设置-存储中开启自动优化数据库选项。我有个包含3000多篇技术笔记的库优化后查询速度提升了40%。5.2 常见问题解决问题1浏览器访问时提示无效的授权码检查docker run命令中的ACCESS_AUTH_CODE参数查看容器日志确认服务是否正常启动docker logs siyuan问题2上传大附件失败修改Nginx的client_max_body_size配置调整Docker容器的上传限制docker run -e SIYUAN_UPLOAD_LIMIT100m ...问题3移动端无法同步确保内网穿透配置正确检查防火墙是否放行了6806端口在路由器设置端口转发时记得把TCP和UDP都加进去上周帮朋友排查一个诡异问题笔记本能访问但手机不行。最后发现是他家的Mesh路由器有个bug5G频段下的设备无法访问本地服务。改用2.4G网络立即解决。所以遇到网络问题要多角度排查。

更多文章