61 lines
1.8 KiB
Bash
Executable File
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/"
|