ollama_ai_install/00-new.sh

133 lines
3.9 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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 Dockers 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://<your-server-ip>:8080"
echo "(Default Open WebUI port inside the container is 8080; we're using host networking.)"
echo "=============================================="