Files
runbooks/dns-change-sheet.md
T
inference-bot d1ff7fb0ff dns: add the migration change sheet; correct AAAA scope, close the mount unknown
Live zone inventory: 19 A + 18 AAAA records, all TTL 3600 (the lower values
seen on some answers are cache countdowns). The AAAA scope was understated
in the runbook - it is 18 hostnames, not 3. No CAA records, so no CA
restriction to update. The /var/lib/nextcloud host mount resolves to 3 MB of
regenerable thumbnails, so it is no longer an open unknown.
2026-10-30 17:48:22 +00:00

83 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DNS change sheet — Cloudron migration (Hostinger → Infomaniak)
Prepared 2026-10-30 from a live zone inventory (`zone_inventory.json`, 41 records).
Registrar: **yoursrs.com** (NS for domains.coop). Cloudron cannot manage these records;
every change below is manual. **Nothing here is time-sensitive except the TTL lowering.**
## Counts, so the switch is not underestimated
- **19 A records** → `179.199.135.72`
- **18 AAAA records** → `2a02:4780:6e:83fd::1` (Hostinger's range)
- 1 MX, 1 SPF TXT, 1 DKIM TXT, 1 DMARC TXT
- **No CAA records**, so no certificate-authority restriction to update.
- **Configured TTL is 3600 s on every record.** (Lower these a day early; the 1090–1204 s
seen on some answers are cache countdowns, not zone values.)
## Records to change at cutover
| Name | Type | Current | Set to |
|---|---|---|---|
| `chat-legacy.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `chat.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `cloud.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `dashboard.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `docs.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `email.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `forum.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `gateway.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `git.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `matrix.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `my.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `newsletter.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `panel.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `portal.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `search.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `status.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `vault.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `www.inference.coop` | A | `179.199.135.72` | `<new Infomaniak IPv4>` |
| `chat-legacy.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `chat.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `cloud.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `dashboard.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `docs.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `email.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `forum.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `gateway.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `git.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `matrix.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `my.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `newsletter.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `panel.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `portal.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `search.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `status.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
| `vault.inference.coop` | AAAA | `2a02:4780:6e:83fd::1` | `<new IPv6 — or delete every AAAA>` |
`www` has no app behind it in the Cloudron inventory — confirm whether it is an alias,
a redirect, or stale before touching it.
## Records that must NOT change, but must be re-verified after the restore
| Name | Type | Value | Why |
|---|---|---|---|
| `inference.coop` | MX | `10 my.inference.coop.` | Follows the A record; no MX edit needed. |
| `inference.coop` | TXT (SPF) | `v=spf1 a:my.inference.coop ~all` | Hostname-based — survives the IP change. |
| `cloudron._domainkey` | TXT (DKIM) | `v=DKIM1; t=s; p=MIGfMA0…` | **Must match the key inside the restored mail app's data.** Mismatch + DMARC below = silently discarded mail. |
| `_dmarc` | TXT | `v=DMARC1; p=reject; pct=100` | Reject policy: misaligned mail is DISCARDED, not junked. |
## Sequence (see the main runbook §4)
1. A day early: set every A and AAAA TTL to 300 s.
2. At cutover: point A records at the new IP; repoint or **delete** every AAAA record
(decide in advance — an IPv6-capable client or homeserver left on Hostinger's address
reaches the old box even after the A switch).
3. Verify with the resolver set below, not one resolver.
```
for h in inference.coop my.inference.coop matrix.inference.coop gateway.inference.coop; do
dig +short A $h @1.1.1.1; dig +short A $h @8.8.8.8; dig +short AAAA $h @1.1.1.1
done
```