ウェブサイト検索

CentOS 7 で Nginx を使用して Seafile をインストールする方法


このページでは

  1. 前提条件
  2. ステップ 1 - Seafile 用に CentOS を準備する
  3. ステップ 2 - Seafile の依存関係をインストールする
  4. ステップ 3 - MariaDB を構成する
  5. ステップ 4 - Seafile をインストールする
  6. ステップ 5 - Seafile および Seahub サービスを構成する
  7. ステップ 6 - SSL 証明書ファイルを生成する
  8. ステップ 7 - Nginx をリバース プロキシとして構成する
  9. ステップ 8 - FirewallD を構成する
  10. ステップ 9 - Seafile のテスト
  11. 結論

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 つのデータベースを作成します。

    1. ccnet_db
    2. seafile_db
    3. 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 は構成が簡単で、独自のサーバーに実装できます。

    関連記事: