Docker Compose

The whole product on one host: a Panel and a Core on one Docker network, pulled straight from published images — no clone needed. Prerequisite: Docker (on Windows: Docker Desktop with the WSL2 backend; every docker command below is identical in PowerShell).

Create a folder and step into it:

mkdir -p actana/repos
cd actana

Save this beside it as docker-compose.yml:

services:
  panel:
    image: actana/panel:${ACTANA_TAG:-latest}
    restart: unless-stopped
    ports:
      - "127.0.0.1:7420:7420"
    volumes:
      - panel-data:/data

  core:
    image: actana/core:${ACTANA_TAG:-latest}
    restart: unless-stopped
    environment:
      - ACTANA_PUBLIC_HOST=core
    volumes:
      - core-home:/home/core
      - ./repos:/home/core/repos

volumes:
  panel-data:
  core-home:

Pull the images:

docker compose pull

Start it:

docker compose up -d

Mint a pairing code:

docker compose exec core actana pair new

At a terminal that prints a framed handout: the one-time code, the CA fingerprint, the expiry, the session id — and, under the frame, exactly what to do with them from the Panel or from another terminal.

Part 1 — create your Operator account

Open http://localhost:7420.

A brand-new Panel has no account, so it opens on Set up your Panel. Choose a name and a password. The password is stored only as a hash and there is no recovery, so keep it somewhere safe.

Do this first. The Panel has no session until this account exists, and any other link you open before it is redirected here — including the one in Part 2.

Part 2 — open the wizard on the pairing step

Now open http://localhost:7420/?step=redeem.

That opens the first-run wizard directly on its last step, Redeem the code here. Steps 1 and 2 — install a Core, mint a code — are already done for you: the compose file did the install, and pair new minted the code.

Fill it in with what pair new printed:

  • Core address — core:8443
  • CA fingerprint — compare it against the one on that terminal. The Panel does not send the code until the two match.
  • Session and Pairing code — both from the framed box.

The ?step=redeem parameter only chooses which step the wizard opens on; it skips the reading, not the checking. It also only works once Part 1 is done — on a Panel with no account yet, the link is redirected to the setup screen and the parameter is lost along the way.

Full walkthrough: Panel Pairing.

core:8443 is the Compose service name — the Panel dials it over the compose network; the Core publishes no port to your machine at all.

That is the whole quickstart: Fleet shows the Core, drop a checkout into ./repos, add it as a project, start a session.

Where to next

  • Pin both images together with ACTANA_TAG=x.y.z in a .env beside the file (npm view @actana/cli version prints the current release). Panel and Core are version-locked at the handshake.
  • Drive this Core from actana on your host machine too, or from the LAN: the certificate must cover the extra names — see Reaching a compose Core from a local CLI.
  • Volumes, a second Core, TLS in front of the Panel, backups: Panel Installation.
Built by Qcentic