自分でFredBoatをホストする

免責事項:このガイドはコミュニティによる取り組みであり、常に変更される可能性があります。
このガイドをよく読んで問題が見つかった場合は、FredBoat Hangoutサーバーの#selfhostersチャンネルを確認してください。
コミュニティの誰かが助けてくれるかもしれません。 いつものようにプルリクエストはここで歓迎します。
このガイドを最新の状態に保つために最善の努力を払っていますが、具体的な保証はありません。


これは、独自のFredBoatインスタンスをホストしたいユーザーのためのチュートリアルです。
これはFredBoatサービスを使用するための必須条件ではないことにご注意ください。
これは、使用するのが簡単なFredBoatを提供しています。

このチュートリアルは、上級ユーザー向けです。 これを実行する方法を理解できない場合は、一般のFredBoatを使用してください。

セルフホスティングという言葉の最初の部分が意味するように、これはすべてあなた自身のことに関することです。
あなたが物事に触れるのが好きで、自分の好きな検索エンジンを使用して自分で実行する問題の95%を解決できる場合は、
このガイドは間違いなくあなたのためのものです。
FredBoatハングアウトの#selfhostersチャンネルに参加して、最後のトリッキーな5%の質問をお待ちしています。

それを外して、すぐに潜水しましょう! (?)

一般的な注意事項

FredBoatはx86_64 / AMD64 CPUで動作させることが好ましいでしょう。
Raspberry PiのようなARM CPUでFredBoatを実行しようとすると、奇妙なことが起こります。
これが何を意味するかわからない場合は、おそらくそれを正しくやっており、心配する必要はありません。

FredBoatを実行するには、PostgreSQLデータベースが必要です。
これを達成する最も簡単な方法は、このチュートリアルのDockerパートを使用することです。

任意のファイルを編集するときは、(Sublimeのような)適切なテキストエディタを使用し、
YAMLファイルのルールを覚えておいてください。タブは使用しない、常にスペース、インデントは重要です。

DockerとDocker Composerを使用してセルフホストが作成する (強くお勧めします)

この方法はなぜFredBoatの自己ホストに推奨されますか?

  • Dockerは、Windows、Mac OS、Linuxディストリビューション、
    さらには予備のRaspberry Piなど、ほとんどすべてのアーキテクチャとプラットフォームで同じように動作します。
  • JavaサーバーやGitやGradleなどのビルドツールをインストールする必要はありません。
    CIサーバーがjarファイルを作成し、公式のDocker Hubに公式のFredBoat Docker Imageを公開しているため、
    あいまいなコマンドをコピーしてjarファイルを吐出させる必要はありません。
  • FredBoatは長年にわたって成長してきました。昔は1つのjarファイルでBotを実行することが可能でしたが、
    FredBoatはバックエンドデータベース(PostgreSQLなど)を必要とし、
    Botの多くの部分はバックエンドなどの他のモジュールに分かれています。
    時間の経過とともにFredBoatの構造変化は、この大きさのBotにとって重要な役割を果たします。
    Docker (Docker Composeを使用) なら、このプロセスをかなり簡単にします。
    シンタックスや他の小さな部分がさまざまな形でボットに影響を与える可能性があるため、
    指示を読むことはこれまで以上に重要であることに注意することが重要です。
  • 上記のとおり、FredBoatは、メイン設定のための設定ファイルfredboat.yamlと、
    バックエンドデータベースを設定するためのquarterdeck.yamlを使用するようになりました。
    プロジェクトを構築し、すべての状態を維持して接続することが難しい Docker / Docker Composeは、
    プロジェクトの設定を管理するdocker-compose.ymlファイルを設定し、
    オプションの自動更新とウォッチドッグを開始し、適切なファイルがCIから直接取得されるように設定することでワンクリック設定を可能にします。
    さらに、Docker / Docker Composeを使用する場合、
    FredBoatにDocker設定を探すためのデフォルト値が設定されているため、必要な設定が少なくなります。
    これが強くおすすめされる理由です。これはFredBoatにとってよりシンプルで優れたソリューションです。
  • FredBoatは常に進化しています。 多くの部分にモジュール式のプロジェクトがあります。
    Dockerを使用することで、将来の変更を壊すことになるときに、あなたがずっと良くなっていることを保証することができます。
    どんなソルフホスターでも、それに時々遭遇すると思っていなければなりません。
  • ウォッチタワーと呼ばれる追加オプションの第三者のDocker Imageを使用して、自動更新を簡単に設定できます。
  • FredBoatをホストするマシンが再起動/起動すると、すべてのコンテナーが自動的に開始されます。

要件

  1. Docker Community Edition
  2. Docker Compose
  3. 次のファイルを含むフォルダ:
    • docker-compose.yml
    • fredboat.yaml (編集後に fredboat.example.yaml の名前を変更する)
    • quarterdeck.yaml (編集後に quarterdeck.example.yaml の名前を変更する)

CIサーバーからファイルを入手できます。

次のようになります。

または、コマンドラインで次のように入力します。

これらのファイルは、FredBoatを実行するために必要なすべてのオプションといくつかの高度なオプションを説明し、
それに従って適切に記入する必要があるので、上から順に慎重に各ファイルを注意深く読むことが重要です。

  • docker-compose.ymlは、データベースのWindowsプラットフォーム固有の設定、FredBoatビルドの設定方法、
    自動更新を有効にする方法、適切なバックエンドを取得するための設定について説明しています。
  • fredboat.yamlファイルには、FredBoatのマスターセットアップが格納されており、
    オプションであるトークンとコードとパスワードが必要であることがわかります。
    バックエンドデータベース接続、ロギングオプション、およびさまざまな重要なセットアップ基準を設定するための設定を示しています。
    この1つのファイルは、古いcredentials.yamlファイルとconfig.yamlファイルを置き換えます。
  • quarterdeck.yamlファイルには、バックエンド (Quarterdeck) データベースの構成オプションが格納されています。
    ここでの基本認証情報は、fredboat.yamlで使用され、一致する必要があります。

