Yunfi

Yunfi

tg_channel
github
email

完全な RSS ソリューション:自作の RSSHub と Miniflux

前書き#

RSS とは?#

出典 Wikipedia
RSS(英語の正式名称:RDF Site Summary または Really Simple Syndication)、日本語訳は簡易情報集約[3]、または集約コンテンツとも呼ばれ、複数のウェブサイトの更新内容を集約し、ウェブサイトの購読者に自動的に通知するための フィード フォーマット規格です。RSS を使用することで、ウェブサイトの購読者は新しいコンテンツがあるかどうかを手動で確認する必要がなく、複数のウェブサイトの更新内容を要約形式で表示することができ、重要な情報を迅速に取得し、選択的に閲覧するのに役立ちます。

簡単に言えば、さまざまなウェブサイトの更新を一つに集約して見ることです。

なぜ RSS を選ぶのか?#

複数のウェブサイトをフォローしている場合、ウェブサイトに更新があるかどうかを確認するには、一般的に各ウェブサイトを開いて確認する必要があります。

RSS はこれらの情報を集約し、一箇所で確認できるようにします。
また、一部のウェブサイトは特定の変化を監視するために RSS を提供しています。例えば、GitHub はリポジトリのコミットや新しいイシューなどの RSS フィードを提供しています。

さらに、RSSHub プロジェクトの助けを借りて、RSS を提供していないウェブサイトのために RSS を作成することができます。つまり、微博、B 站、知乎などのソーシャルメディアプラットフォームを RSS で購読できるということです!

この文章で構築する RSS システムはどのようなものですか?#

RSS を使用する際には、主に二つの問題を解決する必要があります:フィードリーダー

フィードは記事情報を含むリンクであり、一部のウェブサイトは既に RSS リンクを提供しています。例えば、私のブログの RSS アドレス ですが、RSS フィードを提供していないウェブサイトには RSSHub を使用してフィードを生成する必要があります。

リーダーについては、現在ほとんどの RSS クライアントが直接 RSS リンクを購読する機能を提供しているか、または inoreader のようなワンストップソリューションを直接使用できます(無料プランで満足できる場合や、$9.9 / 月 の Pro プランを購入できる場合)。もし高級なニーズ(正規表現によるフィルタリングなど)があり、あまりお金をかけたくない場合は、この記事で構築する miniflux のような自作ソリューションを選択できます。

インストール#

前提条件#

{%note warning modern %}
もしあなたのサーバーが中国本土にある場合、未登録の状態では 80 または 443 ポートを使用できません。つまり、第二の要件を行う必要はありません。
もしまだクラウドサーバーを購入していない場合、中国本土へのアクセス速度に特に高い要求がないなら、中国本土にあるサーバーの購入は強くお勧めしません。
{% endnote %}

自作 RSSHub#

RSSHub とは?#

RSSHub ドキュメント:

RSSHub は、オープンソースで使いやすく、拡張が容易な RSS ジェネレーターであり、あらゆる奇妙なコンテンツに対して RSS フィードを生成できます。RSSHub はオープンソースコミュニティの力を借りて急速に発展しており、現在は数百のウェブサイトの数千のコンテンツに対応しています。

クラウドサーバーを持っていない場合...#

公式のサンプルインスタンス rsshub.app を直接使用できますが、厳しいクローリング対策のルートは使えないでしょう。

また、RSSHub は多くのクラウドサービスのインストール方法を提供しています。詳細はドキュメントを参照してください。

私が特にお勧めするのは Vercel へのデプロイ です。なぜなら、Railway や Heroku は現在無料プランの体験が非常に悪いため、他のサービスにはあまり詳しくありません。

この方法の欠点は、クラウドサービスの IP が汚れている可能性があり、一部の厳しいクローリング対策のルートが使えないことです。

構築したくない場合は、私のインスタンスを直接使用できます:https://rsshub.yfi.moe

docker-compose を使用したデプロイ#

ドキュメント に従っている場合は、docker-compose.yml を一度確認し、コメントに従って修正するか、私が提供する docker-compose.yml を直接使用してください。

  1. docker と docker-compose がインストールされており、リバースプロキシツール(例えば nginx)がインストールされていることを確認します。新しく購入したサーバーの場合は、この記事を参考にできます 【Docker シリーズ】リバースプロキシの神ツール ——Nginx Proxy Manager

  2. root ユーザーに切り替え、好きなディレクトリに移動します。例えば /root/data/docker_data/rsshub など。

  3. 以下の内容を含む docker-compose.yml を編集します(これは最小限の構成です)。

    version: '3'
    
    services:
        rsshub:
            image: diygod/rsshub:chromium-bundled
            restart: always
            ports:
                - '1200:1200'
            environment:
                NODE_ENV: production
                CACHE_TYPE: redis
                REDIS_URL: 'redis://redis:6379/'
            depends_on:
                - redis
    
        redis:
            image: redis:alpine
            restart: always
            volumes:
                - redis-data:/data
    
    volumes:
        redis-data:
    
  4. Redis キャッシュを永続化するためにボリュームを作成します docker volume create redis-data

  5. 1200 ポートが占有されていないか確認します。占有されていなければ続行し、占有されている場合は上記のファイル内の最初の 1200 を占有されていないポートに変更します。

  6. docker compose up -d を実行し、ブラウザで http://あなたのサーバーip:1200 にアクセスします。以下のページが表示されれば成功です。

    rsshub_demo

  7. リバースプロキシを設定します。

Miniflux のインストール#

なぜ Miniflux を選ぶのか?#

Miniflux は、ミニマリストで意見が明確なフィードリーダーです。

軽量!軽量!軽量!

主な競合製品は Tiny Tiny RSSFreshRSS です。

