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
| Mount | Required | Description |
|---|
/archive | Yes | The local directory to archive or restore. All Arius operations target this path. |
/logs | No | Directory 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.
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.services:
arius-archive:
image: woutervanranst/arius
env_file: .env
volumes:
- /data/photos:/archive
command: >
archive
--passphrase "my secret phrase"
--container arius-backups
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.