CentOS 7 で Nginx を使用して Seafile をインストールする方法
このページでは
- 前提条件
- ステップ 1 - Seafile 用に CentOS を準備する
- ステップ 2 - Seafile の依存関係をインストールする
- ステップ 3 - MariaDB を構成する
- ステップ 4 - Seafile をインストールする
- ステップ 5 - Seafile および Seahub サービスを構成する
- ステップ 6 - SSL 証明書ファイルを生成する
- ステップ 7 - Nginx をリバース プロキシとして構成する
- ステップ 8 - FirewallD を構成する
- ステップ 9 - Seafile のテスト
- 結論
Seafile は、Dropbox や mega.co.nz などと同様の機能を提供するプライベート クラウド ソフトウェアであり、独自のサーバーでホストされています。 Seafile は python プログラミング言語に基づいており、オープン ソース ライセンスの下でリリースされているため、独自のプライベート クラウドを作成でき、はるかに安全です。
Seafile は、データを安全に保存するための暗号化をサポートしています。ストレージ ライブラリ内のファイルを暗号化するには、ライブラリの作成時にパスワードを設定する必要があります。パスワードは Seafile クラウドに保存されません。そのため、サーバーの管理者でさえ、パスワードがないと暗号化されたデータを表示できません。
このチュートリアルでは、CentOS 7 に Nginx Web サーバーと MariaDB をデータベース サーバーとして Seafile をインストールします。
前提条件
- CentOS 7 サーバー
- ルート権限
ステップ 1 - Seafile 用に CentOS を準備する
ssh root パスワードを使用して centOS サーバーにログインします。
ssh
TYPE YOUR PASSWORD
vim で SELinux 構成ファイルを編集します。
vim /etc/sysconfig/selinux
値の強制を無効に置き換えます。
SELINUX=disabled
ファイルを保存してエディターを終了します。
サーバーを再起動して、SELinux ポリシーの変更を適用します。
reboot
サーバーが再起動するのを待ってから、root ユーザーとしてサーバーに再度ログインします。
以下のコマンドで selinux を確認します。
getenforce
結果として Disabled が表示されます。
ステップ 2 - Seafile の依存関係をインストールする
Seafile は python に基づいているため、最初にインストール用の python をインストールする必要があります。 Seafile は SQLite と MySQL/MariaDB データベースをサポートしています。SQLite よりも優れたパフォーマンスを提供するため、ここでは seafile のデータベースとして MariaDB を使用します。 Nginx は Seafile と Seahub のリバース プロキシとして使用されます。
このステップでは、いくつかの Python パッケージ、MariaDB および Nginx をインストールします。 CentOS サーバーに EPEL リポジトリをインストールすることから始めます。
yum -y install epel-release
次に、python パッケージの MariaDB と Nginx をインストールします。
yum -y install python-imaging MySQL-python python-simplejson python-setuptools mariadb mariadb-server nginx
すべてのパッケージがインストールされるまで待ちます。
ステップ 3 - MariaDB を構成する
ステップ 2 では、MariaDB サーバーを既にインストールしています。あとは、サービスを開始してルート パスワードを設定するだけです。
MariaDB を起動し、以下のコマンドでルート パスワードを構成します。
systemctl start mariadb
mysql_secure_installation
root パスワードを入力します。
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
MariaDB ルート パスワードが設定され、mysql シェルにログインできるようになりました。
注意: MariaDB コマンドライン シェルの名前は mysql です。
seafile 用に 3 つのデータベースを作成します。
- ccnet_db
- seafile_db
- seahub_db
そして、パスワード yourpassword で新しいユーザー seacloud を作成します。パスワードを安全なパスワードに置き換えてください。
mysql クライアントで mysql シェルにログインします。
mysql -u root -p
TYPE YOUR PASSWORD
以下の mysql クエリを実行して、seafile インストール用のデータベースとユーザーを作成します。
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
create user identified by 'yourpassword';
flush privileges;
exit
上記のコマンドの yourpassword を自分のパスワードに置き換えます。

