Deploying

Deploy your first app

Deploy your first application step by step.

1. Create a Project

Projects are containers that organize your pods.

In the sidebar:

  1. Select the Projects panel
  2. Press n to create a new project

2. Create a Pod

A pod is a single deployable application. One pod = one container.

Required fields:

  • Title - A name for your pod
  • Repository URL - Your Git repository (e.g., https://github.com/user/repo)
  • Branch - The branch to deploy (default: main)
  • Dockerfile - Path to your Dockerfile (default: Dockerfile)

For private repositories, select a Git token in the pod form.
Git tokens are managed in Settings → Tokens (create/edit/delete there).

If your app needs runtime config, add it in Pod Environment Variables.

3. Set Pod Vars (Optional)

If your app needs runtime variables:

  1. Open the pod
  2. Go to Vars (4)
  3. Press e to edit
  4. Save with Ctrl+S

Then restart or redeploy the pod to apply changes.

4. Add a Domain (Optional)

Add a domain only if this pod should be reachable publicly (from browser/users).
You have two options:

  • Auto-generated - Instant subdomain like pod-abc123.1.2.3.4.sslip.io
  • Custom - Your own domain like myapp.example.com (requires DNS setup)

After domain changes, run Deploy or Restart so routing updates are applied.

5. Deploy / Restart

Hit “Deploy” and watch the build logs. The process:

  1. Clone your repository
  2. Build the Docker image
  3. Start the container
  4. Route traffic via Traefik

Once complete:

  • with domain: your app is live at the domain URL
  • without domain: your app is internal-only (pod-to-pod on the project network)

6. Internal Pod-to-Pod Communication

Pods can communicate internally without public domains.

  • Internal network aliases are created automatically on deploy/restart
  • Current format: <pod-slug>-<podID8>

Use internal calls like:

http://api-gateway-9b77346e:8080

Important:

  • Hostname and port are separate. You must call host:port.
  • Browser clients cannot resolve internal Docker DNS names directly.
  • Internal DNS name (NetworkAlias) is for server-side/container-side calls only.
  • Existing running containers get the new aliases after deploy/restart.

Managing Your Pod

Stop - Stops the container (keeps configuration)

Restart - Restarts the container

Logs - View container output

Redeploy - Pull latest code and rebuild

Vars - Edit runtime environment variables for the pod

To update your app, just push to your repository and hit “Deploy” again.

© 2026 Axel Adrian