On this page
Installation
Install Arcane with Docker Compose or the Linux install script.
Install Arcane to manage Docker on your host through a single container. Use Docker Compose, or run the Linux install script to set up both Docker and Arcane.
1. Generate an encryption key
Section titled “1. Generate an encryption key”Generate a 32-byte ARCANE_ENCRYPTION_KEY (raw, base64, or hex) with one of these commands and copy the output.
With a temporary Arcane container:
docker run --rm ghcr.io/getarcaneapp/manager:latest /app/arcane generate secretWith the Arcane CLI:
arcane-cli generate secretWith OpenSSL:
openssl rand -hex 322. Create compose.yaml
Section titled “2. Create compose.yaml”Replace <your-encryption-key> with your key and /opt/docker with the folder for your Compose projects:
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: - ARCANE_APP_URL=http://localhost:3552 - PUID=1000 - PGID=1000 - ARCANE_ENCRYPTION_KEY=<your-encryption-key> - ARCANE_PROJECTS_DIRECTORY=/opt/docker cgroup: host restart: unless-stopped
volumes: arcane-data:Projects folder
Section titled “Projects folder”If you mount a different container path (such as /opt/docker:/app/data/projects), Arcane translates container paths to host paths automatically. You can also set the mapping explicitly with ARCANE_PROJECTS_DIRECTORY=<containerPath>:<hostPath>. If omitted, ARCANE_PROJECTS_DIRECTORY defaults to /app/data/projects.
3. Start Arcane
Section titled “3. Start Arcane”docker compose up -dRun the install script
Section titled “Run the install script”Run the Linux install script to install Docker and Arcane:
curl -fsSL https://getarcane.app/install.sh | sudo bashUninstall
Section titled “Uninstall”Run the interactive uninstaller to choose whether to keep Arcane data, the Arcane user and group, and Docker:
curl -fsSL https://getarcane.app/uninstall.sh -o /tmp/arcane-uninstall.sh && sudo bash /tmp/arcane-uninstall.shTo remove everything without prompting:
curl -fsSL https://getarcane.app/uninstall.sh | sudo bash -s -- --force --remove-allOpen Arcane
Section titled “Open Arcane”Open localhost:3552, sign in with the default credentials, and set a new password when prompted.
Username:
arcanePassword:
arcane-adminMore setup options
Section titled “More setup options”Expand any section that applies to your environment.
Folders and volumes
What each mount is for, plus optional build and backup folders.
Folders and volumes
What each mount is for, plus optional build and backup folders.
| Mount | Purpose |
|---|---|
/var/run/docker.sock |
Connects Arcane to Docker. Use a socket proxy to restrict access. |
arcane-data |
Stores Arcane’s database and application data. |
| Projects folder | Holds your Compose projects. See Projects folder. |
/builds |
Optional. Stores Dockerfiles and build contexts for Image Builds. |
/backups |
Optional. Stores exported volume Backups. |
SELinux hosts
Use a socket proxy or relabel the Docker socket mount.
SELinux hosts
Use a socket proxy or relabel the Docker socket mount.
On SELinux hosts, choose one of two options:
- Use a socket proxy (recommended). Run a proxy, set
DOCKER_HOST, and add:zto the projects mount (/opt/docker:/opt/docker:z). See Socket Proxy. - Mount the socket directly. Disable SELinux labeling on 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: - ARCANE_PROJECTS_DIRECTORY=/opt/dockerContainer health check
Add a Docker health check using the built-in arcane health command.
Container health check
Add a Docker health check using the built-in arcane health command.
Add a Docker health check using the built-in arcane health command, which checks /api/health:
services: arcane: image: ghcr.io/getarcaneapp/manager:latest # ... healthcheck: test: ['CMD', './arcane', 'health', '--timeout', '2s'] interval: 10s timeout: 3s retries: 5 start_period: 15sstart_period gives Arcane time to finish first-boot database migrations before failed checks count toward retries.
External Postgres database
Store Arcane's data in Postgres instead of the built-in SQLite file.
External Postgres database
Store Arcane's data in Postgres instead of the built-in SQLite file.
Set ARCANE_DATABASE_URL to store Arcane’s data in Postgres instead of the default SQLite file in arcane-data:
postgres://<db_username>:<db_password>@<postgres_url>:<postgres_port>/<postgres_db_name>To switch back to the default SQLite database, set:
file:data/arcane.db?_pragma=journal_mode(WAL)&_pragma=busy_timeout(2500)&_txlock=immediateReverse proxy
Enable WebSocket support when Arcane is behind a proxy or custom domain.
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.
Outbound HTTP proxy
Route Arcane's outbound traffic through an HTTP proxy.
Configure an outbound proxy if Arcane needs one to download templates or check for updates. See Outbound Proxy.
Supported architectures
CPU architectures available for the images and binaries.
Supported architectures
CPU architectures available for the images and binaries.
Docker automatically pulls the matching manager or agent image for:
linux/amd64linux/arm64linux/arm/v7linux/riscv64
CLI and agent binaries on GitHub Releases also support Linux 386 and macOS (amd64, arm64).
Preview builds
Try features that haven't been released yet.
Preview builds
Try features that haven't been released yet.
Use the :next image tag to test unreleased builds from the main branch on non-production instances. See Preview Builds.