

現代の情報社会において、私たちは毎日膨大な量のニュースやブログ記事に晒されています。しかし、主要なプラットフォームがアルゴリズムによって情報を選別する中で、ユーザーは自分が望む情報のみを得られるようになったと信じていますが、実際にはフィルターバブルと呼ばれる閉鎖的な環境に陥りやすいのが現状です。RSS(Really Simple Syndication)という標準規格は、この問題に対する解決策として長年支持されてきました。しかし、Google Reader の終了後、主要な RSS リーダーサービスも有料化や制限を強める傾向にあります。そこで注目されるのが、自分自身のサーバー上で動作する「セルフホスト型」の RSS リーダーです。
その中でも特に人気が高く、機能性、拡張性、そして軽快さを兼ね備えているのが FreshRSS です。FreshRSS は PHP で開発されており、サーバーリソースをあまり消費せずに動作します。Docker を利用すれば、ワンコマンドで環境構築が可能であり、データベースの選定も柔軟に行えます。さらに、Google Reader API に準拠しているため、iOS や Android の高機能な外部クライアントアプリとシームレスに連携することが可能です。本記事では、2026 年 4 月時点での FreshRSS の最新バージョン(1.24+)を想定し、ゼロからサーバー構築を行うための完全ガイドを解説します。
単なる導入手順だけでなく、セキュリティ強化のための OIDC 認証やリバースプロキシの構成、データベース最適化、そして競合サービスとの比較まで深く掘り下げます。情報の主体性を取り戻すための第一歩として、本記事を参考にして自分だけの情報管理拠点を作り上げてください。専門用語については初出時に簡潔な説明を付与します。
FreshRSS はフランス語で「フレッシュ RSS」と読みます。これは PHP(ハイパーテキストPreprocessor)というスクリプト言語で作られたオープンソースプロジェクトです。2010 年代半ばから開発が始まり、現在では世界中のユーザーによって支えられています。このソフトウェアの特長は、その軽量さと多機能さにあります。従来のサーバーサイドアプリケーションのように重い Apache や Nginx の設定を複雑に行う必要がなく、シンプルな Docker コンテナとして動作します。これにより、リソースが限られた環境でも安定して運用が可能です。
セルフホスト型 RSS リーダーの最大のメリットは、データの所有権を完全に自分自身で握れる点です。Feedly や Inoreader といったクラウドサービスを利用する場合、利用規約の変更や価格改定、あるいはサービスの終了によって突然アクセスできなくなるリスクがあります。また、これらのサービスではユーザーの閲覧履歴がデータとして収集され、広告ターゲットに利用される可能性があります。FreshRSS を自サーバーで稼働させることで、すべての購読リスト、既読状態、設定データが自分だけのハードウェア上に保存されます。
さらに、セルフホストであれば、独自のカスタマイズが可能です。FreshRSS には拡張機能の仕組みがあり、例えば YouTube の動画フィードや Mastodon(マストドン)の投稿を RSS フィードとして取得する機能などを追加できます。2026 年現在では、AI を活用した記事の要約機能を組み込むプラグインも登場しており、情報の効率的な処理がさらに容易になっています。このように、単なるニュースリーダーではなく、情報収集のハブとしての役割を果たすことができます。
FreshRSS を構築するために必要なサーバー環境については、クラウド VPS(仮想プライベートサーバー)を利用するか、自宅サーバーで運用するかによって選択肢が分かれます。2026 年現在では、AWS Lightsail、DigitalOcean、Linode などの安価な VPS が多く利用されています。特に Linode の「Nanodes」プランや AWS の t3.micro インスタンスは、月額数百円から数千円で提供されており、FreshRSS の稼働には十分な性能があります。
サーバーの OS(オペレーティングシステム)については、Ubuntu 24.04 LTS または Debian 12 Bookworm が推奨されます。これらは長期的サポートが保証されており、セキュリティパッチも定期的に適用されるため安定しています。また、Raspberry Pi 5 などのシングルボードコンピュータを利用する場合でも動作しますが、その場合は SSD の接続を必須とし、SD カードのみでの運用は避けるべきです。ディスクの読み書き頻度が高いデータベース処理では、SD カードの耐久性が低下する恐れがあります。
必要なリソースの目安としては、CPU は最低 1 コア、メモリ(RAM)は少なくとも 512MB を確保することをお勧めします。ただし、SQLite データベースを使用する場合でも、フィード数が増加すると読み込み速度に影響が出るため、本格的な運用では PostgreSQL や MariaDB の使用を想定し、1GB 以上のメモリを割り当てるのが理想的です。また、外部からのアクセスを考慮し、サーバーの公開ポート(通常は HTTP/HTTPS)が開放されていることを確認してください。SSL 証明書の取得には Let's Encrypt の利用が一般的であり、これに対応した DNS 設定が必要です。
FreshRSS のインストールにおいて最も簡単で推奨される方法は、Docker コンテナを使用することです。Docker は、アプリケーションとその依存関係をパッケージ化し、どこでも同じ環境で動作させるための技術です。本ガイドでは、2026 年 4 月時点の最新安定版である freshrss/freshrss イメージを使用します。まずはサーバー側に Docker Engine と Docker Compose がインストールされていることを確認してください。
Docker Compose の設定ファイルを作成する手順を解説します。まず、プロジェクト用のディレクトリを作成し、その中に docker-compose.yml という名前でファイルを保存します。このファイルには、FreshRSS のコンテナ定義と、必要に応じてデータベースのコンテナ定義が含まれます。以下の YAML 形式のコマンドは、標準的な構成例です。
version: '3.8'
services:
freshrss:
image: freshrss/freshrss:latest
container_name: freshrss
restart: unless-stopped
ports:
- "80:80"
volumes:
- ./data:/var/www/data
- ./extensions:/var/www/extensions
environment:
- TZ=Asia/Tokyo
db:
image: postgres:15-alpine
container_name: freshrss_db
restart: unless-stopped
environment:
POSTGRES_DB: freshrss
POSTGRES_USER: freshrss_user
POSTGRES_PASSWORD: your_secure_password_here
volumes:
- db_data:/var/lib/postgresql/data
volumes:
db_data:
この設定ファイルの解説を行います。image にはイメージ名とタグを指定し、ports でホスト側のポート 80 をコンテナ内のポート 80 にマップしています。これにより、ブラウザからサーバーの IP アドレスまたはドメイン名を入力するだけで FreshRSS の管理画面にアクセスできるようになります。volumes ディレクティブは非常に重要で、ここで指定したローカルディレクトリ(./data など)がコンテナ内で永続化されます。コンテナを削除してもデータは消えません。
環境変数 TZ=Asia/Tokyo はサーバーのタイムゾーンを設定するもので、これにより記事の表示日時や通知時刻が正しい日本時間に設定されます。データベースには PostgreSQL 15 を使用していますが、SQLite のみで運用することも可能です。PostgreSQL を導入するメリットは、大規模なデータ量への対応力と、同時接続時のパフォーマンス向上です。本格的に使う場合は docker-compose up -d コマンドを実行し、コンテナの起動を確認してください。
FreshRSS はデフォルトで SQLite3 を使用してデータを保存します。SQLite は単一のファイルとしてデータが管理されるため、初期設定や小規模な運用には非常に便利です。しかし、フィード数が増加し、同時に複数ユーザーでアクセスする環境では、データベースのロックが発生したり、読み込み速度が遅くなったりする可能性があります。そのため、PostgreSQL、MySQL、MariaDB などのリレーショナルデータベース管理系统(RDBMS)への移行が推奨されるケースがあります。
SQLite を使用している場合でも、データベースファイルをバックアップしておく必要があります。これはコンテナ外にある data/FreshRSS/data/users/*/index.db のパスに存在します。バックアップスクリプトを作成し、定期的な自動実行を Cron で設定することで、データ損失のリスクを最小限に抑えることができます。一方、PostgreSQL を導入する場合のメリットは、トランザクション処理能力の高さにあります。例えば、大量のフィードを一度に更新する際も、データベースがブロックされることなくスムーズに動作します。
PostgreSQL への移行を行うには、まず docker-compose.yml で DB サービスを定義し、FreshRSS コンテナ側の環境変数を変更する必要があります。具体的には、DATABASE_TYPE=pgsql と設定し、接続情報を指定します。また、データベースの初期化スクリプトを実行してテーブルを作成し、ユーザー権限を設定する SQL コマンドが必要です。PostgreSQL の場合、接続数の制限(max_connections)を適切に設定していないと、突然 FreshRSS が動作停止する可能性があります。2026 年時点では、PostgreSQL 15 または 16 が標準であり、メモリ効率も改善されています。
また、MariaDB や MySQL を使用するケースもあります。これらは LAMP スタック(Linux, Apache, MySQL/PHP)の歴史が長く、多くの Linux ユーザーにとって親和性が高いです。ただし、FreshRSS の開発チームは PostgreSQL と SQLite へのサポートを優先しているため、将来的な機能追加においては SQLite と PostgreSQL が最速で反映される傾向があります。データベースを選択する際は、現在のデータ量と今後の拡張性を天秤にかけて決定してください。
FreshRSS の導入が完了したら、実際にニュースやブログのフィードを追加していく作業を行います。基本的な操作はブラウザ上の Web UI から行われます。「設定」メニューから「OPML インポート」を選択し、Feedly や Inoreader などの既存サービスからエクスポートしたファイルを読み込むことで、大量のフィードを一括で移行できます。これにより、これまでの読了履歴や設定を引き継ぐことが可能です。
カテゴリ管理機能は情報の整理に不可欠です。FreshRSS では「フォルダ」を階層的に作成することができ、ニュース、技術ブログ、趣味、仕事など目的ごとに分類できます。さらに、各記事に対して「タグ」付けを行う機能も備えています。これにより、同じ記事が複数のカテゴリやタグに関連づけられるため、柔軟な検索が可能です。例えば、「Python」というタグをつけた記事は、プログラミング関連のフォルダだけでなく、技術全般のリストにも表示されます。
フィルタ機能は、特定のキーワードを含む記事を自動的に既読にする、または非表示にする機能です。これには CSS セレクターを使用して、HTML 内の特定の要素を抽出する高度な設定も可能です。例えば、「スポンサー広告」というクラスを持つ記事や、特定の URL パターンに合致するフィードを除外することができます。また、ユーザーフィルタ機能を利用することで、外部の RSS フィードから特定のデータのみ(タイトルや説明など)を取得し、独自の表示形式で扱うこともできます。これにより、情報のノイズを排除し、必要な情報だけを抽出して閲覧することが可能になります。
FreshRSS の最大の強みの一つは、Google Reader API に準拠している点です。これは、かつて Google が提供していた RSS リーダーサービスの互換性のある API 規格です。この規格を採用しているため、iOS や Android、Mac などのプラットフォームで動作する高機能な外部クライアントアプリと FreshRSS を連携させることができます。これにより、Web ブラウザ上の管理画面だけでなく、ネイティブアプリの快適さを利用できます。
代表的なアプリとして iOS/Mac の「Reeder 5」や「Unread」、Android の「FeedMe」などが挙げられます。これらのアプリを FreshRSS に接続するには、サーバー上で API キー(パスワード)を発行する必要があります。FreshRSS の管理画面でユーザー設定を開き、「API キー」の項目からキーを生成します。このキーは、外部アプリの設定画面で「サーバー URL」として入力する際に使用します。
2026 年時点では、Google Reader API は標準的なプロトコルとして多くのサードパーティ製リーダーでサポートされています。また、Fever API や GReader API という互換性のあるプロトコルも利用可能です。これにより、FreshRSS のユーザーが他のアプリに乗り換えた場合でも、データ形式を維持したまま接続し続けることができます。ただし、セキュリティの観点から、外部アプリとの通信には HTTPS を必須とし、SSL 証明書が有効であることを確認してください。
FreshRSS はコア機能以外も充実しており、さまざまな拡張機能をインストールすることで機能を拡張できます。2026 年現在では、YouTube の動画フィードを取得する拡張機能が標準的に利用されています。これにより、YouTube チャンネルの投稿を RSS フィードとして取得し、他のニュースリーダーと同様に管理することが可能です。これは、YouTube が公式に RSS を廃止した後の代替手段として広く支持されています。
また、Mastodon(マストドン)のような分散型 SNS の投稿も FreshRSS で管理できます。これには「Mastodon」拡張機能を有効にし、アカウントの認証情報を設定します。Twitter(X)については、公式 API の制限強化により直接連携が困難になっていますが、「Nitter」と呼ばれる非公式のミラーサイト経由で RSS 取得を行う方法が存在します。ただし、セキュリティリスクを考慮し、信頼できる Nitter インスタンスを選択する必要があります。
さらに、2026 年時点では AI を活用した要約機能や翻訳機能を備えた拡張機能も開発されています。記事本文を取得して短く要約したり、英語のニュースを日本語に翻訳して表示したりすることが可能です。これにより、海外情報の摂取がより容易になっています。ただし、これらの拡張機能はサーバー側のリソース(CPU 使用率)を増加させる可能性があるため、自己責任で導入する必要があります。また、拡張機能を追加する際は、公式の GitHub リポジトリから信頼性の高いものをチェックし、バージョン互換性を確認してください。
セルフホストサーバーを運用する上で最も重要なのがセキュリティです。FreshRSS は基本的には HTTP で動作しますが、外部からの攻撃や盗聴を防ぐため、HTTPS(SSL/TLS)による暗号化通信を必須とするべきです。2026 年現在では Let's Encrypt を利用して無料の SSL 証明書を発行し、Nginx や Traefik などのリバースプロキシを設定するのが一般的です。
リバースプロキシとは、外部からのリクエストを受け取り、内部サーバー(FreshRSS コンテナ)に転送する役割を持つソフトウェアです。これにより、ポート番号の変更やドメイン名の設定が容易になり、SSL の終端処理を一元化できます。例えば、Nginx Proxy Manager などの GUI ベースの管理ツールを利用することで、複雑な設定ファイルを書かずにセキュリティ設定を行えます。また、X-FRAME-OPTIONS や Content-Security-Policy(CSP)などの HTTP ヘッダーを設定して、クリックジャック攻撃やクロスサイトスクリプティングを防ぐ設定も推奨されます。
さらに、強力な認証システムとして OIDC(OpenID Connect)のサポートが FreshRSS 1.24+ で強化されています。OIDC を使用することで、Keycloak や Authentik、Authelia などの ID プロバイダーと連携し、シングルサインオン(SSO)を実現できます。これにより、各ユーザーに個別のアカウントを作成する手間を省き、企業の Active Directory や Google Workspace のアカウントで FreshRSS にログインできるようになります。認証フローの詳細は、OIDC プロバイダ側の設定ファイルと FreshRSS 側で連携パラメータを設定することで完了します。
FreshRSS は優れた選択肢ですが、他のセルフホスト型 RSS リーダーと比較するとどうでしょうか?2026 年時点での主要なライバルである Miniflux、Tiny Tiny RSS(TT-RSS)、Nextcloud News、Commafeed との機能を比較します。特に、リソース消費量や UX(ユーザーエクスペリエンス)の違いは重要な判断基準となります。
まず、Miniflux は Go で書かれており、非常に軽量で高速です。しかし、その代わりに拡張機能のサポートが限定的であり、カスタマイズ性が FreshRSS に劣ります。一方、TT-RSS は PHP 製ですが、プラグインシステムが非常に充実しており、高度な自動化が可能です。ただし、設定が複雑で初学者にはハードルが高いことがデメリットです。
次に、Nextcloud News は Nextcloud 統合型のため、ドキュメント管理やカレンダー連携との相性が良いですが、Nextcloud の重さの影響を受けやすい傾向があります。Commafeed は Java ベースで、デスクトップアプリ版も提供されていますが、サーバーとしての運用は他社に比べて人気が低く、コミュニティの規模も小さいです。
| 比較項目 | FreshRSS | Miniflux | Tiny Tiny RSS | Nextcloud News | Commafeed |
|---|---|---|---|---|---|
| 言語 | PHP | Go | PHP | PHP | Java |
| リソース | 低 | 极低 | 中〜高 | 高(依存) | 中 |
| 拡張機能 | ○ (豊富) | × (限定的) | ○ (非常に豊富) | △ (Nextcloud 依存) | × |
| DB サポート | SQLite/PG/MySQL | PostgreSQL | PG/SQLite | MySQL/MariaDB | SQLite |
| API 互換 | Google Reader | Google Reader | Google Reader | Nextcloud API | RSS API |
| モバイル UX | ◎ (外部連携) | ○ (専用アプリ) | ○ (Web/アプリ) | △ (Web) | △ (デスクトップ) |
この表からもわかるように、FreshRSS は拡張性とリソース効率のバランスが最も優れています。特に API 互換性が高いため、モバイルアプリでの使い勝手が群を抜いています。また、データベースの柔軟性が他のシステムより高く、環境に合わせて最適化可能です。
FreshRSS を導入した後、実際に運用する中で遭遇する可能性がある問題について解説します。よくあるトラブルとして、フィードが更新されない、またはエラーメッセージが表示される場合があります。これは RSS フィードの形式が壊れているか、サーバーからのアクセスがブロックされている可能性があります。FreshRSS の管理画面にある「フィードリスト」で各フィードの状態を確認し、「更新失敗」の回数が多い場合は、フィード元のサイト側の変更を疑う必要があります。
また、バックアップと復元も重要な運用手順です。Docker コンテナは削除されやすいですが、データボリューム(./data ディレクトリ)にはすべての設定やユーザーデータが保存されます。このディレクトリ全体を定期バックアップするスクリプトを作成し、外部ストレージに保存することを強くお勧めします。例えば、rsync を使用して NAS へコピーしたり、クラウドストレージ API を利用して転送したりする方法があります。
更新時の注意点は、バージョンアップ前に必ずデータを退避することです。FreshRSS は定期的なメジャーアップデートが行われますが、データベースのスキーマ変更がある場合、古いデータが破損するリスクがあります。Docker のイメージを Pull してコンテナを再構築する際は、docker-compose pull && docker-compose up -d コマンドを使用し、ログ出力(docker-compose logs)を確認しながら進行してください。エラーが出た場合は、過去のバージョンに戻すためのロールバック手順も事前に用意しておきます。
Q: FreshRSS の初期設定でデータベースを PostgreSQL に変更する方法は?
A: 結論:docker-compose.yml を編集し DATABASE_TYPE=pgsql と設定して再起動します。まず、既存の SQLite データを使用せず新規に PostgreSQL コンテナを定義します。PostgreSQL の環境変数(パスワードやユーザー名)を設定した後、FreshRSS 側の環境変数を DB タイプに変更します。最後にコンテナを再構築することで移行が完了します。
Q: Feedly から FreshRSS へデータを移す手順は? A: 結論:Feedly の設定から「OPML エクスポート」を行い、それを FreshRSS でインポートします。まず Feedly のアカウントで OPML ファイルのダウンロードを行います。その後、FreshRSS の管理画面で「設定」→「OPML インポート」を選び、ファイルをアップロードして実行します。これでフィードリストとフォルダ構成が引き継がれます。
Q: Google Reader API キーの発行場所は? A: 結論:FreshRSS のユーザー設定画面にある「API キー」項目から生成可能です。管理画面でログインし、「アカウント情報」または「設定」を開くと、パスワードと API キーをそれぞれ別々に設定できます。このキーは外部アプリ(Reeder など)の接続時に使用するため、安全に保管してください。
Q: Docker 環境以外でも FreshRSS を動かすことは可能ですか? A: 結論:可能ですが、Docker が最も推奨されます。PHP と Apache/Nginx の手動セットアップも可能ですが、依存関係やセキュリティパッチ適用の手間がかかります。Docker コマンドなしでのインストールは、初心者には非推奨です。
Q: SSL 証明書の取得方法(Let's Encrypt)の注意点? A: 結論:リバースプロキシを経由して設定するのが最も安全です。FreshRSS コンテナ内で直接 SSL を設定するのではなく、Nginx や Traefik のコンテナに SSL を割り当てます。ポート 80 と 443 が外部に開放されていることを確認し、DNS レコードが正しく設定されているか確認してください。
Q: 拡張機能のインストールは管理画面から行えますか? A: 結論:はい、管理画面の「拡張機能」セクションから可能です。ただし、一部の高度な拡張機能(API を使用するもの)は手動でのファイル配置が必要な場合があります。まずは公式 GitHub の README で手順を確認し、バージョン互換性を確認してインストールしてください。
Q: 記事が非表示になるフィルタ設定の条件は? A: 結論:CSS セレクターやキーワード指定が可能です。「フィルター」設定で「非表示にする」というアクションを選びます。例えば、「広告」という文字が含まれる場合、または特定の HTML クラス名を持つ場合に適用されます。正規表現も一部で使用可能です。
Q: FreshRSS のログを確認する方法は?
A: 結論:docker-compose logs -f freshrss コマンドでコンテナの標準出力を確認できます。エラーメッセージには「DB connection failed」や「Permission denied」などの具体的なテキストが含まれます。また、ログファイル自体は ./logs ディレクトリ(設定による)に保存されます。
Q: 複数のサーバー間で同期させる方法は? A: 結論:OPML エクスポート/インポートまたは、データベースファイルの共有で対応可能です。完全リアルタイム同期には外部ツールやスクリプトが必要です。定期的なバックアップ転送が最も確実です。
Q: リバースプロキシを設定しない場合のセキュリティリスク? A: 結論:SSL 非対応により通信内容が平文で送信され、盗聴されるリスクがあります。また、XSS や CSRF 攻撃への防御も弱まります。必ずリバースプロキシまたは SSL プロキシを経由して運用してください。
本記事では、FreshRSS を中心としたセルフホスト RSS リーダーの構築と運用について詳しく解説しました。情報の主体性を自分自身で取り戻すための手段として、RSS の価値は現在も非常に高く評価されています。特に FreshRSS は、軽量さ、拡張性、そしてモバイルアプリとの連携という点において、現在の市場において最もバランスの取れた選択肢の一つです。
以下に本記事の要点をまとめます。
2026 年現在でも情報の洪水の中で自分自身で情報をフィルタリングする能力は不可欠です。FreshRSS を導入することで、アルゴリズムに依存しない、あなた自身の視点を持った情報管理を実現してください。本ガイドが皆様のサーバー構築の成功に貢献することを願っています。

PCパーツ・ガジェット専門
自作PCパーツやガジェットの最新情報を発信中。実測データに基づいた公平なランキングをお届けします。
Miniflux を使った軽量セルフホストRSSリーダーを解説。Docker導入、Google Reader API、ミニマルUI、FreshRSS との比較、実運用Tipsを詳しく紹介。
Wallabag を使った後で読むサービスのセルフホスト構築を解説。Docker導入、モバイルアプリ、Kindle 送信、Pocket との比較、実運用Tipsを詳しく紹介。
Invidious を使ったYouTube代替フロントエンドのセルフホストを解説。Docker導入、広告なし、プライバシー保護、Piped との比較を詳しく紹介。
Outline Wiki のセルフホスト構築を解説。Docker導入、OIDC連携、Slack / Notion 風UI、BookStack との比較、実運用Tipsを詳しく紹介。
Piped を使ったYouTube代替プロキシのセルフホスト構築を解説。Docker導入、SponsorBlock 統合、Invidious との比較、実運用Tipsを詳しく紹介。
Shlink を使ったセルフホストURL短縮サービスの構築を解説。Docker導入、QRコード、統計、API、YOURLS / Polr との比較、実運用Tipsを詳しく紹介。