経緯
QNAPのNASって対応していないオンラインストレージ結構多くて、自分が使っているpCloudなんかもそうです。WebDAV経由で接続できないこともないけど、接続のたびに接続許可のメールが飛んできて承認する必要があったりと、自動化するには都合が悪いです。
構成
以下のような感じ。rcloneでWebDAVにプロトコル変換してオンラインストレージにデータを転送します。
pCloudにもWebDAVの口はあるのですが、遅くて認証周りの承認がめんどうなのでこっちの方がいいです。他のQNAPが対応していないオンラインストレージも同じような感じでいいんじゃないかなあ。
docker-compose.yml
DockerはQNAP上のコンテナでも他のサーバでもどっちでもいいですが、QNAP上でやるのが一番無難じゃないでしょうか。TLSの証明書は任意です。自分はイントラの証明書はcertbotで自動更新にしていますが自己証明書でもいいと思います。
services:
storage_relay:
image: rclone/rclone:latest
restart: unless-stopped
volumes:
- ./rclone.conf:/config/rclone/rclone.conf:ro
- ./fullchain.pem:/certs/fullchain.pem:ro
- ./privkey.pem:/certs/privkey.pem:ro
- ./cache:/root/.cache
ports:
- 5000:5000
environment:
- TZ=Asia/Tokyo
command:
serve webdav (オンラインストレージのパス) --addr :5000 --vfs-cache-mode minimal --vfs-cache-max-size 8G --vfs-cache-max-age 15m --vfs-cache-max-age 30s --user (ユーザ名) --pass (パスワード) --cert /certs/fullchain.pem --key /certs/privkey.pem
rcloneのキャッシュの設定はやっておかないとディスクフルになるので設定しておきましょう。
その他の応用
QNAP以外にも一部のソフトはNFSとかS3互換じゃないと動かなかったりしますが、同じテクニックが使えます。ただ「rclone serve s3」は現状rclone側にマルチパートのバグがあるので気をつけましょう。「rclone serve nfs」は便利かもしれない。