AlpineLinux 3.7: WebDAVサーバのwebdavをインストールする

webdavのインストール方法について記載します。

1 webdavをインストールする

  • この記事ではhttpsの為にデフォルトのSSL/TLS証明書を使っています。別にSSL/TLS証明書を用意している場合はそちらをお使いください。
  • httpを無効にするにはawallを使ってください。
  • SSLを利用するのでhttpsやdavsで接続してください。
  • Digest認証を使用します。ユーザ名はWEBDAV_USERNAMEの値で、パスワードはWEBDAV_PASSWORDの値です。
#!/bin/sh

set -e

[ -z "${WEBDAV_USERNAME}" ] && \
  WEBDAV_USERNAME=admin
[ -z "${WEBDAV_PASSWORD}" ] && \
  WEBDAV_PASSWORD=webdav

sudo apk add apache2-webdav apache2-utils apache2-ssl
sudo mkdir /var/lib/dav
sudo mkdir /usr/uploads
sudo chown apache:apache /var/lib/dav
sudo chown apache:apache /usr/uploads

# Create digest password file with expect command.
sudo apk add expect
expect -c "
set timeout -1
spawn sudo htdigest -c /usr/user.passwd DAV-upload ${WEBDAV_USERNAME}
expect \"New password: \"
send \"${WEBDAV_PASSWORD}\n\"
expect \"Re-type new password: \"
send \"${WEBDAV_PASSWORD}\n\"
expect eof
"

sudo rc-update add apache2
sudo rc-service apache2 start

2 webdavへアクセスする

davfsのマウントを可能にするdavfs2パッケージをインストールします。

$ sudo sed -e 's;^#http\(.*\)/v3.7/community;http\1/v3.7/community;g' \
       -i /etc/apk/repositories
$ sudo apk update
$ sudo apk add davfs2

サーバのSSL証明書を取得します。

$ WEBDAV_SERVER_FQDN=webdav-server.hiroom2.com
$ openssl s_client -showcerts -connect "${WEBDAV_SERVER_FQDN}":443 \
< /dev/null 2> /dev/null | \
openssl x509 -outform PEM | \
sudo tee /etc/davfs2/certs/"${WEBDAV_SERVER_FQDN}".pem

mount -t davfsでマウントします。

$ sudo mount -t davfs https://${WEBDAV_SERVER_FQDN}/uploads /mnt
Please enter the username to authenticate with server
https://webdav-server.hiroom2.com/uploads or hit enter for none.
admin
  Username: Please enter the password to authenticate user admin with server
https://webdav-server.hiroom2.com/uploads or hit enter for none.
  Password:

/mnt/hello.txtを書き込みます。

$ echo hello | sudo tee /mnt/hello.txt

即座にファイルを反映させる為にアンマウントします。

$ sudo umount /mnt

webdavのディレクトリにファイルが反映されています。

$ sudo cat /usr/uploads/hello.txt
hello