LOKALNE MODELE AI•7 min czytania•Aktualizacja: 2026-10-15

Własny ChatGPT na VPS: Instalacja Ollama i Open WebUI z Dockerem (Krok po kroku)

1. Dlaczego własny serwer Ollama zamiast subskrypcji ChatGPT Plus?

Korzystanie z komercyjnych API oraz planów subskrypcyjnych generuje stałe koszty za każdego użytkownika i wiąże się z przesyłaniem wrażliwych danych na zewnętrzne serwery. Postawienie własnego stosu **Ollama + Open WebUI** na prywatnym serwerze daje pełną niezależność technologiczną:

- **100% prywatności kodu i dokumentów**: analizowane umowy, bazy danych i kod źródłowy nigdy nie opuszczają Twojej infrastruktury, co gwarantuje pełną zgodność z RODO oraz NDA.
- **Wbudowany system RAG (Retrieval-Augmented Generation)**: możesz wgrywać pliki PDF, dokumentację Markdown i arkusze danych bezpośrednio do czatu, tworząc własną bazę wiedzy bez zewnętrznych baz wektorowych.
- **Kompatybilność ze standardem OpenAI API**: serwer wystawia gotowe endpointy `/v1/chat/completions`, dzięki czemu jednym kliknięciem podepniesz go pod **n8n**, **Cursor AI** czy własne skrypty w Pythonie.

2. Wymagania sprzętowe: CPU vs dedykowane GPU

Wybór maszyny zależy od tego, jak szybko model ma generować tokeny. Na klasycznym serwerze VPS bez karty graficznej skwantyzowane modele **7B / 8B (Q4_K_M)** wymagają **minimum 16 GB pamięci RAM** i nowoczesnego procesora (AMD EPYC), osiągając prędkość ok. **6–12 tokenów na sekundę**.

Jeśli potrzebujesz błyskawicznej inferencji rzędu **60–110 tokenów/s** dla wielu jednoczesnych zapytań z potoków AI, wybierz instancję z dedykowanym GPU (np. **RTX 3090 / RTX 4090 24 GB VRAM**), gdzie cały model mieści się bezpośrednio w szybkiej pamięci karty.

3. Przygotowanie systemu Ubuntu i katalogów roboczych

Zaloguj się na swój serwer przez SSH i przygotuj strukturę katalogów w `/opt/ai-stack`. Jeśli nie masz jeszcze zainstalowanego silnika **Docker**, poniższy skrypt zainstaluje go automatycznie wraz z wtyczką Compose:
terminal
apt update && apt upgrade -y
curl -fsSL https://get.docker.com | sh
mkdir -p /opt/ai-stack && cd /opt/ai-stack

4. Plik docker-compose.yml: Ollama, Open WebUI i Caddy SSL

Tworzymy kompletną architekturę złożoną z trzech izolowanych kontenerów: silnika inferencyjnego **Ollama**, nowoczesnego interfejsu **Open WebUI** oraz serwera **Caddy**, który zabezpiecza ruch szyfrowanym certyfikatem **Let's Encrypt SSL**.
Wskazówka: Jeśli uruchamiasz ten stos na serwerze z kartą NVIDIA i zainstalowanym NVIDIA Container Toolkit, dodaj w sekcji usługi ollama blok: deploy -> resources -> reservations -> devices (driver: nvidia, count: all, capabilities: [gpu]).
/opt/ai-stack/docker-compose.yml
services:
  ollama:
    image: ollama/ollama:latest
    container_name: ollama
    restart: unless-stopped
    environment:
      - OLLAMA_KEEP_ALIVE=24h
      - OLLAMA_NUM_PARALLEL=2
    volumes:
      - ollama_storage:/root/.ollama

  open-webui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    restart: unless-stopped
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_SECRET_KEY=${WEBUI_SECRET_KEY}
      - ENABLE_SIGNUP=${ENABLE_SIGNUP}
      - DEFAULT_USER_ROLE=pending
    volumes:
      - webui_storage:/app/backend/data
    depends_on:
      - ollama

  caddy:
    image: caddy:latest
    container_name: caddy-ai
    restart: unless-stopped
    ports:
      - '80:80'
      - '443:443'
    volumes:
      - caddy_data:/data
      - caddy_config:/config
    command: caddy reverse-proxy --from https://${SUBDOMAIN} --to http://open-webui:8080

volumes:
  ollama_storage:
  webui_storage:
  caddy_data:
  caddy_config:

5. Konfiguracja zmiennych środowiskowych .env

W katalogu `/opt/ai-stack` utwórz plik `.env`. Flaga `ENABLE_SIGNUP=false` po utworzeniu pierwszego konta administratora całkowicie zablokuje osobom postronnym możliwość rejestracji w Twoim panelu:
/opt/ai-stack/.env
SUBDOMAIN=ai.twojadomena.pl
WEBUI_SECRET_KEY=TwojSuperTajnyKluczSzyfrowaniaSesji2026!
ENABLE_SIGNUP=true

6. Uruchomienie stosu i pobranie modeli (Qwen 2.5 / Llama 3)

Uruchom kontenery w tle, a następnie pobierz zoptymalizowane modele bezpośrednio do wolumenu **Ollama**. Modele z rodziny **Qwen 2.5** świetnie radzą sobie z językiem polskim, pisaniem kodu oraz generowaniem ustrukturyzowanych plików JSON:
terminal
docker compose up -d

# Pobranie szybkiego modelu Qwen 2.5 (7B) do zadań ogólnych i kodu
docker exec -it ollama ollama pull qwen2.5:7b

# Pobranie modelu embeddingów pod lokalny system RAG (dokumenty PDF/MD)
docker exec -it ollama ollama pull nomic-embed-text

7. Podpięcie lokalnego API pod n8n oraz system RAG

Po wejściu na `https://ai.twojadomena.pl` utwórz pierwsze konto administratora, a następnie w pliku `.env` zmień `ENABLE_SIGNUP=false` i przeładuj kontener komendą `docker compose up -d`.

Aby połączyć swój nowy serwer AI z automatyzacjami w **n8n**, przejdź w Open WebUI do **Settings -> Account**, wygeneruj klucz **API Key** i użyj w n8n standardowego węzła **OpenAI Chat Model**, podając jako **Base URL** adres `https://ai.twojadomena.pl/api`.

Często zadawane pytania (FAQ)

Jak zablokować dostęp do rejestracji nowym użytkownikom po pierwszym uruchomieniu?

Pierwsze zarejestrowane konto w Open WebUI automatycznie otrzymuje uprawnienia administratora. Zaraz po jego założeniu zmień w pliku .env wartość ENABLE_SIGNUP=false i wykonaj docker compose up -d, lub wyłącz rejestrację bezpośrednio w panelu Admin Panel -> Settings -> General.

Dlaczego zmienna OLLAMA_KEEP_ALIVE=24h jest tak istotna?

Domyślnie Ollama zwalnia model z pamięci RAM/VRAM po 5 minutach bezczynności, co powoduje kilkunastosekundowe opóźnienie (cold start) przy kolejnym zapytaniu z webhooka. Ustawienie wartości 24h utrzymuje załadowany model w pamięci przez całą dobę, zapewniając natychmiastowy czas odpowiedzi.