思源笔记多端同步方案:Docker MinIO + Siyuan-unlock
1. 需求背景
思源笔记功能强大,有多端 PC 使用需求,但官方同步需付费 78 元。本方案仅需一台服务器即可实现免费同步。
适用人群:
- 拥有一台服务器
- 多台 PC 需要同步
2. 系统架构
核心组件:
- MinIO:开源 S3 对象存储
- Siyuan-unlock:支持自定义 S3 同步
架构: 多个 PC 端 ↔ MinIO Server ↔ 数据存储
3. 实现步骤
3.1 部署 MinIO
docker-compose.yml:
version: '3.8'services:minio:image: minio/minio:RELEASE.2023-03-20T20-16-18Zcontainer_name: miniorestart: unless-stoppedcommand: server /data --console-address ":9001"environment:TZ: Asia/ShanghaiLANG: en_US.UTF-8MINIO_ROOT_USER: minioadmin # 改成你的用户名MINIO_ROOT_PASSWORD: minioadmin # 改成你的密码MINIO_SERVER_URL: http://<ServerIP>:<Port> # 改成你的服务器IPvolumes:- minio_data:/data- minio_config:/root/.minioports:- "9000:9000" # API 端口- "127.0.0.1:9001:9001" # 控制台(仅本地访问)healthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 10sretries: 3volumes:minio_data:minio_config:networks:default:name: siyuan-network
启动
docker-compose up -d
3.2 安装 MinIO Client (mc)
# 下载 mc 客户端
wget https://dl.min.io/client/mc/release/linux-amd64/mc# 赋予执行权限
chmod +x mc# 移动到系统路径
sudo mv mc /usr/local/bin/# 创建软链接(可选)
sudo ln -s /usr/local/bin/mc /usr/bin/mc# 验证安装
mc --version
3.3 配置 MinIO
# 配置 MinIO 别名(连接信息)
mc alias set myminio http://<ServerIP>:9000 minioadmin minioadmin# 验证连接
mc admin info myminio# 创建存储桶
mc mb myminio/notes-sync# 查看存储桶列表
mc ls myminio
权限配置(按需选择):
# 方案1:公开访问(不推荐,数据无保护)
mc anonymous set public myminio/notes-sync# 方案2:私有访问(推荐)
mc anonymous set private myminio/notes-sync# 查看当前权限
mc anonymous get myminio/notes-sync
3.4 配置思源笔记
在思源笔记中:设置 → 云端 → S3 配置
Endpoint: http://<ServerIP>:9000
Access Key: minioadmin
Secret Key: minioadmin
Bucket: notes-sync
Region: us-east-1
点击启用 自动同步,在关于-数据仓库密钥,设置数据库秘钥,即可启用同步;
3.5 防火墙配置
# 开放 MinIO API 端口 使用 ufw
sudo ufw allow 9000/tcp
4. 常用管理命令
# 查看存储桶内容
mc ls myminio/notes-sync# 查看存储桶使用情况
mc du myminio/notes-sync# 备份数据(下载到本地)
mc mirror myminio/notes-sync ./backup# 删除存储桶(危险操作)
mc rb --force myminio/notes-sync# 查看 MinIO 服务状态
docker logs -f minio# 重启 MinIO
docker restart minio
5. 故障排查
# 检查容器状态
docker ps | grep minio# 查看详细日志
docker logs minio --tail 100# 测试端口连通性
curl http://<ServerIP>:9000/minio/health/live# 重置连接
mc alias remove myminio
mc alias set myminio http://<ServerIP>:9000 minioadmin minioadmin