feat(matrix): homeserver を Conduit から Synapse に替える - #516
Merged
Conversation
ブリッジを 2 本から 10 本規模に増やすことにしたが、Conduit はその規模を載せる
場所として向いていない:
- Conduit 本家は止まっている。系譜は Conduit -> conduwuit (アーカイブ) ->
continuwuity で、動いていたのは 0.10.12。しかも 2026 年中頃の continuwuity で
「暗号化ブリッジが起動できない」「指定した localpart でユーザーが作られず
mautrix-telegram が落ちる」が修正されている。まさに踏みに行く場所だった。
- continuwuity への載せ替えも素直ではない。RocksDB のスキーマが分岐後で、
移行は一方通行。
- 決め手は登録方式。Conduit は appservice の登録を RocksDB に持ち admin room
経由でしか変えられない。だから matrix.nix は「ブリッジは宣言できない」と
書いてコンテナのまま置いていた。Synapse は登録を設定ファイルで読むので、
nixpkgs の services.mautrix-* モジュールがそのまま使えるようになる。
移行のコストはゼロだった。まだ誰も使っていない (RocksDB は 4MB、部屋も履歴も無い)。
使い始めてからでは同じ判断はできないので、ここで替える。
このコミットは土台だけ。使っていない Discord/Telegram のコンテナは一旦外し、
次から services.mautrix-* で宣言的に戻す。
細かいところ:
- DB は自分で作る。Synapse は C 以外の照合順序を拒否するが、このクラスタは
atuin が生やしたもので既定が ja_JP.UTF-8。ensureDatabases では作れないし、
initialScript はクラスタ初回作成時にしか走らない。
- registration_shared_secret は無いと起動しないので、無ければ生成する。
- ブリッジは大量のイベントを短時間に流すので rc_* を緩めてある。
- cloudflared の向き先を 6167 から 8008 へ。
gapul
added a commit
that referenced
this pull request
Aug 30, 2026
* feat(matrix): ブリッジ第1陣 (Discord/Signal/Instagram/Messenger) Synapse に替えた (#516) ので services.mautrix-* が使える。登録ファイルの生成と app_service_config_files への追加までモジュールがやるので、書くのは「誰がどこに 繋ぐか」だけでよい。Conduit のままならこの形にはできなかった。 評価で配線を確認: /var/lib/mautrix-discord/discord-registration.yaml /var/lib/mautrix-meta-instagram/meta-registration.yaml /var/lib/mautrix-meta-messenger/meta-registration.yaml /var/lib/mautrix-signal/signal-registration.yaml Instagram と Messenger は同じ mautrix-meta の別インスタンス。network.mode で 分かれる。ポート・appservice.id・bot 名は必ずずらす (揃えると片方の登録が もう片方を上書きする)。 permissions の既定は { "*" = "relay" } で誰でも relay として使えるので閉じた。 libolm を許可した。非推奨で insecure の印が付いているが、使われるのは ブリッジ側の E2EE だけで、そこは有効にしていない。goolm への逃げ道は mautrix-discord のパッケージが 0.7.7 と古くフラグを持たないので通らず、 discord のためにどのみち許可が要る。E2EE を有効にするときに判断をやり直す。 この陣に入れていないもの: telegram — api_id/api_hash が要る。nix の settings に書くと store が誰でも 読めるので、sops から environmentFile で渡す形にしてから足す。 twitter/linkedin/gmessages/slack/line/imessage — モジュールが無い。第2陣以降。 teams — 個人アカウント向けの実験実装しか無く、会社テナントは Azure の アプリ登録が要る (許可の話になる)。 simplex — 構造的に無理。識別子を持たない設計なので puppeting が成立しない。 * style(matrix): statix に合わせて `{ ... }:` を `_:` にする pre-commit は statix を除外していて CI の ci-lint.sh だけで走るので、 ローカルをすり抜ける。既知の罠。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
なぜ
ブリッジを 2 本から 10 本規模に増やすことにした。Conduit はその規模を載せる場所として向いていない。
最後の一点が大きい。
matrix.nixは自分で「ブリッジは宣言できない」と書いてコンテナのまま置いていた。Synapse は登録を設定ファイルで読むので、そこが解ける。 実際 nixpkgs にモジュールがある:移行のコストはゼロ
まだ誰も使っていない。RocksDB は 4MB で、部屋も履歴も無い。使い始めてからでは同じ判断はできないので、ここで替える。
server_nameはgapul.netのまま。well-known と CNAME はそのまま通る。このコミットの範囲
土台だけ。 使っていない Discord/Telegram のコンテナは一旦外し、次から
services.mautrix-*で宣言的に戻す。1 つの変更に土台の入れ替えとブリッジの載せ替えを混ぜない。細かいところ
database.createLocallyで生やしたもので既定がja_JP.UTF-8。ensureDatabasesでは作れず、initialScriptはクラスタ初回作成時にしか走らないregistration_shared_secretは無いと起動しないので、無ければ生成するrc_*を緩めてある古い Conduit のデータ (
/var/lib/private/matrix-conduit) は消していない。戻したくなったときの保険。