51 lines
1.4 KiB
Bash
51 lines
1.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
STACK_DIR="/opt/openwebui-ollama"
|
|
SERVICE_NAME="openwebui-ollama.service"
|
|
SERVICE_PATH="/etc/systemd/system/${SERVICE_NAME}"
|
|
|
|
if ! command -v docker >/dev/null 2>&1; then
|
|
echo "Docker is not installed. Install Docker first, then rerun this script."
|
|
exit 1
|
|
fi
|
|
|
|
if ! docker compose version >/dev/null 2>&1; then
|
|
echo "Docker Compose plugin is not available. Install docker-compose-plugin, then rerun this script."
|
|
exit 1
|
|
fi
|
|
|
|
SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
sudo mkdir -p "${STACK_DIR}"
|
|
sudo cp "${SCRIPT_DIR}/docker-compose.yml" "${STACK_DIR}/docker-compose.yml"
|
|
|
|
sudo tee "${SERVICE_PATH}" >/dev/null <<'EOF'
|
|
[Unit]
|
|
Description=Open WebUI + Ollama Docker Stack
|
|
Requires=docker.service
|
|
After=docker.service network-online.target
|
|
Wants=network-online.target
|
|
|
|
[Service]
|
|
Type=oneshot
|
|
RemainAfterExit=yes
|
|
WorkingDirectory=/opt/openwebui-ollama
|
|
ExecStart=/usr/bin/docker compose up -d
|
|
ExecStop=/usr/bin/docker compose down
|
|
TimeoutStartSec=0
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
EOF
|
|
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable --now "${SERVICE_NAME}"
|
|
|
|
# Keep local models persistent and pull a small starter model.
|
|
sudo docker exec ollama ollama pull llama3.2 || true
|
|
|
|
echo "Deployment complete."
|
|
echo "Open WebUI: http://<your-linux-host-ip>:3000"
|
|
echo "Service status: sudo systemctl status ${SERVICE_NAME}"
|