クラウドストレージ · 3 min read · Sep 14, 2025

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

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サーバーが有効実行中であることが確認できます。

MariaDBサービスの確認

次に、以下のコマンドを使用してNginxサービスを確認します。

sudo systemctl is-enabled nginx  
sudo systemctl status nginx

以下に示すように、Nginxウェブサーバーが実行中有効であることが確認できます。

Nginxサービスの状態を確認

最後に、Memcachedサービスが実行中であることを確認します。Memcachedサービスは実行中有効である必要があります。

sudo systemctl is-enabled memcached  
sudo systemctl status memcached

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ルートユーザーのリモート認証を無効にするように求められた場合は、’ Y ‘と入力して同意します。
  • デフォルトのデータベース’test’を削除し、匿名特権を削除するために’ Y ‘と入力します。
  • 最後に、テーブル特権の再読み込みを確認するために’ Y ‘と入力します。

MariaDBルートパスワードを設定し、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

venvの設定

次に、以下の’ 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

Python依存関係のインストール

インストールが完了したら、以下のコマンドを使用して’ /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インストール用のドメインを入力します。
  • 既存のMySQL/MariaDBデータベースとユーザーとSeafileを統合するために’ 2 ‘を入力します。
  • MariaDBのホスト、ポート、ユーザー、およびパスワードの詳細を入力します。
  • ccnet用のデータベースを’ ccnet_db ‘、seafile用を’ seafile_db ‘、seahub用を’ seahub_db ‘として入力します。
  • インストールを確認し、設定を完了するためにENTERを押します。

MySQL/MariaDBでSeafileをインストール中

インストール完了

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

/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.sh ‘および’ seahub.sh ‘スクリプトを実行してSeafileを実行します。

cd /opt/seafile/seafile-server-latest/  
  
./seafile.sh start  
./seahub.sh start

Seafileが起動すると、’ Seafile server started ‘という出力が表示されます。また、Seafileの管理者ユーザーを設定するように求められますので、ユーザー名、メールアドレス、およびパスワードを入力してください。

SeafileとSeahubの開始

Nginxをリバースプロキシとして設定する

SeafileがMariaDBとMemcachedで稼働しているので、次のステップはSeafileのリバースプロキシとしてNginxを設定することです。ドメイン名が準備され、サーバーIPアドレスを指していることを確認してください。

以下のコマンドを使用して新しい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;  
  
# 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

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

certbotとufwのインストール

次に、以下のコマンドを実行して’ OpenSSH ‘と’ Nginx Full ‘プロファイルを有効にします。’ OpenSSH ‘プロファイルはデフォルトのSSHポート’ 22 ‘を開放し、’ Nginx Full ‘プロファイルはサーバーへのHTTPHTTPS接続の両方を許可します。

sudo ufw allow OpenSSH  
sudo ufw allow 'Nginx Full'

次に、以下のコマンドを実行してUFWを開始し、有効にします。「 y 」と入力して確認すると、’ Firewall is active and enabled at system startup ‘という出力が表示されます。

sudo ufw enable

ufwを有効にする

最後に、以下の’ certbot ‘コマンドを使用してSSL証明書を生成し、Seafileインストールを保護します。ドメイン名とメールアドレスを自分の情報に変更してください。

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d seafile.howtoforge.local

プロセスが完了すると、SeafileはHTTPSで保護され、証明書は’ /etc/letsencrypt/live/domain.com ‘ディレクトリに保存されます。

Seafileにアクセスする

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

管理者のメールアドレスとパスワードを入力し、’ Log in ‘をクリックします。

Seafileにログイン

正しい管理者資格情報があれば、以下のSeafileダッシュボードが表示されます。

ダッシュボード

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

結論

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

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。