Nimbus

Control panel for a single server

Your sites on one box you understand.

Nimbus turns one Linux server into a hosting platform you can hold in your head. Name a domain, pick a stack, and it is serving over HTTPS about a minute later.

Swept away

  • kubernetes manifests
  • ingress controllers
  • terraform state
  • node pools
  • helm charts
  • IAM policies

one box one panel your sites

Day to day

What the panel does

Add a site domain + stack
Name the domain and choose a stack. The panel creates the container, scaffolds the folder, and publishes the route.
Serve it over HTTPS caddy
Every domain and alias gets its own certificate, issued and renewed on its own. There is no TLS configuration to write.
Deploy on push gitea actions
The runner lives inside the site’s own container. It builds the new release there and swaps it in, so shipping never needs a shell on the box.
Give a site a database mysql
One database and one user per site, created on request. phpMyAdmin is already on the box for when you need to look inside.
Edit the environment .env
Read and write a Laravel site’s .env from the panel. Saves are atomic, and database credentials can be filled in for you.
Limit who can reach it ip allowlist
The panel answers only to addresses you have unlocked, and any folder of any site can sit behind the same gate.

Not just a UI

Every panel action is available to a program

The control panel is one client of the platform, not the platform itself. Anything you can do by clicking — create a site, change a stack, provision a database, unlock an address, roll a deploy — a script or an agent can do too.

MCP server for agents

Point an MCP-speaking assistant at your box and it discovers the tools it can call, with the same permissions as the account behind them.

{
  "mcpServers": {
    "nimbus": {
      "url": "https://panel.example.com/mcp",
      "headers": { "Authorization": "Bearer $NIMBUS_TOKEN" }
    }
  }
}
HTTP API for scripts

A JSON API over the same actions, with token auth. Useful when the caller is a shell script, a CI job, or another service.

$ curl -H "Authorization: Bearer $NIMBUS_TOKEN" \
    https://panel.example.com/api/sites

$ curl -X POST -H "Authorization: Bearer $NIMBUS_TOKEN" \
    -d 'domain=shop.example.com&image=laravel' \
    https://panel.example.com/api/sites

Both speak the panel’s own vocabulary — sites, stacks, routes, databases, locks — so what you learn from the guide applies to both. How an agent uses them →

The stack

What runs on the box

Per site

Each site gets its own container, built from one of these.

  • Laravel app laravel PHP 8.3 — nginx, php-fpm and supervisor, with the deployment runner baked in.
  • Static site web-base nginx serving a docroot from the site’s folder. This site runs on it.

Shared

Containers every site on the box uses.

  • caddyTerminates TLS and routes each domain to its container.
  • mysqlOne server, one database per site that asks for one.
  • redisCache and queues for the sites that want them.
  • phpmyadminDatabase access in the browser, behind the same IP gate.
  • panelThe control panel — a site on the platform it manages.

Running an app on a Nimbus box?

The site owner’s guide covers the whole path — the folder your code lives in, the stack that runs it, the domain that reaches it, and the gate that can stand in front.

Read the guide