Synology製NAS(DiskStation)のWebDAVサーバーをCORS対応する方法

Synology製NAS(以下DiskStation)では、パッケージセンターからWebDAV Serverをインストールすることにより簡単にWebDAVサーバーを構築できますが、このWebDAVサーバーはデフォルトではAccess-Control-Allow-Originをレスポンスヘッダーに含めないため、特にフロントエンドの開発用途などでは使いにくいです。

どうにかならないかと調べてみたところ、同様の問題に対する指摘が他にも存在し、そこから発展してDiskStationのWebDAVサーバー(Apache)の設定ファイルをいい感じに書き換えてくれるシェルスクリプトのリポジトリーも作られていました。

そして、そのリポジトリーをフォークしてPROPFINDメソッドに対応させたバージョンのリポジトリーを自分のGitHubに作っておきましたので、今回はこのリポジトリーを使ってDiskStationのWebDAVサーバーのレスポンスヘッダーにAccess-Control-Allow-Originを含める方法を書いていきます。

共有フォルダーを作成する

まずはシェルスクリプトを入れておく用の共有フォルダーを作成します。

今回はsysadminというフォルダー名で作業を進めていきます。「マイ ネットワーク」でこの共有フォルダを非表示にするにはチェックを入れておいたほうが良さそうです。

Git Serverをインストールしておく

この先の作業でgit cloneするので先にDSMのパッケージセンターよりGit Serverをインストールしておきます。特にインストール後の設定などは必要ありません。

SSH経由でDiskStationに接続する

DSMのコントロールパネルからSSHを有効化させます。すると、

$ ssh ユーザー名@DiskStationのIPアドレス

というふうにSSH経由でDiskStationに接続することができるようになります。

シェルスクリプトを配置する

SSH経由でDiskStationに接続できるようになったら、

$ cd /volume1/sysadmin
$ git clone https://github.com/FUGAMARU/syno-webdav-keeweb.git
$ touch syno-webdav-keeweb/autoupdate

とDiskStation内で実行して、シェルスクリプトを配置します。

タスクスケジューラーを設定する

DSMのコントロールパネルよりタスクスケジューラーの設定画面に遷移します。

作成→トリガーされたタスク→ユーザー指定のスクリプトと進み、ボタンを押下します。

タスクを作成するウィンドウが出てくるので

タスクSynoWebdavKeepass
ユーザーroot
イベントブートアップ

とフィールドを埋めます。

次にタスク設定タブを開き

ユーザー指定のスクリプトのフィールドに/volume1/sysadmin/syno-webdav-keeweb/synoWebdavKeeweb.shと入力し、OKボタンを押下します。

タスク一覧画面に戻ったら、今作成したタスクを選択した状態で実行ボタンを押下します。

DiskStationのSSHに戻り、/var/packages/WebDAVServer/target/etc/httpd/conf/extra/httpd-ssl.conf-webdavの中身を確認します。

CORS関連の記述が入っていればOKです!

実際にレスポンスヘッダーを見比べてみる

実際にcurlを叩いてレスポンスヘッダーを確認してみました。

設定前はCORS関連のヘッダーが軒並み存在しませんが、設定後はしっかり付いてきていることが確認できます。

余談ですが、プロトコルがhttpになるとCORS関連のヘッダーが付いてきません…

コメント

タイトルとURLをコピーしました