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.
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# mail
|
||||
|
||||
A Debian VM running [mailcow](https://mailcow.email/) (`mail.nul.ie`) — the
|
||||
mail server for `nul.ie`. Declared in `colony`'s `my.vms.instances` but **not
|
||||
a NixOS system**: everything inside the VM is configured out of band.
|
||||
|
||||
- **Source (host-side only):** the `mail` instance in
|
||||
[`nixos/boxes/colony/vms/default.nix`](../../../nixos/boxes/colony/vms/default.nix)
|
||||
and the `90-vm-mail` network in
|
||||
[`nixos/boxes/colony/default.nix`](../../../nixos/boxes/colony/default.nix)
|
||||
- **Host:** VM on `colony`
|
||||
|
||||
## Role
|
||||
|
||||
- Runs the full mailcow stack (Postfix/Dovecot/SOGo/Rspamd) for `nul.ie`.
|
||||
Other colony services send through it as `mail.nul.ie` (e.g. Gitea, and the
|
||||
disabled Mastodon config).
|
||||
- 3 cores, 6 GiB RAM; `root` and `data` LVM disks (the `vm-mail-data` LV is
|
||||
included in `colony`'s `borgthin` backups).
|
||||
|
||||
## Networking
|
||||
|
||||
- Attaches to a dedicated, unbridged TAP (`vm-mail`, MAC
|
||||
`52:54:00:a8:d1:03`). `colony` puts the point-to-point address
|
||||
(`custRouting.mail-vm`) on the host side, link-routes the public /32
|
||||
`94.142.241.227` down the tap, and serves the IPv6 /64
|
||||
`2a0e:97c0:4d2:2000::/64` with RAs.
|
||||
- DNS: `mail-vm.ams1.int.nul.ie` (and `mail.nul.ie` publicly, incl. the PTR in
|
||||
estuary's reverse zone). `estuary` accepts traffic to the customer prefixes
|
||||
without per-port filtering; `colony` forwards it on ("trust for now").
|
||||
|
||||
## Notes
|
||||
|
||||
- ACME certificates are issued on `middleman` and pushed to the VM over SSH
|
||||
(`acme@mail.nul.ie mailcow-ssl-reload`, key `middleman/mailcow-ssh.key`);
|
||||
the VM's SSH host key is pinned at `.keys/mail-vm-host.pub`.
|
||||
Reference in New Issue
Block a user