FredBatを起動する前に、fredboat.example.yamlquarterdeck.example.yamlの名前をそれぞれfredboat.yamlquarterdeck.yamlに変更してください。

それらのものを一緒に持っていますか?
ここをクリックして設定ファイルと資格情報ファイルを設定し、次にdocker-composeでFredBoatを実行する方法の手順に進みます。

docker-composeでFredBoatを実行する

Docker設定に応じて、これらのコマンドをsudoで実行する必要があるかもしれません。

ファイルを埋め込んだ後、ファイルを配置したディレクトリに移動します。

cd /path/to/my/Download/folder/containing/FredBoat

そしてすべてを開始します:

docker-compose up -d

注意: 最初の起動時には、データベースコンテナのセットアップに余分な時間を要します。
マシンの仕様や最新の生贄がDockerの神を癒したかどうかによって、すぐに準備ができない場合があります。
FredBoatコンテナが数回再起動したり終了したりします。 その場合、上記のコマンドを数回追加して実行します

マシン上で稼動しているDocker コンテナはこれで見ることができます:

docker ps

停止したコンテナも表示されます:

docker ps -a

あなたは何が間違っているかどうかを確認するためにそれらにアクセスできるようFredBoatは、logsと呼ばれるフォルダにそのログファイルを配置します。

すべてを止めるには、FredBoatファイルを置いたディレクトリの中からこれを行い、以下のdocker-composeコマンドを実行してください:

docker-compose stop

おめでとう! あなたのFredBoatは今稼動しているはずです。
Botをまだあなたのギルドに招待していない場合は、このチュートリアルをご覧ください。

構成と資格情報

fredboat.yamlとquarterdeck.yamlのサンプルは、CIサーバー上にあります。

あなたはあなたの好みに応じて両方のファイルを読んで編集する必要があります。 新しい値が追加され、古い値が置き換えられるか、中止されることがあります。 これらのファイルの更新について定期的に確認してください。

FredBoatを実行するには、fredboat.yamlファイルにDiscordのボットトークンとYoutube APIキーを入力する必要があります。
fredboat.yamlファイルのOptional APIの下に対応する資格情報を入力することで、Spotifyなどの機能を有効にすることができます。
さらに、バックエンドクレデンシャルを設定するための手順に沿って、quarterdeck.yamlのものと、
ボットのセントラルファイルであるfredboat.yamlの対応するフィールドを一致させることが重要です。

手動インストール

FredBoatはGradleを介して簡単にコンパイル可能であり、
生成されたjarファイル(FredBoat.jar、Quarterdeck.jarなど)は手動で構築することができます。

最新のコンパイル済QuarterdeckおよびFredBoatへのリンクは、CIサーバーの下に含まれています。

この方法は、ソースを編集する場合や、自分が何をしているのかを知っている上級ユーザーでない限り、お勧めできません。

まず、次のことを確認してください:

  1. Java 10 JDK: Oracle or OpenJDK
  2. Git
  3. JDAをあなたのPATHに追加されている
    • プロジェクトのリポジトリをクローン:
      git clone https://github.com/Frederikam/FredBoat.git
      cd FredBoat
    • 現在の作業ブランチであるdevブランチをチェックアウト:
      git checkout dev

FredBoatのコードを変更したい場合は、これを実行する場所と時間です。変更を加えた後、ビルドを再度実行して、変更を含む新しいjarファイルをコンパイルする必要があることを覚えておいてください。

GitHubからダウンロードしたFredBoatフォルダの中から、Gradleを使ってFredBoatをコンパイルできるようになりました:

./gradlew build

Windowsなら:

gradlew build

コンパイルされたjarファイルは、FredBoat/FredBoat/build/libsにあり、FredBoat.jarと呼ばれます。
同様のプロセスがQuarterDeck Backendに適用されますが、BackendのREADMEに記載されているように、そこにDockerが必要です。

CI Server

Dockerのインストールに従っているなら (あなたがしなければならない!)、
FredBoat.jarとQuarterDeck.jarファイルは自動的に処理されます。
Dockerビルドでは、次の2つの手動ダウンロードは必要ありません。

Latest Development Build
Latest QuarterDeck Backend

ヘッドレスマシンを使用している場合は、wgetを使用してCIサーバーからファイルをダウンロードできます。

Dev (links for docker-compose.yml, fredboat.example.yaml, and quarterdeck.example.yaml) –

wget https://ci.fredboat.com/guestAuth/repository/download/FredBoat_Build/.lastSuccessful/docker-compose.yml?branch=refs/heads/dev -O docker-compose.yml

wget https://ci.fredboat.com/guestAuth/repository/download/FredBoat_Build/.lastSuccessful/fredboat.example.yaml?branch=refs/heads/dev -O fredboat.example.yaml

wget https://ci.fredboat.com/guestAuth/repository/download/QuarterDeck_Build/.lastSuccessful/quarterdeck.example.yaml?branch=refs/heads/dev -O quarterdeck.example.yaml

Botの管理

自己ホストとして、あなたと設定されたボット管理者は、追加の管理コマンドにアクセスできます。

;;commands admin