ウェブサイト検索

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.comexample.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_PASSWORDDB_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 クライアントの機能については、今後の記事で詳しく説明します (お楽しみに 😃)。

何かがうまく動作しない場合、または一般的な質問がある場合は、お気軽に以下のコメント欄に残してください。可能な限りお答えするよう努めます。

関連記事: