OpenWebUI
Instalacja
Open WebUI uruchamiane jest jako aplikacja webowa i korzysta z backendu OpenAI-compatible (u nas: LiteLLM). Dane aplikacji (w tym baza SQLite z użytkownikami/ustawieniami) trzymane są w katalogu danych.
Założenia konfiguracyjne:
- Plik Compose znajduje się w
/srv/docker/compose/openwebui - Dane Open WebUI znajdują się w
/srv/docker/data/openwebui - Sekrety (zmienne środowiskowe) znajdują się w
/srv/docker/secrets/openwebui/app.env - Open WebUI łączy się z LiteLLM po sieci Dockera
internal - Open WebUI jest wystawiane przez reverse proxy po sieci Dockera
proxy - Logi dostępne są przez
docker logs(bez osobnego katalogu logów)
Dostęp do sieci Docker
Wymagany dostęp do sieci proxy oraz internal
Aby udostępnić aplikację publicznie oraz komunikować się z LiteLLM, aplikacja wymaga dostępu do sieci Docker proxy i internal.
Tworzenie katalogów
Tworzymy katalog dla Compose:
sudo mkdir -p /srv/docker/compose/openwebui
sudo chown -R "$USER:$USER" /srv/docker/compose/openwebui
Tworzymy katalog na dane Open WebUI:
sudo mkdir -p /srv/docker/data/openwebui
sudo chown -R "$USER:$USER" /srv/docker/data/openwebui
Tworzymy katalog na sekrety:
sudo mkdir -p /srv/docker/secrets/openwebui
sudo chown -R "$USER:$USER" /srv/docker/secrets/openwebui
Generowanie WEBUI_SECRET_KEY
WEBUI_SECRET_KEY zabezpiecza sesje i powinien być stały (nie zmieniaj go przy aktualizacjach).
Wygeneruj klucz i skopiuj wynik:
echo "$(openssl rand -hex 32)"
Przygotowanie danych do połączenia z LiteLLM
Open WebUI będzie łączyć się do LiteLLM po sieci internal.
- Base URL:
http://litellm:4000/v1 - API Key: wartość
LITELLM_MASTER_KEYz konfiguracji LiteLLM
Aby wypisać LITELLM_MASTER_KEY do skopiowania (bez edycji plików):
awk -F= '/^LITELLM_MASTER_KEY=/{print $2}' /srv/docker/secrets/litellm/app.env
Tworzenie pliku app.env
Tworzymy i edytujemy plik app.env:
micro /srv/docker/secrets/openwebui/app.env
W pliku umieszczamy:
# Publiczny URL aplikacji (dla poprawnych linków)
WEBUI_URL=https://ai.fulc.ro
# Klucz sesji (wklej wygenerowany hex)
WEBUI_SECRET_KEY=TU_WKLEJ_WYGENEROWANY_SECRET_KEY
# OpenAI-compatible backend (LiteLLM)
OPENAI_API_BASE_URL=http://litellm:4000/v1
OPENAI_API_KEY=TU_WKLEJ_LITELLM_MASTER_KEY
# (opcjonalnie) po utworzeniu pierwszego admina możesz wyłączyć rejestrację:
# ENABLE_SIGNUP=False
Zapisujemy plik i wychodzimy z edytora.
Opcjonalnie (zalecane) ograniczamy uprawnienia do pliku sekretów:
chmod 600 /srv/docker/secrets/openwebui/app.env
Konfiguracja Docker Compose
Przechodzimy do katalogu Compose:
cd /srv/docker/compose/openwebui
Tworzymy i edytujemy plik compose.yaml:
micro compose.yaml
W pliku umieszczamy:
services:
openwebui:
image: ghcr.io/open-webui/open-webui:v0.6.43
container_name: openwebui
restart: unless-stopped
env_file:
- /srv/docker/secrets/openwebui/app.env
volumes:
- /srv/docker/data/openwebui:/app/backend/data
networks:
- internal
- proxy
security_opt:
- no-new-privileges:true
networks:
internal:
external: true
proxy:
external: true
Zapisujemy plik i wychodzimy z edytora.
Uruchomienie kontenera
Uruchamiamy Open WebUI:
docker compose up -d
Sprawdzamy, czy kontener działa:
docker ps | grep openwebui
Konfiguracja Caddy
Dodajemy wpis do Caddyfile:
ai.fulc.ro {
reverse_proxy openwebui:8080
}
Przeładowujemy Caddy:
docker exec -it caddy caddy reload --config /etc/caddy/Caddyfile
Test
Sprawdzamy, czy strona odpowiada:
https://ai.fulc.ro
Przy pierwszym wejściu aplikacja poprosi o założenie konta — pierwszy użytkownik zwykle staje się adminem.
Podgląd logów
Podglądamy logi Open WebUI:
docker logs -f openwebui