Skip to main content
Arius is available as a Docker image at woutervanranst/arius. Running in Docker is the recommended approach for scheduled archival on Linux servers and NAS devices.

How Docker mode works

When Arius detects it is running inside a container (DOTNET_RUNNING_IN_CONTAINER=true), it uses Docker-specific command variants where LocalRoot is always fixed to /archive. You mount your local directory to /archive and Arius operates on it.
In Docker mode, the LocalRoot path is always /archive. You cannot change it. Mount the directory you want to archive or restore to /archive using a volume.

Volume mounts

MountRequiredDescription
/archiveYesThe local directory to archive or restore. All Arius operations target this path.
/logsNoDirectory for log files. Mount a host path here to persist logs across container runs.

Archive

docker run \
  -v /absolute/path/to/archive:/archive \
  -v /absolute/path/to/logs:/logs \
  -e ARIUS_ACCOUNT_KEY="base64encodedkey==" \
  woutervanranst/arius \
  archive \
    --accountname mystorageaccount \
    --passphrase  "my secret phrase" \
    --container   arius-backups \
    --tier        archive

Restore

docker run \
  -v /absolute/path/to/archive:/archive \
  -v /absolute/path/to/logs:/logs \
  -e ARIUS_ACCOUNT_KEY="base64encodedkey==" \
  woutervanranst/arius \
  restore \
    --accountname mystorageaccount \
    --passphrase  "my secret phrase" \
    --container   arius-backups \
    --download

Passing credentials

Pass ARIUS_ACCOUNT_KEY as a Docker environment variable using -e to avoid exposing the key in command history or logs. ARIUS_ACCOUNT_NAME can also be passed this way:
docker run \
  -v /data/photos:/archive \
  -e ARIUS_ACCOUNT_NAME=mystorageaccount \
  -e ARIUS_ACCOUNT_KEY="base64encodedkey==" \
  woutervanranst/arius \
  archive \
    --passphrase "my secret phrase" \
    --container  arius-backups
Do not pass --accountkey as a command-line argument in Docker environments. Flags passed directly to docker run may be visible in container inspection output (docker inspect). Use -e ARIUS_ACCOUNT_KEY instead.

Docker Compose example

The following docker-compose.yml runs a scheduled nightly archive. Pair it with a cron job or a scheduler like Ofelia to trigger the service on a schedule.
docker-compose.yml
services:
  arius-archive:
    image: woutervanranst/arius
    volumes:
      - /data/photos:/archive
      - /var/log/arius:/logs
    environment:
      ARIUS_ACCOUNT_NAME: mystorageaccount
      ARIUS_ACCOUNT_KEY: base64encodedkey==
    command: >
      archive
        --passphrase "my secret phrase"
        --container  arius-backups
        --tier       archive
        --remove-local
To trigger it manually:
docker compose run --rm arius-archive
Store ARIUS_ACCOUNT_KEY in a .env file and reference it with env_file in Docker Compose to keep secrets out of version control.
docker-compose.yml
services:
  arius-archive:
    image: woutervanranst/arius
    env_file: .env
    volumes:
      - /data/photos:/archive
    command: >
      archive
        --passphrase "my secret phrase"
        --container  arius-backups
.env
ARIUS_ACCOUNT_NAME=mystorageaccount
ARIUS_ACCOUNT_KEY=base64encodedkey==

Logging in Docker

Arius writes logs to /logs inside the container. Mount a host directory to persist them:
docker run \
  -v /data/photos:/archive \
  -v /var/log/arius:/logs \
  -e ARIUS_ACCOUNT_KEY="base64encodedkey==" \
  woutervanranst/arius \
  archive \
    --accountname mystorageaccount \
    --passphrase  "my secret phrase" \
    --container   arius-backups
Each run produces a timestamped log file at /logs/arius-<yyyyMMdd_HHmmss>.log.

Build docs developers (and LLMs) love