ウェブサイト検索

Ubuntu 18.04 LTS に Nginx を使用して Seafile をインストールする方法


このチュートリアルは、これらの OS バージョン用に存在します

  • Ubuntu 15.04 (ビビッド ベルベット)

このページでは

  1. 前提条件
  2. どうする?
  3. ステップ 1 - Seafile Python の依存関係をインストールする
  4. ステップ 2 - MySQL をインストールして構成する
  5. ステップ 3 - Linux システム用の Seafile サーバーをダウンロードする
  6. ステップ 4 - MySQL で Seafile Server をインストールする
  7. ステップ 5 - Letsencrypt を使用して Nginx をインストールおよび構成する
  8. ステップ 6 - Seafile サーバーのリバース プロキシとして Nginx を構成する
  9. ステップ 7 - Seafile サーバーの構成
  10. ステップ 8 - Seafile サーバーをサービスとして実行する
  11. ステップ 8 - UFW ファイアウォールを構成する
  12. ステップ 9 - テスト
  13. 参照

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
  • ルート権限

何する?

  1. Seafile Python の依存関係をインストールする
  2. MySQL のインストールと構成
  3. Linux システム用の Seafile Server をダウンロード
  4. Seafile サーバーのインストール
  5. Nginx と Letsencrypt をインストールする
  6. Nginx を Seafile サーバーのリバース プロキシとして構成する
  7. Seafile サーバーの構成
  8. Seafile サーバーをサービスとして実行する
  9. UFW ファイアウォールの構成
  10. テスト

ステップ 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/

関連記事: