Deploy a Serverless App — EasyCloudify Serverless Deployment Guide
TL;DR — EasyCloudify Serverless deploys any containerized application from Docker Hub, GitHub Container Registry, a connected GitHub repository, or a one-click template — all through a guided 4-step wizard at
/cloudpanel/serverless/deploy.
What is EasyCloudify Serverless?
EasyCloudify Serverless is a managed container platform that runs your applications without you ever touching server configuration. You choose a source — a Docker image, a GitHub repo, or a template — and EasyCloudify handles provisioning, networking, TLS, and scaling automatically.
Before You Start
- You have an active Serverless plan subscription (see Plans & Billing)
- Your app is available as a Docker image, on GitHub, or you want to start from a template
- For private Docker images: credentials added at
/cloudpanel/keys(see SSH Keys & Docker Tokens) - For GitHub deployments: GitHub OAuth connected (see GitHub Integration)
Choosing a Deployment Source
The first step of the wizard asks you to pick one of three sources:
| Source | Best for |
|---|---|
| Container image | Apps already built and pushed to Docker Hub or GHCR |
| GitHub repository | Apps you want to build and deploy directly from source code |
| Template | Starting a new project from a pre-built framework starter |
Option A — Deploy from a Container Image (Docker Hub / GHCR)
Use this when you have already built your app into a Docker image and pushed it to a registry.
Step 1 — Add Registry Credentials First
Private images require Docker access tokens saved in your account. Go to /cloudpanel/keys, open the Docker Access Tokens tab, and add your registry credentials. See SSH Keys & Docker Tokens for the full walkthrough.
💡 Note: Public Docker Hub images (e.g.
nginx:latest,node:20-alpine) also require a Docker access token on file so EasyCloudify can authenticate with the registry on your behalf.
Step 2 — Open the Deploy Wizard
Navigate to /cloudpanel/serverless, click Deploy App, and select Container image.
Step 3 — Fill In Image Details
| Field | Example | Notes |
|---|---|---|
| Registry credentials | Docker Hub — my-app | Select the token you saved in /cloudpanel/keys |
| Repository | my-username/my-app | Docker Hub username + repository name |
| Tag | latest | Image tag; defaults to latest |
Step 4 — Configure Your App
Proceed to Step 2: Configure:
| Field | Example | Notes |
|---|---|---|
| App name | my-api | Used as the app identifier and subdomain |
| Service name | web | The container service name |
| Region | New York 1 | Choose the data center closest to your users |
| HTTP port | 3000 | The port your app listens on inside the container |
| Routes | / | URL path prefix to route traffic to this service |
| Instance size | Basic XXS | CPU and RAM allocated to each instance |
| Instance count | 1 | Number of replicas running simultaneously |
| Run command | npm start | Optional: override the Dockerfile CMD |
Step 5 — Add Environment Variables
In Step 3: Variables, add any environment variables your app needs:
| Key | Value | Scope |
|---|---|---|
DATABASE_URL | postgres://user:pass@host/db | Runtime |
NODE_ENV | production | Build + Runtime |
API_SECRET | •••••••• | Runtime |
Scope options:
- Runtime — available only while the container is running
- Build — available only during the Docker build process
- Both — available during build and at runtime
Values are masked in the UI and never shown in plaintext after saving.
Step 6 — Review and Deploy
Step 4: Review shows a full summary of all settings and an estimated monthly cost. Confirm and click Deploy.
Option B — Deploy from a GitHub Repository
Use this to deploy directly from source code. EasyCloudify builds the Docker image from your Dockerfile and redeploys on every sync.
Step 1 — Connect GitHub
Click GitHub Settings on the Serverless page and authorize via OAuth. See GitHub Integration for the full walkthrough.
Step 2 — Select Repository and Branch
- Browse or search your repositories in the Repository Browser
- Click a repository to select it
- Choose the branch to deploy (e.g.
main,production,develop)
💡 Private repositories: EasyCloudify automatically imports private repos into your connected organization so they can be built securely. You will see a brief "Importing private repository…" notification before deployment proceeds.
Step 3 — Configure and Deploy
Complete Steps 2–4 the same way as a container deployment. The framework is detected automatically from your repository (dockerfile, node, python, etc.).
Option C — Deploy from a Template
Templates are pre-configured framework starters with a ready-to-deploy Dockerfile and sensible defaults.
Available Template Frameworks
| Framework | Language | Use case |
|---|---|---|
| Node.js | JavaScript | REST APIs, Express apps, background workers |
| Bun | JavaScript / TypeScript | High-performance JS/TS runtime alternative to Node |
| Next.js | JavaScript / TypeScript | Full-stack React apps with SSR/SSG |
| Python | Python | Flask, FastAPI, Django, ML workloads |
| PHP | PHP | Laravel, WordPress, Symfony |
| Gatsby | JavaScript | Static site generator |
| OpenClaw | — | EasyCloudify native starter framework |
Step 1 — Browse Templates
Select Template as the source. Use the category filter tabs to browse by language or framework.
Step 2 — Select a Template
Click a template card. EasyCloudify pre-fills the repository, branch, and app name from the template configuration — you can change them.
Step 3 — Configure and Deploy
Adjust region, instance size, port, and environment variables as needed, review, and deploy.
Auto-Scaling
Enable Auto-Scaling in the Advanced settings section of Step 2:
| Field | Description |
|---|---|
| Auto-scale max | Maximum number of instances to scale up to |
| CPU trigger | CPU usage % that triggers a new instance |
When CPU usage exceeds the trigger, EasyCloudify adds instances up to the maximum. When load drops, they are removed.
💡 Tip: Set the CPU trigger to
70%to scale before your app becomes slow. Use at least 2 base instances for zero-downtime during scaling events.
Viewing Your Deployed Apps
The Serverless page at /cloudpanel/serverless shows all your apps:
| Column | Description |
|---|---|
| App name | Your app identifier |
| Source | GitHub, Docker Hub, or GHCR |
| Status | active, building, or error |
| Region | Data center location |
| URL | Your app's public HTTPS URL |
Click any row to open /cloudpanel/serverless/application/[id] where you can view logs, metrics, and update settings.
Troubleshooting
App status shows error after deployment.
Open the app detail page and go to the Runtime Logs tab. Common causes:
- Wrong HTTP port — your app listens on
3000but8080was set - Missing environment variable — the app crashes on startup without a required var
- Bad image tag — the tag does not exist in the registry
- Dockerfile error — fix the
Dockerfile, push a new image or commit, then redeploy
"No Serverless plan found" error.
Go to /cloudpanel/account/plans and subscribe to a Serverless plan.
"All app slots in use" error. Your current plan allows a fixed number of concurrent apps. Upgrade your plan or delete an existing app to free a slot.
Frequently Asked Questions
Do I need a Dockerfile to deploy from GitHub?
Yes. EasyCloudify builds your image using the Dockerfile at the root of your repository. If you start from a template, the Dockerfile is already included.
Can I deploy multiple services as one app?
Each wizard run creates one service. For multi-service apps (e.g. an API + a worker), deploy them as separate apps.
How do I update my app after deployment?
For GitHub-based apps, push to the deployed branch and trigger a sync from the app detail page. For container images, push a new image tag and redeploy.
What is the difference between Instance count and Auto-scale max?
Instance count is the number of replicas always running. Auto-scale max is the ceiling during traffic spikes. They add: 2 base + max 5 = up to 7 total instances.
Can I change environment variables after deployment?
Yes. Go to the app detail page and edit variables. A redeployment is required for changes to take effect.