Getting Started with Run App
Table of Contents
1. What Run App is
Run App is a Docker hosting service on Cloud+: it deploys and runs a containerized website, web app, or service on Sabay's container orchestration infrastructure (Docker swarm), without you managing servers yourself.
Each deployed application is called a stack. A stack is created from a Docker image you provide, plus configuration (environment variables, resource policy, etc.) set through the Run App dashboard — there is no API here to call from code; the dashboard itself is the interface this series walks through.
Before you can create a stack, your account needs an active Run App subscription (a plan).
2. Subscribing to a plan
If you don't already have a plan, you're prompted to add one the first time you try to create a stack:
-
From the top menu, go to Cloud → Run App. If you have no subscription yet, you'll see an empty state — click CREATE.
-
Account Verification — your phone number and email must show as Verified, then click NEXT.
-
Plans — pick a plan sized for your project, then click NEXT. Plans are priced in KHR/month and scale CPU cores, RAM, and monthly transfer together:
Plan Price (KHR/mo) CPU RAM Transfer Student 18,000 0.5 core 512 MB 1024 GB Basic 36,000 1 core 1 GB 2 TB Standard 72,000 2 core 2 GB 4 TB Premium 180,000 4 core 8 GB 12 TB Pro 360,000 8 core 16 GB 16 TB -
Payment — review the order summary (subtotal + 10% tax), choose to pay from your KHR or Business Gold wallet balance, then click PAY NOW.
- If your KHR balance is too low, PAY NOW stays disabled. Use the wallet menu (top right) → Reload to top up: pick a KHR bundle, pay via ABA KHQR (scan with any KHR-QR-supporting banking app), and you'll land on a payment-success page once it clears. Return to the create-stack flow and your new balance is reflected.
-
Run App Information — fill in your stack information (see below), then click CREATE or CREATE & DEPLOY.
Once this completes, you'll see a confirmation that your stack was created.
3. Registry authentication
If your Docker image lives in a private registry, save credentials for it before (or while) creating a stack: on the Run App page, switch from the Stack List tab to the Registry Authentication tab, then click CREATE REGISTRY.
- Registry Provider — a dropdown of common providers (Custom, Docker Hub, Gitlab, Azure, ProGet, Quay, AWS ECR, and more).
- Host — the registry's hostname.
- User Name
- Access Token — a personal access token or password for that registry (masked, with a reveal toggle).
Click CREATE to save it. Saved registries then show up as selectable options wherever a stack's Service Info → Registry Authentication is set to Private.
4. Creating a stack
Once you're on the Run App Information step, you're filling in one Stack:
- Stack Name — a name for your stack.
- Shared Env — key/value environment variables shared across every
service in the stack. Add pairs one at a time, or click Upload
Variable From Env File to import a
.envfile (there's a Download Sample Env File button for a starting template).
Below that, each service in the stack can be configured one of three ways — Form, Editor (Beta), or Upload (Beta) — all three edit the same underlying stack configuration.
Form gives you a service card with three sub-tabs: Service Info (name, domain/host name + container port, container image, registry auth, entrypoint, "Depend On" for other services in the stack), Environment (per-service env vars, separate from Shared Env), and Policy & Resource (restart policy, replicas, CPU/memory — covered in Part 4). Click ADD SERVICE to add another service to the same stack.
Editor (Beta) / Upload (Beta) edit the same configuration as raw
YAML instead (Upload (Beta) additionally lets you upload a .yml file,
with a Download sample). The schema:
- serviceName:
domainName:
port:
image:
entrypoint:
replicas: 1
dependsOn:
privateRegistry:
provider:
host:
username:
accessToken:
restartPolicy:
maxAttempt: 5
restartWindow: 120s
delay: 5s
condition: ANY
resources:
cpu: 0.5
memory: 512
Once your service(s) are configured, click CREATE to save the stack without deploying, or CREATE & DEPLOY to deploy it immediately. You'll see a confirmation that your stack was successfully created.
5. Beginner Pitfalls
- Trying to create a stack without an active plan. You'll be routed into the subscription flow first — that's expected, not an error.
- Setting up a private registry after you've already started the create form. Save registry credentials on the Registry Authentication tab first if your image needs them, so it's selectable when you configure Service Info.
- Confusing Shared Env with per-service Environment. Shared Env applies to every service in the stack; per-service Environment only applies to that one service. Use Shared Env for values every service needs (like a shared API key), and per-service Environment for values specific to one service.
- Not distinguishing CREATE from CREATE & DEPLOY. CREATE just saves the stack configuration; CREATE & DEPLOY also deploys it immediately.
Buy Me a Coffee
Found this tutorial helpful? Consider buying me a coffee to support more free content!