著者は、 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モジュールを有効にします。

  1. sudo a2enmod dav
  2. sudo a2enmod dav_fs

ここで、Apacheを再起動して、新しいモジュールをロードします。

  1. sudo systemctl restart apache2.service

これで、WebDAVモジュールがロードされて実行されます。 次のステップでは、WebDAVを介してファイルを提供するようにApacheを構成します。

ステップ2—Apacheの構成

このステップでは、ApacheがWebDAVサーバーを実装するために必要なすべての構成を作成します。

まず、/var/www/webdavにWebDAVルートフォルダーを作成します。このフォルダーには、WebDAVで利用できるようにするファイルが保持されます。

  1. sudo mkdir /var/www/webdav

次に、Apacheのユーザーwww-dataをWebDAVディレクトリの所有者に設定します。

  1. sudo chown www-data:www-data /var/www/webdav

次に、ApacheがWebDAVユーザーがアクセスしているファイルを管理およびロックするために使用するデータベースファイルの場所を作成する必要があります。 このファイルは、Apacheで読み取りおよび書き込み可能である必要がありますが、機密情報が漏洩する可能性があるため、Webサイトから入手できないようにする必要があります。

/usr/local/apache/var/にあるデータベースファイル用のmkdirユーティリティを使用して新しいディレクトリを作成します。

  1. sudo mkdir -p /usr/local/apache/var/

-pオプションは、mkdirユーティリティに、指定したパスにすべてのディレクトリが存在しない場合は作成するように指示します。

次に、chownユーティリティを使用して、新しいディレクトリの所有者とグループをApacheのユーザーとグループに設定します。

  1. sudo chown www-data:www-data /usr/local/apache/var

次に、ドメイン名に関するApache構成を保持するVirtualHostファイルを編集する必要があります。 このファイルは/etc/apache2/sites-enabled/にあり、Certbotを使用してSSL証明書を登録した場合はle-ssl.confで終わります。

テキストエディタでVirtualHostファイルを開きます。

  1. sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf

最初の行に、DavLockDBディレクティブを追加します。

/etc/apache2/sites-enabled/your_domain-le-ssl.conf
DavLockDB /usr/local/apache/var/DavLock
. . .

次に、他のすべてのディレクティブに続く<VirtualHost>タグ内に、次のAliasおよびDirectoryディレクティブを追加します。

/etc/apache2/sites-enabled/your_domain-le-ssl.conf
. . .
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ファイルは次のようになります。これには、DavLockDBAlias、およびDirectoryディレクティブが正しい場所に含まれています。

/etc/apache2/sites-enabled/your_domain-le-ssl.conf
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ユーティリティを使用して、構成を確認します。

  1. sudo apachectl configtest

構成にエラーがない場合、apachectlSyntax OKを出力します。 これを受け取ったら、Apacheを再起動して新しい構成をロードしても安全です。

  1. 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という空のファイルを作成します。

  1. sudo touch /usr/local/apache/var/users.password

次に、所有者とグループをwww-dataに変更して、Apacheが読み取りと書き込みを行えるようにします。

  1. sudo chown www-data:www-data /usr/local/apache/var/users.password

htdigestユーティリティを使用して、新しいユーザーがWebDAVに追加されます。 次のコマンドは、ユーザーsammyを追加します。

  1. sudo htdigest /usr/local/apache/var/users.password webdav sammy

このコマンドのwebdavレルムであり、新しいユーザーを追加するグループと見なす必要があります。 また、ユーザーがWebDAVサーバーにアクセスするときにユーザー名とパスワードを入力するときに表示されるテキストでもあります。 ユースケースを最もよく表すレルムを選択できます。

htdigestは、実行時にパスワードの入力と確認を求めるプロンプトを表示します。

Output
Adding user sammy in realm webdav New password: Re-type new password:

次に、ApacheにWebDAVアクセスの認証を要求し、users.passwordファイルを使用するように指示します。

VirtualHostファイルを開きます。

  1. sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf

次に、Directoryディレクティブブロック内に次の行を追加します。

/etc/apache2/sites-enabled/your_domain-le-ssl.conf
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>ディレクティブは次のようになります。

/etc/apache2/sites-enabled/your_domain-le-ssl.conf
<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がダイジェスト認証方式の使用方法を認識できるようにします。

  1. sudo a2enmod auth_digest

最後に、Apacheを再起動して、すべての新しい構成をロードします。

  1. sudo systemctl restart apache2.service

