利用MinIO对象存储搞定Obsidian自定义同步

自己有云主机和域名,很多事情就具有了「自己动手丰衣足食」的条件。比如这里利用MinIO和Remotely Save 插件,自己搞定obsidian日记的同步,省去每月4美金费用。

Docker安装MinIO

通过docker compose的方式安装MinIO非常方便,但是现在只有阉割的Community版本了,所以管理起来还得用mc,就不是以前那么丝滑了。

一个 docker-compose.yml 模板如下:

version: "3.9"
services:
minio:
image: minio/minio:latest
container_name: minio
restart: always
ports:
- "9000:9000" # S3 API
- "9001:9001" # Web Console
environment:
MINIO_ROOT_USER: {username}
MINIO_ROOT_PASSWORD: {password}
MINIO_SERVER_URL: {https://minio-api.website.com}
MINIO_SITE_REGION: cn-east-1
volumes:
- {/path/to/miniodata}:/data
command: server /data --console-address ":9001"

实际部署的时候,把带有 {} 部分的内容修改了就行了。然后 docker compose up -d 就会自动pull镜像并启动容器运行起来。

使用mc管理MinIO

使用 mc 来配置 community 版本的 MinIO,由于host主机是centos7,直接装mc不太方便,用docker版本的:

Terminal window
docker run --rm -it --network host minio/mc

给minio存储api弄一个别名 myminio,并且把相关信息保存到 /root/.mc 中,方便后面调用:

Terminal window
mkdir -p /root/.mc
docker run --rm --network host -v /root/.mc:/root/.mc minio/mc alias set myminio https://minio-api.website.com username 'password'

给 minio 添加一个 AccessID (obsidian-sync) 和 Secret Key (ObsidianSync@2026)

Terminal window
docker run --rm --network host -v /root/.mc:/root/.mc minio/mc admin user add myminio obsidian-sync 'ObsidianSync@2026'

注意 Access ID 就是 obsidian-sync SecretKey 就是 ObsidianSync@2026

再给这个新建的 AccessID 配置读写权限:

Terminal window
docker run --rm --network host -v /root/.mc:/root/.mc minio/mc admin policy attach myminio readwrite --user obsidian-sync

注意上面这个是全局权限,即该用户可以读写任意一个bucket,如果要分配权限,还得写policy比较麻烦,个人使用到这里就可以了。

Terminal window
docker run --rm \
--network host \
-v /root/.mc:/root/.mc \
minio/mc \
rb --force myminio/obsidian-daily

如果要强制删除某个bucket,可以用上面的命令。

宝塔面板公网域名反代

然后可以利用宝塔面板做个反代:

Web控制台:https://minio.website.com >> host_ip:9001 API Endpoint:https://minio-api.website.com >> host_ip:9000

反代的时候注意,对于 https://minio-api.website.com,在 Nignx 配置上还得加一句:

proxy_cache_convert_head off;

MinIO对象存储-1784503822674.webp

登陆Web控制台并添加存储桶

浏览器访问之前的 https://minio.website.com,输入 docker-compose.yml 中配置的管理员账户密码登陆。

MinIO对象存储-1784504335646.webp

由于是 Community 版本,都没啥好说的,直接创建即可。

Obsidian Remotely Save 插件配置

MinIO对象存储-1784504257064.webp

在插件中把红色框选住的信息都填写正确,然后检查一下 :

MinIO对象存储-1784504589823.webp

linux的mc客户端配置存储桶

安装 mc 客户端:

Terminal window
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/

配置存储桶:

Terminal window
mc alias set minio-storage {url} {AccessKey} {SecretKey}
  • minio-storage 是别名,自己设置
  • url 是存储桶API endpoint,如 http://192.168.1.100:9000

配置好了之后可以mc alias list check一下,其它常用命令如下:

Terminal window
# 查看
mc ls minio
# 上传
mc mirror /本地目录 minio/你的bucket
# 查看容量
mc du minio/你的bucket