Eza Cloud docs
Deploy your app from Git or the CLI
Connect a GitHub, GitLab or Bitbucket repository. Or run eza deploy from a folder. Eza detects your stack, builds the app and gives you a live HTTPS URL.
- Git deploys
- Eza CLI
- Managed databases
- PayEdgeBeta
Search deployment, databases, domains, billing or PayEdge.
Popular searches
Quick start
Get an app live
Create an Eza account, connect a repository or open a local project folder. A push to the configured branch deploys automatically by default.
Step 1: Connect your Git provider
GitHub connects through the Eza GitHub App. Choose the repositories Eza can access.
GitLab and Bitbucket connect through OAuth.
Connect GitHub, GitLab or BitbucketStep 2: Create an app
Choose an organisation, project, environment and app. Eza defaults the environment to
production.Eza detects Next.js, Node, Laravel, PHP, Python, Go, Ruby, WordPress and Dockerfiles.
Create your first appStep 3: Deploy
Push to the app’s configured branch. Eza starts a deploy automatically.
Or deploy the current folder with the CLI.
Deploy with the Eza CLI~/juma-shopeza login # Sign in to Ezaeza orgs create # Create an organisationcd juma-shop # Open your project foldereza link # Link a project and appeza deploy # Build and deployStep 4: Open your app
Every app receives a live HTTPS URL.
Add a custom domain when you are ready.
Add a custom domainLive URLhttps://juma-shop.app.eza.co.ke
Documentation
Guides for building and running apps
Quick start
Deploy your first app from Git or a local folder.
Deploy from Git
Connect a repository and deploy every push to a configured branch.
- Connect GitHub
- Connect GitLab
- Connect Bitbucket
- Configure a branch
- Turn auto-deploy on or off
- Deploy pull request branchesComing soon
CLI
Install the Eza CLI and deploy without opening the dashboard.
Domains and SSL
Use your own domain. Eza creates and renews SSL certificates automatically.
Environment variables
Store configuration and secrets outside your repository.
Databases
Create managed databases and connect them to your app.
Object storage
Store uploads, files and assets with S3-compatible object storage.
Workers and cron jobs
Run background work and scheduled tasks beside your web app.
- Beta
Docker Compose
Run a documented subset of Docker Compose services.
- Beta
PayEdge
Add M-Pesa STK push to any app with the PayEdge API.
API reference
Manage Eza resources through the REST API.
Billing and plans
Pay in KES through M-Pesa and manage your organisation subscription.
Teams and roles
Add people to an organisation and control what they can access.
Migrating
Move an existing app, database or domain to Eza Cloud.
Security
Read how Eza handles account security, data processing and backups.
How deploys work
What happens after a Git push
A push to the app’s configured branch starts a deployment. Auto-deploy is on by default and can be turned off for each app.
- Eza receives the new commit.
- Railpack detects the stack and selects build and start commands. If your repository contains a
Dockerfile, Eza uses the Dockerfile. - Eza builds the app and runs the health check.
- Passing
A passing health check sends traffic to the new deploy.
- Failing
A failing health check keeps the previous deploy live.
You can roll back to an earlier deploy in about 30 seconds.
Read the deployment guideBuild settings
Control the parts your app needs
Railpack selects build and start commands for recognised stacks. You can override these settings in the dashboard, CLI or API:
- Start command
- Root directory
- App port
- Health check path
Eza does not use an eza.yml file at launch.
For Docker builds, place a Dockerfile in your repository. For advanced Railpack build changes, use railpack.json.
The Eza CLI stores local app links in .eza/config.json. This file does not store build settings.
Deploy from a folder
Deploy code without a Git remote
Run eza deploy in a local folder.
If Eza cannot find a Git remote, it offers to upload the current folder. This works like eza deploy --local.
Eza respects .gitignore and .ezaignore when it uploads files.
In CI, use eza deploy --local --yes to upload without an interactive prompt.
cd juma-shopeza linkeza deploy --localCLI reference
Commands you will use first
eza login # Sign ineza orgs create # Create an organisationeza link # Link this foldereza deploy # Deploy current codeeza logs --follow # Stream runtime logseza logs --build # Show build logseza db tunnel # Open a database tunneleza link asks you to choose or create an organisation, project, environment and app.
- If you belong to one organisation, Eza skips the organisation selection.
- The environment defaults to
production. - Eza saves these selections to
.eza/config.json, so later commands work without extra flags.
Logs and troubleshooting
Read logs before guessing
Use build logs when an app fails during installation or compilation.
Use runtime logs when an app starts but returns errors after deployment.
eza logs --buildeza logs --followA failed health check keeps the previous deploy live.
Troubleshoot a failed deployDatabase connections
Connect a database without pasting secrets
Eza injects connection details into your app environment. Managed databases include:
- PostgreSQL
- MySQLBeta
- MongoDB-compatibleBeta
- Redis-compatible
Use eza db tunnel to connect from your computer through a local TCP port.
eza db tunnel production-dbThe same tunnel works with psql, mysql, mongosh and redis-cli.
- PostgreSQL and MongoDB-compatible databases support point-in-time recovery.
- MySQL uses binlog backups.
- Valkey uses daily snapshots and append-only files.
Environment variables
Keep secrets out of your repository
Environment variables are encrypted at rest with envelope encryption.
Runtime variables are injected when your app starts. They do not enter the build. Mark a variable as build-time only when the build needs it.
Secret values remain hidden in the dashboard until you reveal them. Eza records each reveal.
Manage environment variablesCron jobs
Run scheduled work in Nairobi time
Eza scheduled jobs use standard five-field cron syntax. Schedules run in Africa/Nairobi time by default.
0 8 * * 1-5This runs at 08:00 from Monday to Friday in Nairobi.
Create a cron jobDocker Compose
BetaUse Docker Compose for supported services
Docker Compose is Beta.
Eza supports a documented subset of Compose files. Check the supported services before you deploy.
Use a docker-compose.yml file in your repository.
PayEdge quick start
BetaSend an M-Pesa STK push
PayEdge works with apps hosted on Eza Cloud or elsewhere.
Create a PayEdge configuration, copy the API key and call the STK push endpoint over HTTPS.
Amounts use whole KES. The minimum amount is KES 1.
import { PayEdge } from '@eza/payedge' const client = new PayEdge({ apiKey: process.env.PAYEDGE_API_KEY}) const result = await client.stkPush({ phone: '254712345678', amount_kes: 1500, account_reference: 'INV1024', idempotency_key: 'request-1024'}) console.log(result.checkout_request_id)PayEdge hosts the Safaricom callback URL, verifies the result and forwards it to your webhook endpoint.
Read the PayEdge quick startSecurity
Protect your Eza account
- Owners and Admins must use two-factor sign-in.
- Members and Viewers can use two-factor sign-in.
- All customer data is stored and processed in Kenya.
Report a security issue to security@eza.co.ke.
Read security practicesFAQ
Common deploy questions
Does Eza deploy automatically after a Git push?
Yes. A push to the app's configured branch starts a deploy by default. You can turn auto-deploy off for each app.
Can I deploy without a Git repository?
Yes. Run eza deploy in a local folder. If Eza cannot find a Git remote, it offers to upload the current folder as eza deploy --local.
What databases can I connect through eza db tunnel?
eza db tunnel supports PostgreSQL, MySQL, MongoDB-compatible and Redis-compatible managed databases through a local TCP port.
Where does Eza store environment variables?
Environment variables are encrypted at rest with envelope encryption. Runtime variables are injected when the app starts and do not enter builds unless marked as build-time.
Need help with a deployment
Start with build logs, runtime logs and the deployment troubleshooting guide.
For account and billing help, email support@eza.co.ke.
Starter and Pro customers can call +254 754 338 689 from Monday to Saturday, 08:00 to 18:00 EAT.
