Infrastructure
Environments
Local, staging, and production environment comparison.
Environments
ByteBite has three logical environments. Only local and staging run application infrastructure today.
Status summary
| Local | Staging | Production | |
|---|---|---|---|
| Status | Active | Active | Not deployed |
| Verified | Repository | 2026-09-08 | — |
Production DNS records exist (
getbytebite.co,api.getbytebite.co, etc.) pointing at88.99.0.118. This does not mean production is live. No production application stack or production database has been deployed.
Comparison matrix
| Aspect | Local | Staging | Production |
|---|---|---|---|
| Domain suffix | .bytebite.test | .staging.getbytebite.co, getbytebite.co (apex staging) | getbytebite.co (planned) |
| DNS | /etc/hosts (no wildcard) | Cloudflare DNS-only | Cloudflare DNS-only (records exist) |
| Edge IP | 127.0.0.1 / ::1 | 88.99.0.118 | 88.99.0.118 (DNS only) |
| Deploy method | pnpm dev (Compose) | Dokploy on push to main | Planned: Dokploy |
| Compose file | compose.yml + compose.dev.yml | compose.deploy.yml | compose.deploy.yml (planned) |
| Traefik | Local container (traefik:v3.4, file provider) | dokploy-traefik (v3.6.7) | Same host (planned) |
| TLS | None (HTTP only) | Let's Encrypt HTTP-01 + DNS-01 wildcard | Planned |
| PostgreSQL | Compose postgres:17-alpine, 127.0.0.1:5432 | Dokploy PostgreSQL 18, internal only | Planned: Dokploy or dedicated |
| Object storage | MinIO (127.0.0.1:9001) | Not deployed | Planned: Backblaze B2 |
| Not configured | Not configured | Planned: Stalwart + SES | |
| Indexing | N/A (local) | noindex, nofollow | Indexable (when deployed) |
| Deploy env marker | unset | BYTEBITE_DEPLOY_ENV=staging | unset (planned) |
| Seeds | pnpm db:seed (*.bytebite.test) | node db/dist/seed-staging.js (Luigi/Mario staging hosts) | No demo seeds |
| Wildcard tenants | Per-host /etc/hosts entries | DNS wildcard + Traefik HostRegexp | Custom domains (planned) |
| Secrets | .env (git-ignored) | Dokploy environment | Planned: Dokploy + host filesystem |
| Public app ports | Traefik :80 only | 80/443 only (app ports closed) | Same model (planned) |
Local
- Purpose: Developer workstations
- Guide: Local deployment
- Hosts:
storefront.bytebite.test,dashboard.bytebite.test,api.bytebite.test,docs.bytebite.test,luigi.bytebite.test,mario.bytebite.test,unknown.bytebite.test - Routing:
infrastructure/traefik/dev/dynamic.yml(file provider; Docker provider disabled for OrbStack compatibility) - PostgreSQL: Published on
127.0.0.1:5432for host-side tooling
Staging
- Purpose: Production-like integration environment on real infrastructure
- Guide: Staging deployment
- Host: BYTEBITE-APP-01 (
88.99.0.118) - Dokploy project: ByteBite / staging / "ByteBite Staging"
- PostgreSQL: Dokploy-managed, no public port (verified closed 2026-09-08)
- Wildcard TLS:
*.staging.getbytebite.covia DNS-01 / Cloudflare
Production
- Purpose: Live customer-facing environment
- Guide: Production deployment
- Status: NOT DEPLOYED
- Blockers: See Known gaps and Production deployment
Production will reuse the same compose.deploy.yml pattern with environment-driven configuration. BYTEBITE_DEPLOY_ENV must remain unset so storefront and docs are not forced into staging noindex behavior.
Related
- Infrastructure overview
- Secrets — per-environment secret storage
- Validation — smoke tests per environment