Files
jackos1998 d51f2d62b6 docs: Document the deployment
Add a top-level README mapping the boxes and a full docs/ tree: topic
pages (architecture, networking, deployment), per-site box pages for
colony and home with containers nested under their hosts, remote and
mobile boxes, the installer, and the home switch fabric reference
(folded in from home-switches.md, with AGENTS.md and code comments
retargeted to its new home). Box pages carry marked assignment tables
that CI regenerates from nixos.allAssignments.

AGENTS.md points at the new docs and keeps its terse agent version of
the mechanics, referring to the topic pages for depth.
2026-07-26 19:16:43 +01:00

2.4 KiB

chatterbox

The Matrix homeserver for nul.ie (Synapse) and its bridges to other chat networks. middleman fronts it as matrix.nul.ie for clients and on :8448 for federation.

Role

  • matrix-synapseserver_name = "nul.ie", public_baseurl = https://matrix.nul.ie, Element at element.nul.ie as the web client. Listens on [::]:8008 (client + federation resources, x_forwarded) with a localhost manhole on :9000. Registration and guest access are disabled; uploads up to 1024M with dynamic thumbnails and URL previews enabled (previews are limited to middleman's addresses as the fetch proxy).
  • heisenbridge — IRC bridge, owner @dev:nul.ie, exclusive @irc_* user namespace.
  • mautrix-whatsapp — WhatsApp bridge (appservice whatsapp2, !wa commands).
  • mautrix-meta — two instances, messenger (fbm2_*, !fbm) and instagram (ig_*, !ig), both with backfill enabled.
  • All three mautrix bridges use Postgres on colony-psql (URIs in their secret env files), require end-to-end encryption by default, and double-puppet onto nul.ie via the shared doublepuppet.yaml appservice registration (an age secret).
  • The firewall allows 8008 (Synapse) and 8009 besides netdata.

Network assignments

Name Assignment IPv4 IPv6 Domain Notes
chatterbox-ctr internal 10.100.2.5/24 gw 10.100.2.1 2a0e:97c0:4d2:12::5/64 ams1.int.nul.ie

Notes

  • Synapse's real database config lives in the chatterbox/synapse.yaml age secret — options only merge at the top level, so the base config carries a dummy sqlite3 block to satisfy the module defaults. The signing key is also an age secret.
  • olm-3.2.16 is allowed via permittedInsecurePackages (a nixpkgs E2EE library issue).
  • The bridge services get ffmpeg on their PATH for GIF→video conversion.

Notable config files