#!/usr/bin/env bash set -euo pipefail # Clio deployment script # Deploys clio-api and clio-ui to server (10.0.0.45) # # Usage: ./deploy.sh [api|ui|all] SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" CLIO_ROOT="$(dirname "$(dirname "$SCRIPT_DIR")")" SERVER_HOST="10.0.0.45" SERVER_USER="thallock" SERVER_PORT="2252" # Server paths API_CODE_DIR="/work/hosting/recordings" UI_DIR="/work/hosting/recordings-viewer" SSH_OPTS="-p ${SERVER_PORT}" SSH_CMD="ssh ${SSH_OPTS} ${SERVER_USER}@${SERVER_HOST}" RSYNC_SSH="ssh -p ${SERVER_PORT}" deploy_api() { echo "=== Deploying clio-api ===" rsync -avz --delete \ --exclude '.venv' \ --exclude '__pycache__' \ --exclude '*.pyc' \ --exclude 'recordings/' \ --exclude 'recordings.db' \ --exclude 'keys/' \ --exclude 'data/' \ --exclude '.git' \ --exclude 'nixos/' \ -e "${RSYNC_SSH}" \ "${CLIO_ROOT}/clio-api/" \ "${SERVER_USER}@${SERVER_HOST}:${API_CODE_DIR}/" echo "Running uv sync on server..." ${SSH_CMD} "cd ${API_CODE_DIR} && uv sync" echo "clio-api deployed." } deploy_ui() { echo "=== Deploying clio-ui ===" rsync -avz --delete \ -e "${RSYNC_SSH}" \ "${CLIO_ROOT}/clio-ui/" \ "${SERVER_USER}@${SERVER_HOST}:${UI_DIR}/" echo "clio-ui deployed." } case "${1:-all}" in api) deploy_api ;; ui) deploy_ui ;; all) deploy_api deploy_ui ;; *) echo "Usage: $0 [api|ui|all]" exit 1 ;; esac echo "" echo "=== Deployment complete ===" echo "" echo "To restart the API service:" echo " ssh -p ${SERVER_PORT} ${SERVER_USER}@${SERVER_HOST} 'sudo systemctl restart phone-recorder'" echo "" echo "To check status:" echo " curl https://recordings.hallocks.xyz/health"