#!/usr/bin/env bash set -euo pipefail if [[ "${EUID}" -eq 0 ]]; then echo "Run this script as a regular sudo-capable user, not root." exit 1 fi echo "[1/6] Updating apt package index..." sudo apt-get update -y echo "[2/6] Installing required Ubuntu packages..." sudo apt-get install -y ca-certificates curl gnupg lsb-release make git if ! command -v docker >/dev/null 2>&1; then echo "[3/6] Installing Docker Engine..." sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list >/dev/null sudo apt-get update -y sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin else echo "[3/6] Docker already installed, skipping." fi echo "[4/6] Ensuring current user can run Docker..." sudo usermod -aG docker "$USER" echo "[5/6] Initializing YakPanel environment file..." cd "$(dirname "$0")/.." cp -n .env.example .env || true echo "[6/6] Starting YakPanel dev stack..." # Use scripts/docker-compose.sh so compose works in this shell even when docker group # was just added (usermod does not apply until a new login unless we use sg docker). bash "$(dirname "$0")/docker-compose.sh" up -d --build bash "$(dirname "$0")/docker-compose.sh" run --rm db-migrate echo echo "YakPanel dev stack started." echo "API: http://localhost:8080/health" echo "PostgreSQL: localhost:5432" echo "Redis: localhost:6379" echo "NATS monitor: http://localhost:8222" echo "MinIO console: http://localhost:9001" echo echo "Docker group is configured; if a future terminal still cannot run docker, log out and back in once."