Files
movie-select/setup-server.sh
2026-03-01 11:44:21 +01:00

61 lines
1.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Run once to set up the server.
# Usage: bash setup-server.sh
set -euo pipefail
REMOTE_HOST="serve"
REMOTE_APP_DIR="/home/serve/services/movies"
REMOTE_PORT=3001
DB_PASS="09a7d97c99aff8fd883d3bbe3da927e254ac507b"
echo "==> Creating app directory on server..."
ssh "${REMOTE_HOST}" "mkdir -p ${REMOTE_APP_DIR}"
echo "==> Creating .env on server..."
ssh "${REMOTE_HOST}" "cat > ${REMOTE_APP_DIR}/.env" <<EOF
DB_HOST=127.0.0.1
DB_PORT=3306
DB_USER=serve
DB_PASS=${DB_PASS}
DB_NAME=serve
PORT=${REMOTE_PORT}
EOF
echo "==> Initialising database schema..."
scp setup-db.sql "${REMOTE_HOST}:/tmp/movie-select-setup.sql"
ssh "${REMOTE_HOST}" "mysql -u serve -p'${DB_PASS}' serve < /tmp/movie-select-setup.sql && rm /tmp/movie-select-setup.sql"
echo "==> Deploying app files..."
bash deploy.sh
echo "==> Detecting bun path on server..."
BUN_PATH=$(ssh "${REMOTE_HOST}" 'which bun || echo "$HOME/.bun/bin/bun"')
echo " bun at: ${BUN_PATH}"
echo "==> Creating systemd service..."
ssh "${REMOTE_HOST}" BUN_PATH="${BUN_PATH}" REMOTE_APP_DIR="${REMOTE_APP_DIR}" bash <<'ENDSSH'
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/movie-select.service <<SERVICE
[Install]
WantedBy=default.target
[Service]
ExecStart=${BUN_PATH} run src/server/index.ts
WorkingDirectory=${REMOTE_APP_DIR}
Restart=on-failure
RestartSec=3
SERVICE
systemctl --user daemon-reload
systemctl --user enable movie-select
systemctl --user start movie-select
ENDSSH
echo "==> Configuring web backend..."
ssh "${REMOTE_HOST}" "uberspace web backend add /movies port ${REMOTE_PORT} --remove-prefix 2>/dev/null || uberspace web backend set /movies port ${REMOTE_PORT} --remove-prefix"
echo "==> Service status:"
ssh "${REMOTE_HOST}" "systemctl --user status movie-select --no-pager"
echo ""
echo "Done. Live at https://serve.uber.space/movies/"