ハクソク

世界を動かす技術を、日本語で。

Show HN: 自己ホスト型Reddit – 23.8億件の投稿、オフラインで動作、永遠にあなたのもの

概要

Redd-Archiverは、Reddit・Voat・Ruqqusなど複数プラットフォームのデータダンプを、閲覧可能なHTMLアーカイブへ変換するツール。
オフライン閲覧全文検索対応(Docker必須)など、柔軟なデプロイ方法を提供。
モバイル最適化・マルチプラットフォーム・高性能PostgreSQL全文検索を特長とする。
API・AI連携
統計ダッシュボード
などエンタープライズ級機能を搭載。
インターネットの歴史保存へ貢献したい個人・研究者・団体向けアーカイブ生成ツール。

Redd-Archiverとは

  • **Reddit (.zst JSON Lines)、Voat (SQL dump)、Ruqqus (.7z JSON Lines)**など主要リンクアグリゲータのデータダンプ対応
  • 静的HTMLアーカイブ生成によるオフライン閲覧、またはPostgreSQL全文検索サーバによる高速検索
  • モバイルファースト設計・マルチプラットフォームサポート
  • Dockerデプロイによる簡単セットアップ・Tor/HTTPS両対応
  • 2.38B Reddit投稿・3.81M Voat投稿・500K Ruqqus投稿など大規模データ処理実績
  • AI連携用MCPサーバ搭載:AIアシスタント/Claude Code等から直接クエリ可能
  • REST API (30+エンドポイント):投稿・コメント・ユーザー・統計・検索・集計・エクスポート
  • アクセシビリティ(WCAG準拠)・テーマ切替・SEO最適化など現代的Web要件を網羅

主な対応プラットフォーム・データ

  • Reddit:.zst JSON Lines (Pushshift)形式、40,029サブレディット、2.38B投稿(2024年12月31日まで)
  • Voat:SQL dump形式、22,637サブバース、3.81M投稿・24.1Mコメント(全アーカイブ)
  • Ruqqus:.7z JSON Lines形式、6,217ギルド、500K投稿(全アーカイブ)
  • 合計:68,883コミュニティ、23.84億投稿
  • 今後の拡張:Lemmy、Hacker News等の新データソースも登録・連携可能

特長・機能一覧

  • マルチプラットフォームアーカイブ:複数サービスの投稿を1つのアーカイブに統合
    • 自動プラットフォーム判定:拡張子から自動認識
    • 統合検索:全プラットフォーム横断のPostgreSQL全文検索
  • MCPサーバ(AI統合):OpenAPI仕様から29種のMCPツール自動生成
    • Claude Desktop/Code等AIから直接操作
    • フィールド選択・トークン制御機能内蔵
  • モバイルファーストUI:全端末・タッチ操作対応のレスポンシブデザイン
  • JavaScriptフリー:全機能CSSのみで実現、JS不要
  • テーマ切替:ライト/ダークテーマCSSのみで実装
  • アクセシビリティ:キーボード操作・スクリーンリーダー対応
  • 高パフォーマンス:最適化CSS(29KB)、低帯域ネットワーク対応
  • PostgreSQLバックエンド:大規模データも一定メモリで処理
  • リアルタイム進捗表示:転送速度・ETA・DBメトリクス表示
  • SEO最適化:メタタグ・XMLサイトマップ・構造化データ
  • ストリーミング処理:自動レジューム・省メモリ設計
  • インスタンスレジストリ:分散アーカイブのランキング・協調保存

デプロイ・利用方法

  • ローカル/ホームラボ:HTTPサーバ(2コマンド)、USB・ローカルフォルダ閲覧
  • HTTPS本番運用:Let's Encrypt自動証明書発行(5分)
  • Tor Hidden Service:.onionアクセス、ネットワーク設定不要(2分)
  • 静的ホスティング:GitHub/Codeberg Pages(小規模アーカイブ向け、閲覧のみ)
  • 検索サーバ:PostgreSQL全文検索(Docker必須)、サブ秒検索、Tor互換
  • デプロイ例
    • オフライン閲覧:HTMLファイルを直接開く
    • Docker+Tor:プライベート共有、ポート開放不要
    • Docker+HTTPS:公開アーカイブ
    • 静的ホスティング:無料公開(容量制限あり)

