diff --git a/00-new2.sh b/00-new2.sh new file mode 100644 index 0000000..6d8cf76 --- /dev/null +++ b/00-new2.sh @@ -0,0 +1,136 @@ +#!/usr/bin/env bash +set -euo pipefail + +### CONFIG ### +OPENWEBUI_IMAGE="ghcr.io/open-webui/open-webui:main" +### /CONFIG ### + +echo "=== Step 2: Install Docker, Ollama, and Open WebUI ===" + +if [[ $EUID -ne 0 ]]; then + echo "Please run this script as root, e.g.: sudo bash $0" + exit 1 +fi + +# Figure out the "real" user so we put Open WebUI in their home +REALUSER="${SUDO_USER:-$USER}" +USER_HOME="$(eval echo ~${REALUSER})" +OPENWEBUI_DIR="${USER_HOME}/open-webui" + +echo "Real user: ${REALUSER}" +echo "User home: ${USER_HOME}" +echo "Open WebUI directory: ${OPENWEBUI_DIR}" +echo + +# --- Sanity check: GPU must be visible now --- +if ! command -v nvidia-smi >/dev/null 2>&1; then + echo "WARNING: nvidia-smi not found." + echo "Make sure you ran 00-gpu-driver.sh and rebooted successfully." + echo "You can still continue, but GPU usage may not work." +else + echo "nvidia-smi output:" + nvidia-smi || true +fi + +echo +echo "Step 1/3: Installing Docker Engine + Docker Compose..." + +# Remove old Docker bits if present (ignore errors) +apt-get remove -y docker docker-engine docker.io containerd runc || true + +# Add Docker’s official GPG key +install -m 0755 -d /etc/apt/keyrings +if [ ! -f /etc/apt/keyrings/docker.gpg ]; then + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ + gpg --dearmor -o /etc/apt/keyrings/docker.gpg + chmod a+r /etc/apt/keyrings/docker.gpg +fi + +# Add Docker apt repository +UBUNTU_CODENAME="$(. /etc/os-release && echo "$VERSION_CODENAME")" +if [ ! -f /etc/apt/sources.list.d/docker.list ]; then + echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ + ${UBUNTU_CODENAME} stable" > /etc/apt/sources.list.d/docker.list +fi + +apt-get update -y +apt-get install -y \ + docker-ce \ + docker-ce-cli \ + containerd.io \ + docker-buildx-plugin \ + docker-compose-plugin + +systemctl enable --now docker + +echo "Docker version:" +docker --version || true +echo "Docker Compose plugin version:" +docker compose version || true + +echo +echo "Step 2/3: Installing Ollama (GPU-enabled)..." + +# Let Ollama's installer run even if its CUDA driver step fails +set +e +curl -fsSL https://ollama.com/install.sh | sh +OLLAMA_RC=$? +set -e + +if [ $OLLAMA_RC -ne 0 ]; then + echo "WARNING: Ollama installer returned non-zero (likely CUDA driver conflicts)." + echo "As long as you have a working NVIDIA driver (nvidia-smi works), you can ignore this." +fi + +# Make sure the service is enabled & running +systemctl enable --now ollama || true + +echo "Waiting for Ollama API on http://127.0.0.1:11434 ..." +for i in {1..30}; do + if curl -sSf http://127.0.0.1:11434/api/version >/dev/null 2>&1; then + echo "Ollama is up!" + break + fi + sleep 2 +done + +if ! curl -sSf http://127.0.0.1:11434/api/version >/dev/null 2>&1; then + echo "WARNING: Ollama API not responding yet. Check 'systemctl status ollama'." +fi + +echo +echo "Step 3/3: Setting up Open WebUI with Docker Compose..." + +mkdir -p "${OPENWEBUI_DIR}" +cd "${OPENWEBUI_DIR}" + +cat > docker-compose.yml <<'EOF' +version: "3.8" + +services: + open-webui: + image: ghcr.io/open-webui/open-webui:main + container_name: open-webui + restart: unless-stopped + network_mode: "host" + environment: + - OLLAMA_BASE_URL=http://127.0.0.1:11434 + # Uncomment to disable auth (optional, not recommended on exposed hosts) + # - OPENWEBUI_AUTH=False + volumes: + - ./data:/app/backend/data +EOF + +echo "docker-compose.yml created at ${OPENWEBUI_DIR}/docker-compose.yml" + +docker compose up -d + +echo +echo "==================== DONE ====================" +echo "Ollama service: systemctl status ollama" +echo "Open WebUI stack: cd ${OPENWEBUI_DIR} && docker compose ps" +echo +echo "Access Open WebUI at:" +echo " http://:8080" +echo "=============================================="