在群晖上安装 MinIO,实现思源笔记 / Obsidian 私有同步

最近在折腾笔记,安装了Obsidian和思源笔记,目前主要是使用WebDAV来实现同步,Obsidian上还行,但是在思源笔记上遇到一些问题,速度实在是实在是太慢了,经常打开笔记就干等着很无语

并且最近注意到思源笔记也不建议使用WebDAV进行数据同步,更建议使用MinIO来实现数据同步,参考了官网文档,和一些博客的内容,完成了这篇笔记

本文主要是面向NAS用户和云服务器用户,有一定动手能力,又比较追求隐私的人群

一、环境准备

群晖型号:DS220+ 以及更高型号

如果是用其他自己的电脑,参考如下配置(最低配置要求):

  • CPU:最低要求2核、推荐配置4核以上(高并发或多节点建议8核以上)
  • 内存:最低要求 4GB,推荐配置:
    • 8 GB用于小规模部署
    • 16GB+ 用于大规模分布式部署或频繁上传/下载大文件
  • 磁盘就自己看着办,有多大数据准备多大硬盘(相信您一定是硬盘数不清的大佬,我就不卖弄了)

二、MinIO 安装部署

本文主要介绍基于群晖 Docker Compose的部署方式

安装Docker部件

以防有朋友还没安装Docker

直接在套件中心搜索Docker,就能搜索到 Container Manager,安装即可

🛠 步骤一:准备数据目录

打开群晖“文件管理器”或使用 SSH,创建一个用于持久化 MinIO 数据的目录,例如:

注意:/volume1/docker/minio/data 是容器中的 /data 映射路径,请根据你群晖中实际共享文件夹名称进行调整。

🛠 步骤二:运行 MinIO 容器

打开 DSM 的 Docker 套件 → 切换到 注册表,搜索并下载 minio/minio 镜像(或 quay.io/minio/minio 也可)。

然后手动创建容器或使用以下命令(需开启 SSH 登录群晖):

docker run -d \
  --name minio \
  -p 9000:9000 \
  -p 9001:9001 \
  -v /volume1/docker/minio/data:/data \
  -e "MINIO_ROOT_USER=admin" \
  -e "MINIO_ROOT_PASSWORD=admin12345" \
  quay.io/minio/minio server /data --console-address ":9001"
Code language: Bash (bash)

或者也可以直接使用界面运行,点击运行

点击下一步

  • 这里最好是选择一下:启用自动重新启动

配置一下端口和存储路径

再配置一下账号密码:

再填个命令

🖥 步骤三:访问 MinIO 控制台

1、打开浏览器,访问群晖 IP 的控制台地址:

<code>http://<群晖IP>:9001</code>Code language: Bash (bash)

2、输入刚才设置的账号密码登录

<code>admin / admin12345</code>Code language: Bash (bash)

三、MinIO 初始配置

访问 MinIO Web 控制台http://群晖IP:9001

创建一个桶(Bucket):例如 siyuan-notes / obsidian-sync

然后配置一下权限,不过现在界面上只能配置基础的桶了

自 MinIO RELEASE.2023-10-16T04-13-43Z 起,社区版移除了 MinIO Console 的用户/权限管理功能,现在所有配置都应通过 命令行工具 mc (MinIO Client)API 完成。

下面是最常见的通过命令行配置 MinIO 的流程,包括用户管理、桶权限、策略设定等,适用于思源笔记或 Obsidian 的同步场景。

🧰 前置工具:安装 mc(MinIO Client)

官网文档:https://docs.min.io/community/minio-object-store/reference/minio-mc.html#quickstart

安装命令(适用于 Linux / macOS):

# macOS (Homebrew)
brew install minio/stable/mc

# Linux (curl)
curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/Code language: Bash (bash)

对于Windows用户可以从文档下载执行文件

🛠 步骤一:添加 MinIO 实例到 mc

<code>mc alias set local http://<MINIO_IP>:9000 admin admin12345</code>Code language: Bash (bash)
  • local:是给这台 MinIO 起的别名
  • http://<MINIO_IP>:9000:MinIO S3 API 地址
  • admin / admin12345:是 MinIO 的 Root 用户和密码(来自容器变量)

🪣 步骤二:创建 Bucket

<code>mc mb local/siyuan-sync</code>Code language: HTML, XML (xml)

mb 代表 “make bucket”

前面用UI创建过的就不需要执行这个命令了

如果启用了版本控制,可以继续:

<code>mc version enable local/siyuan-sync</code>Code language: Bash (bash)

🔐 步骤三:创建自定义访问策略(只读/读写)

你可以根据需要创建一个只允许某 Bucket 访问的策略。

示例策略:读写桶权限(适合思源笔记)

创建 JSON 文件 siyuan-sync-policy.json

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:ListBucket"],
      "Resource": ["arn:aws:s3:::siyuan-sync"]
    },
    {
      "Effect": "Allow",
      "Action": ["s3:GetObject", "s3:PutObject", "s3:DeleteObject"],
      "Resource": ["arn:aws:s3:::siyuan-sync/*"]
    }
  ]
}
<code><span style="background-color: initial; font-family: inherit; font-size: inherit; text-align: initial; color: initial;"></span></code>Code language: JSON / JSON with Comments (json)

然后导入并应用策略:

mc admin policy create local siyuan-sync-local-policy ./siyuan-sync-policy.jsonCode language: Bash (bash)

👤 步骤四:创建访问用户并绑定权限策略

mc admin user add local suyuan_user Suyu@nPass123
# > User `suyuan_user` added successfully for cluster `local`
<code><span style="background-color: initial; font-family: inherit; font-size: inherit; text-align: initial; color: initial;"></span></code>Code language: Bash (bash)

