Skip to content

Install

labdex is one container (or one Python package) with a SQLite database in its data folder. PostgreSQL is optional.

Docker

docker run -d --name labdex -p 8080:8080 -v labdex-data:/data \
  -e LABDEX_COOKIE_SECURE=true ghcr.io/labdex-app/labdex:1

Open http://127.0.0.1:8080. On an empty database the first visit asks you to create the administrator (or set LABDEX_ADMIN_USER and LABDEX_ADMIN_PASSWORD).

The image runs as an unprivileged user with a read-only root filesystem; only /data is written. Put labdex behind your reverse proxy over HTTPS.

Verify the image

Release images are signed with cosign (keyless, GitHub Actions OIDC) and carry an SBOM. See Security.

Docker Compose

The repository's docker-compose.yml starts labdex, and with --profile postgres a PostgreSQL next to it. A commented worker service runs jobs in their own container (Jobs and the worker).

git clone https://github.com/labdex-app/labdex && cd labdex
docker compose up -d
docker compose exec labdex labdex import --yes /app/examples/homelab.yaml   # optional sample data

Without Docker

cd frontend && npm ci && npm run build && cd ..   # builds the UI into backend/labdex/static
cd backend && pip install -e ".[server]"          # optional: ".[postgres,uptimekuma]", nmap, ansible-core
labdex user create admin --admin
gunicorn --workers 1 --threads 16 -b 127.0.0.1:8080 "labdex:create_app()"

Python 3.11 or newer. nmap is needed for the nmap plugin, ansible-core for the Ansible runner and the login banner plugin.