告別 Imgur:用 MinIO 把圖片放回自己的 NAS
系列
Self-hosting · 第 2 篇

上一篇提及我由Evernote轉到Obsidian的過程。把過去的檔案搬家的好處是所有檔案都以markdown儲存也在自己的硬件之中,不用再擔心平台長遠發展或檔案型式的可讀性。可是,出現另一個問題:Evernote主張什麼都放在其中,我的檔案中有不少附件及圖像,Obsidian的筆記庫(vault)變得比較大。
Obsidian的設計是把文字檔案與附件及圖像放在一個筆記庫中,附件及圖像以內部連結放在文字檔案之中。Obsidian的同步功能就是以筆記庫來安排同步,在一個筆記庫之中可以設定同步哪些類型的檔案。在流動裝置中,Obsidian的同步功能可以剔除同步大容量的附件及圖像,避免因家外的網速較慢時拖慢同步速度,也可以避免Obsidian佔用太多內置容量。
雖然Obsidian的同步功能已能解決流動裝置中網速及儲存問題,可是我仍想分開儲存文字檔案與附件及圖像,長遠而言可以讓Obsidian筆記庫保持合理的大小方便同步進行。因此,我決定把非必須的附件及圖像放在文字檔案以外的另一個「地方」,再把它的連結地址放在文字檔案之中。
最初始的安排是:把重要的附件放在OneDrive 再放入連結在文字檔檔案,而不太重要(大部分是圖像)放在Imgur中(因為Imgur有一個合用的Obsidian外掛)。可是,考慮長遠的儲存備份及私隱風險後,我決定再一次的「搬家」,連圖像也留在自己的硬件之中。這是自架系列的第二篇:我的圖片如何從 Imgur 搬到 Synology NAS 上的 MinIO 伺服器。
「搬家」的需求
Imgur外掛的流程是:當把圖像複製到Obsidian文字檔案時,外掛會自動把圖像上傳,把圖像在Imgur的址放在文字檔案之中。所以「搬家」要解決兩方面的需求:找一個「家」放置圖像檔案,找一個方法能自動做到「上傳加貼上地址」的功能。
Synology NAS是「家」的第一選擇:在自己手中、也已經用Synology Photo作日常的影像備份。可是Synology Photo做不到第二個需求,用了大約半年時間才解決這個需求。
先說兩次失敗(2026年1月到4月)
整個架構不複雜:在NAS架設備份結構,再在Obsidian安裝上傳外掛,當在文字檔案貼上圖像時做到「上傳加貼上地址」的功能。可是,不是所有Obsidian外掛都像Imgur外掛般直接易用。
起先在一、二月時我架設了 Picsur,一個專門的自架圖像庫。介面不錯而且上傳容易,但 Obsidian 的上傳整合始終沒有成功(圖片能上傳到NAS,但未能直接由Obsidian上傳)。及後在四月試了一個專為 Obsidian 而設的圖片 API gateway,但是也失敗了(仍不知錯誤出現在哪個環節)。MinIO因而成為我的第三次嘗試。
成功的架構
Picsur 和API gateway 是集中於圖像處理,與Obsidian的連結不是一個普及的項目;MinIO 則是廣泛使用的物件儲存,上傳外掛或備份工具等連接都有較多網上討論及教學。
以下是我架設的步驟,給大家作參考:
- Synology 上安裝 Portainer——在 NAS 上管理 Docker 容器的網頁介面。一次設定,之後每個實驗(包括失敗的那些)都是把 “stack” 貼進它的編輯器來安裝。
- MinIO 作為 Docker stack——官方映像檔、NAS 上一個資料夾、憑證放在 env 檔。全部設定在一個 compose 檔。
services:
minio:
image: quay.io/minio/minio:latest
command: server --console-address ":9090"
environment:
- "MINIO_CONFIG_ENV_FILE=/etc/config.env"
ports:
- 9001:9000
- 9090:9090
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 30s
timeout: 20s
retries: 3
volumes:
- /volume2/docker/minio/data:/mnt/data
- /volume2/docker/minio/.env:/etc/config.env
- 一個只容許讀取單一檔案的 bucket——放圖像檔案的 bucket,用 MinIO 的
mc工具加上一條規則:任何人可以讀取單一檔案(s3:GetObject),但不能列出 bucket 內的所有檔案(上傳仍需密鑰)。這是整個設計中唯一刻意「公開」的設定。(留意:MinIO 現成的「download」設定同時容許任何人列出所有檔案。) - 給外掛的存取密鑰——在 MinIO 裡生成服務帳戶,Obsidian 外掛不持有管理員密碼。
- Obsidian MinIO uploader 外掛——填上端點、bucket、密鑰,開啟「貼上即上傳」。
- 遠端管理——開始時我用Netbird去解決遠端連接的問題,及後有了自己的網域名稱(第三篇)真正的取代了Imgur在這流程中的角色。
它改變了什麼
此後在.md文字檔案貼上圖像時都會自動留在我的NAS中,它在NAS的地址也會自動留在文字檔案之上。而且,多年來的文字檔案與附件及圖像分離後,筆記庫本身也輕了一大截 :Obsidian筆記庫的備份容量減了約70%。
這個系列完成了兩方面的「搬家」:多年來的文字轉為.md並由雲端搬到電腦中(第一篇),現在它的圖片由雲端或Obsidian筆記庫搬到NAS 裡(第二篇)。下一步是把網誌由Wordpress「搬家」,也是第三篇。
