之前寫 markdown 圖片存在本地文件夾,時間一長就會造成文件夾十分臃腫,很多空間都是圖片佔了,同步起來很費時,而且傳到在線平台時不會自動上傳本地圖片,還是要手動一張一張處理上傳,但是如果存在雲端,本地只要存一個 url 就可以預覽,而且各個平台也能兼容,而不是顯示一個毫無意義的本地路徑。
於是我嘗試將筆記的圖片上傳到雲端,最好是粘貼的時候就可以自動上傳。其實像我用的typora和obsidian都有這個功能,但是需要有 OSS(對象存儲),阿里雲這些雲廠商都有賣。但是,我有一台自己的伺服器還花錢買 OSS 嗎?
於是我就尋找開源的 OSS 平台搭建,然後就找到了minio,功能十分強大,並且使用 docker 搭建步驟十分簡單。
1. 準備#
首先需要有一台雲伺服器 / VPS,阿里雲騰訊雲這些也行,沒有的可以看我推薦國外性價比比較高的:https://www.stmoonar.me/?p=6
然後安裝 docker
curl -fsSL https://get.docker.com | bash -s docker
2. docker 部署#
接著創建一個目錄用來存放 minio 的數據,可以根據自己需要選擇放在哪:
mkdir -p ~/minio/data
這樣就可以直接啟動了容器了
docker run \
-p 9000:9000 \
-p 9001:9001 \
--name minio \
-v ~/minio/data:/data \
-e "MINIO_ROOT_USER=ROOTNAME" \
-e "MINIO_ROOT_PASSWORD=CHANGEME123" \
quay.io/minio/minio server /data --console-address ":9001"
-p 9000:9000 -p 9001:9001
這是將容器端口映射到伺服器端口,前一個是服務後台的端口,後一個是客戶端也就是 api 接口訪問的端口。
-v ~/minio/data:/data
這個如果和你創建的目錄不一樣就改一下。
-e "MINIO\_ACCESS\_KEY=minioadmin"
用戶名,-e "MINIO\_SECRET\_KEY=minioadmin"
密碼,這兩個地方自己手動修改一下。
3. 訪問#
上一步完成我們就可以直接訪問了,使用ip:9000
就可以進入後台,輸入剛剛設置的用戶名和密碼登錄。
登錄之後創建 Buckets、創建 Access Keys 這些操作就和普通的 OSS 後台差不多了,可以手動上傳文件。
現在還需要在一個客戶端軟件(在這裡是我們的 markdown 筆記軟件)填寫好這些配置就可以不用到瀏覽器來上傳文件了。
4. 域名#
現在返回的圖片鏈接都是 ip+port 作為 host,如果覺得難看想用自己的域名的話,就需要在nginx 配置文件裡面設置反向代理,將 DNS 解析來的域名代理到 9001 端口。
還可以進一步配置 ssl 證書,這樣就可以使用 https 協議訪問存儲的文件了。