クラウドストレージ · 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サーバーが有効で実行中であることが確認できます。

次に、以下のコマンドを使用して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ルートユーザーのリモート認証を無効にするように求められた場合は、’ 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
次に、以下の’ 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/seafileSeafileのダウンロードとインストール
この時点で、Seafileをインストールする準備が整いました。これからSeafileのソースコードをダウンロードし、MariaDBとMemcachedを使用してインストールし、デフォルト設定を介してSeafileのドメイン名を追加し、次にSeafileプロセスを手動で開始します。
以下のコマンドを実行してユーザー’ seafile ‘としてログインし、’ /opt/seafile ‘ディレクトリに移動します。
su seafile
cd /opt/seafileSeafileのソースコードをダウンロードし、以下のコマンドを使用して抽出します。この例では、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を押します。


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

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
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 」と入力して確認すると、’ Firewall is active and enabled at system startup ‘という出力が表示されます。
sudo ufw enable
最後に、以下の’ 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にファイルをアップロードして、インストールが成功したことを確認できます。
結論
おめでとうございます!Debian 12サーバーにSeafile自己ホスト型クラウドストレージのインストールが完了しました。MariaDBデータベースサーバーとNginxをリバースプロキシとして使用してSeafileを稼働させています。また、UFW(Uncomplicated Firewall)とCertbotおよびLetsencryptを介してSeafileを保護しました。Seafileがインストールされたので、ONLYOFFICE Document ServerやLibreOffice Online(Collabora Online)などの他のアプリケーションとSeafileを統合できます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。