
RSSを使い始めておよそ2週間が経過。
完全にハマっているので、更に環境を改善することにしました。
課題
現在、RSSリーダーとしてInoReaderを使っています。
手軽に使えるRSSリーダーの中では一番便利だなと感じている一方で、以下のような課題がありました。
フィルター機能は有料プラン限定
InoReaderの無料プランでは、フィルター設定ができません。特定のキーワードを含む記事を非表示にしたり、特定のキーワードを含む記事だけを表示したりすることができないのです。
これはRSSを使い始めた理由の根幹に関わる問題です。
インターネットは人々のアテンションを奪い合う荒地となりました。いわゆる「デッド・インターネットセオリー(Dead Internet theory)」というやつです。興味のない広告、フェイクニュース、対立煽り、AI Slop などなど、もううんざりです。
はてなブックマークのホッテントリフィードはインターネットの流行を知るのに便利ですが、あまり気分の良くならない記事も多く含まれています。はっきり言えば、Togetterをフィルターで除外したいのです。
「全文を読む」機能の中途半端さ
InoReaderには「全文を読む」機能があります。これは、記事の一部しか配信されないRSSフィードに対して、元記事の全文を取得して表示する機能です。
これは当初かなり便利に感じていたものの、完璧ではありませんでした。
配信元によってはこの機能がうまく働かず、結局元記事を開く必要があったり。その場合、
- フィードを見る
- if 全文が読めた:
- return
- 「全文を読む」を試す
- if 全文が読めた:
- return
- 元記事を開く
- return
という手順を踏む必要があります。ステップ数が多いし、条件分岐があるのもよくありません。
Zen Browserのピン留めされたタブからなら、外のドメインのURLを開く時に自動でPeepで開いてくれるので、「全文を読む」を使わずに
- フィードを見る
- if 全文が読めた:
- return
- 元記事を開く
- return
とするほうが、ステップ数が少ないしシンプルです。この場合、「全文を読む」は不要になります。
しかしいずれにせよ、元記事を開くと他のコンテンツへの誘導リンクが目に入り、やはり当初の目的を達成できません。
「全文を読む」にはもっと完璧に動作してもらう必要がありました。
結局企業のサービスに依存している
アンチ資本主義は貫きたい。(私は社会主義/共産主義者ではありません。念の為。)
FreshRSS を使おう
こうした課題を解決するために、FreshRSSを使うことにしました。
デモ版はこちら。
FreshRSSはオープンソースのRSSリーダーで、自分でサーバーにインストールして使う必要があります。自分でホスティングするので、フィルター機能は自由に使えるし、「全文を読む」機能もより詳細にカスタマイズして改善することができそうです。
ただし、サーバーを自分で管理する必要があるので、時間的・金銭的な運用コストがかかります。幸い、FreshRSSはDockerイメージが提供されているので、セットアップは超簡単に済みます。また、FreshRSSはかなり軽量なので、Google Cloud Compute Engine の無料枠で十分に動作しそうです。
ちなみにGemini先生にはOracle CloudのVM.Standard.A1.Flexを利用することを勧められましたが、大阪リージョンでも全然空きが無く、試すことができませんでした。
Out of capacity for shape VM.Standard.A1.Flex in availability domain AD-1. Create the instance in a different availability domain or try again later. If you specified a fault domain, try creating the instance without specifying a fault domain, otherwise try creating the instance in a different availability domain. If that doesn’t work, please try again later.
ではなぜCompute Engineなのか。VMはこれまで色んなところで借りてきたけど、実はまだGoogle Cloudでは借りたことが無かったからです。これを機に試してみることにしました。
無料枠のCompute Engineインスタンスを作成
この記事を参考にしました。
補足情報
記事内にもある通り、公式の情報に目を通すこと。無料枠の条件は今後変化するかもしれない。
OS は Ubuntu 24.04 LTS Minimal (x86/64, amd64)
を指定した。最新の長期サポート版で、CPUアーキテクチャも合っている。
ディスクの設定はデフォルトで「バランス永続ディスク」となっているが、これは無料枠の対象外なので、「標準永続ディスク」に変更する必要がある。
たぶんこれで無料枠の条件を満たせているはず。
VMの環境構築
叩いたコマンド履歴をGeminiに要約させたものを以下に置いておきます。正しい保証はありませんが、参考になれば。
GCP VMでFreshRSSをセットアップするための全コマンド手順
【前提条件】
- GCP Compute EngineでVMインスタンスが作成済み(OS: Ubuntu 24.04 LTS Minimalなど)。
- VMにSSHで接続している状態。
フェーズ1:サーバーの初期設定
# === 1. パッケージリストを更新し、システムを最新の状態にする ===sudo apt updatesudo apt upgrade -y
# === 2. 必要なツールをインストールする ===# テキストエディタ「nano」をインストールsudo apt install nano -y# バージョン管理システム「git」をインストール(拡張機能ダウンロードで使用)sudo apt install git -y
フェーズ2:Dockerのインストール
# === 1. Dockerリポジトリの設定に必要なパッケージをインストール ===sudo apt install -y ca-certificates curl gnupg
# === 2. Dockerの公式GPGキーを追加 ===sudo install -m 0755 -d /etc/apt/keyringscurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgsudo chmod a+r /etc/apt/keyrings/docker.gpg
# === 3. Dockerのリポジトリを設定ファイルに書き込む ===echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# === 4. パッケージリストを再度更新 ===sudo apt update
# === 5. Docker Engine本体とComposeプラグインをインストール ===sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# === 6. Dockerが正常にインストールされたかテスト実行 ===# "Hello from Docker!" と表示されれば成功sudo docker run hello-world
フェーズ3:FreshRSSのセットアップ
# === 1. FreshRSS用の作業ディレクトリを作成し、そこに移動 ===mkdir ~/freshrsscd ~/freshrss
# === 2. 拡張機能を入れておくためのディレクトリも作成 ===mkdir ./extensions
# === 3. docker-compose.yml ファイルを作成・編集 ===nano docker-compose.yml
↓ nano
エディタが開いたら、以下の内容をすべてコピーして貼り付けてください。
version: '3'services: freshrss: image: freshrss/freshrss container_name: freshrss restart: unless-stopped ports: - "8080:80" volumes: - ./data:/var/www/FreshRSS/data - ./extensions:/var/www/FreshRSS/extensions environment: 'CRON_MIN' : '*/30'
↑ 貼り付けが終わったら、Ctrl + X
→ Y
→ Enter
で保存して終了します。
# === 4. Dockerコンテナを起動 ===# これによりFreshRSSが起動し、ブラウザから初期設定が可能になりますsudo docker compose up -d
(この時点で、ブラウザから http://<サーバーのIPアドレス>:8080
にアクセスし、FreshRSSの初期設定(ユーザー作成など)を完了させてください)
フェーズ4:拡張機能のセットアップ
FreshRSSの「拡張機能」タブから、気になる拡張機能を見つけてインストールします。
# === 1. 作業のため、一度FreshRSSコンテナを停止 ===# ディレクトリが ~/freshrss であることを確認cd ~/freshrsssudo docker compose stop
# extensionsフォルダに移動cd ./extensions
# === 2. サードパーティ製拡張機能をダウンロード ===# 例: freshrss-af-readabilitygit clone https://github.com/Niehztog/freshrss-af-readability.git
# === 3. FreshRSSコンテナを再度起動して、すべての変更を適用 ===cd ~/freshrsssudo docker compose up -d
(この後、ブラウザでFreshRSSの拡張機能ページを再読み込みし、使いたい拡張機能のトグルスイッチをオンにしてください)
独自ドメインの設定
次に、GCPサーバーのIPアドレスを、Cloudflareを使って独自ドメインのサブドメイン(例: rss.your-domain.com
)でアクセスできるようにしたい。
これもGemini先生の手順書に従ったら上手く行った。
Cloudflareで独自ドメインをFreshRSSに設定する手順書
【目的】
サーバーのhttp://<IPアドレス>:8080
というURLを、覚えやすくて安全なhttps://rss.your-domain.com
というURLでアクセスできるようにする。
【前提条件】
- Cloudflareに独自ドメイン(例:
your-domain.com
)が登録済みであること。 - FreshRSSが動作しているGCPサーバーの外部IPアドレスが分かっていること。
ステップ1:DNSレコードの追加(ドメインとIPアドレスの紐付け)
まず、作成したいサブドメインが、あなたのGCPサーバーを指すように設定します。
- Cloudflareにログインし、対象のドメインを選択します。
- 左側のメニューから「DNS」をクリックします。
- 「レコードを追加」ボタンを押します。
- 以下の内容でレコードを作成します。
- タイプ:
A
- 名前:
rss
(またはfreshrss
など、使いたいサブドメイン名を入力) - IPv4アドレス: あなたのGCPサーバーの外部IPアドレスを入力します。
- プロキシステータス: **「プロキシ済み」(オレンジ色の雲のアイコン)**になっていることを必ず確認します。これが最も重要なポイントです。
- タイプ:
- 「保存」ボタンをクリックします。
ステップ2:SSL/TLSの設定(通信の暗号化)
次に、ユーザーとCloudflare間の通信を安全なHTTPSに設定します。
-
左側のメニューから「SSL/TLS」をクリックし、「概要」タブを開きます。
-
SSL/TLS暗号化モードを「フレキシブル」に設定します。
- (これにより、サーバー側でSSL証明書を用意する必要がなくなります)
-
次に、「エッジ証明書」タブに切り替えます。
-
「常にHTTPSを使用」という項目のスイッチをオンにします。
- (これにより、
http://
でアクセスしても自動的にhttps://
に転送されます)
- (これにより、
ステップ3:Origin Rulesの設定(ポート番号 :8080
を隠す)
この設定で、URLからポート番号を消すことができます。
- 左側のメニューから「ルール」をクリックし、「Origin Rules」タブを選択します。
- 「オリジンルールを作成」ボタンを押します。
- 以下の内容でルールを作成します。
- ルール名:
FreshRSS Port Forward
(など、分かりやすい名前を入力) - 条件 (「次の場合に実行…」):
- フィールド:
ホスト名
- 演算子:
次と等しい
- 値:
rss.ilapaj.com
(ステップ1で設定したサブドメイン名を入力)
- フィールド:
- アクション (「その後…」):
- 「宛先ポートを上書き」という項目を探します。
- 「ポート」を選択し、右側の入力欄に
8080
と入力します。
- ルール名:
- 「デプロイ」ボタンをクリックしてルールを保存・有効化します。
最終確認
以上で、すべての設定は完了です。 DNSの変更がインターネット全体に反映されるまで、数分から10分程度かかることがあります。
少し時間を置いてから、Webブラウザで以下のURLにアクセスしてみてください。
https://rss.your-domain.com
(※rss.your-domain.com
の部分は、あなたが設定したサブドメイン名に置き換えてください)
無事にFreshRSSのログイン画面が表示され、ブラウザのアドレスバーに鍵マークがついていれば成功です!
FreshRSSの設定
あとはFreshRSS上でいろいろと設定し、こんな感じにできました。
「全文を読む」は拡張機能の「Readability」をインストールすることで実現したわけですが、これがかなり優秀で、ほとんどのフィードで元記事の全文を取得できるようになりました。しかも、ボタンを押さずに自動で全文を表示してくれるのがすごい。
先述のステップはもはや、
- フィードを見る
- return
で済むようになりました。
フィルター機能も自由に使えるし、InoReaderよりも快適です。
VMの性能やネットワーク速度に関する懸念はありましたが、実際に使ってみると全然問題ありません。これについてはまだインスタンスを立ててから24時間も経っていないのでなんともって感じですが、今のところ無料枠の範囲内で十分に動作しています。
正直笑っちゃうくらい便利で、こんな便利なものをこれまで使ってこなかったなんて!という気持ちです。今後無料枠では足らなくなってきたら、毎月1000円くらいであれば全然払っても良い。
もしRSSリーダーを探している人がいたら、ぜひFreshRSSを試してみてください。自分でホスティングするのは少し手間ですが、その価値は十分にあります。