From 10b1417d23e5663574f6c415a1d5b7934dd71e6b Mon Sep 17 00:00:00 2001 From: RomanNum3ral Date: Thu, 27 Nov 2025 23:29:21 +0000 Subject: [PATCH] Add 00-new.sh --- 00-new.sh | 132 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 132 insertions(+) create mode 100644 00-new.sh diff --git a/00-new.sh b/00-new.sh new file mode 100644 index 0000000..113169d --- /dev/null +++ b/00-new.sh @@ -0,0 +1,132 @@ +#!/usr/bin/env bash +set -euo pipefail + +### CONFIG ### +mkdir -p /home/anon/open-webui +OPENWEBUI_DIR="/home/anon/open-webui" +OPENWEBUI_IMAGE="ghcr.io/open-webui/open-webui:main" +### /CONFIG ### + +echo "=== Ollama + Open WebUI installer for Ubuntu Server 24.04 (RTX 3060) ===" + +if [[ $EUID -ne 0 ]]; then + echo "Please run this script as root (e.g. sudo bash $0)" + exit 1 +fi + +echo "Step 1/6: Updating apt and installing base dependencies..." +apt-get update -y +apt-get upgrade -y +apt-get install -y \ + curl \ + ca-certificates \ + gnupg \ + lsb-release \ + apt-transport-https \ + software-properties-common + +echo "Step 2/6: Installing NVIDIA driver (for RTX 3060)..." +# Install the recommended proprietary driver +ubuntu-drivers install --gpgpu || true + +if ! command -v nvidia-smi >/dev/null 2>&1; then + echo "WARNING: nvidia-smi not found. A reboot may be required to load the NVIDIA driver." + echo "After this script finishes, reboot your server, then run: nvidia-smi" +else + echo "NVIDIA driver appears to be installed:" + nvidia-smi || true +fi + +echo "Step 3/6: Installing Docker Engine + Docker Compose..." + +# Remove old Docker if present +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 "Step 4/6: Installing Ollama (GPU-enabled)..." +curl -fsSL https://ollama.com/install.sh | sh + +# Make sure the service is enabled & running +systemctl enable --now ollama + +echo "Waiting for Ollama API to be reachable 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' after the script finishes." +fi + +echo "Step 5/6: Creating Open WebUI Docker Compose setup..." + +mkdir -p "${OPENWEBUI_DIR}" +cd "${OPENWEBUI_DIR}" + +cat > docker-compose.yml <<'EOF' +services: + open-webui: + image: ghcr.io/open-webui/open-webui:main + container_name: open-webui + restart: unless-stopped + network_mode: "host" + environment: + # Point Open WebUI to the locally-running Ollama instance + - OLLAMA_BASE_URL=http://127.0.0.1:11434 + # Uncomment to disable auth on local networks (optional) + # - OPENWEBUI_AUTH=False + volumes: + - ./data:/app/backend/data +EOF + +echo "docker-compose.yml created at ${OPENWEBUI_DIR}/docker-compose.yml" + +echo "Step 6/6: Starting Open WebUI with Docker Compose..." +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 "If this is a fresh NVIDIA driver install, reboot the server, then verify GPU availability with:" +echo " nvidia-smi" +echo +echo "Once everything is running, access Open WebUI at:" +echo " http://:8080" +echo "(Default Open WebUI port inside the container is 8080; we're using host networking.)" +echo "=============================================="