#!/usr/bin/env bash # Deploy lvmh to alarm over ssh (tailnet). rsync source, build images there, # compose up. Requires .env on the remote (created on first run). set -euo pipefail REMOTE="${1:-alarm}" REMOTE_DIR="${2:-/zdata/root/dockerFiles/lvmh}" if ! ssh "$REMOTE" "test -f $REMOTE_DIR/.env" 2>/dev/null; then echo "ERROR: $REMOTE:$REMOTE_DIR/.env missing. Create it first (see .env.example):" echo " ssh $REMOTE 'mkdir -p $REMOTE_DIR && nano $REMOTE_DIR/.env'" echo " # LVMH_TOKEN=, ZAI_RENAUD_API_KEY=" exit 1 fi # web/dist must exist (daemon serves it) if [ ! -f web/dist/index.html ]; then echo "building web/dist first..." (cd web && bun install && bun run build) fi rsync -az --delete \ --exclude .git --exclude node_modules --exclude web/node_modules \ --exclude .env --exclude .scratch --exclude .pi --exclude coverage \ ./ "$REMOTE:$REMOTE_DIR/" echo "building daemon image + worker image on $REMOTE..." ssh "$REMOTE" "cd $REMOTE_DIR \ && docker build -q -f daemon/Dockerfile -t lvmh-daemon:latest . \ && docker build -q -f docker/worker.Dockerfile -t lvmh-worker:latest . \ && docker compose up -d && docker compose ps" echo "Deployed: http://$REMOTE:8686"