製品利点欠点
Tiny Tiny RSS機能とプラグインが最も豊富リソース消費が多く、更新が遅い
FreshRSSRSS をサポートしていないウェブサイトの XPath 抽出をサポートリソース消費も少なくない
Minifluxリソース消費が少なく、機能が十分各フィードの取得間隔をカスタマイズできない

注:これは私自身の感想であり、正確であるとは限りません。
TTRSS を使用する場合は、公式のオリジナル版を使用することはお勧めしません。 🐋 Awesome TTRSS を使用してください。

docker-compose を使用して Miniflux をデプロイ#

公式ガイド:インストール手順

  1. root ユーザーに切り替え、好きなディレクトリに移動します。例えば /root/data/docker_data/miniflux など。

  2. 以下のような docker-compose.yml を新たに作成します。

    version: '3.4'
    services:
      miniflux:
        image: miniflux/miniflux:latest
        container_name: miniflux
        ports:
          - "8880:8080"
        depends_on:
          - db
        environment:
          - DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
          - POLLING_PARSING_ERROR_LIMIT=10 # 抽出失敗が何回続いたらフィードを一時的に無効にするか
          - POLLING_FREQUENCY=30 # 抽出間隔
          - RUN_MIGRATIONS=1
          - CREATE_ADMIN=1
          - ADMIN_USERNAME=yourname # 管理者アカウント名
          - ADMIN_PASSWORD=pleasechangeme # 管理者パスワード、必ず変更してください
          - BASE_URL=https://miniflux.yunfinibol.top
      db:
        image: postgres:15
        container_name: miniflux-db
        environment:
          - POSTGRES_USER=miniflux
          - POSTGRES_PASSWORD=secret
        volumes:
          - ./db:/var/lib/postgresql/data
        healthcheck:
          test: ["CMD", "pg_isready", "-U", "miniflux"]
          interval: 10s
          start_period: 30s
    

    さらなる環境変数については:設定パラメータ を参照してください。

  3. 8880 ポートが占有されていないか確認します。占有されていなければ続行し、占有されている場合は上記のファイル内の 8880 を占有されていないポートに変更します。

  4. コンテナを起動します。

    • 一般的には、直接 docker compose up -d で問題ありません。
    • もし miniflux コンテナが起動しない場合(docker ps -a で miniflux の状態が Exited になっている場合)、起動順序の問題かもしれませんので、順番に起動すれば解決します。
    docker compose up -d db
    docker compose up -d miniflux
    
  5. ブラウザで http:// あなたのサーバー ip:8880 にアクセスし、ログインページが表示されるはずです。

  6. リバースプロキシを設定します。

設定 -> 設定で言語を日本語に変更し、ダークモードを自動切替にすることができます。

使用方法#

フィードはどこから来るのか?#

  1. ウェブサイト自体が提供
  2. 一部の人が管理している RSS (例えば feedx.net は多くのニュース系 RSS を提供しています)
  3. RSSHub (ドキュメント を参照)

どこで見るのか?#

Miniflux のウェブページが簡素だと思わない場合...#

そのままウェブページで見ることができます!Miniflux のウェブ版は PWA とモバイル版をサポートしており、少し簡素ですが、体験は非常に良好です。

その他のリーダー#

Miniflux は多様な API を提供しており、サードパーティのソフトウェアで使用できます。専用の Miniflux API、一般的な Fever API、Google Reader API があります。

Windows プラットフォーム#

Fluent Reader を試してみると良いでしょう。三種類の API をサポートしており、Miniflux を直接使用することをお勧めします。

  1. Miniflux で、設定 -> API キーに移動し、デフォルトで提供されるアカウントとパスワードを使用するか、新しいものを作成します。

    image-20230513001228635

  2. Fluent Reader の設定 -> サービスを開き、Miniflux を選択します。

    image-20230513000846604
  3. エンドポイントはウェブ上の API エンドポイントで、残りを入力すれば完了です。

iOS プラットフォーム#

2020 年初頭に Inoreader の推奨価値の問題により、多くの RSS リーダーが中国地域から削除されました。優れた RSS クライアントも多くがコンテンツを提供していません。外部ストアのアカウントがない場合は、Unread または ReadKit をお勧めします。どちらも中国地域のストアでの優れた選択肢です。外部アカウントがある場合は、$4.99 の Reeder 5 を強くお勧めします。価格と機能のバランスが非常に良いです(macOS 版もあります)。外部アカウントがあり、課金が可能で、手元に余裕がある場合は、$14.99/year の Fiery Feed を直接使用してください。高価ですが、ほとんど欠点はありません。

ReadKit と Fiery Feed は、Miniflux の専用 API を直接サポートしており、設定方法は Windows の Fluent Reader と同様です。残りは Fever API または Google Reader API を使用して読むことができ、設定方法はほぼ同じです。ここでは Google Reader API を Reeder に合わせてデモします。

  1. Miniflux で、設定 -> 統合に移動し、Google Reader API を有効にする をオンにし、専用のユーザー名 / パスワードを設定して、更新をクリックして保存します。

    image-20230513003215509

  2. Reeder で、右上のプラスボタンをクリックしてアカウントを追加し、Reader を選択します。

    image
  3. サーバーに Google Reader API エンドポイント を入力し、ユーザー名 / パスワードには先ほど設定したものを使用します。

Android プラットフォーム#

あまり詳しくありませんが、ReadYou や feedme は良さそうです。

結び#

これで、完全に自分で管理できる RSS システムが構築されました。しかし、実際には RSSHub と Miniflux にはこの記事で触れていない多くの便利な機能があります。おそらく今後の記事で書くことになるでしょう。RSSHub のドキュメントや Miniflux の設定を自分で確認すれば、いくつかの機能を発見できるはずです。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。