
2026/01/14 0:35
**タイトル** Show HN:セルフホスト版Reddit – 23億件の投稿、オフラインで動作、永遠にあなたのもの
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
## Summary Redd‑Archiver は、Reddit、Voat、および Ruqqus から取得した圧縮データダンプ (.zst, .7z, SQL) を高速でモバイル優先の HTML アーカイブへ変換する無料かつオープンソースツールです。PostgreSQL GIN インデックスによるフルテキスト検索を任意で有効にできます。サポート対象は、2.38 B Reddit 投稿(40 029 サブレディット)、3.81 M Voat 投稿/24.1 M コメント(22 637 サブヴァース)および 500 K Ruqqus 投稿(6 217 ギルド)です。 プロジェクトは、オフライン静的 HTML、Tor 隠しサービス付き Docker、および HTTPS 本番用 Docker の 3 つのデプロイモードを提供します。すべて 0–15 分以内に起動可能です。REST API v1 は、投稿・コメント・ユーザー・サブレディット・検索・統計・エクスポートなど30以上のエンドポイントを提供し、さらに MCP サーバーで Claude アシスタント用 AI ツール29種を公開します。 Redd‑Archiver のモジュラーアーキテクチャは、コア処理、インポーター、API、MCPサーバー、HTML生成の18個の専門モジュールから構成されており、拡張が容易です。WCAG 対応でテーマ切替と CSS のみで実現するインタラクション、SEO 最適化、およびファイルサイズ・進捗・データベースメトリクスを追跡する分析ダッシュボードを備えています。 ユーザーは自分のインスタンスを公開リーダーボード/レジストリに登録できます。インスタンスは完全性とコンテンツリスクで評価され、アーカイブ作業の調整が可能です。インストールには Python 3.7+、PostgreSQL 12+、4 GB+ RAM が必要で、Docker Compose の使用が推奨されます。Let’s Encrypt HTTPS または Tor 隠しサービスをオプションで設定できます。 データソースは公開学術トレント(Reddit 3.28 TB、Voat 約15 GB、Ruqqus 約752 MB)から取得します。本プロジェクトは Unlicense によりパブリックドメインとして公開され、BTC および XMR の寄付を受け付けています。 Redd‑Archiver は研究者・アーカイブ担当者・ホビイストが大量のソーシャルメディアデータセットを閲覧・分析し、AI 搭載検索ツールを活用しつつデジタル文化を保存できるようにします。
本文
Redd‑Archiver
圧縮データダンプを閲覧可能なHTMLアーカイブへ変換し、柔軟に展開できるオプションを備えたツールです。
並べ替え済みインデックスページや全文検索(Docker)によるオフライン閲覧が可能です。
モバイルファーストでマルチプラットフォーム対応、エンタープライズグレードのパフォーマンスを実現し、PostgreSQL の全文検索索引を利用します。
対応プラットフォーム
| プラットフォーム | フォーマット | ステータス | 投稿数 |
|---|---|---|---|
JSON Lines(Pushshift) | ✅ 完全対応 | 23.8 B 件 (40,029 サブレディット、2024年12月31日まで) | |
| Voat | SQL ダンプ | ✅ 完全対応 | 3.81 M 件の投稿と 24.1 M コメント(22,637 サブヴァース、完全アーカイブ) |
| Ruqqus | JSON Lines | ✅ 完全対応 | 500 K 件の投稿 (6,217 ギルド、完全アーカイブ) |
追跡対象コンテンツ: 2.384 B 件の投稿を 68,883 コミュニティにわたって収集(Reddit の Pushshift データセットは2024年12月31日まで、Voat/Ruqqus は完全アーカイブ)。
バージョン1.0ではマルチプラットフォームアーカイブ、30 以上のエンドポイントを備えた REST API、AI 統合用 MCP サーバー、および PostgreSQL ベースのアーキテクチャが実装されています。
クイックスタート
ライブデモ: 例示アーカイブを見る
Redd‑Archiver に初めて触れる方は、まず QUICKSTART.md をご覧ください。
2–15 分で起動できます:
- ローカルテスト – 5 分
- Tor ホメラボ展開 – 2 分(ドメイン/ポート転送不要)
- 本番 HTTPS – 15 分
- 例示データでのテスト
主な機能
| 機能 | 詳細 |
|---|---|
| マルチプラットフォームサポート | Reddit、Voat、Ruqqus を統一アーカイブにまとめます。 |
| 自動検出 | ファイル拡張子からプラットフォームを自動判別します。 |
| 統合検索 | PostgreSQL FTS で全プラットフォームを横断検索可能です。 |
| 混在アーカイブ | 複数のプラットフォームを単一アーカイブに結合できます。 |
| MCP サーバー(AI 統合) | OpenAPI から生成された 29 の MCP ツールで AI アシスタントがフルアーカイブアクセス、トークンオーバーフロー防止、即時統計取得、Claude 対応設定を利用できます。 |
{ "mcpServers": { "reddarchiver": { "command": "uv", "args": ["--directory", "/path/to/mcp_server", "run", "python", "server.py"], "env": { "REDDARCHIVER_API_URL": "http://localhost:5000" } } } }
MCP サーバー設定の詳細は公式ドキュメントをご参照ください。
コア機能
- モバイルファーストデザイン – レスポンシブレイアウト、タッチフレンドリーなナビゲーション。
- 高度検索システム(サーバー必須) – Tor ネットワーク向けに最適化された PostgreSQL 全文検索。キーワード、サブレディット、作者、日付、スコアで検索可能。Docker デプロイが必要です。
- JavaScript なし – 純 CSS のインタラクションのみ使用。
- テーマ対応 – ビルトインのライト/ダーク切替(CSS だけ)。
- アクセシビリティ – WCAG 対応、キーボード操作、スクリーンリーダーサポート。
- パフォーマンス – 29 KB の最適化 CSS、低帯域設計。
技術的優秀性
| 項目 | 説明 |
|---|---|
| モジュラーアーキテクチャ | 保守性を高めるために 18 の専門モジュールで構成。 |
| PostgreSQL バックエンド | 大規模処理でメモリ使用量は一定。 |
| ライトニングファスト検索 | GIN インデックスを用いた PostgreSQL FTS。 |
| REST API v1 | 投稿、コメント、ユーザー、統計など 30+ エンドポイント。 |
| Tor 最適化 | JavaScript を一切使用せず、サーバー側検索のみで外部依存なし。 |
| リッチ統計 | ファイルサイズ追跡を含む分析ダッシュボード。 |
| SEO 最適化 | メタタグ、XML サイトマップ、構造化データを自動生成。 |
| ストリーミング処理 | メモリ効率が高く、自動再開機能付き。 |
| 進捗追跡 | リアルタイム転送速度、ETA、DB 指標を表示。 |
| インスタンスレジストリ | 分散アーカイブの完全度重み付けスコアでリーダーボードシステムを提供。 |
デプロイオプション
| モード | 検索 | サーバー | 設定時間 | 用途 |
|---|---|---|---|---|
| オフライン閲覧 | ❌ ブラウズ専用 | なし | 0 分 | USB ドライブ、ローカルアーカイブ、オフライン調査 |
| 静的ホスティング | ❌ ブラウズ専用 | GitHub/Codeberg Pages | 10 分 | 無料公開ホスト(サイズ制限あり) |
| Docker ローカル | ✅ PostgreSQL FTS | localhost | 5 分 | 開発、テスト |
| Docker + Tor | ✅ PostgreSQL FTS | .onion 隠しサービス | 2 分 | プライベート共有、ポート転送不要 |
| Docker + HTTPS | ✅ PostgreSQL FTS | 公開ドメイン | 15 分 | 本番公開アーカイブ |
オフライン閲覧機能
- スコア・コメント数・日付で並べ替えたインデックスページ
- 大規模サブレディット向けのページネーション
- 完全なコメントスレッドとユーザーページ
- HTML ファイルを直接開くだけで動作
検索サーバー付き
- PostgreSQL の全文検索(GIN インデックス)
- サブ秒単位のレスポンス、Tor 互換性
参加してインターネット史を保存しよう
以下からデータをダウンロード&ミラーリングできます。
| プラットフォーム | サイズ | 投稿数 | ダウンロード |
|---|---|---|---|
| 3.28 TB | 23.8 B | Academic Torrents · Magnet Link | |
| Voat | ~15 GB | 3.8 M | Archive.org † |
| Ruqqus | ~752 MB | 500 K | Archive.org ‡ |
Voat ヒント: 1000 倍速のインポートが可能な事前分割ファイルを使用すると、サブヴァースごとに 2–5 分で完了(30+ 分ではなく)。
Ruqqus ノート: Docker イメージには自動 .7z 解凍用 p7zip が含まれています。
スクリーンショット
- ダッシュボード – 統計概要、レスポンシブカード。
- サブレディットインデックス – ソート・ページネーション・バッジ色付け。
- 投稿ページ – ネストコメント、折りたたみ UI、アンカーリンク。
- モバイルデザイン – タッチフレンドリーなナビゲーション。
- 検索インターフェース – PostgreSQL FTS、Google スタイル演算子。
インストール
必須要件
- Python 3.7+
- PostgreSQL 12+(v1.0 以降必須)
- 4 GB+ RAM(PostgreSQL は一定メモリ使用)
- ディスク容量: 入力 .zst ファイルサイズの約 1.5–2 倍を DB 用に確保
Python 依存関係
pip install -r requirements.txt
Docker(推奨)
git clone https://github.com/19-84/redd-archiver.git cd redd-archiver mkdir -p data output/.postgres-data logs tor-public cp .env.example .env # 必要に応じて編集 docker-compose up -d # PostgreSQL コンテナ起動 export DATABASE_URL="postgresql://reddarchiver:your_password@localhost:5432/reddarchiver" python reddarc.py /path/to/data/ --output my-archive/
ローカル PostgreSQL
sudo apt install postgresql postgresql-contrib # Ubuntu/Debian # macOS なら brew services start postgresql@16 sudo -u postgres createuser reddarchiver sudo -u postgres createdb -O reddarchiver reddarchiver sudo -u postgres psql -c "ALTER USER reddarchiver WITH PASSWORD 'your_password';" export DATABASE_URL="postgresql://reddarchiver:your_password@localhost:5432/reddarchiver" python reddarc.py /path/to/data/ --output my-archive/
使い方
- データ準備 – Reddit
、Voat SQL、Ruqqus.zst
。.7z - PostgreSQL 設定 –
を設定。DATABASE_URL - アーカイブ生成
# .zst ファイルを自動検出して全て処理 python reddarc.py /path/to/pushshift-data/ --output my-archive/ # 単一サブレディット python reddarc.py /data \ --subreddit privacy \ --comments-file /data/privacy_comments.zst \ --submissions-file /data/privacy_submissions.zst \ --output my-archive/
- デプロイ
docker compose up -d # ローカル HTTP ./docker/scripts/init-letsencrypt.sh # 本番 HTTPS 用 docker compose -f docker-compose.yml -f docker-compose.tor-only.yml --profile tor up -d # Tor 隠しサービス
高度な CLI オプション
| オプション | 目的 |
|---|---|
| コメントを非表示にする。 |
| ユーザーページ生成をスキップ(メモリ節約)。 |
| 処理前にファイル構成をプレビュー。 |
| 再構築時はすべての状態を無視して再ビルド。 |
| カスタムログファイル場所。 |
| ログ出力レベルを詳細に設定。 |
アーキテクチャ概要
reddarc.py # CLI エントリポイント search_server.py # Flask 検索 API core/ ├─ postgres_database.py ├─ postgres_search.py └─ importers/ # Reddit, Voat, Ruqqus インポーター api/ └─ routes.py # 30+ REST エンドポイント mcp_server/ └─ server.py # FastMCP サーバー(29 ツール) html_modules/ └─ html_pages.py # ページ生成のコアロジック templates_jinja2/ # Jinja2 テンプレート sql/ ├─ schema.sql # テーブル定義 └─ indexes.sql # GIN, B‑tree インデックス
PostgreSQL 全文検索
- ライトニングファスト – GIN インデックスでメモリ一定。
- 関連度ランキング –
を使用。ts_rank() - ハイライト抜粋 –
。ts_headline() - 高度フィルタ – サブレディット、作者、日付範囲、スコア。
# CLI で検索例 python postgres_search.py "machine learning" --min-score 100 --limit 20 # Web API (Docker) docker-compose up -d reddarchiver-search-server curl http://localhost:5000/search?q=machine%20learning&subreddit=technology&limit=50
REST API & レジストリ
- システム –
,/health
,/stats
,/schema
。/openapi.json - 投稿・コメント・ユーザー・サブレディット – リスト、単一項目、集計。
- 検索 –
,/search
。/search/explain
MCP/AI 最適化機能: フィールド選択、トランケーション制御、バッチエンドポイント、コンテキスト取得。
パフォーマンスと最適化
| データセット | 入力 (.zst) | PostgreSQL DB | HTML 出力 |
|---|---|---|---|
| 93.6 MB | ~150 MB | 1.4 GB (r/technology) | |
| 100 MB | ~160 MB | ~1.5 GB (小規模アーカイブ) | |
| 500 MB | ~800 MB | ~7.5 GB (研究プロジェクト) | |
| 2 GB | ~3.2 GB | ~30 GB (大規模コレクション) | |
| 100 GB | ~160 GB | ~1.5 TB (エンタープライズスケール) |
- 処理速度 – ストリーミングインジェストと効率的な HTML レンダリング、即時検索索引。
- メモリ – 4 GB RAM が一定で、データセットサイズに関係なく安定。
- スケーラビリティ – トピック単位で水平拡張可能;複数インスタンスを同一サーバーまたは別マシンで稼働。
活用事例
- 研究・学術 – オンラインディスコース、社会運動、インターネット文化の保存。
- コミュニティアーカイブ – サブレディットを削除前にバックアップし、オフラインリソースを作成。
- 調査・分析 – 削除されたコンテンツやユーザー行動、モデレーション研究の解析。
ドキュメント
- デプロイガイド: Docker, Tor, 静的ホスティング。
- API & 統合: REST API 参照、MCP サーバードキュメント、レジストリ設定。
- プロジェクト文書: CONTRIBUTING.md, SECURITY.md, LICENSE (Unlicense)。
コントリビューション
貢献を歓迎します!重点領域は以下です。
- PostgreSQL クエリ最適化
- 新しいエクスポートフォーマット
- 検索機能の拡張
- ドキュメント改善
モジュラーアーキテクチャを参照し、該当箇所で開発してください。
ライセンス
本ソフトウェアはパブリックドメイン(Unlicense)にて公開されます。コピー・変更・配布・販売・改変・再利用が自由です。
データソース
- Pushshift (Reddit)
- Watchful1 の PushshiftDumps
- Arctic Shift
- Ruqqus 公開データセット
- SearchVoat アーカイブ
プロジェクトをサポートする
ビットコイン:
bc1q8wpdldnfqt3n9jh2n9qqmhg9awx20hxtz6qdl7モネロ:
42zJZJCqxyW8xhhWngXHjhYftaTXhPdXd9iJ2cMp9kiGGhKPmtHV746EknriN4TNqYR2e8hoaDwrMLfv7h1wXzizMzhkeQi
インターネットアーカイブの取り組みを支援いただきありがとうございます!