- Webブラウザ DilloプロジェクトがGitHubから自己ホスティングサーバーへ移行を進めている
- GitHubのJavaScriptへの依存、単一管理構造、低速なパフォーマンスなどが主な移行理由として挙げられている
- 新サーバーはdillo-browser.orgドメインで運用され、cgitベースの軽量Gitフロントエンドと自作のバグトラッカー**『buggy』**を使用
- すべてのデータはgitリポジトリで管理され、CodebergとSourcehutにミラーされ、データ喪失リスクを最小化している
- OpenPGP署名によりDNS喪失時でも信頼性を保てるよう設計され、プロジェクトの独立性と継続性が強化される
背景
- Dilloの元のサイトは以前はdillo.orgで、Mercurialリポジトリ、メールサーバー、バグトラッカー、メーリングリストのアーカイブを含んでいた
- 2022年にドメインを失い、第三者がAI広告だらけの類似サイトを開設
- 一部の資料は復旧したが完全ではない
- この経験を踏まえ、単一サイト依存を避け、分散型のバックアップ構成を構築することにした
- 当初はGitHubにコードをアップロードしたが、長期的には適していないと判断した
GitHubの問題点
- GitHubはCIワークフローとリポジトリ管理に有用だったが、いくつかの制約がある
- JavaScriptがないとフロントエンドが動作せず、DilloブラウザーでIssueやPRを閲覧できない
- ページがリソースを過剰に使用し、単純なHTMLレンダリングでも不要な負荷が発生
- 単一管理主体によってアカウントが停止されるリスクがあり、データアクセスが遮断される可能性がある
- プラットフォームが次第に遅くなり、より高速なインターネット接続を要求している
- GitHubの**「プッシュモデル」通知方式**は、オフライン中心の開発方式と相性が悪い
- 非開発者ユーザー比率の高いプロジェクトでのコミュニティ運用ツール不足により開発者の疲弊が増えている
- GitHubがLLMおよび生成AI中心にシフトする中、各サイトがLLMクローラーをブロックするためにJavaScriptウォールやブラウザフィンガープリント追跡を強化
- その結果、Dilloユーザーのアクセスがブロックされる副作用が発生
自己ホスティングの構築
- 既存のリポジトリサービスは単一点障害の排除と軽量運用を同時に満たすことができなかった
- そのため直接サーバーを運用し、複数のミラーを保持することを決定した
- dillo-browser.orgドメインを取得し、小型VPSサーバーを構築
- 想定より安定的に運用されており、主にAIボットトラフィックを処理している
- Gitフロントエンドとしてcgitを選択
- バグトラッカーは独自開発の**『buggy』**を使用
- メーリングリストアーカイブは3つの外部サービスに分散保存され、将来的には自前のコピーを追加予定
ミラー設定
- すべての重要データがgitリポジトリ形式で管理され、CodebergとSourcehutにミラーされている
- 特定のリポジトリが停止しても低い移行コストで他のミラーに切り替え可能
- 単一障害点はDNS(dillo-browser.org)
- DNS喪失時にはメーリングリスト、Fediverse、IRCなどを使ってユーザーへ通知可能
- データはgitに複製されているため重大な損失は発生しない
OpenPGP署名
- 本ページは**Rodrigo Arias MalloのGPGキー(32E65EC501A1B6FDF8190D293EE6BA977EB2A253)**で署名されている
- Dilloの最新リリースと同じキーで、GitHubアカウントにも登録されている
- 署名ファイル(index.html.asc)は
<link rel=signature>にリンクされている
- OpenPGP署名はDNS喪失時でも信頼を維持可能
- TLS証明書チェーンの代わりに署名ベースの信頼で所有権を証明
- すべてのgitミラーに署名を含めることでデータ喪失耐性を強化
移行の進行と見通し
- GitHubリポジトリは即時には削除されず、移行完了まで更新が継続される
- 完了後はリポジトリを**「archived」状態**に変更し、公式サイトで通知する予定
- 既存のコミットとリリースファイルは下位互換性維持のため保持
- 新インフラは低コストと低消費電力で独立運用可能
1件のコメント
Hacker Newsの意見
数年前からGitLabをセルフホストの代替として使ってきた。気に入ってはいるが、リソース消費が激しい
最近はCodebergチームが作ったForgejoをテスト中だが、本当に素晴らしい
最大の違いはメモリ使用量だ。GitLabはRuby on Railsベースなので複数のサービスが同時に動くが、ForgejoはGoで書かれた単一バイナリ構成だ
GitLabは16GB VMのメモリを徐々に使い切ってしまうが、Forgejoはサーバーとrunnerを一緒に動かしても300MB程度しか使わない
GraphQLはないが、REST APIで十分よさそうだ
giteaとforgejoの違いはよく分からないが、Forgejoの比較ドキュメントを見ると、2022年にガバナンス問題でsoft forkされたようだ
Goベースのシンプルな構造なので、保守とコストが非常に少ない。社内ツールもForgejoの上に直接構築した
オンプレミス運用なので、インターネットが切れても開発とCIが止まらない。パッケージマネージャーのキャッシュもサポートしており、依存関係の管理がしやすい
GitHubよりダウンタイムが10分の1だったし、その大半も計画メンテナンスだった
GitHubの可用性のほうが高いと主張する投稿を見ると笑ってしまう
新しいリポジトリを作るときは
git init --bareで終わり、バックアップも自動で回る一人で開発するなら、UIは別に必要ないと感じる
GitHub ActionsよりGitLab式CIのほうがずっと良いと思う。GitHubは人気に後押しされて標準になったが、設計はいまひとつだ
共有ファイルシステムだけでもスケールとバックアップが簡単だ
地域で数学クラブを運営しているが、子どもたちがLaTeXとPythonの課題を提出するときにForgejoを使っている
ログイン管理やパスワード初期化が簡単なので、教育用途としても非常に有用だ
GitHubのプッシュ通知モデルが嫌で、自分で確認するときだけ更新を見たいという意見に共感する
メールフィルタリングを使えば、プッシュ通知をプルモデルのように変えられる。専用フォルダに通知を集めておいて、必要なときだけ見ればよい
シンプルな**バグトラッカー「buggy」**を自作した人の話が興味深い。MarkdownをパースしてHTMLページを生成するCツールだという
ハッカー精神が生きている
「プッシュモデル」と「プルモデル」の違いを尋ねる質問があった
今はいろいろなGitHub代替が噴き出している分散化(ディアスポラ)段階だと思う
数か月以内に主流が一つに整理される可能性もある。有名企業や著名人が新しいプラットフォームを出せば、市場を主導するかもしれない
GitHubを離れるプロジェクトはごく少数なので、まだその段階ではないと思う
むしろ**再分散化(re-decentralization)**が起きている。各自が自分の統制権、管轄、ワークフローに合ったforgeを選ぶ時代だ
DilloプロジェクトをTangledに招待したい → tangled.org
GitHubで最大の問題は遅くなった使い勝手だと思う
コード閲覧はgithub.devで済ませているが、PRとActionsは依然として遅くてもどかしい
VMにForgejoをインストールしたいなら、サーバーとrunnerをまとめてセットアップできるスクリプトを作ってある → easyforgejo
この話題に専門性はないが、興味深く読んだ
バージョン管理システムを一つセットアップするだけでも、こんなに多くの要素があることに驚いた
自分はFossilを使っているが、小規模組織で開発者・システム管理者・サポート担当を一人で兼任するときには、はるかにシンプルだ
GitHubのdeploy keyの制約も不便だ。複数のアプリやサーバーを運用すると、鍵をそれぞれ別に設定しなければならず面倒だ