WebDAV は、HTTP ベースのファイル共有プロトコルです。もともとは、マルチユーザー ドキュメントの共同編集用に設計されたもので、インターネット ベースのファイル ストレージ、データ同期、およびその他のネットワーク ディスク アプリケーション シナリオでも広く使用されています。
携帯電話や PC には、WebDAV をサポートするアプリケーションが多数あります。たとえば、ドキュメント管理ツールとして有名な Zotero、iPad で人気のノート作成ツール Notability、国内オフィス ソフトウェア WPS、cross などです。 - プラットフォーム Markdown メモ作成ツール Joplin、ES ファイル マネージャーなど。つまり、独自の WebDAV ストレージがある限り、これらのソフトウェアで生成されたドキュメント データを WebDAV を使用して保存できます。
混乱を避けるために、WebDAV に関連する概念を明確にする必要があります. 下の図に示すように、WebDAV はサーバーとクライアントの 2 つの部分に分けられます。
- WebDAV サーバー: 青い雲は WebDAV サーバーを表し、クライアントの接続への応答、読み取りと書き込みの要求、およびデータの保存に使用されます。
- WebDAV クライアント: WebDAV クライアントが組み込まれたさまざまなプログラムで、携帯電話、タブレット、またはコンピューターで実行されます。
WebDAV アーキテクチャの構成を理解したら、あとは独自の WebDAV サーバーのセットを構成することです. 実は、これを WebDAV 共有と呼ぶこともできます. つまり、私たちがする必要があるのは「青い雲」ですアーキテクチャ図の一部。
以前は、Apache HTTP サービスや Nginx などの Web サーバー ソフトウェアを使用して WebDAV 共有を構成していましたが、そのままでは利用できなかったため、WebDAV モジュールの追加の読み込みや手動でのコンパイルが必要となり、WebDAV の構成が複雑になりました。ある程度まで。
一部の NAS オペレーティング システムも WebDAV 共有構成機能を提供しますが、イントラネット環境によって制限され、構成された WebDAV 共有がインターネット ベースのサービス提供を利用することは困難です。
現在、より一般的で、より効果的で、より単純な WebDAV 共有サービス構成ソリューションを探している場合、JuiceFS は試してみる価値のあるソリューションかもしれません。
JuiceFS は、オブジェクト ストレージとデータベースに依存するクラウド指向のオープン ソース分散ファイル システムであり、柔軟な容量を備えた高性能ストレージ システムを迅速に構築できます。JuiceFS は、POSIX、S3 API、HDFS API、Kubernetes CSI ドライバー、Docker Volume Plugin、WebDAV などの豊富なアクセス インターフェイスを提供し、さまざまなアプリケーションに簡単にアクセスできます。
次に、JuiceFS を使用して、スペースの柔軟性、セキュリティ、および実用性を備えた WebDAV サービスを簡単かつ迅速に構成する方法を紹介します。
準備
この記事で紹介する WebDAV 共有は、JuiceFS ファイル システム上に構築された JuiceFS が提供するアクセス インターフェイスです。そのため、構成の前に、JuiceFS ファイル システムを作成する必要があります。
JuiceFS ファイル システムは、データ ストレージとメタデータ エンジンの 2 つの部分で構成されます. データ ストレージは、さまざまなクラウド コンピューティング プラットフォームによって提供されるオブジェクト ストレージ サービス、または自己構築の MinIO またはローカル ディスクです。メタデータ エンジンは、ファイルのメタデータ情報を保存するために使用され、Redis、MySQL、PostgreSQL などのネットワーク ベースのデータベース、または SQLite や BadgerDB などのスタンドアロン データベースを使用できます。
インターネット経由で WebDAV 共有にアクセスできるようにするために、次に固定パブリック IPv4 アドレスを持つクラウド サーバー上に作成します。WebDAV は 1 か所で作成されるため、IP アドレスまたはドメイン名でどこからでもアクセスできます。したがって、JuiceFS を構成するデータ ストレージとメタデータ エンジンは、次のようにより柔軟に組み合わせることができます。
- ローカル ディスク + スタンドアロン データベース: クラウド サーバーのローカル ディスクの空き容量が十分にある場合。
- オブジェクト ストレージ + スタンドアロン データベース: より大容量のストレージ スペースが必要な場合。
- オブジェクト ストレージ + ネットワーク データベース: より大きなストレージ スペースが必要で、他のホストが同時に JuiceFS にアクセスする必要がある場合。
クラウドサーバー
次のように構成されたクラウド サービスがあるとします。
- システム: Ubuntu サーバー 22.04 AMD64
- CPU:1 核
- メモリー: 1GB
- ハードディスク:25GB
- IP アドレス: 120.118.8.10 (これはデモンストレーション用にランダムに記述された FAKE IP です)
この記事で説明するシナリオでは、任意のクラウド プラットフォームのエントリー レベルのクラウド サーバーでニーズを満たすことができます。重要な点は、パブリック ネットワークの IPv4 アドレスを持つことです。
オブジェクト ストレージ
次のバケットを用意したとします。
- ストレージの種類: Alibaba Cloud OSS
- バケット URL: https://myjfs.oss-cn-shanghai.aliyuncs.com
- アクセスキー: abcdefg
- 秘密鍵: gfedcba
この記事で説明するシナリオでは、オブジェクト ストレージは必要ありませんが、クラウド サーバーのハード ディスク容量が十分であれば、そのハード ディスクを JuiceFS のオブジェクト ストレージとして使用できます。
データベース
この記事で説明するシナリオでは、スタンドアロン データベースが最も簡単な選択です。ここでは、単一ファイルの SQLite データベースを使用します。JuiceFSファイルシステムの作成時に自動生成されるので、事前に準備する必要はありません。
必要に応じて、ドキュメント「メタデータ エンジンのセットアップ方法」を参照して、他の種類のデータベースを使用することもできます。
JuiceFS ファイル システムの作成
- クライアントをインストールする
curl -sSL https://d.juicefs.com/install | sh -
- ファイルシステムを作成する
ファイルシステムを作成するには、次の 2 つの方法があります。実際のニーズに応じていずれかを選択してください。
方法 1: ローカル ハード ディスクをオブジェクト ストレージとして使用する
juicefs format sqlite3://myjfs.db myjfs
方法 2: オブジェクト ストレージ サービスを使用する (データはオブジェクト ストレージに格納されます)
juicefs format --storage oss \
--bucket https://myjfs.oss-cn-shanghai.aliyuncs.com \
--access-key abcdefg \
--secret-key gfedcba \
sqlite3://myjfs.db myjfs
WebDAV サービスをデプロイする
JuiceFS ファイル システムの準備ができたら、WebDAV 共有の構成を開始できます. 最も簡単な方法は、何も設定せずに WebDAV インターフェイスの形式で JuiceFS ストレージを直接開くことです.
sudo juicefs webdav sqlite3://myjfs.db 120.118.8.10:80
組み込みの WebDAV クライアント ソフトウェアを使用してhttp://120.118.8.10にアクセスし、接続してアクセスします。
非常に便利ですが、この匿名アクセス方法には大きなセキュリティ リスクがあることを理解することは難しくありません.まず、IP アドレスを知っている人なら誰でも、身元認証なしで WebDAV クライアントを介して直接ファイルを読み書きできます.次に、暗号化されていない HTTP を使用します.プロトコルでは、通信プロセスは盗聴や攻撃を受けやすくなります。この2つの欠点を改善することが非常に必要です. 実は非常に簡単です. 最初の問題を解決するには、WebDAVのID認証をセットアップするだけでよく、2番目の問題を解決するには、 SSL 証明書を構成して、HTTPS 暗号化接続のサポートを有効にします。
認証を設定する
JuiceFS v1.1 (この記事の公開時点では、このバージョンは正式にリリースされていません) 以降のバージョンでは、WebDAV 認証および SSL 証明書機能のサポートが開始されています。設定する前に、クライアントのバージョンを確認してください。 JuiceFSクライアントをコンパイル" GitHub リポジトリのメイン ブランチをコンパイルします。
WebDAV アクセス用のユーザー名とパスワードの設定は、対応する環境変数を設定するのと同じくらい簡単です。
export WEBDAV_USER=user
export WEBDAV_PASSWORD=mypassword
SSL証明書
WebDAV の HTTPS 暗号化接続を有効にするには、CA によって発行された信頼できる証明書または OpenSSL によって発行された自己署名証明書のいずれかの SSL 証明書が必要です。
CA 組織は通常、ドメイン名の証明書のみを発行するため、ドメイン名を所有し、それをサーバー IP にバインドする必要があります. 無料の証明書発行ツールには、certbot、acme.sh などがあります. これらのツールを使用して、無料の SSL 証明書を申請できます. .
サード パーティの CA 認証局を通じて証明書を申請して発行することは別のトピックですが、簡単にするために、この機能を実現するために自己署名証明書が使用されます。
- サーバーの秘密鍵を生成する
openssl genrsa -out private.key 4096
- 証明書署名要求 (CSR) の生成 このステップでは、一連の情報を対話的に提供する必要があります。
openssl req -new -key private.key -out client.csr
- CSR を使用して証明書を発行する
openssl x509 -req -days 365 -in client.csr -signkey private.key -out client.crt
- クリーンアップを実行する
rm client.csr
上記の手順の後、現在のディレクトリに private.key と client.crt の 2 つのファイルがあり、それらを使用して WebDAV サービスを実行します。
WeDAVサービスを正式に運営
上記を組み合わせて、基本認証と HTTPS 暗号化接続を使用して WebDAV サービスを実行できるようになりました。
export WEBDAV_USER=user
export WEBDAV_PASSWORD=mypassword
sudo juicefs webdav --cert-file ./client.crt --key-file ./private.key sqlite3://myjfs.db 120.118.8.10:443
この時点で、HTTPS 暗号化接続が有効になり、WebDAV にアクセスするときに https を含むアドレスを使用する必要があります .https://120.118.8.10
同時に、正常に接続するには、ユーザー名とパスワードを入力する必要があります.
また、ここでは自己署名証明書を使用しているため、クライアントによっては、アクセス中に証明書が信頼されていないという警告が表示される場合がありますが、無視してください。
ドメイン名をサーバーにバインドし、SSL 証明書を申請した場合は、WebDAV を展開するコマンドを次のように調整する必要があります。
export WEBDAV_USER=user
export WEBDAV_PASSWORD=mypassword
sudo juicefs webdav --cert-file ./your-domain.crt --key-file ./your-domain.key sqlite3://myjfs.db www.your-domain.com:443
それに応じて、アクセス アドレスもドメイン名に変更する必要があります (例: https://www.your-domain.com )。CA機関が発行する証明書を利用することで、WebDAVクライアントの各種アクセスが警告を発することがなくなり、一部のアプリケーションがWebDAVサービスに接続できないという問題を効果的に解決できます。
適用例
ES ファイル ブラウザと Joplin を例として、自作の WebDAV サービスを構成および使用してドキュメント データを同期する方法を紹介します。
注: 一部のアプリケーションで WebDAV を設定する場合、アドレスと ID 認証情報が正しく入力されている場合でも、プログラムは WebDAV に接続できないと報告します. これは、プログラムが自己署名証明書をサポートしていないことが原因である可能性があります. 構成する信頼できる証明書この問題を解決するには、WebDAV サービスを使用してください。
ESファイルブラウザ
ES ファイル ブラウザは、モバイル端末で一般的に使用されているサードパーティ製のファイル マネージャーであり、携帯電話でファイルを管理できることに加えて、WebDAV ストレージを含む多くのサードパーティ製ストレージ サービスの追加もサポートしています。
サービス メニューで WebDAV タイプのストレージを追加し、下図のようにアドレス、ユーザー名、パスワードを入力するだけです。
ジョプリン
Joplin は、WebDAV を使用したドキュメントの同期をサポートするオープンソースの Markdown メモ作成ソフトウェアです。同期設定で WebDAV リンク、ユーザー名、パスワードを入力するだけです。
ここでは自己署名証明書を使用しているため、Joplin は同期構成をチェックするときにエラーを報告することに注意してください。解決策は、詳細オプションを展開し、[TLS 証明書エラーを無視する] をオンにすることです。アプリケーション設定は、確認を試みた後に検証に合格できます。
最後に書く
FTP と同様に、WebDAV は比較的古いファイル共有プロトコルですが、今日でも広く使用されています。情報技術の分野には最適なツールはなく、最適なツールしかありません。機能に関しては、WebDAV は専用のネットワーク ディスク クライアントほど多くの機能を備えていない可能性がありますが、WebDAV プロトコルはより一般的でオープンであり、サポートされている多数の組み込みアプリケーションで直接使用できます。あなたのプライバシーを保護するだけでなく、ハッキングされることも防ぎます. 特定のプラットフォームのバンドル.
WebDAV は、JuiceFS でサポートされている多くのアクセス インターフェイスの 1 つにすぎません. 興味がある場合は、ローカル ディスクの形式でアクセスされる POSIX、S3 API の形式でアクセスされる S3 ゲートウェイ、および Docker ボリュームなど、他のアクセス インターフェイスをさらに調べることができますコンテナ化されたアクセス用のプラグイン、Kubernetes CSI ドライバーなど。これらのアクセス方法を柔軟に使用することで、より効率的で柔軟なクラウド ストレージ管理機能を実現できます。
お役に立てれば、私たちのプロジェクトJuicedata/JuiceFSに注目してください! (0ᴗ0✿)