[Docker, Nginx] Zoteroの容量をwebdavを自前で用意して拡張する

研究の文献管理のために,Zoteroを使ってみた.
そしたら使い勝手が非常によく,かつ,無料なので研究室のメンバー共通のプラットフォームに出来ると思った.
だが,共有の上限が300MBとめちゃくちゃ少ない.しかし,webdavを用意すればそこを共有のベースに出来ることが分かった.
そこで,自前のサーバーでwebdavを用意して,共有用のボリュームを拡張してしまおう,という方針になった. 

しかし,結局https通信での設定が出来なかったので,httpでwebdavにアクセスすることにした.そのため,この記事を参考にする場合はユーザー名とパスワードは外部に漏れても良いものにすること.

必要な知識は,docker, docker-compose.それとnginxかapacheでreverse proxyが出来ること.この記事ではnginxがhost OSで稼働出来ている状態の説明をする.

注: 2020/03/23 追記,この設定だと,webdavを用いても個人のボリュームしか増やせず,ファイルを共有する際は,zoteroのサーバーを使わねばならぬようでした.共有をwebdavで設定出来るかはまだ分かりませんorz…

Docker, docker-composeの設定

webdavのdocker imageは調べるとすぐにbytemark/webdav が出てくるが,バグが少し出てくるので(SSL selfsigned httpd: Syntax error #5を参照), twizzel/webdavのものを用いる.

docker-compose.yml のファイルは以下の用にする.

version: '3'

services:
  webdav:
    image: twizzel/webdav
    container_name: wevdav_container
    restart: always
    ports:
      - "8080:80"
    environment:
      AUTH_TYPE: Digest
      USERNAME: example
      PASSWORD: example
    volumes:
      - ${MY_DAV}:/var/lib/dav

そして.envファイルに MY_DAV=/path/to/save/ を書いておく.これで稼働したいサーバーでdocker-compose upを叩けばwebdavが稼働する.

次にReverse proxy用のNginxの設定をする.以下のように設定した.

server {
    listen 80;

    server_name example;
    client_max_body_size 1G;
    proxy_buffers 64 16k;
    proxy_max_temp_file_size 1024m;
    proxy_temp_path nginx_proxy_temp;
    proxy_connect_timeout 5s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;

    location / {
            root /path/to/docker;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-Host $server_name;
            proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
            proxy_pass http://127.0.0.1:8080/;
            proxy_set_header X-Forwarded-Proto http;
            proxy_set_header X-Forwarded-Port 80;
    }
}

/path/to/dockerは,docker-compose.ymlを置いたファイルの場所を指定する. 

Zoteroの設定

zoteroの設定を行う前に,zoteroはwebdavのzoteroフォルダーを対象に操作を行うので,.envで設定したディレクトリーのdata/内部にzoteroディレクトリーを作成しておく.

そして,zoteroのedit -> preferencesから以下の画面の状態にする.特に,通信ブロトコルをhttpとする.

あとは,verify Serverで問題がなければ,ok.
これでzoteroの設定も完了.同期をonにすれば,webdav内にファイルが同期されていくはずだ.


コメント

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