jobrag / scripts /server-setup.sh
HermannS11's picture
Redesign Streamlit UI
b0fbd02 verified
Raw
History Blame Contribute Delete
2.23 kB
#!/usr/bin/env bash
# Bootstrap JobRAG on a Linux server (Docker, firewall, compose stack).
# Run on the server: bash scripts/server-setup.sh
set -euo pipefail
PROJECT_DIR="${PROJECT_DIR:-$HOME/apps/RAG-jobs}"
PROJECT_DIR="${PROJECT_DIR/#\~/$HOME}"
cd "$PROJECT_DIR"
SUDO=""
if [[ "$(id -u)" -ne 0 ]]; then
SUDO="sudo"
fi
dc() {
if docker info &>/dev/null; then
docker compose "$@"
else
$SUDO docker compose "$@"
fi
}
echo "==> JobRAG server setup in $PROJECT_DIR"
if ! command -v docker &>/dev/null; then
echo "==> Installing Docker..."
export DEBIAN_FRONTEND=noninteractive
$SUDO apt-get update -qq
$SUDO apt-get install -y -qq ca-certificates curl git
curl -fsSL https://get.docker.com | $SUDO sh
if [[ -n "$SUDO" ]]; then
$SUDO usermod -aG docker "$USER" || true
fi
fi
if ! docker compose version &>/dev/null && ! $SUDO docker compose version &>/dev/null; then
echo "ERROR: docker compose plugin not found after install"
exit 1
fi
echo "==> Docker $($SUDO docker --version 2>/dev/null || docker --version)"
echo "==> $($SUDO docker compose version 2>/dev/null || docker compose version)"
if command -v ufw &>/dev/null; then
echo "==> Configuring firewall (ufw)..."
$SUDO ufw allow OpenSSH || true
$SUDO ufw allow 2312/tcp comment 'JobRAG Streamlit' || true
$SUDO ufw allow 8080/tcp comment 'JobRAG Airflow' || true
$SUDO ufw --force enable || true
$SUDO ufw status || true
fi
if [[ ! -f .env ]]; then
echo "ERROR: .env not found in $PROJECT_DIR"
echo "Copy .env.example to .env and fill in secrets, or rsync .env from your Mac."
exit 1
fi
echo "==> Building and starting stack..."
dc up --build -d
echo "==> Container status:"
dc ps
echo "==> Triggering initial ingestion DAG..."
sleep 15
if docker info &>/dev/null; then
docker exec rag-jobs-airflow-scheduler \
airflow dags trigger ingest_software_engineer_jobs_berlin || true
else
$SUDO docker exec rag-jobs-airflow-scheduler \
airflow dags trigger ingest_software_engineer_jobs_berlin || true
fi
echo ""
echo "Done. Access:"
echo " Streamlit UI: http://100.64.8.100:2312"
echo " Airflow UI: http://100.64.8.100:8080 (admin / admin)"
echo " Logs: docker compose logs -f app"