Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion apps/docs/content/guides/backup.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Backup on Zerops"
description: "Zerops auto-backs up databases and storage daily (00:00-01:00 UTC) with X25519 encryption; backups are retained for 7 days minimum after service/project deletion."
---


## Keywords
backup, restore, snapshot, daily backup, cron backup, encryption, retention, backup schedule

Expand Down
3 changes: 1 addition & 2 deletions apps/docs/content/guides/build-cache.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Build Cache"
description: "Zerops uses a two-layer build cache: base layer (OS + prepareCommands) and build layer (buildCommands output). The `cache:` attribute in zerops.yml controls which files persist between builds. Changing `build.os`, `build.base`, `build.prepareCommands`, or `build.cache` invalidates both layers (cascade)."
---


## Keywords
build cache, cache, invalidation, prepareCommands, buildCommands, base layer, build layer, node_modules, vendor, cache paths, cache true, cache false, build speed, build optimization, two-layer cache, cascade invalidation

Expand Down Expand Up @@ -75,7 +74,7 @@ Any change to these zerops.yml fields invalidates **both layers**:

| Runtime | Recommended `cache:` paths |
|---------|---------------------------|
| Node.js / Bun | `node_modules`, `.next`, `.turbo`, `package-lock.json` |
| Node.js / Bun | `node_modules`, `.next`, `.turbo`, `package-lock.json`, `bun.lock` |
| Go | `cache: true` (modules live outside /build/source) |
| PHP | `vendor`, `composer.lock` |
| Python | `cache: true` (pip installs globally) or `.venv` |
Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/cdn.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "CDN on Zerops"
description: "Zerops CDN has 6 global regions with a **fixed 30-day cache TTL** (HTTP Cache-Control headers are ignored by CDN but still affect browsers). Built on Nginx + Cloudflare geo-steering."
---


## Keywords
cdn, cache, edge, content delivery, static assets, object storage cdn, geo-steering, purge, cache invalidation

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/choose-cache.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Choosing a Cache on Zerops"
description: "**Use Valkey.** KeyDB development has stalled and is effectively deprecated on Zerops."
---


## Keywords
cache, redis, valkey, keydb, in-memory, session, key-value, choose cache, which cache

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/choose-database.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Choosing a Database on Zerops"
description: "**Use PostgreSQL** for everything unless you have a specific reason not to. It's the best-supported database on Zerops with full HA, read replicas, and pgBouncer."
---


## Keywords
database, postgresql, mariadb, clickhouse, sql, relational, columnar, analytics, postgres, mysql, choose database, which database

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/choose-queue.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Choosing a Message Queue on Zerops"
description: "**Use NATS** for most cases (simple, fast, JetStream persistence). Use **Kafka** only for enterprise event streaming with guaranteed ordering and unlimited retention."
---


## Keywords
queue, message queue, kafka, nats, event, stream, pub-sub, broker, choose queue, which queue, messaging

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/choose-runtime-base.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Choosing a Runtime Base on Zerops"
description: "**Use Alpine** as the default base for all services. Use Ubuntu only when you need system packages not available in Alpine. Use Docker only for pre-built images."
---


## Keywords
alpine, ubuntu, docker, container, base image, linux, runtime base, os, choose base, which container

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/choose-search.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Choosing a Search Engine on Zerops"
description: "**Use Meilisearch** for simple full-text search. Use **Elasticsearch** for advanced queries or HA requirements. Use **Qdrant** for vector/AI search."
---


## Keywords
search, elasticsearch, meilisearch, typesense, qdrant, vector, full-text, choose search, which search engine

Expand Down
3 changes: 0 additions & 3 deletions apps/docs/content/guides/ci-cd.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "CI/CD on Zerops"
description: "Zerops supports GitHub/GitLab webhook triggers (new tag or push to branch) and GitHub Actions / GitLab CI via `zcli push` with an access token."
---


## Keywords
ci cd, github, gitlab, github actions, gitlab ci, webhook, automatic deploy, trigger, pipeline, continuous deployment, zcli push, jenkins, circleci, generic ci

