MonitoRSS のセルフホスト
What
RSS/Atom feed の新着を Discord に流す bot をセルフホストする Why
公式にホストされてるやつは所属サーバー数が多いせいか Read Message 権限がないっぽい
サイト数上限がきつい; 課金してやっと15に増えるくらい
How to deploy (新)
旧との違い
Intel Celeron など一部の AVX に対応してない CPU では MonitoRSS で使っている MongoDB が AVX 必須で動かない
puhitaku/MonitoRSS-Clone として synzen/MonitoRSS-Clone を fork し AVX 依存をなくすなど改良
主な改良点1: MongoDB 互換の FerretDB に置き換えた FerretDB は Go で書かれている
Go は標準でほぼ拡張命令のない GOAMD64=v1 でビルドするため AVX なしでも動く
主な改良点2: ビルドされたコンテナを落として使うように変更した How to deploy (旧)
公式リポジトリを見ると For users who want to deploy MonitoRSS for personal use, see https://github.com/synzen/MonitoRSS-Clone. とあるのでこちらを clone
docker-compose.yml の DRSS_BOT_TOKEN に Bot の token を入れる
docker compose up するといい感じに全部立ち上がる
招待リンクを作ったらブラウザのアドレスバーにペーストして招待する
権限
https://scrapbox.io/files/642262f942a4ac001d363f53.png
How to configure
全部 rss.* というコマンドで設定できる
サイト追加: rss.add https://example.com/feed
新着時に投稿するテキストの変更: rss.text のあと番号で feed を選択し本文を指定
サイト名の placeholder がない代わりに、feed の meta から直接取り出す {raw:meta_atom-title_#} を使用
Atom ではなく RSS なら {raw:meta_rss-title_#} になる
Slack の RSS ウォッチャーに準じるならこんな感じかな
code: atom.txt
**{raw:meta_atom-title_#}**
{title}
{link}
{subscriptions}
code: rss.txt
**{raw:meta_rss-title_#}**
{title}
{link}
{subscriptions}
ある feed における設定を別の feed にコピーする: rss.clone
設定を全部バックアップ and レストア: rss.backup rss.restore
コマンドで設定した内容は永続化されてるらしく compose を Ctrl-C で止めても再度起動したら戻ってきた
念の為バックアップはしたほうが良い(一般論並感)
Reference
おまけ
せっかくなのでアイコン作った
素材: FxEmojis (Firefox Emoji) - Newspaper: CC BY 4.0
本作品を FxEmojis - Newspaper の派生作品として CC BY 4.0 でライセンスする。
https://scrapbox.io/files/64226bc2235a2c001c6f82b2.png