Skip to content

Create a deployment

This is the long version of the Quickstart: every field in the create flow, what it does, and what to check once the app is live. The same flow creates every resource type.

  • For a source build, connect the Ownkube GitHub App or your GitLab account under Version control in Settings so your repositories appear in the picker. See Builds and source.
  • For an image deployment, have the image reference and tag ready, such as ghcr.io/owner/app:1.2.0.
  • Know the port your app listens on. Most frameworks read it from a PORT variable; the framework guides list the right value.
  1. Open the flow

    From the dashboard click New, or press ⌘ K and choose Deployment.

  2. Pick the resource type

    Web app, Worker, Job, Database or Cache. The rest of the form changes to match. Databases and caches skip source, port and variables; see Postgres and Valkey cache.

  3. Name it and place it

    Choose a name (lowercase letters, numbers and dashes, unique within the environment), a project, an environment and a region. The region is fixed once created.

  4. Choose the source

    Pick the repository and branch from your connected GitHub or GitLab account. Ownkube detects a Dockerfile in the repository and uses it; without one, the automatic build detects the language. Set a root directory if your app lives in a subfolder of a monorepo. Every later push to the branch builds and deploys.

  5. Set the port

    The port your container listens on, for example 3000 or 8080. Ownkube routes the public hostname and private traffic to it.

  6. Add variables

    Add KEY=value pairs. Flip Secret on anything sensitive; secrets are masked in the UI and never appear in logs or the activity diff. Values the environment shares with every deployment are inherited automatically. See Variables.

  7. Size it

    Leave the defaults for a first deploy. Metered CPU and memory bill for what the app uses; a reserved box bills a flat rate. Autoscaling, health checks and sleep can wait until the app runs.

  8. Create

    Click Create deployment. The page switches to the deployment’s Overview and shows the build and rollout as they happen.

For a source build, the Builder tab shows the pipeline: Queued, Build, Image, Deploy, Live, with the build log streaming under it.

Screenshot of the Builder tab showing the root directory, builder size and the build pipeline stages

Status on Overview moves from Syncing to Healthy when the container passes its health checks. Open the hostname. If it stays Degraded, the Logs tab usually shows why: a crash on start, the wrong port, or a missing variable. See Observability for every status and what to do.

SymptomLikely causeFix
Degraded, logs show the app startedPort mismatchSet Port to the port the app actually binds, and bind on 0.0.0.0, not localhost.
Degraded, app exits immediatelyMissing variableCompare the Logs tab against your .env; add the variable and save.
Build fails at installWrong root directory or lockfileSet Root directory on the Builder tab; commit the lockfile.
Build succeeds, 502 on the hostnameApp listens on the wrong interfaceBind on 0.0.0.0 and the configured port.

Push to the branch and Ownkube builds and rolls out. For an image deployment, change the tag on Settings and save. Every change is a revision on the Activity tab, with a diff and a one-click rollback.