以前、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"
パスワード、これらの 2 つは手動で変更してください。
3. アクセス#
前のステップが完了したら、直接アクセスできます。ip:9000
を使用してバックエンドに入り、先ほど設定したユーザー名とパスワードでログインします。
ログイン後、Buckets を作成したり、Access Keys を作成したりする操作は通常の OSS バックエンドとほぼ同じで、手動でファイルをアップロードできます。
現在、別のクライアントソフトウェア(ここでは私たちの Markdown ノートソフトウェア)にこれらの設定を入力すれば、ブラウザを使わずにファイルをアップロードできます。
4. ドメイン#
現在返される画像リンクはすべて ip+port をホストとして使用しています。見た目が悪いと感じ、自分のドメインを使用したい場合は、nginx 設定ファイル内でリバースプロキシを設定し、DNS で解決されたドメインを 9001 ポートにプロキシする必要があります。
さらに SSL 証明書を設定することで、https プロトコルを使用して保存されたファイルにアクセスできるようになります。