Ubuntu 18.04 LTS に Nginx を使用して Seafile をインストールする方法
このチュートリアルは、これらの OS バージョン用に存在します
- Ubuntu 15.04 (ビビッド ベルベット)
このページでは
- 前提条件
- どうする?
- ステップ 1 - Seafile Python の依存関係をインストールする
- ステップ 2 - MySQL をインストールして構成する
- ステップ 3 - Linux システム用の Seafile サーバーをダウンロードする
- ステップ 4 - MySQL で Seafile Server をインストールする
- ステップ 5 - Letsencrypt を使用して Nginx をインストールおよび構成する
- ステップ 6 - Seafile サーバーのリバース プロキシとして Nginx を構成する
- ステップ 7 - Seafile サーバーの構成
- ステップ 8 - Seafile サーバーをサービスとして実行する
- ステップ 8 - UFW ファイアウォールを構成する
- ステップ 9 - テスト
- 参照
Seafile は、複数のプラットフォームからの同期 (クロスプラットフォーム システム)、組み込みのファイル暗号化によるプライバシー保護、2 要素認証 (TFA) のサポート、バージョン管理などの高度な機能を備えた、オープン ソースのファイル ホスティングおよびクラウド ストレージ システムです。ファイルのロック、オンライン編集、その他多数。 Seafile は C および Python プログラミング言語で書かれており、Dropbox、mega.co.nz などと同様の機能を提供します。
このチュートリアルでは、Nginx Web サーバーと MySQL データベースを使用して Seafile サーバーをインストールおよび構成する方法を段階的に説明します。 Ubuntu 18.04 システムで最新の MySQL 5.8 を使用して、HTTPS SSL Letsencrypt が有効になっている Nginx Web サーバーの下に seafile サーバーをインストールします。
前提条件
- Ubuntu 18.04
- ルート権限
何する?
- Seafile Python の依存関係をインストールする
- MySQL のインストールと構成
- Linux システム用の Seafile Server をダウンロード
- Seafile サーバーのインストール
- Nginx と Letsencrypt をインストールする
- Nginx を Seafile サーバーのリバース プロキシとして構成する
- Seafile サーバーの構成
- Seafile サーバーをサービスとして実行する
- UFW ファイアウォールの構成
- テスト
ステップ 1 - Seafile Python 依存関係をインストールする
システムに seafile サーバーをインストールする前に行う必要がある最初のステップは、その依存関係をインストールすることです。 Seafile は Python ベースのアプリケーションであり、サーバー上で実行するには Python 2.7 が必要です。
パッケージをインストールする前に、Ubuntu リポジトリを更新する必要があります。
sudo apt update
以下の apt コマンドを使用して、seafile サーバーのインストールに必要なすべての依存関係と共に python 2.7 をインストールします。
sudo apt install python -y
sudo apt install python2.7 libpython2.7 python-setuptools python-pil python-ldap python-urllib3 ffmpeg python-pip python-mysqldb python-memcache python-requests -y
すべての依存関係がインストールされるまで待ちます。
ステップ 2 - MySQL のインストールと構成
Seafile は、SQLite と MySQL データベース サーバーのサポートを提供します。このガイドでは、インストールに MySQL データベース サーバーを使用します。最新の MySQL バージョン 5.8 を使用して seafile サーバーをデプロイします。
以下の apt コマンドを使用して MySQL サーバーをインストールします。
sudo apt install mysql-server mysql-client -y
インストールが完了したら、MySQL サービスを開始し、システム起動時に毎回起動できるようにします。
systemctl start mysql
systemctl enable mysql
MySQL サーバーは Ubuntu システムにインストールされます。
ここで、mysql_secure_installation コマンドを使用して MySQL ルート パスワードを構成する必要があります。
mysql_secure_installation
ここで、MySQL のパスワード ポリシーについて尋ねられます。LOW は 0、MEDIUM は 1、STRONG は 2 です。 MEDIUM パスワード ポリシーの番号 1 を入力し、Enter キーを押してから、安全なパスワードを入力します。

