Cloudexa Documentation

Everything you need to ship on Cloudexa.

Store your code, deploy applications, provision databases, configure domains and manage your projects from one platform.

01 · Overview

Getting started

Go from an empty repository to a running application in a few steps.

1 Create a repository

Create a Cloudexa repository and push your project using Git.

2 Configure hosting

Select the repository, branch and deployment settings.

3 Deploy

Cloudexa builds the project and starts it inside an isolated container.

02 · Source

Repositories

Cloudexa repositories are standard Git repositories that can also be used as deployment sources.

Repositories may be public or private. A hosting project points to one repository and branch.

Clone Shell
git clone https://cloudexa.dev/git/username/project.git
cd project
Push changes Shell
git add .
git commit -m "Update project"
git push origin main
Private repositories

Private repositories require authentication when cloning or pushing. Use your Cloudexa Git credentials or access token.

03 · Hosting

Deployments

Every deployment is created from a specific state of your repository.

Cloudexa resolves the selected branch, checks out the current commit, detects the runtime and creates a Docker image.

Deployment lifecycle

Repository → Checkout → Runtime detection → Build → Container start → Running

Redeploying builds a fresh deployment from the latest state of the selected branch.

04 · Hosting

Runtimes

Cloudexa detects common application types automatically.

JS Node.js

Detected from package.json.

npm start
PY Python

Detected from Python source and dependency files.

python app.py
PHP PHP

Detected from composer.json or PHP source.

php -S 0.0.0.0:8080
WEB Static

Static HTML projects can be served directly.

index.html
server.js JavaScript
const http =
    require("http");

const port =
    Number(
        process.env.PORT ||
        3000
    );

http.createServer(
    (req, res) => {
        res.end(
            "Hello from Cloudexa"
        );
    }
).listen(
    port,
    "0.0.0.0"
);
05 · Hosting

Environment variables

Store configuration and secrets without committing them to Git.

Environment variables are injected into your application when its container starts.

Environment ENV
DATABASE_URL=postgresql://...
API_KEY=your-secret
NODE_ENV=production
Keep secrets out of your repository

Passwords, API keys and access tokens should be stored as environment variables.

06 · Hosting

Ports

Web services must listen on the internal port configured by Cloudexa.

Use process.env.PORT whenever possible and bind your application to 0.0.0.0.

Correct server.listen(port, "0.0.0.0")
Avoid server.listen(port, "127.0.0.1")
07 · Hosting

Logs

Inspect application output and deployment failures from your project.

Anything written to standard output or standard error appears in your runtime logs.

Output JavaScript
console.log(
    "Application started"
);

console.error(
    "Something failed"
);
08 · Networking

Domains

Give your application a generated Cloudexa hostname or connect your own domain.

Hosted projects can receive a Cloudexa hostname under cloudexa.dev.

Custom domains

Add your domain to the project and configure the DNS records displayed by Cloudexa.

09 · Databases

Databases

Provision PostgreSQL and MySQL databases without running your own database container.

Each database receives an isolated database name, username and generated password.

PostgreSQL pgAdmin access
MySQL phpMyAdmin access
Database host db.cloudexa.dev
Application config DATABASE_URL
PostgreSQL connection ENV
DATABASE_URL=postgresql://username:[email protected]:5432/database
MySQL connection ENV
DATABASE_URL=mysql://username:[email protected]:3306/database
Keep database credentials private

A connection URL contains everything needed to authenticate to your database.

10 · Databases

PostgreSQL

PostgreSQL databases include CLI credentials and a dedicated pgAdmin web login.

Cloudexa creates a dedicated PostgreSQL role and database. A matching pgAdmin account is also generated automatically.

Host db.cloudexa.dev
Port 5432
Web panel pgadmin.cloudexa.dev
Authentication Generated per database
psql Shell
psql \
  -h db.cloudexa.dev \
  -p 5432 \
  -U your_database_user \
  -d your_database
pgAdmin

Open https://pgadmin.cloudexa.dev and sign in using the web credentials displayed on the database page.

11 · Databases

MySQL

MySQL-compatible databases can be managed through phpMyAdmin.

Host db.cloudexa.dev
Port 3306
Web panel phpmyadmin.cloudexa.dev
Login Database username + password
MySQL client Shell
mysql \
  -h db.cloudexa.dev \
  -P 3306 \
  -u your_database_user \
  -p
phpMyAdmin

Open https://phpmyadmin.cloudexa.dev and use the same username and password as your MySQL database.

12 · Platform

Resource limits

Limits depend on your Cloudexa account plan.

Resource Normal Premium
Running instances 2 10
Memory / instance 512 MB 2 GB
CPU / instance 1 vCPU 2 vCPU
Process limit 256 1,024
Build timeout 10 min 30 min
Databases 1 5

CPU limits apply to containers running on shared infrastructure. They are not dedicated physical CPU cores.

13 · Platform

Container isolation

Hosted applications run separately from the Cloudexa host.

Host filesystem Not mounted
Docker socket Not exposed
Privileged mode Disabled
Linux capabilities Restricted

Your application can execute commands inside its own container, but it does not receive direct access to the Cloudexa host.

14 · Help

Troubleshooting

Common issues and the first things to check.

Deployment stays on Building
Inspect the deployment logs. Dependency installation, runtime detection or your build command may have failed.
Application is running but cannot be opened
Confirm that your application listens on process.env.PORT and binds to 0.0.0.0.
Runtime was not detected
Make sure the repository contains the expected runtime files such as package.json, requirements.txt, composer.json or index.html.
Environment variable is missing
Add the variable from your hosting project's Environment section and redeploy the application.
PostgreSQL connection fails
Confirm that you are connecting to db.cloudexa.dev:5432 using the database, username and password shown by Cloudexa.
MySQL connection fails
Confirm that you are connecting to db.cloudexa.dev:3306 using your generated MySQL credentials.
Container exits immediately
Inspect runtime logs. A hosted service stops when its main application process exits.

Build something on Cloudexa

Push code, deploy it and connect the services your project needs.

Create account
Copied