auto: docs sync 2026-08-24T06:00:04+00:00

Files changed: engine/lint-report.md vault/.obsidian/workspace.json vault/docs/services/services.md vault/docs/software/caddy.md vault/docs/software/dns.md vault/projects/meshtastic-headscale-runbook.md vault/runbooks/expose-service-contabo.md vault/runbooks/expose-service-edge2.md vault/runbooks/expose-service-home.md
This commit is contained in:
echo6-autocommit 2026-08-24 06:00:04 +00:00
commit 1441234ef4
9 changed files with 82 additions and 41 deletions

View file

@ -10,13 +10,32 @@ related:
- [[expose-service-contabo]]
- [[usenet]]
- [[expose-service-edge2]]
updated: 2026-07-13
updated: 2026-08-24
---
# GoDaddy DNS Management
## Script Location
`~/bin/godaddy-dns.py`
`~/bin/godaddy-dns.py` on **cortex** (100.64.0.14). Restored 2026-08-24 — the
original copy was lost in a host rebuild and these docs pointed at a script
that no longer existed anywhere on the fleet for some time; that cost real
time mid-deploy. Python 3 standard library only, no pip installs.
## THE RECORD-SET TRAP
GoDaddy's API has two kinds of write endpoints for A records:
- `PUT /v1/domains/<domain>/records/A/<name>` — replaces only `<name>`. Safe.
- `PUT /v1/domains/<domain>/records/A` and `PUT /v1/domains/<domain>/records`
— **replace every record of that type on the whole domain.**
Both `k7zvx.com` and `echo6.co` front live production services (mail, auth,
forge, vpn, vault, matrix, element, and more). Calling one of the record-SET
endpoints to "add" a record would wipe every other A record on the zone.
`godaddy-dns.py` only ever uses the single-record endpoint to write, and does
not implement the record-set endpoints at all. `add-a` always reads the full
A-record list before and after and prints a diff, so you can see nothing
else changed.
## API Credentials
@ -36,29 +55,34 @@ Stored in `/home/zvx/projects/.ref/credentials` as:
arclightvanguard.com, echo6.co, echo6.org, happylittlellc.com, idahomesh.com, k7zvx.com, lpmesh.com, maliceinwonderland.org, matthewwayne.com, smugglersden.co, underdogs.cc
## Subcommands
`godaddy-dns.py` currently supports A records only:
- `list <domain>` — list all A records for a domain
- `get-a <domain> <name>` — show the A record(s) for one name
- `add-a <domain> <name> <ip> [--ttl SECONDS] [--dry-run]` — add/update a
single A record via the safe single-record endpoint; prints a before/after
diff of the whole domain's A records
There is no CNAME/MX/delete/multi-domain support — add-a is add-or-update
(PUT to the single-record endpoint), and there is no destructive delete or
record-set command by design (see the trap above).
## Usage Examples
```bash
# List all domains
godaddy-dns.py list-domains
# List records for a domain
# List all A records for a domain
godaddy-dns.py list echo6.co
# Add A record
# Look up one record
godaddy-dns.py get-a echo6.co www
# Add/update an A record
godaddy-dns.py add-a echo6.co www 199.6.36.163
# Add CNAME record
godaddy-dns.py add-cname echo6.co blog www.echo6.co
# Add MX record with priority
godaddy-dns.py add-mx echo6.co mail.echo6.co --priority=10
# Delete record
godaddy-dns.py delete echo6.co A www
# Configure MX for all domains
godaddy-dns.py setup-mail
# Preview a change without writing anything
godaddy-dns.py add-a echo6.co www 199.6.36.163 --dry-run
```
## Common Patterns