55 lines
1.3 KiB
Bash
Executable File
55 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
SERVER="wtp"
|
|
REMOTE_HTML="~/html/"
|
|
REMOTE_SERVER="~/whattoplay/server/"
|
|
ENV_FILE=".env.1password"
|
|
|
|
echo "=== WhatToPlay Deploy ==="
|
|
|
|
# 1. Build frontend
|
|
echo ""
|
|
echo "[1/5] Building frontend..."
|
|
npm run build
|
|
|
|
# 2. Deploy frontend
|
|
echo ""
|
|
echo "[2/5] Deploying frontend..."
|
|
rsync -avz --delete dist/ "$SERVER:$REMOTE_HTML"
|
|
|
|
# 3. Deploy backend
|
|
echo ""
|
|
echo "[3/5] Deploying backend..."
|
|
rsync -avz --delete \
|
|
--exclude node_modules \
|
|
--exclude data/igdb-cache.json \
|
|
server/ "$SERVER:$REMOTE_SERVER"
|
|
|
|
# 4. Install backend dependencies on server
|
|
echo ""
|
|
echo "[4/5] Installing backend dependencies..."
|
|
ssh "$SERVER" "cd $REMOTE_SERVER && npm install --production"
|
|
|
|
# 5. Inject secrets from 1Password and restart
|
|
echo ""
|
|
echo "[5/5] Updating secrets and restarting service..."
|
|
|
|
TWITCH_CLIENT_ID=$(op read "op://Private/WhatToPlay/TWITCH_CLIENT_ID")
|
|
TWITCH_CLIENT_SECRET=$(op read "op://Private/WhatToPlay/TWITCH_CLIENT_SECRET")
|
|
|
|
ssh "$SERVER" "cat > ~/whattoplay.env << 'ENVEOF'
|
|
PORT=3000
|
|
ALLOWED_ORIGIN=https://wtp.uber.space
|
|
TWITCH_CLIENT_ID=$TWITCH_CLIENT_ID
|
|
TWITCH_CLIENT_SECRET=$TWITCH_CLIENT_SECRET
|
|
ENVEOF
|
|
chmod 600 ~/whattoplay.env"
|
|
|
|
ssh "$SERVER" "systemctl --user restart whattoplay"
|
|
|
|
echo ""
|
|
echo "=== Deploy complete ==="
|
|
echo "Frontend: https://wtp.uber.space"
|
|
echo "Backend: https://wtp.uber.space/api/health"
|