Spaces:
Sleeping
Sleeping
| # 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" | |