Expand All @@ -20,7 +19,6 @@ Zerops supports GitHub/GitLab webhook triggers (new tag or push to branch) and G

### GitHub Actions
```yaml
# .github/workflows/deploy.yaml
name: Deploy
on: push
jobs:
Expand Down Expand Up @@ -59,7 +57,6 @@ Service detail → Build, Deploy, Run → Stop automatic build trigger.
## GitLab CI

```yaml
# .gitlab-ci.yml
deploy:
stage: deploy
image: ubuntu:latest
Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/cloudflare.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Cloudflare Integration with Zerops"
description: "Always use **Full (strict)** SSL mode in Cloudflare — \"Flexible\" causes redirect loops. Shared IPv4 with Cloudflare proxy is not recommended."
---


## Keywords
cloudflare, dns, ssl, tls, proxy, cname, aaaa, redirect loop, full strict, acme, wildcard domain, cloudflare ssl

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/deployment-lifecycle.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Deployment Lifecycle"
description: "Zerops build & deploy pipeline: temporary build container runs prepareCommands + buildCommands, uploads artifact via deployFiles, then deploys to runtime containers with optional readiness checks. Default is zero-downtime rolling deployment. Build has a 60-minute timeout. The pipeline emits events trackable via `zerops_events`."
---


## Keywords
deploy, build, pipeline, lifecycle, build container, deploy process, rolling deployment, zero downtime, readiness check, health check, temporaryShutdown, build timeout, artifact, deploy files, prepareCommands, buildCommands, init commands, start command, container replacement, application version, build cancel, runtime prepare

Expand Down
3 changes: 0 additions & 3 deletions apps/docs/content/guides/environment-variables.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Environment Variables"
description: "Zerops manages environment variables at two scopes (project and service) with strict build/runtime isolation. Variables are set via zerops.yml, import.yml, or GUI. Cross-service references use `${hostname_varname}` syntax. Project vars auto-inherit into all services. Secret vars are write-only after creation. Changes require service restart."
---


## Keywords
environment variables, env, envVariables, envSecrets, dotEnvSecrets, envReplace, secrets, project variables, service variables, cross-service reference, variable precedence, build runtime isolation, RUNTIME_ prefix, BUILD_ prefix, variable shadowing, envIsolation, restart, placeholder replacement

