Docker Installation
Deploy VidArch with the repository Compose files, persistent volumes and hardening.
The repository ships two Compose files. They are not interchangeable.
| File | Image source | When to use it |
|---|---|---|
docker-compose.yml | local build tagged vidarch:local | validate or run the current checkout |
docker-compose.example.yml | ${VIDARCH_IMAGE:-ghcr.io/lucas-lepajollec/vidarch:latest} | homelab instance from the published image |
Both bind 127.0.0.1:2499:2499 by default, mount ./data and ./downloads, use a read-only root, drop all capabilities and health-check http://127.0.0.1:2499/api/health inside the container.
Homelab from the published image
Copy docker-compose.example.yml into a dedicated directory as docker-compose.yml, or start from this equivalent:
services:
vidarch:
image: ${VIDARCH_IMAGE:-ghcr.io/lucas-lepajollec/vidarch:latest}
container_name: vidarch
restart: unless-stopped
ports:
- "${VIDARCH_BIND_ADDRESS:-127.0.0.1}:2499:2499"
environment:
PORT: 2499
NODE_ENV: production
DATA_DIR: /app/data
DOWNLOADS_DIR: /app/downloads
AUTH_PASSWORD: ${AUTH_PASSWORD:-}
volumes:
- ./data:/app/data
- ./downloads:/app/downloads
read_only: true
tmpfs:
- /tmp:size=128m,uid=1000,gid=1000,mode=1770
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
init: true
healthcheck:
test: ["CMD", "curl", "--fail", "--silent", "http://127.0.0.1:2499/api/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20sCreate .env next to it:
AUTH_PASSWORD=choose-a-long-unique-passphrasePin a recoverable image before you depend on the instance:
export VIDARCH_IMAGE=ghcr.io/lucas-lepajollec/vidarch:sha-<full-commit>
docker compose up -dOpen http://127.0.0.1:2499, then follow first startup. Set VIDARCH_BIND_ADDRESS=0.0.0.0 only after configuring a password, and only for a trusted LAN.
Build the current checkout
docker compose up -d --buildThat Compose file builds vidarch:local. Do not run docker compose pull against it.
Never run docker compose down -v as part of a normal stop. Back up data/ and downloads/ before replacing a running image.