ByteBite Docs
Infrastructure

Network

Public subnet, VM networking, Docker networks, and port exposure.

Network

ByteBite staging exposes only HTTP (80) and HTTPS (443) on the public internet. Application and database ports remain on internal Docker networks.

Port exposure verified on 88.99.0.118: 2026-09-08

Public subnet

ParameterValue
Subnet88.99.0.64/26
Netmask255.255.255.192
Gateway88.99.0.65
ByteBite APP IP88.99.0.118/26
ByteBite MAIL IP88.99.0.97

Public IP mapping

IPRole
88.99.0.118ByteBite application edge (Traefik, Dokploy, app containers)
88.99.0.97Planned mail server (BYTEBITE-MAIL-01)
88.99.0.100Unrelated historical IP — not ByteBite

Request flow (staging)

Client
  -> Cloudflare DNS (A/ALIAS -> edge.getbytebite.co -> 88.99.0.118)
    -> ens18 :80 or :443
      -> dokploy-traefik (dokploy-network)
        -> target container on dokploy-network

Docker networks (staging)

ByteBite staging containers participate in multiple Docker networks. The repository defines one; Dokploy injects others at runtime.

Repository-defined: bytebite

Defined in compose.deploy.yml:

networks:
  bytebite:
    name: bytebite

All four application services (api, storefront, dashboard, docs) attach to this network. It enables inter-service communication (e.g. storefront → http://api:3001).

Dokploy-injected: dokploy-network

Traefik's Docker provider watches containers on dokploy-network. Dokploy attaches services with UI-managed domains to this network automatically.

Runtime invariant: storefront and api must be reachable on dokploy-network for Traefik routing (including manual wildcard labels). Dokploy domain configuration currently provides this attachment.

Generated Compose default network

Dokploy creates a per-deployment default network with a generated name, for example:

bytebite-staging-oc5ach_default

Observed pattern: {project-prefix}_{default}. The suffix (oc5ach) is Dokploy-generated and not stable.

Network attachment summary

Servicebytebitedokploy-networkGenerated default
apiYes (compose)Yes (Dokploy)Yes
storefrontYes (compose)Yes (Dokploy)Yes
dashboardYes (compose)Yes (Dokploy)Yes
docsYes (compose)Yes (Dokploy)Yes

Exact attachment is confirmed via docker network inspect on the host.

Local Docker networks

Local development (compose.yml) uses:

NetworkPurpose
proxyTraefik + app-facing services
backendPostgreSQL, MinIO, API (dual-homed)

Traefik routes via the file provider (infrastructure/traefik/dev/dynamic.yml), not Docker labels.

Public port exposure

Verified externally on 88.99.0.118 (2026-09-08):

PortStatusService
80OPENTraefik HTTP
443OPENTraefik HTTPS (+ HTTP/3 UDP)
3000CLOSEDStorefront (internal only)
3001CLOSEDAPI (internal only)
3002CLOSEDDocs (internal only)
5432CLOSEDPostgreSQL (internal only)
8080CLOSEDDashboard (internal only)

Applications use expose: in compose.deploy.yml, not host ports: mappings. This is a deliberate security boundary — only Traefik is internet-facing.

Internal service ports

ServiceContainer port
storefront3000
api3001
docs3002
dashboard8080
PostgreSQL5432
  • Traefik — ingress routing
  • DNS — how hostnames reach the edge IP
  • Security — port closure rationale
  • Validation — port check commands

On this page