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関連のヘッダーが付いてきません…
コメント