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 の設定を自分で見てみれば、いくつかの機能を発見できるでしょう。

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