ステップ 4 - Seafile をインストールする
このステップでは、Seafile をインストールします。 Seafile は nginx ユーザーの下で実行されるため、nginx を seafile および seahub サービスのリバース プロキシとして使用できます。
ディレクトリ /var/www/seafile の nginx ユーザーの下に seafile をインストールし、そのディレクトリを作成して cd で入力します。
mkdir -p /var/www/seafile
cd /var/www/seafile
wget コマンドで Seafile をダウンロードし、ダウンロードしたアーカイブを解凍します。
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.5_x86-64.tar.gz
tar -xzvf seafile-server_6.0.5_x86-64.tar.gz
ディレクトリの名前を seafile-server に変更し、そのディレクトリに切り替えます。
mv seafile-server-6.0.5 seafile-server
cd seafile-server/
setup-seafile-mysql.sh ファイルを実行して、データベースを構成します。
./setup-seafile-mysql.sh
Enter キーを押すと、以下の情報を求められます。
- サーバー名 - サーバーのホスト名には natsume を使用します
- servers ip or domain - サーバーの IP アドレス、私の場合は 192.168.1.115
- デフォルトのデータ ディレクトリ - Enter キーを押すだけ
- デフォルトのポート - Enter キーを押します
- データベースの構成では、番号 2 を選択します
MySQL 構成の場合:
- デフォルトのホスト - localhost を使用
- デフォルトのポート - 3306
- mysql ユーザー - seacloud
- パスワードは yourpassword です
- ccnet データベースは ccnet_db です
- seafile データベースは seafile_db です
- seahub データベースは seahub_db です
Enter キーを押すと、スクリプトが seafile のデータベース テーブルを作成します。

これで seafile と seahub サービスを開始できます。
./seafile.sh start
./seahub.sh start
seahub.sh ファイルが実行されると、管理者の構成を求められます。
管理者の電子メールとパスワードを入力すると、seahub サービスが実行されます。

Seafile がインストールされ、現在実行されています。ポート 8000 (私の場合は 192.168.1.115:8000) のサーバー IP を使用して Web ブラウザーから Seafile にアクセスできますが、これにはリバース プロキシを使用するため、ここでは行いません。 seafile サーバーと、systemd サービス ファイルを使用して seafile を実行します。
そのため、当面は seafile と seahub サービスを停止する必要があります。
./seafile.sh stop
./seahub.sh stop
ステップ 5 - Seafile および Seahub サービスを構成する
seafile を nginx ユーザーとして実行するため、seafile インストール ディレクトリと seahub_cache ディレクトリの所有者を nginx ユーザーに変更する必要があります。
cd /var/www/
chown -R nginx:nginx *
chown -R nginx:nginx /tmp/seahub_cache
次に、systemd ディレクトリに移動し、vim で seafile.service ファイルを作成します。
cd /etc/systemd/system/
vim seafile.service
以下に seafile サービス構成を貼り付けます。
[Unit]
Description=Seafile Server
Before=seahub.service
After=network.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seafile.sh start
ExecStop=/var/www/seafile/seafile-server/seafile.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
保存して終了。
新しい seahub.service ファイルを作成します。
vim seahub.service
そして、以下に構成を貼り付けます。
[Unit]
Description=Seafile Hub
After=network.target seafile.target mariadb.service
[Service]
Type=oneshot
ExecStart=/var/www/seafile/seafile-server/seahub.sh start-fastcgi
ExecStop=/var/www/seafile/seafile-server/seahub.sh stop
RemainAfterExit=yes
User=nginx
Group=nginx
[Install]
WantedBy=multi-user.target
保存して終了。
systemd サービスをリロードし、systemctl で seafile と seahub を起動します。
systemctl daemon-reload
systemctl start seafile
systemctl start seahub
エラーがないことを確認し、seafile と seahub サービスがポート 8082 と 8000 で実行されていることを確認します。
netstat -plntu