インストール・セットアップ手順

  • 前提条件
    • Python 3.7以上
    • PostgreSQL 12以上(v1.0以降必須)
    • 4GB以上RAM(PostgreSQLは一定メモリ消費)
    • データダンプサイズの1.5~2倍のディスク空き
  • 依存パッケージ
    • psycopg[binary,pool](PostgreSQL用)
    • zstandard(.zst高速展開)
    • jinja2(HTMLテンプレート)
    • rcssmin(CSS圧縮)
    • orjson(高速JSONパース)
  • Docker推奨手順
    • git clone https://github.com/19-84/redd-archiver.git
    • 必要ディレクトリ作成・.env設定
    • docker-compose up -d
    • pip install -r requirements.txt
    • DATABASE_URL環境変数設定
    • python reddarc.py /path/to/data/ --output my-archive/
  • ローカルPostgreSQL手順(Ubuntu/macOS対応):
    • PostgreSQLインストール・ユーザー/DB作成
    • パスワード設定
    • Python依存インストール・DATABASE_URL設定
    • アーカイブ生成コマンド実行

データ準備・アーカイブ優先度判定

  • 対応データフォーマット
    • Reddit:.zst JSON Lines(Pushshift完全データセット)
    • Voat:SQL dump(全投稿・コメント)
    • Ruqqus:.7z JSON Lines(全ギルド)
  • 優先度スキャナーツール
    • 削除率・活動期間・NSFW・制限/隔離/禁止コミュニティ判定
    • アーカイブ優先度(スコア0-100)自動算出
    • 出力例:subreddits_complete.json, subverses.json, guilds.json
    • 活用例
      • 高リスクコミュニティの優先保存
      • ストレージ計画
      • 削除・検閲履歴の研究

アーカイブの社会的意義・参加方法

  • インターネットの歴史保存:毎日消えるコンテンツを分散保存
  • データダウンロード・ミラー協力
    • Reddit:3.28TB(Academic Torrents・マグネットリンク)
    • Voat:~15GB(Archive.org)
    • Ruqqus:~752MB(Archive.org、Dockerで自動展開対応)
    • ローカル保存・トレントシード・研究者シェア推奨
  • インスタンス登録・連携
    • 公開リーダーボード参加
    • チーム協調保存・重複回避
    • テンプレート提出で簡単登録
  • 新データソース募集
    • Lemmy・Hacker News・Reddit代替等
    • 発見データセットの共有でアーカイブ網拡大
    • 他アーカイバーとの重複防止・発見性向上

画面例・デモ

  • ダッシュボード:統計・投稿数・活動指標・ブランドカスタマイズ
  • サブレディット一覧:スコア/コメント/日付別ソート・ページネーション
  • 投稿+コメントページ:ネストスレッド・折りたたみUI・ユーザーフレア・アンカーリンク
  • モバイル対応UI:タッチ操作・レスポンシブレイアウト
  • 検索画面:Google風演算子・サブレディット/著者/日付/スコア絞り込み、全文検索・抜粋ハイライト
  • サンプルアーカイブ:複数プラットフォーム横断の技術系コミュニティ例
    • デモ:https://online-archives.github.io/redd-archiver-example/

なぜRedd-Archiverが重要か

  • Reddit公式APIは事実上アーカイブ不可:Pushshiftも度々遮断警告
  • 既存データを自分の手元で完全保存・閲覧:APIキー・レート制限・利用規約変更に左右されない
  • エアギャップPC・Raspberry Pi・USB配布など多様な運用が可能
  • Python・PostgreSQL・Jinja2・Dockerで構築、AI開発支援も活用

公式リソース

  • GitHub:https://github.com/19-84/redd-archiver
  • Pushshiftトレント:https://academictorrents.com/details/1614740ac8c94505e4ecb9d...
  • ライブデモ:https://online-archives.github.io/redd-archiver-example/
  • クイックスタート・ドキュメント:QUICKSTART.md、CHANGELOG.md

Redd-Archiverは、消えゆくインターネットの記憶を、誰でも自分の手で保存・活用できる強力なアーカイブ生成ツール。
個人、研究者、団体の協力で、ネット文化の歴史を未来へ残すプロジェクト。

Hackerたちの意見

