Hoppa till huvudinnehåll

Docker

Docker är den enklaste produktionsliknande driftsättningen på en server. För en internetåtkomlig server börjar du med Privat fjärrdriftsättning, vars mall inte publicerar portar och lägger till Cloudflare Access, värdskydd, säkerhetskopiering och containergränser.

Standardimagen följer main. Dockergruppen heter docker, och lokala inställningar som DOCKER_GID sparas i .env.

Work-tillgänglighet

Work är aktiverat i repositoryts Compose-filer. Imagen har Docker CLI och Compose monterar /var/run/docker.sock, så Work-containrar är syskon till Libre WebUI-containern och syns i docker ps.

Socketåtkomst ger root-likvärdig kontroll över Docker-värden. Därför är varje Libre WebUI-administratör i praktiken värdadministratör. Använd en betrodd värd, exponera inte porten mot ett opålitligt nätverk och ta bort monteringen om Work inte behövs; då visas Runtime unavailable.

På Linux behöver appanvändaren Docker-socketens grupp-id:

echo "DOCKER_GID=$(docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
alpine stat -c '%g' /var/run/docker.sock)" >> .env

Läs värdet genom en container; macOS-värdens värde skiljer sig på grund av Docker Desktops VM. Fel grupp visas tydligt på Work-sidan. Se Work: isolerade arbetsytor.

Work-förhandsgranskningar och Work Computer publicerar slumpmässiga portar endast på ett privat värdgränssnitt. Docker Desktop fungerar med Compose-standarderna: värdens loopback för bindningen och host.docker.internal för backendanslutningen. Inbyggd Docker Engine kan inte nå en lyssnare på värdens loopback från en syskoncontainer. Ange i stället bindningen till dess icke-publika gateway för Docker-bryggan:

echo "WORK_PREVIEW_BIND=$(docker network inspect bridge \
--format '{{(index .IPAM.Config 0).Gateway}}')" >> .env
echo "WORK_DOCKER_PUBLISHED_HOST=host.docker.internal" >> .env
docker compose up -d --force-recreate libre-webui

Compose-filerna mappar host.docker.internal genom host-gateway. Använd aldrig WORK_PREVIEW_BIND=0.0.0.0; det skulle publicera oautentiserade tillfälliga uppgiftsportar på värdens alla gränssnitt i stället för att hålla dem bakom Libre WebUI:s signerade proxy.

Inbyggd Ollama

docker compose up -d

Öppna http://localhost:8080. WebUI-porten binder till loopback. Ange WEBUI_BIND_ADDRESS=0.0.0.0 bara för betrott LAN eller värdproxy och begränsa den med brandvägg.

Ollama förblir privat i Compose-nätverket. För loopbackåtkomst från värdappar:

docker compose -f docker-compose.yml -f docker-compose.ollama-host.yml up -d

Ange OLLAMA_BIND_ADDRESS endast när en annan dator måste nå Ollama och skydda porten.

NVIDIA GPU

docker compose -f docker-compose.gpu.yml up -d

Verifiera GPU-åtkomst i Ollama-containern om modeller kör på CPU.

Extern Ollama

docker compose -f docker-compose.external-ollama.yml up -d

Ändra URL vid behov:

OLLAMA_BASE_URL=http://192.168.1.10:11434 docker compose -f docker-compose.external-ollama.yml up -d

Socketisolerad Work

För Work utan att ge webbappen den råa socketen:

docker compose -f docker-compose.socket-proxy.yml up -d

En intern proxy håller /var/run/docker.sock och vidarebefordrar bara containrar, images, volymer, nätverk, exec och info. Swarm, secrets, configs, build och system nekas. Libre WebUI använder DOCKER_HOST=tcp://docker-socket-proxy:2375 utan socketmontering eller DOCKER_GID. Gränsen minskar API-ytan men är inte en fullständig tenantisolering.

Beständig data

Backenddata finns i /app/backend/data och monteras som namngiven volym. Även direkt docker run använder sökvägen; temporär databaspreflight ligger i /app/backend/temp. Montera datakatalogen när containern kan återskapas.

Ange stabila hemligheter i produktion:

JWT_SECRET=replace-with-a-long-random-secret
ENCRYPTION_KEY=replace-with-64-hex-characters

Säkerhetskopiera datavolym och krypteringsnyckel tillsammans. Före radering av en äldre direktstartad container, kontrollera /app/backend/data/.encryption_key eller spara konfigurerad ENCRYPTION_KEY; äldre images kunde lagra den enda nyckeln i containerlagret. Work-filer i separata Docker-volymer ingår inte i normal backup.

Publik åtkomst

Repositoryts Compose-filer binder WebUI till loopback och anger CORS_ORIGIN direkt. Redigera libre-webui.environment eller skapa compose.origin.yml:

services:
libre-webui:
environment:
CORS_ORIGIN: https://your-domain.example
BASE_URL: https://your-domain.example
docker compose -f docker-compose.yml -f compose.origin.yml up -d

Placera sedan Libre WebUI bakom HTTPS och ange WEBUI_BIND_ADDRESS till exakt gränssnitt som proxyn behöver.

Servern levererar redan den byggda frontend-koden effektivt: hashade buntar under /js/ och /assets/ skickas brotli- eller gzip-komprimerade med ett års immutable cachelivslängd, medan index.html och service worker-filen märks no-cache så att en ny version plockas upp vid nästa laddning. En proxy behöver varken komprimera om eller cacha de sökvägarna; skicka vidare Accept-Encoding.

Användbara kommandon

docker compose ps
docker compose logs -f libre-webui
docker compose logs -f ollama
docker compose pull
docker compose up -d

Relaterade dokument