Docker を使用して Seafile サーバーをデプロイして独自のファイル同期および共有ソリューションをホストする方法
まず、Seafileとは何ですか?
Seafile は、中央サーバーに接続するラップトップや電話などの複数のデバイスがある場合と同様に、サーバー クライアント モデルで動作する自己ホスト型のファイル同期プログラムです。
Nextcloud や ownCloud などの一般的な代替サービスとは異なり、Seafile は「1 つのことだけを行うが、それをうまく行う」という哲学に従おうとしています。同様に、Seafile には連絡先やカレンダーの統合などの追加機能は組み込まれていません。
代わりに、Seafile はファイルの同期、共有、およびそれに関連するものだけに焦点を当てています。しかし、その結果として、 それは非常にうまくいきます。
Docker と NGINX を使用した Seafile サーバーのデプロイ
上級チュートリアル
It's FOSS のほとんどのチュートリアルは初心者に焦点を当てています。これはそうではありません。 DIY プロジェクトを頻繁にいじり、自己ホストすることを好む上級ユーザーを対象としています。
このチュートリアルは、コマンド ラインの使用に慣れており、これから説明するプログラムについて少なくとも十分な知識があることを前提としています。を使用しています。
NGINX をまったく使用せずにプロセス全体を実行することもできますが、NGINX を使用するとセットアップが簡単になるだけでなく、将来的により多くのサービスを自己ホストすることが大幅に容易になります。
完全な Docker セットアップを使用したい場合は、Docker 内で NGINX をセットアップすることもできますが、それは物事がより複雑になるだけで、あまり大きな利点はありません。また、同様に、ここでは取り上げません。このチュートリアル。
NGINX のインストールとセットアップ
このチュートリアルではUbuntu を使用するため、 apt を使用してパッケージをインストールします。 Fedora またはその他の非 Debian ディストリビューションを使用している場合は、 ディストリビューションのパッケージ マネージャーを使用してください。
NGINX は、Web サーバーであるだけでなく、プロキシとしても知られています。これは Seafile サーバーとインターネット間の接続として機能すると同時に、いくつかのタスクの処理を容易にします。
NGINX をインストールするには、次のコマンドを使用します。
sudo apt install nginx
HTTPS (ブラウザの小さな南京錠) を使用したい場合は、Certbot もインストールする必要があります。
sudo apt install certbot python3-certbot-nginx
次に、後でセットアップする Seafile インスタンスに接続するように NGINX を構成する必要があります。
まず、次のコマンドを実行します。
sudo nano /etc/nginx/sites-available/seafile.conf
次のテキストをファイルに入力します。
server {
server_name localhost;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
重要: server_name 行の localhost を、サーバーにアクセスするアドレス (例: seafile.example.com) に置き換えます。 または 192.168.0.0)。何を入れればよいかわからないですか?
テストだけを目的とする場合は、localhost を使用してください。この設定ではコンピューターからのみサーバーにアクセスできるようになりますので、それだけです。
ローカル WiFi 接続 (同じ WiFi ネットワーク上の任意のデバイス) 経由で Seafile を使用したい場合は、コンピューターの IP アドレスを入力する必要があります。必須ではありませんが、静的 IP アドレスの設定も検討してください。
システムを指すことがわかっているパブリック IP アドレスがある場合は、それを使用します。
システムのドメイン名 (example.com、example.org)とパブリック IP アドレスをお持ちの場合は、DNS 設定を変更してください。ドメイン名がシステムの IP アドレスを指すようにします。これには、パブリック IP アドレスがシステムを指す必要もあります。
ここで、NGINX がファイルを検索するディレクトリに構成ファイルをコピーし、NGINX を再起動する必要があります。
sudo ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
sudo systemctl restart nginx
Certbot を設定する場合は、次のコマンドを実行して HTTPS を設定する必要もあります。
sudo certbot
HTTP トラフィックを HTTPS にリダイレクトするように求められたら、2 を選択します。
これまでに設定したすべてが機能していることを確認する良い機会です。サイトにアクセスすると、502 Bad Gateway
という行に何か表示された画面が表示されるはずです。
Docker と Docker Compose をインストールする
さあ、楽しいことに移りましょう!
まず最初に、Docker と Docker Compose をインストールする必要があります。 docker-compose.yml ファイルを利用するには Docker Compose が必要です。これにより、Seafile が必要とするさまざまな Docker コンテナの管理が容易になります。
Docker と Docker Compose は、次のコマンドでインストールできます。
sudo apt install docker.io docker-compose
Docker がインストールされ実行されているかどうかを確認するには、次のコマンドを実行します。
sudo docker run --rm hello-world
正常に完了すると、ターミナルに次のような内容が表示されるはずです。
docker
コマンドの先頭に sudo
を追加したくない場合は、次のコマンドを実行して自分自身を docker
グループに追加できます。 :
sudo groupadd docker
sudo usermod -aG docker $USER
このチュートリアルの残りの部分では、上記の 2 つのコマンドを実行したことを前提としています。まだ追加していない場合は、docker
または docker-compose
で始まるすべてのコマンドに sudo
を追加します。
Seafileサーバーのインストール
この部分は、この前の部分よりもはるかに簡単です。必要なのは、ファイルにテキストを入力し、いくつかのコマンドを実行することだけです。
ターミナルを開きます。次に、Seafile サーバーのコンテンツを保存するディレクトリを作成し、そのディレクトリを入力します。
mkdir ~/seafile-server && cd ~/seafile-server
作成したディレクトリに移動し、次のコマンドを実行します。
nano docker-compose.yml
次に、表示されたウィンドウに以下のテキストを入力します。
version: '2.0'
services:
db:
image: mariadb
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=password
- MYSQL_LOG_CONSOLE=true
volumes:
- ./data/mariadb:/var/lib/mysql
networks:
- seafile-net
memcached:
image: memcached
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc
container_name: seafile
ports:
- "8080:80"
volumes:
- ./data/app:/shared
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=password
- TIME_ZONE=Etc/UTC
- [email
- SEAFILE_ADMIN_PASSWORD=password
- SEAFILE_SERVER_LETSENCRYPT=false
- SEAFILE_SERVER_HOSTNAME=docs.seafile.com
depends_on:
- db
- memcached
networks:
- seafile-net
networks:
seafile-net:
ファイルを保存する前に、いくつかの点を変更する必要があります。
MYSQL_ROOT_PASSWORD: より強力なパスワードに変更します。これを覚えておく必要はありませんので、簡単なものを選択しないでください。作成にサポートが必要な場合は、パスワード ジェネレーターを使用してください。長さは 20 文字とし、特殊文字 (すべての !@#$%^&* 記号) は避けることをお勧めします。
DB_ROOT_PASSWD: MYSQL_ROOT_PASSWORD に設定した値に変更します。
SEAFILE_ADMIN_EMAIL: 管理者アカウントのメール アドレスを設定します。
SEAFILE_ADMIN_PASSWORD: 管理者アカウントのパスワードを設定します。これを MYSQL_ROOT_PASSWORD や DB_ROOT_PASSWD と同じにしないでください。
SEAFILE_SERVER_HOSTNAME: NGINX 構成で設定したアドレスに設定します。
それが完了したら、docker-compose
を使用して全体を起動できます。
docker-compose up -d
Seafile が実行する必要があるいくつかのコンテナをプルダウンする必要があるため、インターネット接続によっては 1 ~ 2 分かかる場合があります。
完了したら、さらに数分待ってください。次のコマンドを実行してステータスを確認することもできます。
docker logs seafile
完了すると、次の出力が表示されます。
次に、SEAFILE_SERVER_HOSTNAME に設定したアドレスをブラウザに入力するだけで、ログイン画面が表示されます。
さあ、行きましょう!これですべてが完全に機能し、クライアントで使用できるようになりました。
Seafile クライアントのインストール
モバイル版 Seafile は、Google Play、F-Droid、および iOS App Store で入手できます。 Seafile には、Linux、Windows、Mac 用のデスクトップ クライアントもあります。こちらから入手できます。
Seafile は、seafile-gui
パッケージを介して Ubuntu システムですぐに利用できます。
sudo apt install seafile-gui
Seafile は、seafile-client
パッケージを介して Arch ユーザー向けの AUR にも含まれています。
クローズアップ
クライアントと彼らが提供するものすべてを自由に探索してください。 Seafile クライアントの機能については、今後の記事で詳しく説明します (お楽しみに 😃)。
何かがうまく動作しない場合、または一般的な質問がある場合は、お気軽に以下のコメント欄に残してください。可能な限りお答えするよう努めます。