それ以外の場合は、以下に示すように Y と入力します。
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
MySQL root パスワードの設定が完了しました。
次に、Seafile サーバー用の新しいデータベースを作成します。 seafile コンポーネントごとに 3 つのデータベースを作成し、新しいデータベース ユーザーを作成します。 seafile という名前の新しいユーザーを作成すると、ccnet-db、seafile-db、および seahub-db の 3 つのデータベースすべてに対するすべての権限が付与されます。
MySQL クライアント コマンドを使用して MySQL シェルにログインします。
mysql -u root -p
ここで、新しいデータベース ccnet-db、seafile-db、seahub-db を作成し、新しいユーザー seafile を作成します。次に、3 つのデータベース権限すべてを seafile ユーザーに付与します。
以下の MySQL クエリを実行します。
create database `ccnet-db` character set = 'utf8';
create database `seafile-db` character set = 'utf8';
create database `seahub-db` character set = 'utf8';
create user 'seafile'@'localhost' identified by '';
GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@localhost;

MySQL サーバーがインストールされ、root パスワードが設定され、seafile インストール用のデータベースが作成されました。
ステップ 3 - Linux システム用の Seafile サーバーをダウンロードする
このチュートリアルでは、seafile サーバーは systemd システムでサービスとして実行され、root 以外のユーザーの下で実行されます。
mohammad という名前の新しいユーザーを作成します。
useradd -m -s /bin/bash mohammad
mohammad ユーザーでログインし、wget を使用して seafile サーバーの最新バージョンをダウンロードします。
su - mohammad
wget https://download.seadrive.org/seafile-server_6.2.5_x86-64.tar.gz
seafile-server.tar.gz ファイルを抽出し、マスター ディレクトリの名前を seafile-server に変更します。
tar -xf seafile-server_6.2.5_x86-64.tar.gz
mv seafile-server-6.2.5/ seafile-server/
seafile サーバーのソース コードは、/home/mohammad/seafile-server ディレクトリにダウンロードされています。

ステップ 4 - MySQL で Seafile Server をインストールする
このステップでは、Seafile が提供する MySQL セットアップ スクリプトを使用して seafile サーバーをインストールします。
mohammad ユーザーとしてログインし、seafile-server ディレクトリに移動します。
su - mohammad
cd seafile-server/
setup-seafile-mysql.sh スクリプトを実行します。
./setup-seafile-mysql.sh
インストール スクリプトは、python モジュールのチェックを実行します。すべての依存関係がインストールされていることを確認してから、Enter キーを押します。
これで、Seafile の設定に入ります。
- サーバー名: hakase-cloud などの seafile サーバー名を入力します。
- サーバー ドメイン名: seafile サーバー cloud.hakase-labs.io のドメイン名を入力します。
- seafile データ ディレクトリ: 設定をデフォルトのままにし、Enter キーを押します。
- seafile ファイル サーバー ポート: デフォルトのポート 8082 のままにします。

次にデータベースの構成です。 2 つのオプションを求められます。スクリプトにデータベースを作成させるか、既存のデータベースを使用します。
オプション 2 を選択して、既存のデータベース設定を使用します。
- データベース ホスト: デフォルトのローカルホスト
- データベース ポート: mysql のデフォルトは通常のポート 3306
- データベース ユーザーはパスワード付きの seafile です [メール保護]
- ccnet データベース: ccnet-db
- seafile データベース: seafile-db
- seahub データベース: seahub-db

Enter キーをもう一度押して、seafile サーバーの構成を確認します。

インストールが完了すると、以下のような結果が得られます。

seafile サーバーのインストールと構成が正常に完了しました。また、seafile ファイルサーバーはポート 8082 で実行され、seahub サービスはポート 8000 で実行されます。
次に、起動スクリプトを使用して seafile サーバーと seahub サーバーを実行するテストを行います。
mohammad ユーザーとして、~/seafile-server-latest ディレクトリに移動します。
su - mohammad
cd ~/seafile-server-latest/
以下のコマンドを実行して、seafile サーバーを起動します。
./seafile.sh start
次に、seahub サーバーを実行します。
./seahub.sh start
初めて seahub.sh 起動スクリプトを実行すると、seafile サーバーの管理者ユーザーとパスワードを作成するよう求められます。
管理者の電子メールとパスワードを入力し、Enter キーを押します。

