Validation: DNS A record + Caddy block for paldocs.app
Verdict: PASS
Ticket
ldraney/pal-e-platform#490 — DNS A record + Caddy reverse proxy block for paldocs.app, making the Rails app publicly accessible via HTTPS.
Merged via PR #494: "feat: add DNS A record and Caddy site for paldocs.app"
Board item: #1703 on
board-paldocsEnvironment
Production — public internet via Hetzner edge VPS (178.156.129.142). Caddy reverse proxy on edge VPS forwarding to
paldocs.tail5b443a.ts.net (Tailscale). GoDaddy DNS A record managed by OpenTofu in pal-e-platform.Checks
| # | Criterion | How Verified | Result | Evidence |
|---|---|---|---|---|
| 1 | <code>godaddy_dns_record.paldocs_a</code> resource added to <code>dns.tf</code> | DNS resolution + PR #494 merged | PASS | <code>getent hosts paldocs.app</code> returns <code>178.156.129.142</code> — same IP as palinks.app and landscaping-assistant.app (Hetzner edge VPS) |
| 2 | <code>tofu apply</code> succeeds and DNS propagates | <code>getent hosts paldocs.app</code> | PASS | DNS resolves globally to <code>178.156.129.142</code>. Record is live and propagated. (Cannot run <code>tofu plan -lock=false</code> from validation env — no terraform workspace access — but DNS resolution proves apply succeeded.) |
| 3 | Caddy block added on edge VPS for paldocs.app → paldocs.tail5b443a.ts.net | <code>curl -sI https://paldocs.app</code> | PASS | Response header <code>via: 2.0 Caddy</code> confirms Caddy is proxying. HTTP/2 200 returned with Rails session cookie (<code>_pal_e_docs_rails_session</code>). |
| 4 | <code>curl https://paldocs.app</code> returns 200 with paldocs Rails app | <code>curl -s -o /dev/null -w "%{http_code}" https://paldocs.app</code> | PASS | HTTP 200. HTML body contains <code><title>Projects — pal-e-docs</title></code> with full Rails asset pipeline (Turbo, Stimulus, application CSS). Sub-route <code>/projects</code> also returns 200. |
| 5 | TLS certificate auto-provisioned by Caddy | <code>curl -v https://paldocs.app</code> TLS output | PASS | TLSv1.3 / TLS_AES_128_GCM_SHA256. Subject: <code>CN=paldocs.app</code>. Issuer: <code>Let's Encrypt (YE1)</code>. Expires: Oct 5, 2026. SSL verify result: 0 (valid). |
Regression Check
Other domains on the same Hetzner edge VPS still healthy:
palinks.app: resolves to 178.156.129.142, HTTPS returns HTTP 200, valid TLSlandscaping-assistant.app: resolves to 178.156.129.142, HTTPS returns HTTP 302 (auth redirect — expected), valid TLS
No regressions detected. Adding the paldocs.app Caddy block did not affect existing sites.
Limitations
Could not execute
tofu plan -lock=false to verify zero drift — no terraform workspace access from validation environment. DNS resolution to the correct Hetzner edge IP is accepted as equivalent evidence that the GoDaddy DNS record was successfully applied via OpenTofu.Discovered Issues
None.