#!/bin/sh set -eu cd "$(dirname "$0")/.." if ! command -v docker >/dev/null 2>&1; then echo "Docker Engine is required" >&2 exit 2 fi if ! docker compose version >/dev/null 2>&1; then echo "Docker Compose v2 is required (docker compose ...)" >&2 exit 3 fi if [ ! -c /dev/net/tun ]; then echo "/dev/net/tun is missing; TAP mode requires a Linux host with TUN/TAP enabled" >&2 exit 4 fi if [ ! -f .env ]; then cp .env.example .env ADMIN_PASSWORD_GENERATED="$(od -An -N24 -tx1 /dev/urandom | tr -d ' \n')" sed -i "s/^ADMIN_PASSWORD=.*/ADMIN_PASSWORD=${ADMIN_PASSWORD_GENERATED}/" .env chmod 0600 .env echo "[first-run] generated dashboard password in .env (ADMIN_USERNAME=admin)" fi echo "[first-run] building IDS image" docker compose build echo "[first-run] migrating legacy bind-mount data when needed" ./scripts/migrate-docker-volumes.sh echo "[first-run] starting IDS" docker compose up -d echo "[first-run] running end-to-end TZSP test" ./scripts/selftest.sh echo "[first-run] dashboard: http://127.0.0.1:8080/"