#!/usr/bin/env bash # Deploy a test instance to the Debian server (ssh alias "softvisor") on port 3333. # Builds a static x86_64 binary in Docker, ships it with the frontend, installs a # systemd unit (scp/tar, the server has no rsync). Safe to re-run: keeps the existing .env (and therefore the DB/admin). set -euo pipefail cd "$(dirname "$0")/.." HOST=${HOST:-softvisor} PORT=${PORT:-3333} DIR=/opt/monitoring echo "== build frontend" (cd frontend && npm run build >/dev/null) echo "== build static linux binary (docker)" docker run --rm -v "$PWD/backend":/home/rust/src -v cargo-registry-musl:/root/.cargo/registry \ messense/rust-musl-cross:x86_64-musl cargo build --release -p api -q echo "== upload" ssh "$HOST" "mkdir -p $DIR/data" ssh "$HOST" "systemctl stop monitoring.service 2>/dev/null || true" scp -q backend/target/x86_64-unknown-linux-musl/release/monitoring-server "$HOST:$DIR/monitoring-server" COPYFILE_DISABLE=1 tar --no-xattrs -C frontend/dist -czf - . | ssh "$HOST" "rm -rf $DIR/dist && mkdir -p $DIR/dist && tar -C $DIR/dist -xzf -" echo "== configure (first run only)" if ! ssh "$HOST" "test -f $DIR/.env"; then ADMIN_PW=$(openssl rand -base64 18 | tr -d '/+=' | head -c 20) ssh "$HOST" "umask 077; cat > $DIR/.env" <