Web Services
BreachFix Cloud web services host dynamic apps and APIs — Express, Django, FastAPI, Gin, and anything that speaks HTTP. Connect a Git repository or upload source; the platform builds and deploys on every push or on demand. Dockerfiles are supported when you need full control over the runtime image.
Every web service gets a default public URL at {serviceId}.breachfix.com with platform TLS. Add custom domains when you are ready to use your own hostname.
Need an app that is not reachable from the public internet? Create a private service instead — same deploy pipeline, no public route.
Your web service must bind its HTTP server to host0.0.0.0inside the container. Use thePORTenvironment variable — see port binding below.
Creating a web service
- Register or sign in, then open the dashboard.
- Connect GitHub under Integrations — see Connect GitHub.
- Click + New → Web Service, pick repository and branch, and fill in build/start commands.
- Choose an instance plan and click Create Web Service.
Alternative deploy paths: source upload, Dockerfile, or deploy hooks.
Service creation fields
| Field | Description |
|---|---|
| Name | Identifies the service in the dashboard. Default hostname uses the service ID. |
| Region | Placement label for your cluster. Services in the same workspace share an isolated Docker network. |
| Branch | Git branch to build and deploy from. |
| Build command | Shell command to compile or install — e.g. npm install && npm run build. |
| Start command | Starts the server — e.g. npm start. Omit when using a Dockerfile CMD. |
| Health check path | HTTP path probed before zero-downtime swap (default /health). Must return 2xx or 3xx. |
| Instance plan | CPU and memory limits. See instance plans doc. |
Port binding
The gateway forwards inbound HTTP and WebSocket traffic to the port in the PORT environment variable (default 8080). Bind to 0.0.0.0, not 127.0.0.1.
const express = require('express')
const app = express()
const port = Number(process.env.PORT || 8080)
app.get('/', (req, res) => res.send('Hello from BreachFix Cloud'))
app.listen(port, '0.0.0.0', () => console.log(`Listening on ${port}`))If the health check cannot reach your app on PORT, the deploy fails and the previous instance stays up. Check logs and troubleshooting.
Platform environment
On every deploy, BreachFix Cloud merges platform defaults, linked env groups, and service variables. User variables override defaults. See Environment variables.
| Variable | Purpose |
|---|---|
BASE_URL | Public URL for OAuth callbacks and links |
BREACHFIX_CLOUD_SERVICE_ID | Stable service identifier |
BREACHFIX_CLOUD_PUBLIC_URL | Control plane origin (dashboard, API) |
PORT | HTTP port the gateway forwards to |
Connecting to your service
Public traffic reaches your service at its default or custom domain. Sibling services in the same workspace can reach it by container hostname lc-{serviceId} on PORT. See Workspace private network.