Some checks failed
CI / Frontend Lint & Type Check (push) Has been cancelled
CI / Frontend Build (push) Has been cancelled
CI / Backend Lint (push) Has been cancelled
CI / Backend Tests (push) Has been cancelled
CI / Docker Build (push) Has been cancelled
CI / Security Scan (push) Has been cancelled
Deploy / Build & Push Images (push) Has been cancelled
Deploy / Deploy to Server (push) Has been cancelled
Deploy / Notify (push) Has been cancelled
97 lines
4.1 KiB
Bash
Executable File
97 lines
4.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# ============================================================================
|
|
# POUNCE SYSTEMD SERVICE INSTALLER
|
|
# Run this script to install auto-start services on the server
|
|
# ============================================================================
|
|
|
|
set -euo pipefail
|
|
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
SERVER_USER="user"
|
|
SERVER_HOST="10.42.0.73"
|
|
SERVER_PASS="user"
|
|
SSH_OPTS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
|
|
|
if ! command -v sshpass >/dev/null 2>&1; then
|
|
echo "sshpass is required but not installed. Install with: brew install sshpass"
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"
|
|
echo -e "${BLUE} POUNCE SYSTEMD SERVICE INSTALLER ${NC}"
|
|
echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"
|
|
|
|
# Get script directory
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
echo -e "\n${YELLOW}[1/4] Copying service files to server...${NC}"
|
|
sshpass -p "$SERVER_PASS" scp $SSH_OPTS "$SCRIPT_DIR/pounce-backend.service" "$SERVER_USER@$SERVER_HOST:/tmp/"
|
|
sshpass -p "$SERVER_PASS" scp $SSH_OPTS "$SCRIPT_DIR/pounce-frontend.service" "$SERVER_USER@$SERVER_HOST:/tmp/"
|
|
echo " ✓ Service files copied"
|
|
|
|
echo -e "\n${YELLOW}[2/4] Installing services (requires sudo)...${NC}"
|
|
sshpass -p "$SERVER_PASS" ssh $SSH_OPTS "$SERVER_USER@$SERVER_HOST" << 'EOF'
|
|
# Move service files to systemd directory
|
|
echo "user" | sudo -S cp /tmp/pounce-backend.service /etc/systemd/system/
|
|
echo "user" | sudo -S cp /tmp/pounce-frontend.service /etc/systemd/system/
|
|
|
|
# Set correct permissions
|
|
echo "user" | sudo -S chmod 644 /etc/systemd/system/pounce-backend.service
|
|
echo "user" | sudo -S chmod 644 /etc/systemd/system/pounce-frontend.service
|
|
|
|
echo " ✓ Service files installed"
|
|
EOF
|
|
|
|
echo -e "\n${YELLOW}[3/4] Stopping existing processes...${NC}"
|
|
sshpass -p "$SERVER_PASS" ssh $SSH_OPTS "$SERVER_USER@$SERVER_HOST" << 'EOF'
|
|
# Kill existing nohup processes
|
|
pkill -f 'uvicorn app.main:app' 2>/dev/null || true
|
|
pkill -f 'node .next/standalone/server.js' 2>/dev/null || true
|
|
sleep 2
|
|
echo " ✓ Existing processes stopped"
|
|
EOF
|
|
|
|
echo -e "\n${YELLOW}[4/4] Enabling and starting services...${NC}"
|
|
sshpass -p "$SERVER_PASS" ssh $SSH_OPTS "$SERVER_USER@$SERVER_HOST" << 'EOF'
|
|
# Reload systemd daemon
|
|
echo "user" | sudo -S systemctl daemon-reload
|
|
|
|
# Enable services (auto-start on boot)
|
|
echo "user" | sudo -S systemctl enable pounce-backend
|
|
echo "user" | sudo -S systemctl enable pounce-frontend
|
|
|
|
# Start services
|
|
echo "user" | sudo -S systemctl start pounce-backend
|
|
sleep 3
|
|
echo "user" | sudo -S systemctl start pounce-frontend
|
|
sleep 2
|
|
|
|
# Check status
|
|
echo ""
|
|
echo " Backend status:"
|
|
systemctl status pounce-backend --no-pager -l | head -15 || true
|
|
echo ""
|
|
echo " Frontend status:"
|
|
systemctl status pounce-frontend --no-pager -l | head -15 || true
|
|
EOF
|
|
|
|
echo -e "\n${GREEN}═══════════════════════════════════════════════════════════════${NC}"
|
|
echo -e "${GREEN} ✅ SERVICES INSTALLED! ${NC}"
|
|
echo -e "${GREEN}═══════════════════════════════════════════════════════════════${NC}"
|
|
echo -e ""
|
|
echo -e " Services will now auto-start after server reboot."
|
|
echo -e ""
|
|
echo -e "${BLUE}Useful commands (run on server):${NC}"
|
|
echo -e " sudo systemctl status pounce-backend"
|
|
echo -e " sudo systemctl status pounce-frontend"
|
|
echo -e " sudo systemctl restart pounce-backend"
|
|
echo -e " sudo systemctl restart pounce-frontend"
|
|
echo -e " journalctl -u pounce-backend -f"
|
|
echo -e " journalctl -u pounce-frontend -f"
|
|
|