Source: https://crabglamp.com/docs/app-vms/tutorial/get-started
Last updated: 2026-06-12
Type: tutorial

An App VM runs your container image on a dedicated machine behind an HTTPS edge with zero inbound ports open. You bring the image; CrabGlamp provisions the VM, terminates TLS, and gives you a URL. This tutorial takes you from nothing to a running App and a second deploy.

## Before you start

You need a CrabGlamp account with a payment method on file (App VMs bill per hour or per month — see [Account & billing](/docs/account-and-billing)). Have a public container image in mind that listens on a known port. The official `nginx:latest` image (port 80) works for a first run.

## 1. Create the App

From the dashboard, open **App VMs** and choose **Create App VM**. Fill in:

- **Name** — a DNS label (lowercase letters, digits, hyphens; 1–63 characters). Your App gets a unique auto-generated HTTPS URL on a `crabglamp.dev` subdomain, shown on its page once it is running.
- **Container image** — for example `nginx:latest`.
- **Container port** — the port your container listens on (1–65535). For `nginx:latest`, use `80`.
- **Health path** — optional. A path that returns HTTP 2xx when the container is ready (for example `/`). Leave it blank to health-check with a plain TCP connection instead.
- **Size**, **Region**, and **Billing** — pick a size and region, and choose pay-as-you-go or subscribe-and-save.
- **Environment variables** — optional. Add any plain or secret variables the container needs; they are injected from the very first start.
- **Registry credential** — optional. If the image is in a private registry, select an account-level credential or add one inline. See [Deploy a private image](/docs/app-vms/how-to/deploy-a-private-image).
- **Volume mount path** — optional. If you enable the persistent volume, choose the absolute path inside the container where it mounts (default `/var/lib/app/data`).

Submit. The App starts in `provisioning` and the page polls for progress.

## 2. Reach it over HTTPS

When the status reaches `running`, open the URL shown on the detail page. TLS is issued automatically — there is nothing to configure. You are looking at your container, served through the edge.

## 3. Ship a second version

Change something in your image, push a new tag to your registry, then on the App detail page enter the new image reference under **Deploy** and choose **Deploy**. CrabGlamp pulls the new image, starts it alongside the old one, health-checks it, and swaps traffic only once it is healthy. Your URL never stops responding. If the new image fails its health check, the previous version keeps serving and the deploy is marked failed.

## 4. Stop billing

Pay-as-you-go App VMs accrue charges while they exist. When you are done experimenting, open the App's settings page and choose **Destroy** to remove the VM and stop the meter. Destroying is irreversible and deletes any persistent-volume data.

## Where to go next

- [App VMs reference](/docs/app-vms/reference) — sizes, regions, every API endpoint, and limits.
- [Deploy a new version](/docs/app-vms/how-to/deploy-a-new-version) — the deploy flow in detail.
- [Zero-downtime deploys](/docs/app-vms/explanation/zero-downtime-deploys) — how the swap and rollback work.
