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

コメント