管理者ユーザーとパスワードが作成されました。netstat コマンドを使用して、seafile と seahub サービスのポート 8082 と 8080 を確認します。
netstat -plntu
また、seafile サーバーと seahub サーバーが Ubuntu 18.04 システムで稼働していることがわかります。

seafile と seahub サーバーを停止します。
./seafile.sh stop
./seahub.sh stop

ステップ 5 - Letsencrypt を使用して Nginx をインストールおよび構成する
このガイドでは、seafile サーバーは、HTTPS が有効になっている Nginx Web サーバーで実行されます。このステップでは、Nginx Web サーバーと Letsencrypt ツールをインストールしてから、seafile サーバー ドメイン名の SSL letsencrypt と DHPARAM キーを生成します。
以下の apt コマンドを使用して、Nginx Web サーバーをインストールします。
sudo apt install nginx -y
インストールが完了したら、Nginx サービスを開始し、システム起動時に毎回起動できるようにします。
systemctl start nginx
systemctl enable nginx
次に、SSLletsencrypt証明書を生成するためのletsencryptツールをインストールします。
sudo apt install letsencrypt -y
Nginx Web サーバーとletsencrypt ツールがインストールされています。
次に、/etc/nginx ディレクトリに移動し、letsencrypt 用の新しい構成ファイル certbot.conf を作成します。
cd /etc/nginx/
vim snippets/certbot.conf
そこに次の構成を貼り付けます。
location /.well-known {
alias /var/www/html/.well-known;
}
保存して終了。
デフォルトの仮想ホスト ファイルを編集します。
vim sites-available/default
以下のインクルード行をサーバー {...} ブラケットに追加します。
include snippets/certbot.conf;
保存して終了。
nginx 構成をテストし、Web サーバーを再起動します。
nginx -t
systemctl restart nginx

また、seafile サーバー ドメイン名用の新しい letsencrypt SSL 証明書を生成する準備が整いました。
以下に示すように、certbot コマンドを使用して SSL 証明書ファイルを生成します。
certbot certonly --rsa-key-size 4096 --webroot --agree-tos --no-eff-email --email -w /var/www/html -d cloud.hakase-labs.io
ノート:
- 新しい SSL 証明書を生成し、キーサイズを 4096 に指定します。
これで、/etc/letsencrypt/live ディレクトリにあるすべての SSL 証明書ファイルを取得できます。

さらにセキュリティを強化するために、OpenSSL コマンドを使用してサイズ 4096 の Diffie-Hellman キーを生成します。
openssl dhparam -out /etc/nginx/dhparam.pem 4096
必要なすべての証明書が生成されました。
ステップ 6 - Nginx を Seafile サーバーのリバース プロキシとして構成する
/etc/nginx 構成ディレクトリに移動し、vim を使用して新しい仮想ホスト ファイル seafile を作成します。
cd /etc/nginx/
vim sites-available/seafile
そこに次の構成を貼り付けます。
server {
listen 80;
server_name cloud.hakase-labs.io;
rewrite ^ https://$http_host$request_uri? permanent;
server_tokens off;
}
server {
listen 443 ssl http2;
server_name cloud.hakase-labs.io;
ssl on;
ssl_certificate /etc/letsencrypt/live/cloud.hakase-labs.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.hakase-labs.io/privkey.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:5m;
ssl_dhparam /etc/nginx/dhparam.pem;
#SSL Security
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
ssl_ecdh_curve secp384r1;
ssl_prefer_server_ciphers on;
server_tokens off;
ssl_session_tickets off;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_read_timeout 1200s;
# used for view/edit office file via Office Online Server
client_max_body_size 0;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
}
location /media {
root /home/mohammad/seafile-server-latest/seahub;
}
}
保存して終了。
seafile 仮想ホストを有効にして、構成をテストします。
ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
nginx -t
エラーがないことを確認し、nginx サービスを再起動します。
systemctl restart nginx
seafile サーバーのリバース プロキシとして Nginx の構成が完了しました。

