cd scripts
chmod +x generate-ssl.sh
./generate-ssl.shcd config/nginx
mkdir ssl -ErrorAction SilentlyContinue
# Generuj certyfikat
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 `
-keyout ssl/key.pem `
-out ssl/cert.pem `
-subj "/C=PL/ST=Poland/L=Warsaw/O=HomeLab/OU=AI/CN=localhost"config/nginx/
├── nginx.conf # Konfiguracja Nginx
└── ssl/
├── cert.pem # Certyfikat SSL (generowany)
└── key.pem # Klucz prywatny (generowany)
scripts/
└── generate-ssl.sh # Skrypt do generowania certyfikatu
docs/
└── SSL_SETUP.md # Ta dokumentacja
Po uruchomieniu z SSL:
- Open WebUI HTTPS: https://localhost:8443 lub https://TWOJ_IP:8443 (SSL ✅)
- Open WebUI HTTP: http://localhost:8080 lub http://TWOJ_IP:8080 (przekierowanie → HTTPS)
- LiteLLM API: http://TWOJ_IP:4000 lub http://localhost:4000 (bez SSL)
Zewnętrzny Port 443 → Wewnętrzny Port 8443 (Open WebUI HTTPS)
Zewnętrzny Port 80 → Wewnętrzny Port 8080 (Open WebUI HTTP)
Zewnętrzny Port 4000 → Wewnętrzny Port 4000 (LiteLLM - opcjonalnie)
Przy pierwszym połączeniu zobaczysz ostrzeżenie:
- Kliknij "Advanced" / "Zaawansowane"
- Kliknij "Proceed to [IP] (unsafe)" / "Przejdź do [IP] (niebezpieczne)"
- Kliknij "Advanced" / "Zaawansowane"
- Kliknij "Accept the Risk and Continue" / "Zaakceptuj ryzyko i kontynuuj"
# Import do Windows Certificate Store
certutil -addstore "Root" config\nginx\ssl\cert.pemSettings → Privacy & Security → Certificates → View Certificates → Authorities → Import → Wybierz cert.pem
sudo cp config/nginx/ssl/cert.pem /usr/local/share/ca-certificates/openwebui.crt
sudo update-ca-certificates✅ Zalety:
- Darmowy
- Natychmiastowa konfiguracja
- Szyfrowanie ruchu
- Idealny dla połączeń po IP
❌ Wady:
- Ostrzeżenia w przeglądarce
- Nie zweryfikowany przez CA
- Tylko dla użytku prywatnego/rozwojowego
ssl_protocols TLSv1.2 TLSv1.3; # Tylko bezpieczne protokoły
ssl_ciphers HIGH:!aNULL:!MD5; # Silne szyfry
ssl_prefer_server_ciphers on; # Preferuj szyfry serwera
add_header Strict-Transport-Security # HSTS - wymuś HTTPSJeśli masz własny certyfikat (np. od CA lub Let's Encrypt):
- Skopiuj pliki certyfikatu:
cp twoj-cert.pem config/nginx/ssl/cert.pem
cp twoj-klucz.pem config/nginx/ssl/key.pem
chmod 600 config/nginx/ssl/key.pem
chmod 644 config/nginx/ssl/cert.pem- Restart Nginx:
docker compose restart nginxJeśli jednak zdecydujesz się na domenę:
- Zainstaluj certbot:
sudo apt-get install certbot python3-certbot-nginx- Wygeneruj certyfikat:
sudo certbot certonly --standalone -d twoja-domena.pl- Skopiuj certyfikaty:
sudo cp /etc/letsencrypt/live/twoja-domena.pl/fullchain.pem config/nginx/ssl/cert.pem
sudo cp /etc/letsencrypt/live/twoja-domena.pl/privkey.pem config/nginx/ssl/key.pem
sudo chown $(whoami): config/nginx/ssl/*.pem- Automatyczne odnawianie (crontab):
0 0 1 * * certbot renew --quiet && docker compose restart nginx# Sprawdź logi
docker logs nginx-proxy
# Sprawdź czy certyfikaty istnieją
ls -la config/nginx/ssl/# Sprawdź czy port 443 jest otwarty
netstat -tulpn | grep :443
# Test z curl
curl -k https://localhost# Sprawdź czy wszystkie kontenery działają
docker ps
# Sprawdź sieć
docker network inspect ai_ai-networkPo wygenerowaniu certyfikatu:
docker compose up -dSprawdź status:
docker compose ps
docker logs nginx-proxyLogi Nginx:
docker logs -f nginx-proxyTest SSL:
openssl s_client -connect localhost:443 -servername localhostPytania? Sprawdź główny README.md projektu.