これで、HTTPSおよびダイジェスト認証を使用するようにWebDAVサーバーを構成しました。 ユーザーへのファイルの提供を開始する準備が整いました。 次のセクションでは、Windows、Linux、またはmacOSのいずれかからWebDAVサーバーにアクセスします。

ステップ4—WebDAVへのアクセス

このステップでは、macOS、Windows、およびLinux(KDEおよびGNOME)のネイティブファイルブラウザーを使用してWebDAVサーバーにアクセスします。

WebDAVサーバーへのアクセスを開始する前に、ファイルをWebDAVフォルダーに配置して、テストするファイルを用意する必要があります。

テキストエディタで新しいファイルを開きます。

  1. sudo nano /var/www/webdav/webdav-testfile.txt

テキストを追加して保存し、終了します。 ここで、このファイルの所有者とグループをwww-dataに設定します。

  1. sudo chown www-data:www-data /var/www/webdav/webdav-testfile.txt

これで、WebDAVサーバーへのアクセスとテストを開始する準備が整いました。

Linux KDE

まず、 KDEDolphinファイルマネージャーを開きます。 次に、次の形式のURLでアドレスバーを編集します。

webdavs://your_domain/webdav

image showing WebDAV link in the Dolphin address bar

ENTER を押すと、ユーザー名とパスワードの入力を求められます。

image showing the username and password dialog box

Dolphinにパスワードを保持させたい場合は、パスワードを記憶するオプションをチェックしてください。 次に、OKをクリックして続行します。 これで、/var/www/webdav/ディレクトリの内容が表示され、ローカルシステム上にあるかのように操作できます。

アドレスバーのフォルダアイコンをつかみ、左側のナビゲーションパネルのリモートセクションの下にドラッグして、WebDAVサーバーをブックマークします。

Image showing the WebDAV server in the Dolphin Remote locations

Linux GNOME

まず、デスクトップの右側にあるアイコンをクリックして、ファイルアプリケーションを開きます。

Image showing Finder icon

ファイルが開いたら、次の手順を実行します。

  1. +その他の場所をクリックします。
  2. 次の形式でWebDAVインスタンスのURLを入力します。
davs://your_domain/webdav

Image showing the Files application

次に、接続をクリックします。 次に、ユーザー名とパスワードのダイアログボックスが表示されます。

Image showing the username and password dialog

ユーザー名とパスワードを入力し、接続をクリックしてWebDAVサーバーにログインします。 ファイルにアクセスするたびにパスワードを入力したくない場合は、永久に記憶オプションをオンにします。

これで、WebDAVフォルダーがファイルで利用できるようになり、ファイルを管理できるようになります。

Image showing the WebDAV server in the Files application

マックOS

まず、Finderアプリケーションを開きます。 次に、 Go メニューをクリックし、サーバーに接続をクリックします。

Image showing the Go menu in the Finder application

これで、WebDAVサーバーのURLを入力する新しいダイアログボックスが表示されます。 このURLは次の形式である必要があります。

https://your_domain/webdav

Image showing the URL entry dialog box

接続ボタンをクリックして続行します。 ユーザー名とパスワードの入力を求めるプロンプトが表示されます。

Image showing the username and password dialog

接続をクリックして、WebDAVサーバーのシステムへの追加を完了します。

これで、WebDAVサーバーがFinderLocationsセクションに表示されます。

Image showing the WebDAV share in Finder

ウィンドウズ

まず、スタートメニューからファイルエクスプローラーアプリケーションを開きます。 これが開いたら、左側のナビゲーションパネルからこのPCを選択します。

Image showing This PC in the navigation panel

次に、上部のナビゲーションバーにあるマップネットワークドライブアイコンをクリックします。

Image showing the Map network drive icon in top navigation panel

次の形式のURLを使用してWebDAVサーバーのURLを入力します。

https://your_domain/webdav

Image showing the URL entry dialog

完了をクリックして、WebDAVサーバーに接続します。 ユーザー名とパスワードの入力を求めるプロンプトが表示されます。

Image showing username and password entry dialog

ユーザー名とパスワードを入力し、[OK]をクリックしてサーバーにログインします。 ファイルにアクセスするたびにパスワードを入力したくない場合は、[クレデンシャルを記憶する]オプションをオンにします。

これで、WebDAVは、ファイルエクスプローラーの左側のナビゲーションパネルのこのPCセクションの下に場所として表示されます。

Image showing the WebDAV share in File Explorer

結論

これで、ファイルをユーザーに提供するための安全なWebDAVサーバーをセットアップおよび構成しました。 ユーザーがローカルシステム上で使用しているオペレーティングシステムに関係なく、ユーザーはWebDAVサーバー内のファイルにアクセスして管理できます。