Install

Every release ships static binaries for Linux AMD64 and ARM64, plus a multi-arch container image. Pick whichever fits your fleet — all three end up with the same daemon and the same Galaxy API on top.

Bare metal (systemd)

Fetch a binary from the releases page. Then--install as root bootstraps everything: the orbitron user and group, directories, config files, a systemd unit and a logrotate script — then enables and starts the daemon.

SETUPterminalbash
$ sudo ./bin/orbitron --install
$ sudo systemctl status orbitron        # active (running)

# create an admin token (script-friendly: -q)
$ sudo orbitron --generate-token -q

# hot-reload config.yml, no downtime
$ sudo systemctl reload orbitron

systemctl reload sends a SIGHUP: the daemon re-reads/etc/orbitron/config.yml, re-validates it (including OIDC discovery when enabled) and rebuilds the HTTP server on the same address. If the new config fails to validate, the running daemon is left untouched.

Docker / Compose

The GHCR image runs non-root with git and openssh-client bundled. Config is rendered entirely from ORBITRON_* environment variables — no file to mount. Persist the cache on a volume.

DEPLOYdocker-compose.ymlyaml
services:
  orbitron:
    image: ghcr.io/chrisvanmeer/orbitron:latest
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      ORBITRON_LISTEN_ADDR: "0.0.0.0:8080"
      ORBITRON_STORAGE_PATH: "/var/lib/orbitron/storage"
      ORBITRON_REQUIRE_AUTH_PULL: "false"
    volumes:
      - orbitron-cache:/var/lib/orbitron/storage

volumes:
  orbitron-cache:

On first start the admin token is printed to the container logs:

TOKENterminalbash
$ docker compose logs orbitron | grep "ADMIN TOKEN"
orbitron  | [2026-09-23 08:12:04] ADMIN TOKEN: obt_xxxx...

HashiCorp Nomad

A battle-tested orbitron.nomad.hcl ships in the repo — service, volume, health check against /healthz and secrets via env already wired up.

DEPLOYterminalbash
$ nomad run orbitron.nomad.hcl
$ nomad status orbitron

CLI & tokens

CLIterminalbash
# Generate an administrative Bearer token
sudo orbitron --generate-token

# Raw token output for script exports
export ORBITRON_TOKEN=$(sudo orbitron --generate-token -q)

# Revoke a token
sudo orbitron --revoke-token <TOKEN>

# Interactively scan + prune unreferenced versions (window: --days, default 90)
sudo orbitron --prune

# Run with a custom config
orbitron --config /etc/orbitron/config.yml

# Show version
orbitron --version