- ファイル保存のためのS3中心のインフラが事実上の標準になっているが、個人プロジェクトやセルフホスト環境ではWebDAVが依然として有用な代替案として示されている
- 筆者はS3の複雑さと依存性に疲れを感じ、シンプルな認証ベースのファイルストレージとしてWebDAVを再び活用し始めたと説明している
- WebDAV は MacOS Finder、Windows Explorer、rclone、curl などさまざまなツールで標準サポートされており、アクセスしやすい
- Apache、Nginx、Caddy など主要なWebサーバーで簡単な設定だけでユーザーごとの非公開ディレクトリを構成でき、LDAP 認証などとの連携も可能
- クラウド依存から離れ、独自のファイル管理インフラをシンプルに保ちたい開発者にとって、WebDAV は今でも実用的な選択肢である
S3中心のファイル保存が抱える問題
- FTP は消え、SFTP はSSH および Unix 認証に過度に依存する構造で扱いづらい
- AWS S3 が事実上の業界標準となったことで、ほとんどのWebアプリは S3 接続を前提に設計されている
- これはAmazon には有利でも、他の利用者には不便をもたらす
- 個人プロジェクトやセルフホスト環境では、S3 の複雑な機能は不要で、単に認証されたファイルストレージがあれば十分である
- 筆者は S3 の利用をやめて WebDAV に切り替えており、他の開発者にも同じ選択を検討するよう勧めている
WebDAV が向いているユーザーと要件
- WebDAV はファイルシステムレベルの HTTP アクセスが必要な個人ユーザーや小規模プロジェクトに適している
- 必要な機能: 認証、ファイル書き込み、効率的な同期、デフォルトでの非公開設定、簡単な公開切り替え
- 不要な機能: 高度な ACL、署名付き URL、バージョン管理、階層型ストレージ、ライフサイクルルール、クォータ など
- こうした要件は多くの個人開発者にとって共感しやすく、OpenStack Swift、CEPH、Minio のような複雑なシステムを運用する必要はない
- 特に Minio は最近、管理 UI を大幅に削除し、JSON ポリシーファイルを手動で作成する方式に変わったため、単純なファイル保存用途には非効率である
WebDAV のアクセス性とツールサポート
- WebDAV はさまざまなOSやツールで標準サポートされている
- MacOS Finder: 「サーバへ接続」メニューで
https://... を入力
- Windows Explorer: 「ネットワーク ドライブの割り当て」または「Web サイトへの接続」機能
- CLI およびアプリ: rclone、curl、CyberDuck、WinSCP、Filezilla など
- 多くの人は WebDAV を時代遅れだと考えているが、実際にはほとんどのWebサーバーで標準サポートされている
- Apache、Nginx、Caddy、Lighttpd、IIS などで簡単に有効化できる
- OwnCloud、NextCloud などでも WebDAV ベースのアクセスが使われている
WebDAV の実際の活用例
- WebDAV はすでにCardDAV、CalDAVの形で連絡先やカレンダーの同期に使われている
- つまりユーザーは、気づかないうちに WebDAV ベースのサービスを日常的に利用している
- 筆者は Apache ベースで WebDAV を構成し、LDAP 認証を連携してユーザーごとの個人ディレクトリアクセスを実装した
- Caddy ならユーザーごとのディレクトリ分離をもっと簡単に設定できるが、Apache でも十分可能である
- Apache の設定はやや複雑だが、マルチユーザー環境でプライバシーを保証できる
Apache ベースの WebDAV 設定例
- Apache で必要なモジュール:
mod_dav, mod_dav_fs, mod_dav_lock
- 古いクライアント互換のための
BrowserMatch 設定も含む
- 主な設定要素
DavLockDB, DavMinTimeout, DavDepthInfinity などで WebDAV の動作を制御
AuthType Basic, AuthBasicProvider ldap などを通じて LDAP 認証と連携
RewriteEngine を使って、ログインしたユーザーが自分のディレクトリだけにアクセスできるよう制限
/usr/local/www/webdav 配下にユーザー名と同じディレクトリを作成すれば、そのユーザーは認証後に自分の領域を利用できる
WebDAV の活用事例と拡張可能性
- 筆者は WebDAV を次のようなアプリと一緒に使っている
- Joplin: 自前サーバーにノートを同期するアプリ
- Keepassium: iOS/MacOS 向け Keepass クライアント
- VLC、Infuse: メディアのストリーミングと再生
- rclone: 静的ブログ公開用のファイル同期(NFS/SMB より高速で、VPN も不要)
- また、Altmount という新しいプロジェクトも見つけた
- Usenet に投稿されたコンテンツをダウンロードせずに「マウント」して直接アクセスできる
- Usenet に簡単にマルチギガビットでアクセスできる点が興味深い
2件のコメント
家のインフラ内部では NFS や SMB を使っていて、外では WebDAV を便利に使っています。ははっ
Hacker Newsのコメント
これにより WebDAV サーバー間の同期やマウントが可能で、ローカルファイルシステムや S3、Google Drive などを WebDAV サーバーとして公開することもできる
RFC は FTP よりましだが、それでも実装差による 非標準動作が多く、さまざまな回避策が必要になる
更新時刻やハッシュの設定は標準ではできないが、ownCloud や Nextcloud のような実装はこれをサポートしている
HTTP と TLS ベースなので、SFTP よりはるかに速い
NFS も TCP ベースで暗号化が可能だが、Windows のサポートは弱く、macOS だけが標準対応している
一方 WebDAV は両方のプラットフォームでうまく動く
今は davx5 を使っているが、ファイルアクセスが不便だ
すでに構築済みの mTLS インフラとうまく合うので WebDAV を好んでいる
サーバー側は sftpgo を使っている
Amazon 独自の技術というわけではなく、Garage S3 のような EU Horizon 支援のオープンソースプロジェクトもある
https://garagehq.deuxfleurs.fr/
たとえば Tailscale Drive Share は WebDAV ベースで、Fastmail のファイルストレージにも WebDAV でアクセスできる
WebDAV はかなり優れた技術だ
とてもよく動く
Windows と macOS の両方に内蔵サポートはあるが、一般ユーザーは利用できない
Windows では WSL 専用、macOS では仮想化専用なので残念だ
UI から直接 9p をマウントできたら素晴らしいと思う
NextCloud クライアント(デスクトップ/Android)と互換性があり、Gnome Online Accounts や Nautilus でも使える
https://codeberg.org/lunae/dav-next
まだパッケージ化やバイナリリリースはないが、フィードバック歓迎だ
私たちの会社のクラウドプラットフォームでも、WebDAV 経由でドライブのようにアクセスできる機能を開発中だ
HTTP ベースのインフラをそのまま活用できるので、追加の複雑さはほとんどない
退屈だが安定した技術こそが結局は長生きする
しかもオープン標準だ
今でも多くの共有ホスティングが FTP アップロードを案内している
SSH キーや SFTP も使えるが、ドキュメントには今でも FileZilla のような FTP ツールが言及されている
OVHcloud の FTP ガイド
いまだに暗号化されていないプロトコルを使うなんて信じがたい
そういうホスティングは即座に候補から外すだろう
昔ソフトウェア配布や学術界で使われていた時代は懐かしいが、今ではほとんど最後の用途しか残っていない
複数の iCloud アカウント利用者の間で同期でき、Dropbox の契約も不要だ
CloudKit より速く、保守の負担も少ない
これからも長く使えそうだ
Web スクレイパーも含まれているので、LLM チャットボットの Markdown 保存先として良い
最近はほとんどのベンダーが S3 API 互換性を提供している
結局は プロトコルそのものについての話に見える