Expand Down Expand Up @@ -96,11 +95,9 @@ Project variables are **automatically available** in every service (build and ru

**DO NOT** re-reference project variables in service envVariables:
```yaml
# WRONG -- creates shadow, may cause circular reference
envVariables:
PROJECT_NAME: ${PROJECT_NAME}

# CORRECT -- just use it in your app code, it's already there
```

To **override** a project variable for one service, define a service-level variable with the same key:
Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/firewall.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Firewall on Zerops"
description: "Zerops uses nftables with restricted TCP ports 1-1024 (only 22, 53, 80, 123, 443, 587 allowed); UDP and ports 1025-65535 are unrestricted."
---


## Keywords
firewall, ports, nftables, tcp, udp, blocked ports, smtp port, port restriction, allowed ports

Expand Down
2 changes: 0 additions & 2 deletions apps/docs/content/guides/local-development.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Local Development with Zerops"
description: "Develop locally with hot reload while connecting to Zerops managed services (DB, cache, storage) via VPN. ZCP generates `.env` with real credentials. Deploy to Zerops with `zerops_deploy` which uses `zcli push` under the hood."
---


## Keywords
local development, local dev, zcli push, vpn, env file, dotenv, hot reload, dev server, local mode, zcli vpn, local deploy, environment variables local

Expand Down Expand Up @@ -47,7 +46,6 @@ zcli vpn up <project-id>
### 2. Load credentials
ZCP generates `.env` from `zerops_discover`:
```
# db (postgresql@16)
db_host=db
db_port=5432
db_password=<actual-password>
Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/logging.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Logging on Zerops"
description: "Zerops captures stdout/stderr as logs; use syslog output format for severity filtering. Supports forwarding to Better Stack, Papertrail, or self-hosted ELK via syslog."
---


## Keywords
logging, logs, syslog, build logs, runtime logs, service log, log access, log severity, log forwarding, better stack, papertrail, elk, logstash, syslog-ng, external logging, log aggregation

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/metrics.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Metrics on Zerops"
description: "Zerops supports ELK (APM + logs) and Prometheus/Grafana stacks; expose `/metrics` endpoint and set `ZEROPS_PROMETHEUS_PORT` for auto-scraping."
---


## Keywords
metrics, monitoring, prometheus, grafana, elk, apm, elastic apm, observability, custom metrics, dashboard

Expand Down
5 changes: 0 additions & 5 deletions apps/docs/content/guides/networking.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Networking on Zerops"
description: "Zerops networking has two layers: a private VXLAN network per project (service-to-service via hostname, plain HTTP) and an L7 balancer for public traffic (SSL termination, round-robin, health checks). Apps must bind `0.0.0.0` — binding localhost causes 502. The L7 balancer is nginx-based with configurable timeouts, buffers, rate limiting, and access policies."
---


## Keywords
networking, vxlan, l7 balancer, load balancer, ssl termination, 502, bad gateway, internal access, service discovery, hostname, proxy headers, x-forwarded-for, x-real-ip, bind, 0.0.0.0, localhost, round robin, health check, keepalive, nginx, connection timeout, websocket, rate limiting, access policy, basic auth, internal port, http, https

Expand Down Expand Up @@ -103,16 +102,12 @@ Work through these steps **in order**:

**Common framework fixes:**
```bash
# Node.js/Express — bind to 0.0.0.0
app.listen(3000, '0.0.0.0')

# Python/Flask
flask run --host=0.0.0.0

# Go
http.ListenAndServe(":8080", handler) // implicit 0.0.0.0

# Java/Spring Boot — in application.properties
server.address=0.0.0.0
```

Expand Down
4 changes: 0 additions & 4 deletions apps/docs/content/guides/object-storage-integration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Object Storage Integration on Zerops"
description: "Zerops Object Storage is S3-compatible (MinIO). Always set `AWS_USE_PATH_STYLE_ENDPOINT: true`. Use env var references `${storage_*}` for credentials. Container filesystem is lost on deploy — use Object Storage for any files that must persist across deployments."
---


## Keywords
object storage, s3, minio, aws, upload, files, media, storage integration, flysystem, boto3, aws-sdk, path style, bucket, persistent files

Expand All @@ -27,7 +26,6 @@ When you create an Object Storage service, Zerops auto-generates these env vars

Reference them in zerops.yml `run.envVariables`:
```yaml
# zerops.yml run.envVariables
S3_ENDPOINT: ${storage_apiUrl}
S3_ACCESS_KEY: ${storage_accessKeyId}
S3_SECRET_KEY: ${storage_secretAccessKey}
Expand All @@ -41,10 +39,8 @@ AWS_USE_PATH_STYLE_ENDPOINT: "true"
Zerops uses MinIO which requires **path-style** URLs (not virtual-hosted):

```
# Path-style (correct for Zerops):
https://endpoint.com/bucket-name/object-key

# Virtual-hosted (WRONG for Zerops):
https://bucket-name.endpoint.com/object-key
```

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/php-tuning.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "PHP Runtime Tuning on Zerops"
description: "Override php.ini via `PHP_INI_*` env vars, FPM via `PHP_FPM_*`. Both require **restart** (not reload). Zerops defaults: upload/post = 1024M, FPM dynamic 20/2/1/3. Upload bottleneck is L7 balancer (50MB subdomain), not PHP."
---


## Keywords
PHP_INI, PHP_FPM, php.ini, fpm, upload_max_filesize, post_max_size, memory_limit, max_execution_time, max_children, ondemand, dynamic, php tuning, upload limit, file upload

Expand Down
6 changes: 0 additions & 6 deletions apps/docs/content/guides/production-checklist.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Production Checklist for Zerops"
description: "Before going to production: (1) databases to HA mode, (2) minContainers: 2 on app services, (3) replace Mailpit with real SMTP, (4) remove Adminer, (5) use Object Storage for uploads, (6) use Redis/Valkey for sessions."
---


## Keywords
production, checklist, ha, high availability, minContainers, mailpit, smtp, adminer, volatile, sessions, object storage, deploy production, go-live, launch

Expand All @@ -30,7 +29,6 @@ Before going to production: (1) databases to HA mode, (2) minContainers: 2 on ap
| Debug mode | Enabled | Disabled |

```yaml
# Production app service
- hostname: app
type: nodejs@22
minContainers: 2
Expand All @@ -41,12 +39,10 @@ Before going to production: (1) databases to HA mode, (2) minContainers: 2 on ap

### Mailpit → Production SMTP
```yaml
# REMOVE for production:
- hostname: mailpit
type: go@1
buildFromGit: https://github.com/zeropsio/recipe-mailpit

# REPLACE with production SMTP env vars:
envVariables:
SMTP_HOST: smtp.sendgrid.net
SMTP_PORT: "587"
Expand All @@ -69,7 +65,6 @@ Remove entirely or disable `enableSubdomainAccess`. Use VPN + pgAdmin/DBeaver lo
| Build artifacts | Deploy via zerops.yaml |

```yaml
# Add Object Storage for persistent files
- hostname: storage
type: object-storage
objectStorageSize: 2
Expand All @@ -88,7 +83,6 @@ Remove entirely or disable `enableSubdomainAccess`. Use VPN + pgAdmin/DBeaver lo
| Express sessions | Redis store |

```yaml
# Add Valkey for sessions/cache
- hostname: cache
type: valkey@7.2
mode: NON_HA # HA for production
Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/public-access.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Public Access on Zerops"
description: "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)."
---


## Keywords
public access, domain, subdomain, zerops.app, ipv4, ipv6, https, ssl, custom domain, dedicated ip, shared ip, direct port

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/scaling.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "Scaling and Autoscaling"
description: "Zerops autoscales vertically (CPU/RAM/disk) and horizontally (container count). Runtimes support both. Managed services (DB, cache, shared-storage) support vertical only with fixed container count (NON_HA=1, HA=3). Object-storage and Docker have no autoscaling. Extends grammar.md section 9 with mechanics, thresholds, YAML syntax, and common mistakes."
---


## Keywords
scaling, autoscaling, vertical scaling, horizontal scaling, CPU, RAM, disk, containers, SHARED, DEDICATED, cpuMode, minCpu, maxCpu, minRam, maxRam, minDisk, maxDisk, minContainers, maxContainers, minFreeRamGB, minFreeRamPercent, startCpuCoreCount, verticalAutoscaling, HA, NON_HA, OOM, out of memory, scale up, scale down, threshold, Docker VM

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/smtp.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "SMTP on Zerops"
description: "Only port **587** (STARTTLS) is allowed for outbound email — ports 25 and 465 are permanently blocked. Use an external email service."
---


## Keywords
smtp, email, mail, sendgrid, mailgun, ses, gmail, port 587, starttls, send email

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/vpn.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "VPN on Zerops"
description: "Zerops VPN uses WireGuard via `zcli vpn up <project-id>` — connects to one project at a time, services accessible by hostname, but env vars are NOT available through VPN."
---


## Keywords
vpn, wireguard, zcli vpn, vpn up, vpn down, local development, service access, mtu

Expand Down
1 change: 0 additions & 1 deletion apps/docs/content/guides/zerops-yaml-advanced.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ title: "zerops.yml Advanced Behavioral Reference"
description: "Behavioral semantics for advanced zerops.yml features: health/readiness checks, deploy strategies, cron, background processes, runtime init, envReplace, routing, and `extends`. Schema is in grammar.md -- this file covers what the schema cannot express."
---


## Keywords
zerops.yml, health check, healthCheck, readiness check, readinessCheck, routing, cors, redirects, headers, crontab, cron, startCommands, initCommands, prepareCommands, envReplace, temporaryShutdown, zero downtime, rolling deploy, base image, extends, container lifecycle

Expand Down
Loading