DiscordでRSS通知を行う「MonitoRSS」を自鯖で動かして情報収集する。 (Pixiv Fanbox)
Content
絶対Fanboxに書くような内容じゃないけど日本語の記事見つからなかったので備忘録も交えて書きます。
使ってるFW機器やOS/ソフトウェアの脆弱性情報については色んな方法で情報収集していますが、その一環で「各ベンダWebサイトのRSSを収集してみるか」ということで調べたら「MonitoRSS」というボットサービスを見つけました。公式の用意しているサーバは無料では5件までの登録だったので、自鯖で起動してみることにしました。
環境
HPE ProLiant DL360 Gen9 VMware ESXi 7.0
└Debian 11.5(8vCPUs/32GB RAM/64GB SSD)
1.適当なサーバを立ち上げる。
ESXiにてDebianディストリビューションの適当なサーバを立ち上げます。
適当なホスティングサービスを利用してもいいですが、記事では別のFW機器にて通信制御を行っており本体のFWは切ってるのでそこら編の設定は各自きちんと行うように。
ディストロはRedHat系でもいいですが、podmanでcomposeを動かすには色々調整しないといけない上、DockerfileのRUNでコケまくって「これディストロが悪いのかバージョン違いとかが悪いのかわかんねぇから切り分けすッペ!」とDebianで試したら一発で立ち上げれたのでDebianでやります。
↓全て終わったあとのリソース状況、GNOMEはインストールせず最小構成、ストレージはシンプロビジョニング
2.Dockerのインストール
以下ドキュメントを素にDockerと関連コンポーネントを入れていきます。
色々入れて
apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
GPGキーの追加、リポ登録
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
Dockerインストール
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
3.MonitoRSSのClone取ってくる
以下githubからwgetとかで取ってくる。
unzipもないのでインストールして解凍
解凍後移動してComposeファイルの編集に移る・・・前にDiscordのBOTを作成します。
4.Discordのアプリケーション・BOTを作成する
アプリケーションを作成して
作ったらBotを作成します。ロボットはクールなので一度作ったら壊せないらしいですが容赦なく作ります。 (|)<光・・光を使おう
出来たらReset Tokenを押下し、トークンを発行してコピーしておきます。
次にQAuth2でClientIDをコピー、シークレットも発行してコピー
リダイレクトを追加して「http://[MonitoRSSのWebを動かすサーバのIP]:ポート/authorize」を入力します。
5.Composeファイルの編集・実行
docker-compose.ymlを編集して
vi docker-compose.yml
DRSS_BOT_TOKEN=Botのトークン
DRSSWEB_BOT_TOKEN=上に同じ
DRSSWEB_BOT_REDIRECTURI=QAuthにて設定した「http://[MonitoRSSのWebを動かすサーバのIP]:ポート/authorize」
DRSSWEB_BOT_CLIENTID=QAuth2のClientID
DRSSWEB_BOT_CLIENTSECRET=QAuth2のClientSecret
にします。
Dockerサービスが動いていることを確認し
systemctl status docker
ファイアウォール系サービスが動いているか確認し(動いていたらポリシー追加するなりなんなり)
systemctl status firewalld
systemctl status iptables
systemctl status ufw
実行!初回は環境にもよりますが立ち上がりまで10分くらいかかりました。
docker compose up -d
動いていることを確認
6.動作確認
コンテナの起動を確認したらブラウザから「http://[サーバのIP]:8081」へ接続します。以下のようなページが開けるはず
「Invite me」でサーバへ招待して、「Control Panel」から設定を行えます。
初回の「Control Panel」接続時にDiscordアカウントの許可云々が出てきますが、このページでエラーが発生したりループしてしまう場合はQAuthのリダイレクト設定とDRSSWEB_BOT_REDIRECTURIの値が同一か、正しい値か確認してください。
Feedを設定し、更新があると自動的に特定チャネルへ投稿されます。
7.最後に
dockerはたまに使ってましたがcompose初めて使いました(今更)。複数のコンテナを一気にガッチャンコ出来るの便利で良いですね。
基本的にDebian系よりRedHat系を好んで使っているので、RedHatで上手く動かなかった原因も探りたいところ。