このセクションでトレント経由でデータが入手できるよ: https://github.com/19-84/redd-archiver?tab=readme-ov-file#-g...
各プラットフォームのサブ統計とプロファイリングも公開してるよ。これを使ってアーカイブの優先順位を決めるのに役立てられるかも。reddit: https://github.com/19-84/redd-archiver/blob/main/tools/subre... voat: https://github.com/19-84/redd-archiver/blob/main/tools/subve... ruqqus: https://github.com/19-84/redd-archiver/blob/main/tools/guild...
これって、今はもう使えないApolloアプリと何かしら繋げられたりしないかな?失われた時間の一部を取り戻せたらいいんだけど。
APIは色んな統合ができるはずだよ。
アーカイブを自分でホストするのはいいアイデアだね。個人的には、どこかのアーカイブから自動的に引っ張ってきて、削除されたコメントやボットに上書きされたコメントを元の文脈に戻すプラグインがあったら最高なんだけど。Redditを使うのがイライラするのは、古いリンクの半分が何かへの抗議でゴミみたいなコメントに上書きされちゃってるから。皮肉なことに、元のコンテンツはこれらのアーカイブに残ってる(AIのトレーニングに使われてる)けど、実際に使いたいユーザーには見えなくなっちゃってるんだよね。2年前にプリンタードライバーを直した人の方法を知りたいだけなのに。
それが皮肉になるのは、人々がコメントを上書きする理由がLLMトレーニングへの抗議だった場合だけだと思うけど、実際に一番大きな削除の波を引き起こしたのはRedditがAPIをロックしたことなんだよね。もしその抗議の結果、サイトがユーザーにとって使いづらくなったら、実際に目的を果たしたことになる。要するに、Redditをボイコットしようとして、サイトの価値を支えているユーザーの貢献を取り除くことで、みんなに使うのをやめさせようとしてるわけだから。
ちょっと別の視点を提供したいな。私もその欠けてるコメントを見てるから。著者はもう公の議論に参加したくないって決めたんだろうし、そのコメントは消えちゃった。仕方ないよね。私はアーカイブを探したり、彼らの努力を妨げるツールを使ったりしないよ。次のことに進むだけ。『それはイライラするけど…彼らは自分の自律性を使うことにしたから…』って読んで、そこで止める。仕方ないよね。
これは面白いプロジェクトだね、いい仕事してるよ。もう知ってるかもしれないけど、PushShiftの代わりになるアーカイブもあって、投稿やコメントのセットが異なるかもしれない(削除リクエストのカバー範囲によるかも?)。一つはArctic Shift: https://github.com/ArthurHeitmann/arctic_shift/releases もう一つはPullPush: https://pullpush.io/
2〜3年前にプライベートにされたサブレディットがデータダンプに含まれてるかどうか、確認する方法ってあるのかな?
トレントに含まれているすべてのサブレディットのメタデータダンプを入れたよ。プライベートなサブレディットかどうかを示すステータスフィールドも含まれていて、もっと詳細なデータカタログもあるんだ。README: https://github.com/19-84/redd-archiver/blob/main/tools/READM... Redditデータ: https://github.com/19-84/redd-archiver/blob/main/tools/subre...
これを使って新しい分散型ソーシャルメディアを「シード」して、そこから発展させることができるかな。プロジェクトをフォークする感じで。
インスタンスレジストリとチームベースのリーダーボード用のツールを作ったよ。APIにもこれをサポートする機能があるから、みんなでアーカイブを分散してホストできるんだ。レジストリのREADME: https://github.com/19-84/redd-archiver/blob/main/docs/REGIST... インスタンス登録: https://github.com/19-84/redd-archiver/blob/main/.github/ISS...
Redditがクリーンな場所だったら、特定のサブを選べるなら興味あるかも。でも、全てのRedditを一時的でも自分のマシンに置きたくはないな。
トレントにはRedditのトップ40,000のサブのデータがあるよ。Watchful1がサブレディットごとにデータを分割してくれたおかげで、欲しいサブレディットだけをトレントからダウンロードできるんだ。
すごくクールなプロジェクトだね!ちょっと質問なんだけど、基盤となるPushshiftデータセットは新しいRedditデータで定期的に更新されてるの?(毎日/毎週/毎月)それとも、特定の日付までの固定の歴史的スナップショットなのかな?自己ホストする人たちが新しいコンテンツのために定期的に再ダウンロードする必要があるのか、アーカイブ専用なのか理解したいんだ。
2025年12月のデータはもうリリースされてるよ。通常は毎月リリースされるんだけど、2025年用に分割して再処理する必要があるんだ。最終的には、月ごとのアークティックシフトダンプからデータをインポートするサポートも追加するつもりだよ。 https://github.com/ArthurHeitmann/arctic_shift/releases アークティックシフト https://academictorrents.com/browse.php?search=RaiderBDev Watchful1 https://academictorrents.com/browse.php?search=Watchful1
それも無数のNSFWコンテンツが含まれてるの?
ライブデモを開いて、プログラミングのサブレディットに入ったら、まるで液体のクソを浴びせられた気分だった。 Redditがどれだけエッジローディな地獄だったか(今でも時々そうだけど)を忘れがちなんだよね。