読者です 読者をやめる 読者になる 読者になる

mimikakimemo

自分用メモ。

WebDAV サーバを立てて Zotero で使う

Zotero では、WebDAV サーバをファイルの保存先に設定することができるらしい。

そこで、自前で WebDAV サーバを用意してみる。

WebDAV サーバの設定

https://ホスト名/zotero/ でアクセスできるように設定する。実際のディレクトリは /var/www/zotero にある。今回はひとまず自己署名 SSL + Digest 認証にした。

WebDAV に使うディレクトリの作成

$ sudo su
# mkdir /var/www/zotero
# chown www-data:www-data /var/www/zotero
# chmod 775 /var/www/zotero

自己署名証明書の作成

# hostname WebDAVで使うホスト名
# make-ssl-cert generate-default-snakeoil --force-overwrite
# hostname 元のホスト名

として、以下の2ファイルを生成する。

モジュールの有効化

# a2enmod dav
# a2enmod dav_fs
# a2enmod ssl

自分の場合はすでに epgrec で auth_digest を使っていたが、そうでなければ下のコマンドで有効にする。

# a2enmod auth_digest

Digest 認証に使うユーザ名・パスワードの設定

# cd /etc/apache2/
# htdigest .htdigest 'zotero' 適当なユーザ名
Adding password for 適当なユーザ名 in realm zotero.
New password: [パスワードを入力]
Re-type new password: [確認のためにもう一度入力]

zotero.org のユーザ名・パスワードと揃える必要はない。ファイル .htdigest が存在しない場合はオプション -c をつけて実行する。

Apache の設定ファイルの作成

/etc/apache2/sites-available/default-ssl を元にして、/etc/apache2/sites-available/zotero を次の内容で作成した。

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
	ServerName example.com
	ServerAdmin webmaster@localhost

	DocumentRoot /var/www
	<Directory />
		Options FollowSymLinks
		AllowOverride None
	</Directory>

	<Directory /var/www/zotero>
        	DAV On
		Options None
		AllowOverride None

                Order allow,deny
                Allow from all
		AuthType Digest
		AuthName "zotero"
		AuthUserFile /etc/apache2/.htdigest
		Require valid-user
	</Directory>

	ErrorLog ${APACHE_LOG_DIR}/error.log

	# Possible values include: debug, info, notice, warn, error, crit,
	# alert, emerg.
	LogLevel warn

(以下SSLの設定などはそのまま)

また、非SSLでのアクセスを拒否するため、適当な設定ファイル*1に以下の内容を加えた。

	<Directory /var/www/zotero>
        	SSLRequireSSL
	</Directory>

設定を有効にして Apache を再起動

# a2ensite zotero
# service apache2 restart

ポートを開ける

ファイアウォールの設定

SSLは標準はでポート番号443を使うので、ufw の設定を変更してこれを開けておく。

$ sudo ufw allow "Apache Secure"

"Apache Secure" を許可すると、443/tcp を許可したことと同様になる*2

ルータの設定

外からアクセスできるように、ルータの設定も変更しておく。自分が使っているバッファローWZR-HP-G302Hでは、管理画面の ゲーム&アプリ > ポート変換 で以下のように設定した。

Firefox アドオン版 Zotero の設定

Firefox に例外を追加

Firefoxhttps://ホスト名/zotero/ でアクセスすると、証明書に関するセキュリティ警告が出るので、例外を追加する。ここで、「次回以降もこの例外を有効にする」にチェックを入れておく。チェックしておかないと、次回以降アクセスした際になぜか「セキュリティ例外を承認」のボタンが disable になっていて先に進めなくなる。

Zotero アドオンでの設定

環境設定 > 同期 > 設定 > ファイルの同期 の「マイ・ライブラリにある添付ファイルを同期するときに右のプログラムを使う:」で WebDAV を選択。下にURL・ユーザー名・パスワードを入力する欄が現れるので、上で設定した WebDAV の情報を入力し、「Verify Server」をクリック。ちゃんと設定できていれば、「ファイルの同期の設定に成功しました」というダイアログが出る。

スタンドアロンZotero の設定

スタンドアロンZotero への例外の追加

自己署名の証明書なので、そのままではエラーとなって WebDAV での同期ができない。よってスタンドアロン版でも例外を追加する。

上記の方法によって Firefox で例外を追加していれば、(Firefox のプロファイル)/cert_override.txt に対応する行が存在しているはずである。例えば、ホスト名が example.com であれば、

example.com:443	OID.2.16.840.1.101.3.4.2.1	00:11:22:33:44:55:……

のようになっている。

この行をコピーし、(Zotero のプロファイル)/cert_override.txt というファイル名で保存する。Zotero のプロファイルフォルダは、デフォルトであれば ~/.zotero/zotero/ランダム英数.default に存在する。

スタンドアロンZotero での設定

アプリケーションを起動し、アドオンのときと同様に WebDAV の情報を設定する。

*1:自分の場合は /etc/apache2/sites-available/mysite

*2:$ sudo ufw app info "Apache Secure" で意味する内容が確認できる。