Skip to content

feat: Make domain/Cloudflare setup optional — support IP-only deployments #1

Description

@PhilippWu

Problem / Motivation

Currently, the configurator and provisioning scripts require a domain name and Cloudflare credentials to deploy the server. Users who want to quickly test the setup or who don't own a domain are blocked — they cannot use the stack at all.

Proposed Solution

Make the domain + Cloudflare configuration fully optional. The configurator should support an IP-only mode that:

  1. Skips all DNS/Cloudflare-related fields (domain, subdomain, email, CLOUDFLARE_API_TOKEN, CLOUDFLARE_ZONE_ID)
  2. Configures Coder and Caddy to use the server's public IP directly (e.g. http://178.104.180.64)
  3. Displays the list of required DNS records as a human-readable summary when the user provides a domain but no Cloudflare credentials, so they can create them manually

Acceptance Criteria

  • Configurator CLI: a prompt "Do you have a domain? (y/N)" — if N, skip all domain/Cloudflare fields
  • When domain is provided but Cloudflare credentials are omitted, show a formatted DNS record table (A record, CNAME etc.) for manual creation
  • infra/dns.sh: skip the Cloudflare API call when CLOUDFLARE_API_TOKEN is empty; log a reminder to create the DNS record manually
  • infra/proxy.sh: use http:// + server IP when no domain is configured (no TLS, no ACME challenge)
  • setup.sh: set CODER_ACCESS_URL to http://<IP>:3000 when no domain is set
  • cloud-init.example.yaml: add commented-out examples for both domain and IP-only mode
  • Docs: update deployment.md with an "IP-only quickstart" section

Notes

  • TLS/HTTPS is not possible without a domain; this is acceptable for the IP-only mode (dev/test use case)
  • This is a developer convenience feature — production deployments should always use a domain + TLS

Labels: enhancement, configurator, infra

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions