Networking

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 none

lizard 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 web

Lizard 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 web

Lizard 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 confirmation

Change 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 web

Worker 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 web

Manage 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

Updated