Docker
Docker là cách triển khai kiểu sản xuất đơn giản nhất cho một máy chủ.
Bắt đầu bằng Triển khai từ xa riêng tư. Mẫu Compose không xuất bản cổng, dùng image main, thêm Cloudflare Access, kiểm soát host, sao lưu và giới hạn.
Work
Work bật mặc định trong Compose. Image có Docker CLI và gắn /var/run/docker.sock; vùng chứa Work là anh em của Libre WebUI và xuất hiện trong docker ps.
Quyền truy cập socket tương đương root trên host. Vì vậy mọi quản trị viên Libre WebUI thực tế là quản trị viên host:
- Chỉ dùng host tin cậy.
- Không mở cổng cho mạng không tin cậy.
- Gỡ socket nếu không dùng Work; Work báo Runtime unavailable.
Trên Linux đặt DOCKER_GID cho nhóm docker sở hữu socket:
echo "DOCKER_GID=$(docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
alpine stat -c '%g' /var/run/docker.sock)" >> .env
Docker Desktop có thể cho giá trị khác. Xem Work.
Bản xem trước Work và Work Computer chỉ publish cổng ngẫu nhiên trên một giao diện riêng tư của máy chủ. Docker Desktop hoạt động với mặc định của Compose: bind vào loopback máy chủ và host.docker.internal cho kết nối từ backend. Docker Engine thuần không thể tới listener nằm trên loopback máy chủ từ một vùng chứa anh em, nên hãy đặt bind thành gateway cầu nối Docker không công khai:
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
Các tệp Compose ánh xạ host.docker.internal qua host-gateway. Đừng bao giờ dùng WORK_PREVIEW_BIND=0.0.0.0; như vậy sẽ publish các cổng tác vụ tạm thời chưa xác thực trên mọi giao diện của máy chủ thay vì giữ chúng sau proxy có chữ ký của Libre WebUI.
Ollama đóng gói
docker compose up -d
WebUI chỉ gắn loopback. Chỉ đặt WEBUI_BIND_ADDRESS=0.0.0.0 cho LAN hoặc proxy đáng tin cậy.
docker compose -f docker-compose.yml -f docker-compose.ollama-host.yml up -d
Chỉ đặt OLLAMA_BIND_ADDRESS khi máy khác cần truy cập.
GPU NVIDIA
docker compose -f docker-compose.gpu.yml up -d
Ollama bên ngoài
docker compose -f docker-compose.external-ollama.yml up -d
OLLAMA_BASE_URL=http://192.168.1.10:11434 docker compose -f docker-compose.external-ollama.yml up -d
Work với socket cô lập
docker compose -f docker-compose.socket-proxy.yml up -d
Proxy chỉ chuyển containers, images, volumes, networks, exec, info; chặn Swarm, secrets, configs, build, system. Libre WebUI dùng DOCKER_HOST=tcp://docker-socket-proxy:2375 mà không cần nhóm docker.
Dữ liệu bền vững
Gắn /app/backend/data làm volume. Image chạy trực tiếp bằng docker run cũng dùng đường dẫn đó. Dữ liệu tạm ở /app/backend/temp.
JWT_SECRET=replace-with-a-long-random-secret
ENCRYPTION_KEY=replace-with-64-hex-characters
Sao lưu volume và khóa cùng nhau. Trước khi xóa vùng chứa cũ, bảo đảm /app/backend/data/.encryption_key tồn tại hoặc lưu ENCRYPTION_KEY. Volume Work phải sao lưu riêng.
Truy cập công khai
Giá trị Compose CORS_ORIGIN không bị .env thay thế. Có thể sửa libre-webui.environment hoặc tạo 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
Đặt sau HTTPS proxy và giới hạn WEBUI_BIND_ADDRESS.
Máy chủ đã phục vụ frontend đã build một cách hiệu quả: các gói có hash trong /js/ và /assets/ được gửi ở dạng nén brotli hoặc gzip với thời hạn cache immutable một năm, còn index.html và service worker được đánh dấu no-cache để bản phát hành mới được nhận ngay ở lần tải kế tiếp. Proxy không cần nén lại hay cache các đường dẫn đó; hãy chuyển tiếp Accept-Encoding.
Lệnh hữu ích
docker compose ps
docker compose logs -f libre-webui
docker compose logs -f ollama
docker compose pull
docker compose up -d