VidArch Docs
Start

Docker Installation

Deploy VidArch with the repository Compose files, persistent volumes and hardening.

The repository ships two Compose files. They are not interchangeable.

FileImage sourceWhen to use it
docker-compose.ymllocal build tagged vidarch:localvalidate 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: 20s

Create .env next to it:

AUTH_PASSWORD=choose-a-long-unique-passphrase

Pin a recoverable image before you depend on the instance:

export VIDARCH_IMAGE=ghcr.io/lucas-lepajollec/vidarch:sha-<full-commit>
docker compose up -d

Open 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 --build

That 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.

On this page