Monorepo for Aesthetic.Computer aesthetic.computer
at main 89 lines 2.7 kB view raw
1#!/usr/bin/env fish 2# help - deploy to help.aesthetic.computer 3# 4# Usage: 5# fish deploy.fish # Full deploy (server + page, restarts service) 6# fish deploy.fish --page # Page-only (uploads HTML, SIGHUP reload, zero downtime) 7 8set RED '\033[0;31m' 9set GREEN '\033[0;32m' 10set YELLOW '\033[1;33m' 11set NC '\033[0m' 12 13set SCRIPT_DIR (dirname (status --current-filename)) 14set VAULT_DIR "$SCRIPT_DIR/../aesthetic-computer-vault" 15set SSH_KEY "$VAULT_DIR/home/.ssh/id_rsa" 16set SERVICE_ENV "$VAULT_DIR/help/.env" 17set HELP_HOST "help.aesthetic.computer" 18set HELP_USER "root" 19set REMOTE_DIR "/opt/help" 20 21set PAGE_ONLY false 22if contains -- --page $argv 23 set PAGE_ONLY true 24end 25 26# Check SSH key 27if not test -f $SSH_KEY 28 echo -e "$RED x SSH key not found: $SSH_KEY$NC" 29 exit 1 30end 31 32# Test SSH 33echo -e "$GREEN-> Testing SSH to $HELP_HOST...$NC" 34if not ssh -i $SSH_KEY -o StrictHostKeyChecking=no -o ConnectTimeout=10 $HELP_USER@$HELP_HOST "echo ok" &>/dev/null 35 echo -e "$RED x Cannot connect to $HELP_HOST$NC" 36 exit 1 37end 38echo -e "$GREEN Connected.$NC" 39 40if test $PAGE_ONLY = true 41 # Page-only deploy 42 echo -e "$GREEN-> Uploading index.html (zero-downtime)...$NC" 43 scp -i $SSH_KEY -o StrictHostKeyChecking=no \ 44 $SCRIPT_DIR/index.html \ 45 $HELP_USER@$HELP_HOST:$REMOTE_DIR/ 46 47 ssh -i $SSH_KEY $HELP_USER@$HELP_HOST " 48 chown help:help $REMOTE_DIR/index.html 49 kill -HUP \$(systemctl show -p MainPID --value help) 50 " 51 echo -e "$GREEN Page reloaded.$NC" 52else 53 # Full deploy 54 echo -e "$GREEN-> Uploading help files...$NC" 55 scp -i $SSH_KEY -o StrictHostKeyChecking=no \ 56 $SCRIPT_DIR/server.mjs \ 57 $SCRIPT_DIR/index.html \ 58 $SCRIPT_DIR/package.json \ 59 $HELP_USER@$HELP_HOST:$REMOTE_DIR/ 60 61 # Upload .env from vault 62 if test -f $SERVICE_ENV 63 scp -i $SSH_KEY -o StrictHostKeyChecking=no \ 64 $SERVICE_ENV $HELP_USER@$HELP_HOST:$REMOTE_DIR/.env 65 else 66 echo -e "$YELLOW No vault .env found — skipping$NC" 67 end 68 69 echo -e "$GREEN-> Installing dependencies & restarting...$NC" 70 ssh -i $SSH_KEY $HELP_USER@$HELP_HOST " 71 chown -R help:help $REMOTE_DIR 2>/dev/null || true 72 cd $REMOTE_DIR && npm install --production --silent 2>&1 | tail -1 73 systemctl restart help 74 sleep 2 75 systemctl is-active help 76 " 77 78 set STATUS $status 79 if test $STATUS -eq 0 80 echo -e "$GREEN Help is running.$NC" 81 else 82 echo -e "$RED x Help failed to start. Check logs:$NC" 83 echo -e "$YELLOW ssh -i $SSH_KEY $HELP_USER@$HELP_HOST journalctl -u help -n 30$NC" 84 exit 1 85 end 86end 87 88echo "" 89echo -e "$GREEN Done. https://$HELP_HOST$NC"