CSUBOT は、オープンソースのスーパー管理者ボットです。

この記事では、CSUBOT を自分でデプロイする方法について説明します。

まず、このドキュメントをよくお読みください: CSUBOT ロボットの使用説明書

推奨: 異なるウェブサイトにアクセスする際のローカルマシンのパブリック IP を確認する。現在のネットワーク環境の確認に使用します。

前提条件

CSUBOT を自分でデプロイするには、少なくとも次の条件を満たす必要があります。

  • ドメインを所有していること。(少なくとも1つのセカンドレベルドメインをバックエンド用として所有していること。実際にはフロントエンドとバックエンドで合計2つのセカンドレベルドメインが必要ですが、通常、フロントエンドドメインはデプロイされたプラットフォームによって提供されます。)
  • サーバーを所有していること。または、バックエンドサービスをデプロイできるプラットフォームにデプロイすること。無料のバックエンドサービスをデプロイできるプラットフォームをご存知の場合は、ご遠慮なくここをクリックして、作者にコメントをお知らせください
  • 制限されていない Telegram アカウントを所有していること。Telegram ボットを作成し、ボットのトークンを取得するために使用します。
  • Cloudflare Turnstile 認証コードを有効にするために、制限されていない Cloudflare アカウントを所有していること。アカウント登録: https://dash.cloudflare.com/

操作手順

  1. Cloudflare Turnstile を有効にする
  2. フロントエンドをデプロイする
  3. Telegram ボットを作成する
  4. バックエンドを設定する

Cloudflare Turnstile を有効にする

このリンクをクリックして、Cloudflare Turnstile 設定パネルを開きます: Turnstile コンポーネント設定

[ウィジェットを追加] をクリックして、Turnstile 部品を追加します。

[ホスト名を追加] をクリックして、フロントエンドのドメインを追加します。フロントエンドホスティングプラットフォームが提供するドメインを使用する場合は、ここには自由に記述できます。

[作成] ボタンをクリックすると、サイトキーとシークレットキーが表示されます。

フロントエンドをデプロイする

フロントエンドホスティングプラットフォームへのデプロイを例にとります。

  1. https://github.com/cjh0613/csubot-vue を開き、このリポジトリをフォークします
  2. Cloudflare Pages、Vercel、Netlify などのデプロイするプラットフォームを選択します。
  3. Github リポジトリからインポートすることを選択し、ステップ1でフォークしたリポジトリを選択します。

作業パスはプロジェクトのルートディレクトリとして設定され、コンパイルコマンドは次のとおりです。

npm install && npm run build

出力ディレクトリは次のとおりです。

dist/

環境変数を設定します。

VITE_ENDPOINT=https://xxxx.com <バックエンド URL、https が必要>

VITE_SITEKEY=0x4AAAAAABBBBBBBBBBB <Cloudflare turnstile のサイトキー (上の方にある)>
  1. デプロイを開始します。完了すると、プラットフォームが提供するドメインが表示されます。独自のドメインをバインドすることもできます。DNS 設定と証明書の生成を待つ必要があります。

Telegram ボットを作成する

https://t.me/BotFather にダイレクトメッセージを送り、/newbot を送信します。ボットの指示に従って新しいボットを作成します。作成が完了すると、トークンが届きます。

バックエンドを設定する

バイナリ実行ファイルを直接実行するか、自分でコンパイルするかを選択できます。

環境変数リファレンス

TGWD_TOKEN=<Telegram ボットのトークン、@botfather から取得>
TGWD_FRONTEND_DOMAIN=<フロントエンドドメイン、https は不要>
TGWD_SECRET=<適当な値を入力>
TGWD_PORT=8000
TGWD_CFTS_API_KEY=<Cloudflare turnstile のシークレットキー(サイトキーの下にある)>

バイナリ実行ファイルを使用する

linux amd64 オペレーティングシステムを例にとります。

まず、新しいフォルダを作成します。

mkdir csubot && cd csubot

バイナリ実行ファイルをダウンロードします。ダウンロードリンクは、https://github.com/cjh0613/csubot/releases を開いて最新のリンクを取得してください。プラットフォームに適したファイルを見つけるには、Show all assets をクリックする必要がある場合があります。

wget https://github.com/cjh0613/csubot/releases/download/vxxx/csubot-linux-amd64.zip

zip 形式の圧縮ファイルであるため、解凍します。

unzip csubot-linux-amd64.zip

このコマンドを実行できない場合は、unzip パッケージが正常にインストールされていることを確認してください。

csubot が存在するディレクトリに移動します。

次のコマンドを使用すると、非表示の .env.example ファイルを表示できます。

ls -la

テキストエディタ(nano、vim など)を使用して、新しいファイル .env を作成し、サンプルファイル .env.example を参照して設定します。

実行してみます。

export $(grep -v '^#' .env | xargs) && ./csubot

自分でコンパイルする

プロジェクトのルートディレクトリで次のコマンドを実行します。

go build -o csubot

実行してみます。

export $(grep -v '^#' .env | xargs) && ./csubot

HTTPS

バックエンドは https のサポートを直接提供していません。http でのみアクセスできます。

Apache、Nginx、Microsoft Internet Information Services (IIS) などのサービスを使用して HTTPS を設定できます。

Cloudflare CDN を使用している場合は、SSL/TLS 暗号化で暗号化モードを Flexible に設定することもできます。これにより、ユーザーが Cloudflare サーバーにアクセスする際は、Cloudflare が自動的に設定した https プロトコルが使用され、Cloudflare がバックエンドサービスを設定したサーバーにアクセスする際は、http プロトコルが使用されます。

systemd サービスとして実行する

sudo mkdir /usr/local/bin/csubot/
sudo cp .env /usr/local/bin/csubot/.env
sudo cp csubot /usr/local/bin/csubot/csubot
sudo cp -r ./locales /usr/local/bin/csubot/locales

サービスユーザーを作成します。

sudo useradd --system --no-create-home --shell /sbin/nologin csubotuser

アクセス許可を設定します。

sudo chown csubotuser:csubotuser /usr/local/bin/csubot/csubot
sudo setfacl -R -m u:csubotuser:r /usr/local/bin/csubot
sudo chmod +x /usr/local/bin/csubot/csubot

/etc/systemd/system/csubot.service を作成して編集し、次のように記述します。

[Unit]
Description=CSUBOT Backend
After=network-online.target
Wants=network-online.target

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=csubotuser
Group=csubotuser
ExecStart=/usr/local/bin/csubot/csubot
WorkingDirectory=/usr/local/bin/csubot
RestartSec=10s
Restart=always
# Restart=on-failure

# 環境変数ファイルをロードします
EnvironmentFile=/usr/local/bin/csubot/.env
# サービスを開始します
sudo systemctl start csubot.service

# 実行ステータスを表示します
sudo systemctl status csubot.service

# 起動時に開始するように設定します
sudo systemctl enable csubot.service

このウェブページの他のバージョン

この記事には複数の言語バージョンがあります。

コメントを投稿する場合は、次のウェブページにアクセスしてください。

ZH EN ZH-TW JA

これらのウェブページは閲覧のみをサポートしており、コメントやメッセージを投稿することはできませんが、より多くの言語オプションを提供し、読み込み時間が短縮されています。

ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO