Spike: Route palinks.app domain to production #15

Closed
opened 2026-06-07 15:20:12 +00:00 by ldraney · 2 comments
Owner

Type

Spike

Lineage

Standalone — Lucas purchased palinks.app on GoDaddy (2026-06-07). Need to determine how to point it at the production instance.

Repo

Multiple — pal-e-platform, pal-e-services, pal-e-deployments, palinks

Question

What is the right approach to serve palinks from the palinks.app custom domain?

  • Can Tailscale funnel serve a custom domain natively, or is it locked to *.tail5b443a.ts.net?
  • Should GoDaddy just 301 redirect to palinks.tail5b443a.ts.net, or should palinks.app be the canonical URL?
  • If canonical: who terminates TLS for palinks.app? Tailscale funnel? cert-manager? An ingress controller?
  • What changes are needed in each repo?
    • pal-e-platform: Tailscale operator config, cert management
    • pal-e-services: Terraform provisioning (funnel ingress, DNS records?)
    • pal-e-deployments: Kustomize overlay, Rails config.hosts, assume_ssl
  • What's the cost/complexity tradeoff between redirect vs canonical?

Deliverables

  • docs/custom-domain.md created with findings, architecture decision, and tradeoffs
  • Follow-up tickets created for the chosen approach (one per repo that needs changes)

Time-box

2 hours

  • palinks — the service being routed
  • pal-e-platform — Tailscale operator lives here
  • pal-e-services — Terraform provisioning for all services
  • pal-e-deployments — k8s manifests and secrets
### Type Spike ### Lineage Standalone — Lucas purchased `palinks.app` on GoDaddy (2026-06-07). Need to determine how to point it at the production instance. ### Repo Multiple — `pal-e-platform`, `pal-e-services`, `pal-e-deployments`, `palinks` ### Question What is the right approach to serve palinks from the `palinks.app` custom domain? - Can Tailscale funnel serve a custom domain natively, or is it locked to `*.tail5b443a.ts.net`? - Should GoDaddy just 301 redirect to `palinks.tail5b443a.ts.net`, or should `palinks.app` be the canonical URL? - If canonical: who terminates TLS for `palinks.app`? Tailscale funnel? cert-manager? An ingress controller? - What changes are needed in each repo? - `pal-e-platform`: Tailscale operator config, cert management - `pal-e-services`: Terraform provisioning (funnel ingress, DNS records?) - `pal-e-deployments`: Kustomize overlay, Rails `config.hosts`, `assume_ssl` - What's the cost/complexity tradeoff between redirect vs canonical? ### Deliverables - [ ] `docs/custom-domain.md` created with findings, architecture decision, and tradeoffs - [ ] Follow-up tickets created for the chosen approach (one per repo that needs changes) ### Time-box 2 hours ### Related - `palinks` — the service being routed - `pal-e-platform` — Tailscale operator lives here - `pal-e-services` — Terraform provisioning for all services - `pal-e-deployments` — k8s manifests and secrets
Author
Owner

Scope Review: NEEDS_REFINEMENT

Review note: review-1377-2026-06-07

Spike template is fully complete and well-scoped. Three traceability gaps found -- all are missing backing notes in pal-e-docs, not issue body problems:

  • [SCOPE] No user story for story:custom-domain in docs/user-stories.md or pal-e-docs. Create a US-11 entry (e.g. "As a user, I want to access palinks at palinks.app so that I have a memorable, professional URL").
  • [SCOPE] No project-palinks note exists in pal-e-docs. Create it with a user-stories section.
  • [SCOPE] No arch-palinks architecture note exists in pal-e-docs. Create it for the palinks component.
## Scope Review: NEEDS_REFINEMENT Review note: `review-1377-2026-06-07` Spike template is fully complete and well-scoped. Three traceability gaps found -- all are missing backing notes in pal-e-docs, not issue body problems: - **[SCOPE]** No user story for `story:custom-domain` in `docs/user-stories.md` or pal-e-docs. Create a US-11 entry (e.g. "As a user, I want to access palinks at palinks.app so that I have a memorable, professional URL"). - **[SCOPE]** No `project-palinks` note exists in pal-e-docs. Create it with a user-stories section. - **[SCOPE]** No `arch-palinks` architecture note exists in pal-e-docs. Create it for the palinks component.
Author
Owner

Scope Review: READY

Review note: review-1377-2026-06-07-b

Re-review passes. All 3 SCOPE issues from previous review resolved:

  • project-palinks note created with story:custom-domain in user-stories section
  • arch-palinks architecture note created in pal-e-docs
  • Full traceability triangle verified (story label + note, arch label + note, Forgejo issue open)

Template complete, file targets valid, no dependencies, no decomposition needed.

## Scope Review: READY Review note: `review-1377-2026-06-07-b` Re-review passes. All 3 SCOPE issues from previous review resolved: - `project-palinks` note created with `story:custom-domain` in user-stories section - `arch-palinks` architecture note created in pal-e-docs - Full traceability triangle verified (story label + note, arch label + note, Forgejo issue open) Template complete, file targets valid, no dependencies, no decomposition needed.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/palinks#15
No description provided.