In diesem realen Ubuntu-24.04.4-LTS-VPS-Setup wurde Open WebUI mit Docker installiert, das persistente Volume openwebui_data und WEBUI_SECRET_KEY vorbereitet, die Anwendung nur an 127.0.0.1:3000 gebunden, über das gemeinsame Docker-Netz eka-ai mit Ollama unter http://ollama:11434 verbunden und openwebui.ekasunucu.com mit Nginx und Let’s Encrypt HTTPS veröffentlicht. Die Anleitung verwendet echte Screenshots vom ersten Health-Warten bis zum Administrator-Konto und qwen3:4b-Chat.
Ubuntu 24.04.4 LTS
↓ Docker / eka-ai
Open WebUI :8080
↓ 127.0.0.1:3000
↓
Ollama :11434 → qwen3:4b
↓
Nginx + Let’s Encrypt :443
↓
openwebui.ekasunucu.comWir richteten openwebui.ekasunucu.com auf den Test-VPS und prüften die DNS-Auflösung. Für Anwendungsdaten wurde das Named Volume openwebui_data erstellt.
Zusätzlich wurde ein WEBUI_SECRET_KEY erzeugt. In Produktion sollte dieser Wert sicher in einer geschützten Datei oder einem Secret Manager gespeichert und bei Container-Neuerstellung wiederverwendet werden.
dig +short openwebui.ekasunucu.com @1.1.1.1
dig +short openwebui.ekasunucu.com @8.8.8.8docker volume create openwebui_dataumask 077
[ -s /root/.openwebui_secret_key ] || openssl rand -hex 32 > /root/.openwebui_secret_key
WEBUI_SECRET_KEY="$(cat /root/.openwebui_secret_key)"Im realen Test kam ghcr.io/open-webui/open-webui:main zum Einsatz. Host-Port 3000 wurde auf 127.0.0.1 begrenzt, intern blieb Port 8080 und openwebui_data wurde nach /app/backend/data gemountet.
Da Ollama dasselbe Netzwerk eka-ai nutzt, setzten wir OLLAMA_BASE_URL auf http://ollama:11434. Docker-DNS löst den Containernamen auf, ohne Ollama öffentlich zu veröffentlichen.
docker pull ghcr.io/open-webui/open-webui:mainWEBUI_SECRET_KEY="$(cat /root/.openwebui_secret_key)"
docker run -d --name open-webui --restart unless-stopped --network eka-ai -p 127.0.0.1:3000:8080 -e OLLAMA_BASE_URL=http://ollama:11434 -e WEBUI_SECRET_KEY="$WEBUI_SECRET_KEY" -v openwebui_data:/app/backend/data ghcr.io/open-webui/open-webui:maindocker ps --filter name='^/open-webui$'Beim ersten Start kann Open WebUI Datenbankmigrationen ausführen und lokale Hilfsmodelle vorbereiten. In unserem Test erschienen zunächst connection reset und HTTP 000, obwohl der Container-Prozess bereits lief.
Nach Abschluss der Migrationen und dem Laden des Embedding-Modells lieferte /health HTTP 200 mit {"status":true}. Während dieser Initialisierung ist Log-Beobachtung sinnvoller als wiederholtes Löschen und Neuerstellen des Containers.
docker logs -f --tail 150 open-webuiuntil [ "$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:3000/health || true)" = "200" ]; do sleep 5; done
curl -sS http://127.0.0.1:3000/healthdocker inspect open-webui --format 'Status={{.State.Status}} Health={{if .State.Health}}{{.State.Health.Status}}{{else}}none{{end}}'Ein erfolgreicher Ollama-Test auf dem Host reicht nicht; auch der Open-WebUI-Container muss die API erreichen. Im gemeinsamen Docker-Netzwerk lautet das Ziel ollama:11434.
Open WebUI bezieht die Modellliste über diese Verbindung. Fehlt qwen3:4b, prüfen Sie zuerst /api/tags in Ollama, dann die Connection-Einstellung und die Mitgliedschaft beider Container in eka-ai.
docker exec open-webui python -c "import urllib.request; print(urllib.request.urlopen('http://ollama:11434/api/tags').read().decode())"docker network inspect eka-ai --format '{{range .Containers}}{{.Name}} {{.IPv4Address}}{{println}}{{end}}'Statt den Open-WebUI-Hostport ins Internet zu veröffentlichen, wurde Nginx zum öffentlichen Einstieg. Nginx lauscht auf 80/443, leitet an 127.0.0.1:3000 weiter und erhält die WebSocket-Upgrade-Header.
Verwenden Sie den korrekten server_name und führen Sie vor jedem Reload nginx -t aus.
cat >/etc/nginx/sites-available/openwebui.ekasunucu.com <<'EOF'
server {
listen 80;
listen [::]:80;
server_name openwebui.ekasunucu.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600;
}
}
EOF
ln -sfn /etc/nginx/sites-available/openwebui.ekasunucu.com /etc/nginx/sites-enabled/openwebui.ekasunucu.com
nginx -t
systemctl reload nginxNachdem der Nginx-Reverse-Proxy bereit war, stellte Certbot erfolgreich ein Let's-Encrypt-Zertifikat für openwebui.ekasunucu.com aus und integrierte es in Nginx.
Sowohl Origin-HTTPS als auch die öffentliche Domain lieferten im finalen Test HTTP 200. Benutzer greifen damit über den sicheren Hostnamen statt über einen Docker-Port zu.
certbot --nginx -d openwebui.ekasunucu.comcurl -I https://openwebui.ekasunucu.comcertbot certificatesAm Ende lauschte Ollama auf 127.0.0.1:11434 und Open WebUI auf 127.0.0.1:3000; Nginx war öffentlich auf 80 und 443 erreichbar. Dadurch wird die rohe Ollama-API nicht direkt ins Internet gestellt.
Docker-Portpublishing kann Firewall-Regeln beeinflussen. Prüfen Sie daher tatsächliche Sockets mit ss und veröffentlichte Containerports zusätzlich mit docker ps.
ss -lntp | grep -E ':80 |:443 |:3000 |:11434' || truedocker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'Wir führten certbot renew --dry-run aus, statt automatische Erneuerung nur anzunehmen. Die simulierten Renewals für Open WebUI und Portainer waren erfolgreich.
Im finalen Zustand war Open WebUI healthy, Ollama lief, die HTTPS-Domain antwortete mit 200 und systemctl --failed meldete keine fehlgeschlagenen Units.
certbot renew --dry-runcurl -sS -o /dev/null -w '%{http_code}\n' https://openwebui.ekasunucu.comdocker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'
systemctl --failedNach Abschluss der Infrastruktur öffneten wir https://openwebui.ekasunucu.com und erreichten die Open-WebUI-Willkommensseite. Über den Start-Button ging es zur Kontoeinrichtung.
Der Browser sollte direkt den Hostnamen verwenden. Öffentlicher Zugriff auf Port 3000 ist nicht erforderlich, da Nginx und TLS den Benutzerverkehr übernehmen.
Auf der ersten Registrierungsseite legten wir den Administrator mit Name, E-Mail und starkem Kennwort an. Das erste Konto erhält Zugriff auf die Administration.
Verwenden Sie in Produktion ein eindeutiges Kennwort und prüfen Sie die Registrierungs- und Freigaberichtlinie, bevor weitere Benutzer zugelassen werden.
Nach der Kontoeinrichtung stand qwen3:4b in der Modellauswahl von Open WebUI bereit. Damit war die Kette Browser → Open WebUI → Ollama → qwen3:4b vollständig funktionsfähig.
Die Inferenz läuft auf der Ollama-Seite des Servers; Open WebUI stellt Oberfläche, Benutzer- und Gesprächsebene bereit. Für größere Modelle oder mehr parallele Nutzer müssen CPU/RAM/GPU erneut dimensioniert werden.
Ollama-Modelldaten liegen in ollama_data, Open-WebUI-Anwendungsdaten in openwebui_data. VPS-Snapshot und Volume-Backups vor Updates erleichtern ein Rollback.
Der reale Test nutzte :main. Dokumentieren oder pinnen Sie für Produktion die Image-Version, sichern Sie Daten, erstellen Sie Container bewusst neu und prüfen Sie danach /health, Ollama /api/tags, HTTPS, lokale Port-Bindings und Autostart nach einem Reboot.
docker run --rm -v ollama_data:/quelle -v /root:/backup alpine sh -c 'tar czf /backup/ollama_data-$(date +%F).tar.gz -C /quelle .'docker run --rm -v openwebui_data:/quelle -v /root:/backup alpine sh -c 'tar czf /backup/openwebui_data-$(date +%F).tar.gz -C /quelle .'docker restart ollama open-webui
curl -sS http://127.0.0.1:3000/health
curl -sS http://127.0.0.1:11434/api/tagsJa. Im realen Test lief Open WebUI v0.11.0 unter Ubuntu 24.04.4 LTS in Docker.
Der Container nutzt 8080; hostseitig wird die Anwendung nur an 127.0.0.1:3000 gebunden.
Da beide Container im Netzwerk eka-ai liegen, wird http://ollama:11434 verwendet.
Nein. Im Test blieb er lokal und die Container-Kommunikation lief über das Docker-Netzwerk.
Datenbankmigrationen und die Vorbereitung des Embedding-Modells können dauern. Im realen Test gab es zuerst HTTP 000/Connection Reset und später /health 200.
Die realen Logs zeigten den Download von sentence-transformers/all-MiniLM-L6-v2 über Hugging Face.
Es ist ein persistentes Secret für Anwendung und Sessions und sollte bei einer Container-Neuerstellung gleich bleiben.
Das Named Volume openwebui_data wird nach /app/backend/data gemountet.
Ja. HTTP/1.1 sowie Upgrade- und Connection-Header sollten weitergereicht werden.
Nach dem Nginx-vHost holte Certbot --nginx das Let’s-Encrypt-Zertifikat und deployte es.
Mit certbot renew --dry-run kann die Verlängerung simuliert werden.
Das erste Konto dient als Administrator; spätere Registrierung und Freigaben lassen sich im Panel steuern.
Bei funktionierender Ollama-Verbindung erscheint qwen3:4b in der Modellauswahl des Chat-Interfaces.
Der reale Test nutzte :main. Ein getesteter fester Versions-Tag ist für kontrollierte Produktionsupdates meist vorhersehbarer.
Ollama, Qwen3, Open WebUI und n8n auf einem eigenen EKA-Sunucu-Linux-VPS betreiben.
Aktualisiert: 10.08.2026