33 lines
1.2 KiB
Bash
Executable File
33 lines
1.2 KiB
Bash
Executable File
#!/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=<random>, ZAI_RENAUD_API_KEY=<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 \
|
|
&& sudo docker build -q -f daemon/Dockerfile -t lvmh-daemon:latest . \
|
|
&& sudo docker build -q -f docker/worker.Dockerfile -t lvmh-worker:latest . \
|
|
&& sudo docker compose up -d && sudo docker compose ps"
|
|
echo "Deployed: http://$REMOTE:8686"
|