Seafile セルフホスト型クラウド ストレージを Debian 12 にインストールする方法
このページでは
- 前提条件
- 依存関係のインストール
- MariaDB サーバーのセットアップ
- Python の依存関係のインストール
- Seafileのダウンロードとインストール
- Nginx をリバース プロキシとして設定する
- UFW と HTTPS による Seafile の保護
- Seafile へのアクセス
- 結論
Seafile は、Django Web フレームワークで書かれたオープンソースのファイル ホスティング システムです。これは、一連のクラウド ストレージ機能を提供し、ユーザーが Seafile エコシステム内でファイルを保存、管理、共有できるようにするクロスプラットフォーム ソフトウェアです。
Seafile では、ファイルは中央サーバーに保存され、複数のデバイスや携帯電話にわたるクライアントと同期できます。 Seafile は、Google Drive、Dropbox、Mega.nz などのファイル ホスティング サービスの代替手段です。 Seafile を使用すると、プライベート クラウド アプリケーション用のファイル共有ソリューションを構築できます。
この記事では、データベースとして MariaDB、リバース プロキシとして Nginx、Letsencrypt と UFW (Uncomplicated Firewall) を介した HTTPS を使用して、Seafile を Debian 12 サーバーにインストールして Seafile を保護する方法を説明します。
前提条件
このガイドを始めるにあたり、次の要件を満たしていることを確認してください。
- Debian 12 サーバー
- 管理者権限を持つ非 root ユーザー
- サーバーのIPアドレスを指すドメイン名
依存関係のインストール
Seafile は、Python をベースとした Django Web フレームワークで作成されています。 Seafile をインストールするには、Python がインストールされていることを確認する必要があります。また、データベースとして MariaDB/MySQL、リバース プロキシとして Nginx、セッションとキャッシュ管理用に Memcached または Redis などの依存関係が必要になります。このセクションでは、APT パッケージ マネージャーを介してこれらのパッケージをインストールします。
まず、以下のコマンドを実行して、Debian パッケージのインデックスを更新します。
sudo apt update
次に、次のコマンドを実行して、Python3、MariaDB サーバー、Nginx Web サーバー、Memcached、およびいくつかの追加ライブラリなどの依存関係をシステムにインストールします。
sudo apt install mariadb-server nginx python3 python3-dev python3-setuptools python3-pip libmariadb-dev-compat ldap-utils libldap2-dev libsasl2-dev python3.11-venv memcached libmemcached-dev
「Y」と入力してインストールを確認します。
インストールが完了したら、以下のコマンドで MariaDB サーバーを確認します。
sudo systemctl is-enabled mariadb
sudo systemctl status mariadb
次の出力では、MariaDB サーバーが有効で実行中であることがわかります。
次に、次のコマンドを使用して Nginx サービスを確認します。
sudo systemctl is-enabled nginx
sudo systemctl status nginx
以下では、Nginx Web サーバーが実行中で有効になっていることがわかります。
最後に、Memcached サービスが実行されていることを確認します。 Memcached サービスは実行され有効になっている必要があります。
sudo systemctl is-enabled memcached
sudo systemctl status memcached
MariaDB サーバーのセットアップ
MariaDB をインストールしたので、次のステップでは、MariaDB サーバーの展開を構成して保護します。次に、Seafile で使用される複数のデータベースを持つ新しい MariaDB ユーザーを作成します。 「mariadb-secure-installation」 コマンドを使用して MariaDB を保護し、新しいユーザーとデータベースの作成には「mariadb」 クライアントを使用します。
以下の「mariadb-secure-installation」コマンドを実行して、MariaDB サーバーのインストールを保護します。
sudo mariadb-secure-installation
次に、次の構成について尋ねられます。
- root パスワードを使用しないデフォルトの MariaDB サーバーのインストールの場合は、パスワードを尋ねられたら ENTER を押します。
- MariaDB root ユーザーのローカル認証はデフォルトで保護されており、認証方法を「unix_socket」に変更するように求められたら「n」と入力します。
- 「Y」と入力して、新しい MariaDB root パスワードを作成します。次に、MariaDB root ユーザーの強力なパスワードを入力し、繰り返します。
- MariaDB root ユーザーのリモート認証を無効にするように求められたら、「Y」と入力して同意します。
- 「Y」と入力してデフォルトのデータベース「test」を削除し、匿名権限を削除します。
- 最後に、「Y」と入力して、テーブルのリロード権限を確認します。
MariaDB の root パスワードを構成し、MariaDB を保護したので、次は Seafile インストール用の新しいデータベースとユーザーを作成します。
以下の「mariadb」コマンドを実行して、MariaDB サーバーにログインします。プロンプトが表示されたら、MariaDB の root パスワードを入力します。
sudo mariadb -u root -p
次のクエリを使用して、新しいユーザー 'seafile' を作成します。次のパスワードを新しい安全なパスワードに必ず変更してください。
create user 'seafile'@'localhost' identified by 'password';
次のクエリを実行して、新しいデータベース 'ccnet_db'、'seafile_db'、および 'seahub_db' を作成します。
create database ccnet_db character set = 'utf8';
create database seafile_db character set = 'utf8';
create database seahub_db character set = 'utf8';
次に、以下のクエリを実行して、ユーザー 'seafile' が Seafile データベースにアクセスできるようにします。
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;
次に、ユーザー「seafile」の権限を確認して、データベース「ccnet_db」、「seafile_db」、「seahub_db」へのアクセスと権限を確認します。 」。
SHOW GRANTS FOR seafile@localhost;
最後に、「quit」と入力して MariaDB サーバーを終了します。
Python の依存関係のインストール
このセクションでは、Seafile を実行するための新しいシステム ユーザーを作成し、インストール ディレクトリと Python 仮想環境を作成してから、「pip」 コマンドを使用して Python の依存関係をインストールします。
まず、次のコマンドを使用して新しいユーザー「seafile」を追加します。
sudo adduser seafile
次に、新しいインストール ディレクトリ '/opt/seafile' を作成し、そこに移動します。
mkdir -p /opt/seafile; cd /opt/seafile
以下のコマンドを実行して、「venv」Python 仮想環境を作成し、アクティブ化します。アクティブ化すると、シェルは「(venv) user@hostname #」のようになります。
python3 -m venv venv
source venv/bin/activate
次に、以下の「pip3」コマンドを実行して、Seafile の Python 依存関係をインストールします。これらのパッケージは、「venv」仮想環境内にインストールする必要があります。
pip3 install --timeout=3600 django==4.2.* future==0.18.* mysqlclient==2.1.* pymysql pillow==10.0.* pylibmc captcha==0.4 markupsafe==2.0.1 jinja2 sqlalchemy==2.0.18 psd-tools django-pylibmc django_simple_captcha==0.5.* djangosaml2==1.5.* pysaml2==7.2.* pycryptodome==3.16.* cffi==1.15.1 lxml python-ldap==3.4.3
インストールが完了したら、以下のコマンドを使用して、「/opt/seafile」ディレクトリの所有権をユーザー「seafile」に変更します。
sudo chown -R seafile: /opt/seafile
Seafileのダウンロードとインストール
この時点で、Seafile をインストールする準備が整いました。次に、Seafile ソース コードをダウンロードし、MariaDB および Memcached とともにインストールし、デフォルト設定で Seafile ドメイン名を追加して、Seafile プロセスを手動で開始します。
次のコマンドを実行して、ユーザー「seafile」としてログインし、「/opt/seafile」ディレクトリに移動します。
su seafile
cd /opt/seafile
Seafile ソース コードをダウンロードし、次のコマンドを使用して抽出します。この例では、Seafile 11 をインストールします。Seafile のダウンロード ページを確認して最新バージョンを入手してください。
wget https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_11.0.12_x86-64.tar.gz
tar xf seafile-server_11.0.12_x86-64.tar.gz
次に、次のようにして「venv」仮想環境をアクティブ化します。
source venv/bin/activate
「seafile-server-11.0.12」ディレクトリに移動し、「setup-seafile-mysql.sh」スクリプトを実行します。これにより、MariaDB をデータベースとしてシステムに Seafile をインストールすることになります。
cd seafile-server-11.0.12
./setup-seafile-mysql.sh
次に、次の Seafile 構成を尋ねられます。
- Seafile サーバー名を入力します。
- Seafile をインストールするためのドメインを入力します。
- Seafile を既存の MySQL/MariaDB データベースおよびユーザーと統合するには、「2」を入力します。
- MariaDB ホスト、ポート、ユーザー、パスワードの詳細を入力します。
- ccnet のデータベースには「ccnet_db」、seafile には「seafile_db」、seahub には「seahub_db」と入力します。
- Enter を押してインストールを確認し、構成を完了します
構成が完了したら、Seafile 構成を変更して Nginx リバース プロキシで実行します。
「/opt/seafile/conf」ディレクトリに移動し、「nano」エディタでファイル「seahub_settings.py」を開きます。
cd /opt/seafile/conf
nano seahub_settings.py
ドメイン名を「SERVICE_URL」オプションに追加し、必ず先頭に「https」を含めてください。
SERVICE_URL = 'https://seafile.howtoforge.local'
次のような「FILE_SERVER_ROOT」オプションをドメイン名に追加します。
FILE_SERVER_ROOT = 'https://seafile.howtoforge.local/seafhttp'
最後に、「キャッシュ」設定を追加して、Seafile を Memcached キャッシュ システムと統合します。
CACHES = {
'default': {
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
'LOCATION': '127.0.0.1:11211',
},
}
完了したら、ファイルを保存してエディタを終了します。
次に、「/opt/seafile/seafile-server-latest/」ディレクトリに戻り、「seafile.sh」と「seahub.sh」を実行します。 Strong>' スクリプトを使用して Seafile を実行します。
cd /opt/seafile/seafile-server-latest/
./seafile.sh start
./seahub.sh start
Seafile が起動すると、「Seafile サーバーが開始されました」という出力が表示されます。 Seafile の管理者ユーザーを設定するように求められるため、ユーザー名、電子メール、パスワードを必ず入力してください。
Nginx をリバース プロキシとして設定する
Seafile が立ち上がって MariaDB と Memcached で実行されているので、次のステップは Nginx を Seafile のリバース プロキシとして設定することです。したがって、ドメイン名を準備し、サーバーの IP アドレスを指定していることを確認してください。
次の「nano」エディタを使用して、新しい Nginx サーバー ブロック構成「/etc/nginx/sites-available/seafile」を作成します。
sudo nano /etc/nginx/sites-available/seafile
以下の設定を挿入し、「server_name」オプションをドメイン名に変更してください。
log_format seafileformat '$http_x_forwarded_for $remote_addr [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $upstream_response_time';
server {
listen 80;
server_name seafile.howtoforge.local;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $http_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 files via Office Online Server
client_max_body_size 0;
access_log /var/log/nginx/seahub.access.log seafileformat;
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;
access_log /var/log/nginx/seafhttp.access.log seafileformat;
error_log /var/log/nginx/seafhttp.error.log;
}
location /media {
root /opt/seafile/seafile-server-latest/seahub;
}
}
完了したら、ファイルを保存して終了します。
次に、以下のコマンドを実行して「seafile」サーバー ブロックをアクティブにし、Nginx 構文を確認します。 Nginx が適切に設定されている場合、「構文は問題ありません - テストは成功しました」という出力が表示されます。
sudo ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
sudo nginx -t
最後に、以下のコマンドを実行して Nginx Web サーバーを再起動し、変更を適用します。
sudo systemctl restart nginx
UFW と HTTPS による Seafile の保護
Nginx をリバース プロキシとして構成したら、HTTPS と UFW (Uncomplicated Firewall) を使用して Seafile を保護します。 UFW と Certbot をインストールし、SSH、HTTP、HTTPS などのサービスを開き、Letsencrypt から Certbot を使用して新しい SSL 証明書を生成します。
まず、以下のコマンドを実行して「ufw」パッケージと「certbot」パッケージをインストールします。
sudo apt install ufw certbot -y
次に、以下のコマンドを実行して、「OpenSSH」プロファイルと「Nginx Full」プロファイルを有効にします。 「OpenSSH」プロファイルはデフォルトの SSH ポート「22」を開き、「Nginx Full」プロファイルは両方の HTTP を許可します。サーバーへの接続とHTTPS接続。
sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
次に、次のコマンドを実行して UFW を起動し、有効にします。確認のために「y」と入力すると、「ファイアウォールがアクティブで、システム起動時に有効になっています」という出力が表示されます。
sudo ufw enable
最後に、以下の 'certbot' コマンドを使用して、SSL 証明書を生成し、Seafile インストールを保護できるようになりました。必ずドメイン名とメールアドレスをご自身の情報に変更してください。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email -d seafile.howtoforge.local
プロセスが完了すると、Seafile は HTTPS で保護され、証明書は「/etc/letsencrypt/live/domain.com」ディレクトリで利用できるようになります。
Seafile へのアクセス
Web ブラウザを開いて、Seafile ドメイン名 (https://seafile.howtoforge.local など) にアクセスします。インストールが成功すると、Seafile のログイン ページが表示されます。
管理者の電子メール アドレスとパスワードを入力し、[ログイン] をクリックします。
正しい管理者資格情報を持っている場合は、次の Seafile ダッシュボードが表示されます。
これで、Seafile にファイルをアップロードして、インストールが成功したことを確認できます。
結論
おめでとう! Debian 12 サーバーへの Seafile セルフホスト クラウド ストレージのインストールが完了しました。 Seafile が稼働し、MariDB データベース サーバーと Nginx をリバース プロキシとして使用できるようになりました。また、UFW (Uncomplicated Firewall) と Certbot および Letsencrypt 経由の SSL で Seafile を保護しました。 Seafile がインストールされたので、Seafile を ONLYOFFICE Document Server や LibreOffice Online (Collabora Online) などの他のアプリケーションと統合できます。