Harbor

Guide · Service onboarding · harborvps.com

Requirements for onboarding a service

What your app needs. Git, Docker, network, database, and proxy are Harbor’s responsibility — not hand-setup prerequisites. Domain and DNS are optional.

Harbor owns the host & platform

Not service prerequisites — Harbor checks and sets these up:

ConcernHarbor’s role
Git + DockerDetect if missing; install / guide install
Network (apps-net)Create if absent
Database (apps-db)Provision / repair
Proxy (Traefik)Config under platform + run container
Platform tree/usr/apps/platform/…, secrets, platform.yaml

Use Infra (prereqs → provision / repair). You should not need to create apps-net or Traefik by hand.

Hard requirements (the app)

RequirementWhy
Git repo Harbor can cloneplatform/services/<slug>/repo
Dockerfile in the repoHarbor never generates one
Kebab-case slugContainer / image / manifest names
Listen on PORTHarbor assigns 8000–8999 and injects PORT
Listen contract: read PORT and bind HTTP to 0.0.0.0:$PORT — not localhost-only, not a hard-coded port that ignores env.

Optional: public domain & DNS

ItemRequired?
Public domain No. Leave empty for private / internal use. Container still runs on apps-net and is reachable as <slug> from other services.
DNS records No for onboarding. Only needed later for Let’s Encrypt / public HTTPS. Onboard first, fix DNS after if you want.

When a domain is set, Harbor adds a Traefik Host() route with TLS.

Environment keys Harbor fills

KeysFilled with
PORT, API_PORTAssigned port
DATABASE_URL / DB_URL / …postgres://…@apps-db:5432/…
DB_HOST / PGHOST / …apps-db
DB_* user / password / nameGenerated
NODE_ENVproduction

Checklist (app-focused)