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: truein 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_deployauto-enables the subdomain on the first deploy for eligible service modes (dev/stage/simple/standard/local-stage) and waits HTTP-ready — the deploy response carriessubdomainAccessEnabled: trueand the URL.zerops_subdomain enableis 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_discovershows 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: hostnameappdev, subdomainHost1df2.prg1.zerops.app, port 3000 → actual URLhttps://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/healthfrom 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
- 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