ステップ 7 - Seafile サーバーの構成
Nginx Web サーバー ドメイン名で seafile サーバーを実行するには、ccnet サービス、seafile サーバー、seahub サーバーのデフォルトの seafile 構成を編集する必要があります。
mohammad ユーザーとしてログインし、conf/ ディレクトリに移動します。
su - mohammad
cd conf/
ccnet サービス構成ファイル ccnet.conf を編集します。
vim ccnet.conf
SERVICE_URL 行で、値を次のように HTTPS を含むドメイン名に変更します。
SERVICE_URL = https://cloud.hakase-labs.io
保存して終了。
seafile サーバー構成用に seafile.conf ファイルを編集します。
vim seafile.conf
以下のように、値を含むホスト行を 127.0.0.1 localhost に追加します。
[fileserver]
host = 127.0.0.1
port = 8082
保存して終了。
最後に、seahub_settings.py ファイルを編集します。
vim seahub_settings.py
FILE_SERVER_ROOT 行で、値を HTTPS のドメイン名に変更します。
FILE_SERVER_ROOT = 'https://cloud.hakase-labs.io/seafhttp'
保存して終了。

ステップ 8 - Seafile サーバーをサービスとして実行する
このチュートリアルでは、seafile サーバーを Ubuntu 18.04 システムのサービスとして実行します。 seafile と seahub の新しいサービス スクリプトを作成します。
/etc/systemd/system ディレクトリに移動し、新しいサービス ファイル seafile.service を作成します。
cd /etc/systemd/system/
vim seafile.service
そこに次の seafile サービス スクリプトを貼り付けます。
[Unit]
Description=Seafile
After=network.target mysql.service
[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seafile.sh start
ExecStop=/home/mohammad/seafile-server-latest/seafile.sh stop
User=mohammad
Group=mohammad
[Install]
WantedBy=multi-user.target
保存して終了。
次に、seahub サービス ファイル seahub.service を作成します。
vim seahub.service
そこに次の seahub サービス スクリプトを貼り付けます。
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
Type=forking
ExecStart=/home/mohammad/seafile-server-latest/seahub.sh start
ExecStop=/home/mohammad/seafile-server-latest/seahub.sh stop
User=mohammad
Group=mohammad
[Install]
WantedBy=multi-user.target
保存して終了。
ノート:
- seafile.sh および seahub.sh スクリプトのパスを変更します。
systemd システムをリロードします。
systemctl daemon-reload
そして、seafile と seahub サービスを開始します。
systemctl start seafile
systemctl start seahub
これらのサービスは、システムの起動時に毎回起動できるようにします。
systemctl enable seafile
systemctl enable seahub

seafile および seahub サービスが稼働しています。以下のコマンドを使用して確認してください。
systemctl status seafile
systemctl status seahub
netstat -plntu

ステップ 8 - UFW ファイアウォールの構成
どのシステムでも常にファイアウォールを有効にすることをお勧めします。 ubuntu システムでは、UFW ファイアウォールを有効にして、SSH、HTTP、および HTTPS ポートを追加します。
ssh ポートを追加し、UFW ファイアウォールを有効にします。
ufw allow ssh
ufw enable
y と入力して、ファイアウォールをオンにします。
ここで、HTTP および HTTPS サービスを追加します。
ufw allow http
ufw allow https
ファイアウォールのリスト ルールを確認します。
ufw status numbered
リストには、SSH、HTTP、および HTTPS の 3 つのサービスが表示されます。

ステップ 9 - テスト
Web ブラウザを開き、Seafile サーバーの URL インストールを入力します。私は:
安全な HTTPS 接続のログイン ページにリダイレクトされます。

管理者の電子メール [email とパスワード mypassword を入力し、[ログイン] ボタンをクリックします。
これで、以下のように seafile ダッシュボードが表示されます。

追加 - seafile ダッシュボードに画像とビューをアップロードしました。

Ubuntu 18.04 で Nginx Web サーバーと Letsencrypt を使用した seafile サーバーのインストールと構成が正常に完了しました。
参照
- https://manual.seafile.com/