你可以将 siyuan_user / siyuan_pass 填入思源笔记的 S3 同步配置中。

这一步是为了让思源 / Obsidian 端系统对接 MinIO 获取密钥

步骤五:绑定策略到用户

mc admin policy attach local siyuan-sync-local-policy --user suyuan_user
# > Policy `siyuan-sync-local-policy` attached successfully to user `suyuan_user`Code language: Bash (bash)

最后验证一下绑定是否成功

mc admin user info local --json | jq
# 可用 `policyInfo` 字段确认用户已挂载该策略Code language: Bash (bash)

mc admin policy info local siyuan-sync-local-policy --jsonCode language: Bash (bash)

一件部署脚本

如果不想配置麻烦的东西,可以使用脚本进行配置

#!/bin/bash
set -e

echo "🎉 欢迎使用 MinIO 初始化配置脚本"

# 用户输入基本信息
read -p "👉 MinIO 别名 (如 local): " ALIAS
read -p "👉 MinIO 服务地址 (如 http://127.0.0.1:9000): " ENDPOINT
read -p "👉 Root 用户名 (如 admin): " ROOT_USER
read -sp "🔑 Root 密码: " ROOT_PASS
echo

# 设置 alias
mc alias set "$ALIAS" "$ENDPOINT" "$ROOT_USER" "$ROOT_PASS"
echo "✅ 已连接到 MinIO [$ALIAS]"

# 输入 bucket 和策略信息
read -p "📦 请输入要创建的 Bucket 名称 (如 siyuan-sync): " BUCKET
read -p "🛡️ 请输入要创建的策略名称 (如 siyuan-policy): " POLICY

# 创建 bucket
mc mb "$ALIAS/$BUCKET" || echo "⚠️ Bucket 已存在,跳过创建"
mc version enable "$ALIAS/$BUCKET"
echo "✅ Bucket [$BUCKET] 已创建并启用版本控制"

# 创建策略 JSON 临时文件
cat > /tmp/$POLICY.json <<EOF
{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Effect":"Allow",
      "Action":["s3:ListBucket"],
      "Resource":["arn:aws:s3:::$BUCKET"]
    },
    {
      "Effect":"Allow",
      "Action":["s3:GetObject","s3:PutObject","s3:DeleteObject"],
      "Resource":["arn:aws:s3:::$BUCKET/*"]
    }
  ]
}
EOF

# 创建策略
mc admin policy create "$ALIAS" "$POLICY" "/tmp/$POLICY.json"
echo "✅ 策略 [$POLICY] 已创建"

# 创建普通用户
read -p "👤 请输入要创建的用户名 (如 siyuan_user): " NEW_USER
read -sp "🔑 请输入该用户的密码: " NEW_PASS
echo

mc admin user add "$ALIAS" "$NEW_USER" "$NEW_PASS"
mc admin policy attach "$ALIAS" "$POLICY" --user "$NEW_USER"
echo "✅ 用户 [$NEW_USER] 已创建并绑定策略 [$POLICY]"

# 清理临时文件
rm -f "/tmp/$POLICY.json"

# 显示最终信息
echo
echo "🎉 全部完成!请将以下信息用于客户端配置:"
echo "----------------------------------------------------"
echo "📌 Endpoint: $ENDPOINT"
echo "📌 Bucket:   $BUCKET"
echo "📌 AccessKey (用户名): $NEW_USER"
echo "📌 SecretKey (密码):   $NEW_PASS"
echo "📌 版本控制: 已启用"
echo "📌 策略名:   $POLICY"
echo "----------------------------------------------------"
Code language: Bash (bash)

四、配置思源笔记和Obsdian

为了实现 Obsidian思源笔记 使用 MinIO 作为私有同步服务,你最终在两款笔记应用中需要配置的内容如下:

✅ 一、Obsidian 端配置(基于插件如 Obsidian Git 或 Obsidian Sync alternative)

如果你使用的是第三方插件(如 Remotely Save 插件),它支持 S3 协议,可用于对接 MinIO。

示例配置(Remotely Save 插件):

配置项示例值
Backend TypeS3
S3 Endpointhttp://192.168.1.100:9000
S3 Bucket Nameobsidian
Regionus-east-1 (MinIO 默认接受任意 region)
Access Keyobsidian-user
Secret Keyyour-secret-password
Directory Pathvault/
Encryption可选,设置为 false 或设置密码开启加密

✅ 二、思源笔记配置

思源笔记支持将同步仓库设置为 S3 存储(在 2.x 版本中支持)

示例配置(思源笔记 > 设置 > 同步 > S3 存储):

配置项示例值
服务商自定义
Endpointhttp://192.168.1.100:9000
Bucket 名称siyuan
Access Keysiyuan-user
Secret Keyyour-secret-password
Regionus-east-1
Root pathsiyuan/
Use SSL(MinIO 未启用 HTTPS 时)

⚠️ 注意:MinIO 不支持自动签名 v4 的某些变种,因此思源笔记推荐开启“兼容模式”,如果连接失败可尝试勾选或取消「兼容 MinIO」。

📁 三、目录结构示例(MinIO 中)

obsidian/
  vault/
    MyNote1.md
    MyFolder/
      Note2.md

siyuan/
  data/
    ...

✅ 总结建议:

项目Obsidian 配置桶思源笔记配置桶是否建议分桶
Bucket 名称obsidiansiyuan✅ 是,便于管理和权限隔离

相关推荐

暂无评论

发表评论

您的电子邮件地址不会被公开,必填项已用*标注。