1 ポイント 投稿者 GN⁺ 2025-03-03 | 1件のコメント | WhatsAppで共有
  • セルフホストの Firefox Sync サーバー設定

    • Firefox から LibreWolf に移行した後、セルフホストの Firefox Sync サーバーに関心を持つようになった。
    • 最初は Mozilla の Sync Server リポジトリを見つけたが、メンテナンスは中断された状態だった。
    • Rust ベースの syncstorage-rs に切り替えて進めることにした。
  • Docker の複雑さと混乱

    • Docker のドキュメントには、grpcioprotobuf のバージョン一致の問題や手動コピーの指示など、混乱を招く部分があった。
    • syncstorage-rs-docker リポジトリを見つけ、より簡単な Docker 設定にたどり着いた。
  • サーバー設定: Docker Compose と MariaDB

    • docker-compose.yaml ファイルに必要なサービスを追加した。
    • データベースのパスワード設定時には特殊文字を避けることが重要だった。
    • MariaDB コンテナを実行し、初期化スクリプトを実行してデータベースを初期化した。
    • スタック全体をオンラインにした。
  • Caddy を使ったリバースプロキシ構成

    • Caddy のリバースプロキシを更新し、新しい Syncserver を向くようにした。
    • DNS エントリを更新し、プロキシを再起動してサーバーを稼働させた。
  • 直面した課題

    • MariaDB コンテナの再起動時にデータ永続性の問題が発生した。
    • Docker イメージと中間ファイルにより、サーバーのストレージ容量不足の問題が発生した。
    • 正しい設定手順を見つけるのに時間がかかった。
  • 最後に

    • セルフホストの Firefox Sync サーバー設定は簡単な作業ではない。
    • 公式ドキュメントはわかりにくかったが、syncstorage-rs-docker リポジトリのおかげで実現できた。
    • 約 2 時間かかったが、それだけの価値はあった。

1件のコメント

 
GN⁺ 2025-03-03
Hacker Newsの意見
  • Mozilla のインフラを使って、認証、メール、アカウントのメタデータなどのサービスを支える構成になっている
  • アカウント移行が可能であれば、後からこれに接続することもでき、すべてのコンポーネントをセルフホストすることも可能だが、やや複雑になる
    • ドキュメントと開発体験は改善されつつある
  • Garuda Linux は FireDragon ブラウザ向けに独自の Firefox Sync サーバーをホスティングしている
    • Rust ベースではない旧版の sync サーバーを使っている
  • 個人的な経験を共有し、以前の Python 2 で書かれたバージョンのほうがずっと良かったと述べている
    • Docker や Python は不要だが、現状では MySQL が必要で、sqlite 対応にはボランティアが取り組んでいる
    • 主なコントリビューターは、メトリクス収集の正当化を書くことと、新しいメトリクスフレームワークの導入に注力している
  • Canvas Browser Extensions は、ブラウザタブをセルフホストされた仮想ディレクトリツリーに同期することを目指している
    • lmdb と roaring bitmap インデックスを使っており、rxdb や pouchdb を使うべきだったと振り返っている
    • サーバーコンポーネントは書き直し中で、新しいツールのおかげで、このアイデアの最大の制約は時間になっている
  • Mozilla を信頼してデータを預けているが、認証設定が複雑なため、公開ホスティングサービスを使うほうがよいかもしれない
  • Firefox Sync に似た Floccus は、ブックマークとタブの同期だけが必要なら設定が簡単である
  • MySQL と Spanner が現在サポートされている DB エンジンで、sqlite と Postgres 対応に向けた取り組みが進んでいる
    • マルチユーザーインスタンスは Postgres で保存するほうがよいかもしれない
  • Firefox Sync は E2E 暗号化されているのに、プライバシー面での利点が何なのかと疑問を呈している
  • セルフホストのソリューションは複雑すぎるように見え、SQLite を使うシンプルな同期サーバー実装が理想的だとしている
  • go-syncstorage は完全にはデプロイされていないものの、数十万人のユーザーとともにテストされており、安定している