Networking
On Lizard, services in the same project reach each other over a private network at <service>.lizard.internal, on any port, with no public domain. Every web service also gets a generated *.onlizard.com domain with automatic TLS when it deploys. You can also attach your own hostname. Managed Postgres and Managed Redis join the same private network. Jump to private networking, custom domains or ports.
Generated domains
Lizard creates a default domain for each service in the form <name>-<suffix>.onlizard.com. Older services keep <words>.<region>.onlizard.com. Show it:
lizard domain # show the service's current domain
lizard domain generate # claim a *.onlizard.com subdomain if the service has nonelizard domain generate returns the existing generated domain when there is one, and fails while the service has a custom domain. Files served from Managed Object Storage use a gateway host instead: s3-eu-west-1.onlizard.com or s3-us-east-1.onlizard.com.
Attach a custom domain
Pass the hostname as a positional argument. There is no add subcommand:
lizard domain app.example.com --service webLizard returns the DNS records to create (a CNAME for the hostname and a TXT record for verification). Add them at your DNS provider.
Verify
Once DNS has propagated, activate the domain:
lizard domain verify app.example.com --service webLizard checks the TXT record, activates the domain and provisions TLS.
Remove a domain
lizard domain delete app.example.com --service web
lizard domain rm app.example.com --service web --yes # alias, skip confirmationChange the port your service listens on
Domains route to the service’s container port. If your service listens on another port, change the container port and redeploy:
lizard port 8080 --service web
lizard redeploy --service webWorker services
A worker-mode service (containerPort=0) may still show a generated domain, but it serves nothing: there’s no listener and no load-balancer route. Don’t attach a custom domain to a worker.
Private networking
Services in the same project reach each other at <service>.lizard.internal, on any port the service listens on, without a public domain. Reference the hostname as ${{api.LIZARD_PRIVATE_DOMAIN}}. Managed Postgres and Managed Redis expose DATABASE_PRIVATE_URL and REDIS_PRIVATE_URL on the same network; see the Postgres connection string. These names resolve only inside the project, and services in other projects cannot reach these addresses. Traffic stays inside Lizard’s network, so plain http:// is fine between services.
lizard secrets set API_URL='http://${{api.LIZARD_PRIVATE_DOMAIN}}:8080' --service webManage in the dashboard
Open a service in the dashboard (lizard open) and go to Settings → Networking. It shows each domain’s verification and DNS status and lets you add or remove hostnames.
See also
lizard domain: the full command reference.- Regions: co-locating services and addons for latency.
- From prototype to a SaaS people pay for: checks for a generated app before accepting customers.
Updated