Skip to content

Installation

Install Arcane with Docker Compose or the Linux install script.

Arcane runs as a single container that manages Docker on the same host through the Docker socket. Install it with Docker Compose, or on Linux run the install script, which also sets up Docker.

Arcane needs an ENCRYPTION_KEY that is 32 bytes long (raw, base64, or hex). Generate one with any of these commands and copy the output.

With a temporary Arcane container:

Terminal window
docker run --rm ghcr.io/getarcaneapp/manager:latest /app/arcane generate secret

With the Arcane CLI, if you already have it installed:

Terminal window
arcane-cli generate secret

With OpenSSL:

Terminal window
openssl rand -hex 32

Paste your key in place of <your-encryption-key>, and replace /opt/docker with the folder where your Compose projects live (or where you want Arcane to create them):

services:
arcane:
image: ghcr.io/getarcaneapp/manager:latest
container_name: arcane
ports:
- '3552:3552'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- arcane-data:/app/data
- /opt/docker:/opt/docker
environment:
- APP_URL=http://localhost:3552
- PUID=1000
- PGID=1000
- ENCRYPTION_KEY=<your-encryption-key>
- PROJECTS_DIRECTORY=/opt/docker
cgroup: host
restart: unless-stopped
volumes:
arcane-data:
Terminal window
docker compose up -d

Open localhost:3552 in your browser and sign in with the default credentials below. Arcane asks you to change the password the first time you sign in.

Username:

Terminal window
arcane

Password:

Terminal window
arcane-admin
After signing in, the dashboard summarizes your environment and its resource usage.
Arcane dashboard showing running containers, images, volumes, and host resource usage.Arcane dashboard showing running containers, images, volumes, and host resource usage.

After signing in, the dashboard summarizes your environment and its resource usage.

You don’t need any of these to get started. Expand a section if it applies to your setup.

Folders and volumes

What each mount is for, plus optional build and backup folders.

Mount Purpose
/var/run/docker.sock Gives Arcane access to Docker. To limit what Arcane can do, use a socket proxy instead.
arcane-data Stores Arcane’s database and data.
Projects folder Holds your Compose projects. See Projects folder.
/builds Optional. Build contexts for the Build Workspace. See Image Builds.
/backups Optional. Where exported backups are stored. See Backups.

SELinux hosts

Use a socket proxy or relabel the Docker socket mount.

On SELinux hosts, pick one of these:

  • Use a socket proxy (recommended). Run a Docker socket proxy, point Arcane at it with DOCKER_HOST, and add :z to the projects folder mount (/opt/docker:/opt/docker:z). Socket Proxy has the full Compose file.
  • Mount the socket directly. If you can’t run a proxy, disable SELinux labelling for the Arcane container and relabel the projects mount:
services:
arcane:
image: ghcr.io/getarcaneapp/manager:latest
container_name: arcane
ports:
- '3552:3552'
security_opt:
- label:disable
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- arcane-data:/app/data
- /opt/docker:/opt/docker:z
environment:
- PROJECTS_DIRECTORY=/opt/docker

Container health check

Add a Docker health check using the built-in arcane health command.

The Arcane image includes an arcane health command for Docker health checks. It calls Arcane’s local /api/health endpoint and exits non-zero if the server isn’t responding. Add it to your compose.yaml:

services:
arcane:
image: ghcr.io/getarcaneapp/manager:latest
# ...
healthcheck:
test: ['CMD', './arcane', 'health', '--timeout', '2s']
interval: 10s
timeout: 3s
retries: 5
start_period: 15s

start_period gives Arcane time to run database migrations on first boot before failed checks count against retries.

External Postgres database

Store Arcane's data in Postgres instead of the built-in SQLite file.

Arcane stores its data in a SQLite file inside arcane-data by default, which works well for most setups. To use Postgres instead, set DATABASE_URL:

Terminal window
postgres://<db_username>:<db_password>@<postgres_url>:<postgres_port>/<postgres_db_name>

Replace each placeholder with your database’s username, password, server address, port, and database name.

The default SQLite value, if you need to set it back, is:

Terminal window
file:data/arcane.db?_pragma=journal_mode(WAL)&_pragma=busy_timeout(2500)&_txlock=immediate

Reverse proxy

Enable WebSocket support when Arcane is behind a proxy or custom domain.

Outbound HTTP proxy

Route Arcane's outbound traffic through an HTTP proxy.

If Arcane has to reach the internet through a proxy, for example to download templates or check for updates, see Outbound Proxy.

Supported architectures

CPU architectures available for the images and binaries.

The manager and agent images are published for:

  • linux/amd64
  • linux/arm64
  • linux/arm/v7
  • linux/riscv64

Docker picks your host’s architecture automatically. CLI and agent binaries on GitHub Releases also cover Linux 386 and macOS (amd64, arm64).

Preview builds

Try features that haven't been released yet.

Preview builds are published from the main branch under the :next image tag. They’re for testing, not production. See Preview Builds.