ステップ 6 - SSL 証明書ファイルを生成する
このチュートリアルでは、Nginx プロキシ経由で seafile を実行し、Nginx はデータ セキュリティのために安全な (HTTPS) 接続を提供します。無料の SSL 証明書ファイルまたは有料の SSL 証明書を使用できますが、これは構成には関係ありません。このステップでは、/etc/nginx/ssl ディレクトリに OpenSSL を使用して自己署名 SSL 証明書ファイルを生成します。
ssl ディレクトリを作成します。
mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
以下のコマンドを使用して、自己署名証明書ファイルと dhparam ファイルを生成します。
openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
openssl req -new -x509 -sha256 -days 365 -newkey rsa:2048 -nodes -keyout server.key -out server.crt
名前、州、電子メール、ドメイン名など、OpenSSL によって要求された証明書の詳細に回答します。次に、ディレクトリと証明書ファイルのアクセス許可を変更します。
chmod -R 700 /etc/nginx/ssl
chmod 400 server.*
chmod 400 dhparam.pem
SSL 証明書ファイルが生成されました。
ステップ 7 - Nginx をリバース プロキシとして構成する
このステップでは、Nginx をポート 8000 と 8002 の seafile-server のリバース プロキシとして構成します。
nginx 構成ディレクトリに移動し、seafile の新しい仮想ホスト ファイルを作成します。
cd /etc/nginx/
vim conf.d/seafile.conf
以下に仮想ホスト構成を貼り付けます。
server {
listen 80;
server_name cloud.natsume.co;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name cloud.natsume.co;
ssl on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_prefer_server_ciphers on;
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 REMOTE_ADDR $remote_addr;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
fastcgi_read_timeout 36000;
}
# Reverse Proxy for seahub
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
#CHANGE THIS PATH WITH YOUR OWN DIRECTORY
location /media {
root /var/www/seafile/seafile-server/seahub;
}
}
保存して終了。
ドメイン名はcloud.natsume.coを使用します。上記の構成で、それを独自のドメイン名に置き換えてください。
次に、Nginx の構成をテストし、エラーがないことを確認します。
nginx -t
systemctl コマンドで Nginx を起動します。
systemctl start nginx
netstat が提供するリストで、ポート 80 と 443 が使用可能であることを確認します。
netstat -plntu

次に、ドメイン名を seafile 構成に追加する必要があります。 seafile ディレクトリに移動し、構成ファイルを編集します。
cd /var/www/seafile/
vim conf/ccnet.conf
サービス URL をドメイン名に変更します。
SERVICE_URL = https://cloud.natsume.co
保存して終了。
seahub 構成ファイルを編集します。
vim conf/seahub_settings.py
2 行目に、以下の構成を追加します。
HTTP_SERVER_ROOT = 'https://cloud.natsume.co/seafhttp'
ここでもドメイン名を自分のドメインに置き換えます。保存して終了。
seafile を再起動し、ブート時に開始するすべてのサービスを追加します。
systemctl restart seafile
systemctl restart seahub
systemctl enable nginx
systemctl enable mariadb
systemctl enable seafile
systemctl enable seahub
ステップ 8 - FirewallD を構成する
ステップ 7 では、HTTP および HTTPS ポートを使用するように Nginx を構成しました。ここで、firewalld にポートを追加して、ファイアウォールでそのポートを開く必要があります。
ファイアウォールを開始します。
systemctl start firewalld
systemctl enable firewalld
以下の firewall-cmd コマンドを使用して、HTTP および HTTPS ポートをファイアウォール構成に追加します。
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
ファイアウォール構成を再ロードし、ポート リストを確認します。
firewall-cmd --reload
firewall-cmd --list-all

ステップ 9 - Seafile のテスト
ブラウザを開き、seafile ドメイン名 (私の場合は cloud.natsume.co) を入力すると、https 接続にリダイレクトされます。
管理者の電子メールとパスワードを入力し、[ログイン] をクリックします。

Seafile 管理ダッシュボード:

Seafile ファイル ビュー。

Nginx をリバース プロキシとして使用し、SSL を使用する Seafile が CentOS 7 サーバーに正常にインストールされました。
結論
今日では多種多様なクラウド アプリケーションが存在するため、Seafile は今日の使用に適したプライベート クラウド ソリューションです。ライブラリ/フォルダ レベルでの暗号化機能により、データを Seacloud サーバーに安全に保存できます。それに加えて、Seafile は構成が簡単で、独自のサーバーに実装できます。