Seafile

提供: ArchWiki
2018年1月3日 (水) 00:09時点におけるKusakata (トーク | 投稿記録)による版 (同期)
ナビゲーションに移動 検索に移動

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
ノート: 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 コマンドを実行することで初期設定ができます。適切なディレクトリで実行してください:

ノート: seahubAUR パッケージをインストールしないと 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 にコピーして、%i#インストール で設定した $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.confseahub_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 から z.w.b): $ ./upgrade/upgrade_x.y_z.w.sh
  • 上記で説明している言語の設定をおこなってください。

最後に、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 を外して同じコマンドをもういちど実行してください。

参照