Ubuntu20.04でApacheを使用してWebDAVアクセスを構成する方法
著者は、 Write for DOnations プログラムの一環として、 Free and Open SourceFundを選択して寄付を受け取りました。
序章
WebDAV は、ユーザーがリモートサーバー上のファイルを管理できるようにするHTTPプロトコルの拡張機能です。 WebDAVサーバーを使用する方法はたくさんあります。たとえば、WordまたはExcelドキュメントをWebDAVサーバーにアップロードして、同僚と共有することができます。 URLを指定するだけで、音楽コレクションを家族や友人と共有することもできます。 すべてがオペレーティングシステムに直接組み込まれているため、追加のソフトウェアをインストールしなくても、これらすべてを実現できます。
この記事では、SSLとパスワード認証を使用してWindows、Mac、およびLinuxからのWebDAVアクセスを有効にするようにApacheWebサーバーを構成します。
前提条件
このガイドを開始する前に、次のものが必要です。
- Ubuntu20.04サーバー。 Ubuntu 20.04 を使用した初期サーバー設定に従って、sudoが有効な非rootユーザーを作成します。
- サーバーのパブリックIPアドレスに解決されるドメイン名。 ドメインとDNSは、これを設定する方法を説明しています。
- ドメインにサービスを提供するように構成されたApacheWebサーバーの場合、 Ubuntu 20.04チュートリアルにApacheWebサーバーをインストールする方法を完了してこれを設定できます。必ずステップ5—仮想ホストの設定に従ってください。 この前提条件の一部として。
- ドメイン名のSSL証明書。 これを行う方法については、 Ubuntu20.04でLet’sEncryptを使用してApacheを保護する方法ガイドに従ってください。
WebDAVに必要なサーバーリソースはごくわずかであるため、WebDAVサーバーを起動して実行するには、任意のサイズの仮想マシンで十分です。
最初のステップを開始するには、sudo対応のroot以外のユーザーとしてサーバーにログインします。
ステップ1—WebDAVApacheモジュールを有効にする
Apache Webサーバーは、オプションのモジュールとして多くの機能を提供します。 これらのモジュールを有効または無効にして、Apacheの機能を追加および削除できます。 そのWebDAV機能は、Apacheと一緒にインストールしたモジュールに含まれていますが、デフォルトでは有効になっていません。 a2enmod ユーティリティを使用して、ApacheのWebDAVモジュールを有効にします。 次の2つのコマンドは、WebDAVモジュールを有効にします。
- sudo a2enmod dav
- sudo a2enmod dav_fs
ここで、Apacheを再起動して、新しいモジュールをロードします。
- sudo systemctl restart apache2.service
これで、WebDAVモジュールがロードされて実行されます。 次のステップでは、WebDAVを介してファイルを提供するようにApacheを構成します。
ステップ2—Apacheの構成
このステップでは、ApacheがWebDAVサーバーを実装するために必要なすべての構成を作成します。
まず、/var/www/webdav
にWebDAVルートフォルダーを作成します。このフォルダーには、WebDAVで利用できるようにするファイルが保持されます。
- sudo mkdir /var/www/webdav
次に、Apacheのユーザーwww-data
をWebDAVディレクトリの所有者に設定します。
- sudo chown www-data:www-data /var/www/webdav
次に、ApacheがWebDAVユーザーがアクセスしているファイルを管理およびロックするために使用するデータベースファイルの場所を作成する必要があります。 このファイルは、Apacheで読み取りおよび書き込み可能である必要がありますが、機密情報が漏洩する可能性があるため、Webサイトから入手できないようにする必要があります。
/usr/local/apache/var/
にあるデータベースファイル用のmkdir
ユーティリティを使用して新しいディレクトリを作成します。
- sudo mkdir -p /usr/local/apache/var/
-p
オプションは、mkdir
ユーティリティに、指定したパスにすべてのディレクトリが存在しない場合は作成するように指示します。
次に、chown
ユーティリティを使用して、新しいディレクトリの所有者とグループをApacheのユーザーとグループに設定します。
- sudo chown www-data:www-data /usr/local/apache/var
次に、ドメイン名に関するApache構成を保持するVirtualHostファイルを編集する必要があります。 このファイルは/etc/apache2/sites-enabled/
にあり、Certbotを使用してSSL証明書を登録した場合はle-ssl.conf
で終わります。
テキストエディタでVirtualHostファイルを開きます。
- sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
最初の行に、DavLockDB
ディレクティブを追加します。
DavLockDB /usr/local/apache/var/DavLock
. . .
次に、他のすべてのディレクティブに続く<VirtualHost>
タグ内に、次のAlias
およびDirectory
ディレクティブを追加します。
. . .
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
</Directory>
Alias ディレクティブは、http://your.server/webdav
へのリクエストを/var/www/webdav
フォルダーにマップします。
Directory ディレクティブは、/var/www/webdav
フォルダーに対してWebDAVを有効にするようにApacheに指示します。 mod_dav の詳細については、Apacheドキュメントを参照してください。
最終的なVirtualHostファイルは次のようになります。これには、DavLockDB
、Alias
、およびDirectory
ディレクティブが正しい場所に含まれています。
DavLockDB /usr/local/apache/var/DavLock
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@your_domain
ServerName your_domain
ServerAlias your_domain
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
</Directory>
</VirtualHost>
</IfModule>
Apacheの設定を編集しているときに構文エラーが発生すると、起動を拒否します。 Apacheを再起動する前に、Apacheの構成を確認することをお勧めします。
apachectl
ユーティリティを使用して、構成を確認します。
- sudo apachectl configtest
構成にエラーがない場合、apachectl
はSyntax OK
を出力します。 これを受け取ったら、Apacheを再起動して新しい構成をロードしても安全です。
- sudo systemctl restart apache2.service
これで、/var/www/webdav
からのファイルを提供するWebDAVサーバーとしてApacheを構成しました。 ただし、認証はまだ構成または有効化されていないため、サーバーにアクセスできるすべてのユーザーがファイルの読み取り、書き込み、および編集を行うことができます。 次のセクションでは、WebDAV認証を有効にして構成します。
ステップ3—WebDAVに認証を追加する
使用する認証方法は、ダイジェスト認証と呼ばれます。 ダイジェスト認証は、特にHTTPSと組み合わせた場合に、WebDAV認証のより安全な方法です。
ダイジェスト認証は、WebDAVサーバーへのアクセスを許可されているユーザーのユーザー名とパスワードを格納するファイルで機能します。 DavLockDB
と同様に、ダイジェストファイルは、Apacheが読み書きでき、Webサイトから提供できない場所に保存する必要があります。
この目的のためにすでに/usr/local/apache/var/
を作成しているので、そこにもダイジェストファイルを配置します。
まず、touch
ユーティリティを使用して、/usr/local/apache/var/
にusers.password
という空のファイルを作成します。
- sudo touch /usr/local/apache/var/users.password
次に、所有者とグループをwww-data
に変更して、Apacheが読み取りと書き込みを行えるようにします。
- sudo chown www-data:www-data /usr/local/apache/var/users.password
htdigest
ユーティリティを使用して、新しいユーザーがWebDAVに追加されます。 次のコマンドは、ユーザーsammyを追加します。
- sudo htdigest /usr/local/apache/var/users.password webdav sammy
このコマンドのwebdav
はレルムであり、新しいユーザーを追加するグループと見なす必要があります。 また、ユーザーがWebDAVサーバーにアクセスするときにユーザー名とパスワードを入力するときに表示されるテキストでもあります。 ユースケースを最もよく表すレルムを選択できます。
htdigest
は、実行時にパスワードの入力と確認を求めるプロンプトを表示します。
OutputAdding user sammy in realm webdav
New password:
Re-type new password:
次に、ApacheにWebDAVアクセスの認証を要求し、users.password
ファイルを使用するように指示します。
VirtualHostファイルを開きます。
- sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
次に、Directory
ディレクティブブロック内に次の行を追加します。
AuthType Digest
AuthName "webdav"
AuthUserFile /usr/local/apache/var/users.password
Require valid-user
これらのディレクティブは次のことを行います。
AuthType Digest
:ダイジェスト認証方式を使用します。AuthName "webdav"
:webdav
レルムのユーザーのみを許可します。AuthUserFile /usr/local/apache/var/users.password
:/usr/local/apache/var/users.password
に含まれているユーザー名とパスワードを使用します。Require valid-user
:正しいパスワードを指定したusers.password
ファイルにリストされているすべてのユーザーへのアクセスを許可します。
<Directory>
ディレクティブは次のようになります。
<Directory /var/www/webdav>
DAV On
AuthType Digest
AuthName "webdav"
AuthUserFile /usr/local/apache/var/users.password
Require valid-user
</Directory>
次に、auth_digest
Apacheモジュールを有効にして、Apacheがダイジェスト認証方式の使用方法を認識できるようにします。
- sudo a2enmod auth_digest
最後に、Apacheを再起動して、すべての新しい構成をロードします。
- sudo systemctl restart apache2.service
これで、HTTPSおよびダイジェスト認証を使用するようにWebDAVサーバーを構成しました。 ユーザーへのファイルの提供を開始する準備が整いました。 次のセクションでは、Windows、Linux、またはmacOSのいずれかからWebDAVサーバーにアクセスします。
ステップ4—WebDAVへのアクセス
このステップでは、macOS、Windows、およびLinux(KDEおよびGNOME)のネイティブファイルブラウザーを使用してWebDAVサーバーにアクセスします。
WebDAVサーバーへのアクセスを開始する前に、ファイルをWebDAVフォルダーに配置して、テストするファイルを用意する必要があります。
テキストエディタで新しいファイルを開きます。
- sudo nano /var/www/webdav/webdav-testfile.txt
テキストを追加して保存し、終了します。 ここで、このファイルの所有者とグループをwww-data
に設定します。
- sudo chown www-data:www-data /var/www/webdav/webdav-testfile.txt
これで、WebDAVサーバーへのアクセスとテストを開始する準備が整いました。
Linux KDE
まず、 KDEDolphinファイルマネージャーを開きます。 次に、次の形式のURLでアドレスバーを編集します。
webdavs://your_domain/webdav
ENTER を押すと、ユーザー名とパスワードの入力を求められます。
Dolphinにパスワードを保持させたい場合は、パスワードを記憶するオプションをチェックしてください。 次に、OKをクリックして続行します。 これで、/var/www/webdav/
ディレクトリの内容が表示され、ローカルシステム上にあるかのように操作できます。
アドレスバーのフォルダアイコンをつかみ、左側のナビゲーションパネルのリモートセクションの下にドラッグして、WebDAVサーバーをブックマークします。
Linux GNOME
まず、デスクトップの右側にあるアイコンをクリックして、ファイルアプリケーションを開きます。
ファイルが開いたら、次の手順を実行します。
- +その他の場所をクリックします。
- 次の形式でWebDAVインスタンスのURLを入力します。
davs://your_domain/webdav
次に、接続をクリックします。 次に、ユーザー名とパスワードのダイアログボックスが表示されます。
ユーザー名とパスワードを入力し、接続をクリックしてWebDAVサーバーにログインします。 ファイルにアクセスするたびにパスワードを入力したくない場合は、永久に記憶オプションをオンにします。
これで、WebDAVフォルダーがファイルで利用できるようになり、ファイルを管理できるようになります。
マックOS
まず、Finderアプリケーションを開きます。 次に、 Go メニューをクリックし、サーバーに接続をクリックします。
これで、WebDAVサーバーのURLを入力する新しいダイアログボックスが表示されます。 このURLは次の形式である必要があります。
https://your_domain/webdav
接続ボタンをクリックして続行します。 ユーザー名とパスワードの入力を求めるプロンプトが表示されます。
接続をクリックして、WebDAVサーバーのシステムへの追加を完了します。
これで、WebDAVサーバーがFinderのLocationsセクションに表示されます。
ウィンドウズ
まず、スタートメニューからファイルエクスプローラーアプリケーションを開きます。 これが開いたら、左側のナビゲーションパネルからこのPCを選択します。
次に、上部のナビゲーションバーにあるマップネットワークドライブアイコンをクリックします。
次の形式のURLを使用してWebDAVサーバーのURLを入力します。
https://your_domain/webdav
完了をクリックして、WebDAVサーバーに接続します。 ユーザー名とパスワードの入力を求めるプロンプトが表示されます。
ユーザー名とパスワードを入力し、[OK]をクリックしてサーバーにログインします。 ファイルにアクセスするたびにパスワードを入力したくない場合は、[クレデンシャルを記憶する]オプションをオンにします。
これで、WebDAVは、ファイルエクスプローラーの左側のナビゲーションパネルのこのPCセクションの下に場所として表示されます。
結論
これで、ファイルをユーザーに提供するための安全なWebDAVサーバーをセットアップおよび構成しました。 ユーザーがローカルシステム上で使用しているオペレーティングシステムに関係なく、ユーザーはWebDAVサーバー内のファイルにアクセスして管理できます。