Seafile
Seafile はオープンソースのクラウドストレージシステムです。ファイル同期・プライバシー保護・チームワークの高度なサポートがあります。
ファイルの集合はライブラリと呼ばれ、各ライブラリを別々に同期することができます。ライブラリはユーザーが決めたパスワードで暗号化できます。パスワードはサーバーに保存されないため、サーバーの管理者ですらファイルの中身を見ることはできません。
Seafile ではファイル同期や wiki、議論ができるグループを作成することができ、チーム内で簡単にドキュメントを共有できます。
この記事では Seafile サーバーのインストールについて説明します。Seafile サーバーにアクセスするためのクライアントだけ使いたい場合、seafile-clientAUR をインストールしてください。
目次
インストール
seafile-serverAUR パッケージをインストールしてください。このパッケージは seafileAUR の分割パッケージですが、全てのパッケージをインストールする必要は必ずしもありません。
root で seafile サーバーを動作させるための新しいユーザーを作成してください:
# useradd -m -r -d /srv/seafile -s /usr/bin/nologin seafile
設定
サーバーインスタンスの設定
#インストールで設定したユーザーに切り替えてください (これより下のコマンドは特に断りがないかぎりこのユーザーで実行します):
$ sudo -u seafile -s /bin/sh
新しい seafile サーバーインスタンスのためのディレクトリレイアウトを作成:
$ mkdir -p $HOME/example.org/seafile-server $ cd $HOME/example.org
必要な seahub のバージョンを確認 ('x.y.z-r' という形式で表示されます。例: 3.0.2):
$ pacman -Qi seafile-server | grep Version
出力された値に SEAFILE_SERVER_VERSION
変数を設定:
$ SEAFILE_SERVER_VERSION=3.0.3
seahub をダウンロードして展開:
$ wget -P seafile-server https://github.com/haiwen/seahub/archive/v$SEAFILE_SERVER_VERSION-server.tar.gz $ tar -xz -C seafile-server -f seafile-server/v$SEAFILE_SERVER_VERSION-server.tar.gz
展開したディレクトリの名前を変更:
$ mv seafile-server/seahub-$SEAFILE_SERVER_VERSION-server seafile-server/seahub
seafile のマニュアル に書かれている以下のどちらかのページの 'setup' セクションに従って seafile サーバーインスタンスの設定を作成してください:
seafile ユーザーで seafile-admin
コマンドを実行することで初期設定ができます。適切なディレクトリで実行してください:
$ cd $HOME/example.org $ seafile-admin setup
英語以外の言語のサポートが必要な場合、以下のコマンドを実行して必要な言語をコンパイルしてください:
$ cd $HOME/example.org/seafile-server/seahub/locale/<yourlanguage>/LC_MESSAGES/ $ msgfmt -o django.mo django.po
そしてデフォルト言語を設定に追加してください:
$ echo "LANGUAGE='<yourlanguage>'" >> $HOME/example.org/conf/seahub_settings.py
/usr/lib/systemd/system/
に存在する seafile の systemd サービスの seafile-server@.service
を /etc/systemd/system
にコピーして、%h
を#インストール で設定した $HOME に置き換えてください。
Seafile のウェブフロント実装である seahub をテストしたい場合、systemd のサービスファイルを編集して --fastcgi
パラメータを削除してください。fastcgi は seahub ではサポートされていません。
新しい seafile サーバーを手動で起動する場合、以下のコマンドを root で実行:
# systemctl start seafile-server@example.org
起動が上手く出来たら、サービスを有効化すると良いでしょう。
seafile のサーバーデーモンを起動したら、seafile インスタンスの管理ユーザーを作成します:
$ cd $HOME/example.org $ seafile-admin create-admin
nginx でインスタンスをデプロイ
nginx で Seafile のウェブインターフェイスである seahub をデプロイしたい場合、以下のような nginx の設定を使います:
server { listen 80; server_name www.example.org example.org; return 301 https://$server_name$request_uri; } server { listen 443; ssl on; ssl_certificate /etc/ssl/certs/example.org.crt; ssl_certificate_key /etc/ssl/private/server.key; server_name www.example.org example.org; location / { fastcgi_pass 127.0.0.1:8000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; fastcgi_param HTTPS on; fastcgi_param HTTP_SCHEME https; } location /seafhttp { rewrite ^/seafhttp(.*)$ $1 break; proxy_pass http://127.0.0.1:8082; client_max_body_size 0; } location /media { root {ABSOLUTE_PATH_TO_SEAFILE_USER'S_HOME}/example.org/seafile-server/seahub; } }
また、nginx で HTTPS を使用する場合、ccnet.conf
と seahub_settings.py
に以下の値を追加してください。設定しないとアップロードができません [1], [2]。ファイルは seafile ユーザーで編集してください。
$HOME/example.org/config/ccnet.conf
SERVICE_URL = https://example.org:8000
$HOME/example.org/config/seahub_settings.py
FILE_SERVER_ROOT = 'https://example.org/seafhttp'
メンテナンス
アップグレード
まず root で seafile サーバーインスタンスを停止してください (全てのインスタンスを停止してください):
# systemctl stop seafile-server@example.org
Arch User Repository から seafile-serverAUR をアップグレードしてください。
以下のコマンドで seafile ユーザーに切り替えます:
$ sudo -u seafile -s
seafile のサーバーインスタンスの数だけ、以下の手順を繰り返しおこなってください。
- サーバーインスタンスの 'seafile-server' サブディレクトリに移動:
$ cd /srv/seafile/example.org/seafile-server
- preupgrade スクリプトを実行 (または手動で設定してください。Seafile wiki を参照):
$ seahub-preupgrade
- upgrade サブディレクトリから適切な seafile/seahub アップグレードスクリプトを実行:
- マイナーアップグレードの場合 (x.y.a から x.y.b):
$ ./upgrade/minor-upgrade.sh
。
- マイナーアップグレードの場合 (x.y.a から x.y.b):
- メジャーアップグレードの場合 (x.y.a から z.w.b):
$ ./upgrade/upgrade_x.y_z.w.sh
。
- メジャーアップグレードの場合 (x.y.a から z.w.b):
- 上記で説明している言語の設定をおこなってください。
最後に、root で seafile のサーバーインスタンスを起動してください:
# systemctl start seafile-server@example.org
Seafile GC の実行
未使用ブロックに確保されているストレージ領域を開放するには、Seafile のガベージコレクタを実行します。
GC プログラムは以下のブロックを削除します:
- 存在しないライブラリにも属していないブロック。
- ライブラリの履歴を越える古いブロック。
まず、サーバーの Seafile プログラムをシャットダウンしてください。Professional Edition v.3.1.11 の場合、オンライン GC がサポートされています。
実際に実行する前にガベージコレクションによって回収される領域を確認するには:
$ seafserv-gc -c /srv/seafile/example.org/ccnet -d /srv/seafile/example.org/seafile-data --dry-run
出力が問題ないようだったら --dry-run
を外して同じコマンドをもういちど実行してください。