ウェブサイト検索

Debian 12にSeafile自己ホスト型クラウドストレージをインストールする方法


Debian 12にSeafile自己ホスト型クラウドストレージをインストールする方法

このページで

  1. 前提条件
  2. 依存関係をインストール中
  3. MariaDBサーバーの設定
  4. Pythonの依存関係をインストールしています
  5. Seafileをダウンロードしてインストールする
  6. Nginxをリバースプロキシとして設定する
  7. UFWとHTTPSを使用してSeafileを保護する
  8. Seafileにアクセスする
  9. 結論

Seafileは、Djangoウェブフレームワークで作成されたオープンソースのファイルホスティングシステムです。これは、クロスプラットフォームのソフトウェアで、クラウドストレージ機能のセットを提供し、ユーザーがSeafileエコシステム内でファイルを保存、管理、および共有できるようにします。

Seafileでは、ファイルは中央サーバーに保存され、複数のデバイスや携帯電話のクライアントと同期できます。Seafileは、Google Drive、Dropbox、Mega.nzなどのファイルホスティングサービスの代替えとなります。Seafileを使用すると、自分のクラウドアプリケーション向けのファイル共有ソリューションを構築できます。

この記事では、MariaDBをデータベースとして、Nginxをリバースプロキシとして、LetsencryptとUFW(Uncomplicated Firewall)を使用してSeafileを保護する方法で、Debian 12サーバーにSeafileをインストールする手順を説明します。

前提条件

まずこのガイドを始めるにあたり、以下の要件を満たしていることを確認してください:

  • Debian 12 サーバー
  • 管理者権限を持つ非ルートユーザー
  • ドメイン名がサーバーのIPアドレスを指している

依存関係をインストール中

SeafileはPythonに基づいたDjangoウェブフレームワークで書かれています。Seafileをインストールするには、Pythonがインストールされていることを確認する必要があります。また、データベースとしてMariaDB/MySQL、リバースプロキシとしてNginx、セッションとキャッシュ管理のためにMemcachedまたはRedisなどの依存関係も必要になります。このセクションでは、APTパッケージマネージャーを通じてこれらのパッケージをインストールします。

まず、下記のコマンドを実行してDebianパッケージインデックスを更新してください。

sudo apt update

次に、Python3、MariaDBサーバー、Nginxウェブサーバー、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ウェブサーバーが実行中であり、有効であることが確認できます。

最後に、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

これから以下の設定について質問されます:

  • デフォルトのMariaDBサーバーインストールでルートパスワードがない場合は、パスワードの問い合わせに対してENTERを押してください。
  • MariaDBのルートユーザーに対するローカル認証はデフォルトで保護されており、認証方法を「unix_socket」に変更するよう求められたら「n」と入力してください。
  • 新しいMariaDBのルートパスワードを作成するには、'Y'を入力してください。そして、MariaDBのルートユーザー用の強力なパスワードを入力し、繰り返してください。
  • MariaDBのrootユーザーのリモート認証を無効にするよう求められた場合は、同意するためにYと入力してください。
  • デフォルトのデータベース「test」を削除し、匿名特権を削除するには、入力にYを入力してください。
  • 最後に、テーブルの権限を再読み込みすることを確認するために'Y'を入力してください。

MariaDBのrootパスワードを設定し、MariaDBを保護したので、これからSeafileのインストール用に新しいデータベースとユーザーを作成します。

以下のmariadbコマンドを実行して、MariaDBサーバーにログインします。プロンプトが表示されたら、MariaDBのルートパスワードを入力してください。

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のインストール用ドメインを入力してください。
  • 2を入力して、Seafileを既存のMySQL/MariaDBデータベースおよびユーザーと統合します
  • MariaDBのホスト、ポート、ユーザー、パスワードの詳細を入力してください。
  • ccnet用のデータベースをccnet_db、seafile用のデータベースをseafile_db、seahub用のデータベースをseahub_dbとして入力してください。
  • ENTERを押してインストールを確認し、設定を完了します

設定が完了したら、Seafileの設定を変更してNginxリバースプロキシの下で実行します。

/opt/seafile/conf ディレクトリに移動し、seahub_settings.py ファイルを nano エディタで開いてください。

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'設定を追加します。

CACHES = {
'default': {
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
'LOCATION': '127.0.0.1:11211',
},
}

完了したら、ファイルを保存してエディタを終了してください。

今、'/opt/seafile/seafile-server-latest/' ディレクトリに戻り、Seafileを実行するために 'seafile.sh' と 'seahub.sh' スクリプトを実行します。

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設定が行われている場合、出力に「syntax is ok - test is successful」と表示されます。

sudo ln -s /etc/nginx/sites-available/seafile /etc/nginx/sites-enabled/
sudo nginx -t

最後に、以下のコマンドを実行してNginxウェブサーバーを再起動し、変更を適用します。

sudo systemctl restart nginx

UFWとHTTPSを使用してSeafileを保護する

Nginxをリバースプロキシとして設定した後、SeafileをHTTPSとUFW(簡単なファイアウォール)で保護します。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にアクセスする

ウェブブラウザを開いて、https://seafile.howtoforge.local のような Seafile ドメイン名にアクセスしてください。インストールが成功していれば、Seafile のログインページが表示されるはずです。

管理者のメールアドレスとパスワードを入力し、次に'ログイン'をクリックしてください。

正しい管理者資格情報があれば、次のSeafileダッシュボードを見ることができます。

Seafileにファイルをアップロードして、インストールが成功したことを確認できます。

結論

おめでとうございます!あなたはDebian 12サーバーにSeafile自己ホスト型クラウドストレージのインストールを完了しました。Seafileは、MariaDBデータベースサーバーとNginxをリバースプロキシとして使用して稼働しています。また、UFW(シンプルファイアウォール)とCertbotおよびLetsencryptを通じてSSLでSeafileを保護しました。Seafileがインストールされたので、SeafileをONLYOFFICEドキュメントサーバーやLibreOffice Online(Collabora Online)などの他のアプリケーションと統合することができます。

関連記事: