Skip to main content
Skip to main content

Public Access on Zerops

Zerops offers three public access methods: zerops.app subdomains (dev only, 50MB upload limit), custom domains (production, needs IPv4/IPv6), and direct port access (TCP/UDP on 10-65435).

Access Methods​

1. Zerops Subdomains (.zerops.app)​

  • Shared HTTPS balancer (scalability bottleneck)
  • Max upload: 50 MB
  • Not for production — use for development/testing only
  • Auto-provisioned SSL
  • Enable it: set enableSubdomainAccess: true in the import YAML (works for all runtime/web types) to pre-configure intent; the first deploy (or the GUI toggle) activates the L7 subdomain route, and re-deploys never deactivate it.
  • In ZCP: zerops_deploy auto-enables the subdomain on the first deploy for eligible service modes (dev/stage/simple/standard/local-stage) and waits HTTP-ready — the deploy response carries subdomainAccessEnabled: true and the URL. zerops_subdomain enable is the explicit recovery/ops command if auto-enable was skipped (a worker / non-HTTP service, or launch-production which deliberately opts out in favor of a custom domain). zerops_discover shows current status (subdomainEnabled + subdomainUrl).
  • Port-specific subdomains: If HTTP ports are defined in zerops.yml, each port gets its own subdomain: {hostname}-{subdomainHost_prefix}-{port}.{subdomainHost_rest}. Example: hostname appdev, subdomainHost 1df2.prg1.zerops.app, port 3000 → actual URL https://appdev-1df2-3000.prg1.zerops.app. Port 80 omits the port suffix: https://appdev-1df2.prg1.zerops.app
  • Internal network fallback: Every service is accessible internally via http://{hostname}:{port} (e.g., http://appdev:3000). Use this to verify the app is running when subdomain access is uncertain — curl http://appdev:3000/health from the ZCP container or any other service in the project
  • Works for: nodejs, static, nginx, go, python, php, java, rust, dotnet, and all other runtime types

2. Custom Domains (Production)​

  • Per-project HTTPS balancer (2 containers, HA)
  • Round-robin load balancing + health checks
  • Upload limit: 512 MB default (client_max_body_size, configurable up to 2048m on a custom domain) — not a hard cap
  • Requires IP address assignment

3. Direct Port Access​

  • Available for: Runtime services, PostgreSQL
  • Port range: 10-65435 (80, 443 reserved)
  • Protocols: TCP, UDP
  • Configurable firewall: blacklist or whitelist per port

Gotchas​

  1. Dedicated IPv4 is a monthly subscription, never refunded: $3 per month. Releasing it frees the address right away, and a new activation may get a different address, so update the DNS A records. Activation, release and reuse of a paid period: Billing