研究の文献管理のために,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内にファイルが同期されていくはずだ.
コメント