#!/usr/bin/env sh set -eu ROOT_DIR=${ROOT_DIR:-"/opt/project"} setup() { packages; firewall; } services() { cd "$ROOT_DIR"; docker compose --profile services "$@"; } core() { cd "$ROOT_DIR"; docker compose --profile core "$@"; } # TODO: use --wait and add health checks start() { stop || true; services up -d; } stop() { services down; } packages() { apt install \ docker.io docker-buildx docker-compose-v2 \ ufw } firewall() { ufw allow 443/tcp ufw allow 80/tcp ufw allow 22 ufw enable } update() { apt update; services build --pull; } cmd="$1"; shift; case "$cmd" in setup|update|start|stop|firewall|packages|services|core) "$cmd" "$@" ;; *) echo "Invalid command: $cmd"; exit 1 ;; esac