All pages

Start

Quickstart

From a GitHub repository to a public HTTPS address. It takes a few minutes, most of it the first build.

Deploy a repository

  1. Sign in with GitHub

    ArrahCloud asks GitHub for permission to read your repositories so it can clone the one you choose. The access token is stored encrypted and is used only to clone and to read commits.
  2. Create a project

    Choose New project, pick a repository and a branch. The framework is detected and shown before anything is built. If the repository has a Dockerfile, that is used as it is.
  3. Add what the application needs

    Variables such as API keys go in as variables. They are encrypted and cannot be read back, only replaced.
  4. Deploy

    The build log streams as it runs. When the new container answers its health check, traffic is switched to it and the project's address is live:
    https://my-api-a81dx.apps.example.com

Give it a database

On the project's Database tab, choose Create database. A Postgres server starts on the project's private network, and from the next deployment the application receives these variables:

DATABASE_URL
The whole connection string, which most libraries accept directly.
PGHOST · PGPORT · PGUSER · PGPASSWORD · PGDATABASE
The same, in parts.

The same, from a terminal

Everything above can be done with the arrah command. Create a token under Settings → API tokens, then:

Terminal
pipx install https://cloud.example.com/api/cli/arrah-cli.tar.gz
arrah login --url https://cloud.example.com
arrah projects create --repo you/my-api --deploy
arrah db create my-api
arrah deploy my-api

The full list of commands is in Command line, and Coding agents explains how to let an assistant do the same with limited access.

Where to go next

How a deployment works
What happens between a push and a live address, and what a failure leaves behind.
Templates
Start from existing software instead of your own code.
Your own domain
Serve the project at an address you own.
Sizes and limits
Memory, CPU, disk, and what happens at each limit.