EUR
european

EUR

usa

USD

Ex. VAT Ex. VAT 0%

Instalacja n8n AI Starter Kit z Ollama

Szablon Docker Compose Self-hosted AI Starter Kit od zespołu n8n służy do budowania przepływów pracy AI, które działają w całości na własnym serwerze. Zapytania (prompty) i dokumenty są przetwarzane przez lokalny model językowy i nie są wysyłane do zewnętrznych usług AI.

Zestaw zawiera cztery komponenty:

  • n8n, platformę do automatyzacji przepływów pracy z węzłami AI;
  • Ollama, która uruchamia otwarte modele językowe lokalnie;
  • Qdrant, wektorową bazę danych do przechowywania i wyszukiwania osadzeń (embeddings) dokumentów;
  • PostgreSQL, bazę danych dla n8n.

Oficjalny zestaw jest oznaczony przez jego autorów jako przeznaczony do testów. W momencie pisania tego tekstu, uruchomiony zgodnie z opisem w pliku README, ma kilka problemów na serwerze z publicznym adresem IP: n8n, Ollama i Qdrant są wystawione do internetu, Ollama i Qdrant nie mają uwierzytelniania, sekrety w konfiguracji są takie same dla każdej instalacji, a demo przepływu pracy nie jest importowane. Ten przewodnik instaluje zestaw w stanie nienaruszonym i naprawia wszystko to za pomocą osobnego pliku zastępującego (override), dzięki czemu nadal można aktualizować zestaw z jego repozytorium.

Ten przewodnik jest napisany dla Ubuntu 24.04 LTS, n8n 2.47.3, Ollama 0.40.16, Qdrant 1.20.0, Docker 29 i Docker Compose v5.

Zanim zaczniesz

Będziesz potrzebować:

  • serwera z systemem Ubuntu 24.04 LTS z dostępem root przez SSH;
  • co najmniej 15 GB wolnego miejsca na dysku: obrazy Docker zajmują około 11 GB, a domyślny model Llama 3.2 około 2 GB;
  • domeny lub subdomeny dla n8n, na przykład n8n.example.com, z rekordem A wskazującym na adres IPv4 serwera.

Info

Bez GPU model działa na procesorze (CPU) i odpowiada wolno. Do regularnego użytku wybierz serwer z kartą graficzną NVIDIA.

Wszystkie poniższe polecenia są uruchamiane jako root. Jeśli pracujesz jako zwykły użytkownik z uprawnieniami sudo, dodaj sudo przed każdym poleceniem.

Zainstaluj Docker

Zainstaluj Docker Engine i wtyczkę Compose z oficjalnego repozytorium Docker:

apt update && apt install -y ca-certificates curl git install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc chmod a+r /etc/apt/keyrings/docker.asc

Dodaj repozytorium:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list

Zainstaluj pakiety i sprawdź wersje:

apt update apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker --version docker compose version

Pobierz zestaw

Sklonuj repozytorium do /opt i utwórz plik konfiguracyjny na podstawie przykładu:

cd /opt git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git cd self-hosted-ai-starter-kit cp .env.example .env

Zastąp domyślne sekrety

Plik przykładowy zawiera stałe wartości, takie jak password dla PostgreSQL i super-secret-key dla klucza szyfrującego n8n. Są one takie same w każdej kopii zestawu, więc zastąp je losowymi:

sed -i "s/^POSTGRES_PASSWORD=.*/POSTGRES_PASSWORD=$(openssl rand -hex 24)/" .env sed -i "s/^N8N_ENCRYPTION_KEY=.*/N8N_ENCRYPTION_KEY=$(openssl rand -hex 32)/" .env sed -i "s/^N8N_USER_MANAGEMENT_JWT_SECRET=.*/N8N_USER_MANAGEMENT_JWT_SECRET=$(openssl rand -hex 32)/" .env chmod 600 .env

N8N_ENCRYPTION_KEY szyfruje poświadczenia zapisywane w n8n. N8N_USER_MANAGEMENT_JWT_SECRET podpisuje sesje użytkowników.

Warning

Skopiuj plik .env w bezpieczne miejsce poza serwerem, na przykład do menedżera haseł. Bez N8N_ENCRYPTION_KEY poświadczenia zapisane w n8n nie mogą zostać odszyfrowane po przywróceniu kopii zapasowej.

Zamknij porty i dodaj HTTPS

W pliku docker-compose.yml zestawu, n8n (port 5678), Ollama (11434) i Qdrant (6333) są opublikowane na wszystkich interfejsach sieciowych. Docker dodaje własne reguły zapory sieciowej dla opublikowanych portów, które omijają UFW. Na serwerze z publicznym adresem IP oznacza to, że każdy może otworzyć edytor n8n przez zwykłe HTTP i korzystać z API Ollama i Qdrant, które nie mają uwierzytelniania.

Zamiast edytować docker-compose.yml, utwórz obok niego plik docker-compose.override.yml. Docker Compose odczytuje ten plik automatycznie i nakłada go na główny plik. Własne pliki zestawu pozostają niezmienione, więc ich aktualizacja z repozytorium nie nadpisze Twoich ustawień.

Utwórz /opt/self-hosted-ai-starter-kit/docker-compose.override.yml i zastąp n8n.example.com swoją domeną:

services: n8n: ports: !override - "127.0.0.1:5678:5678" environment: - N8N_HOST=n8n.example.com - N8N_PROTOCOL=https - N8N_PROXY_HOPS=1 - N8N_WEBHOOK_URL=https://n8n.example.com/ ollama-cpu: ports: !reset [] ollama-gpu: ports: !reset [] qdrant: ports: !reset [] caddy: image: caddy:2 restart: unless-stopped networks: ['demo'] ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile:ro - caddy_data:/data - caddy_config:/config volumes: caddy_data: caddy_config:

Oto co zmienia ten plik:

  • n8n nasłuchuje tylko na 127.0.0.1, a użytkownicy docierają do niego przez Caddy po HTTPS;
  • Ollama i Qdrant nie są w ogóle publikowane, n8n dociera do nich przez wewnętrzną sieć Docker, używając nazw ollama i qdrant;
  • Caddy jest dodawany jako odwrotne proxy (reverse proxy), które pobiera i odnawia certyfikat Let's Encrypt, o ile domena wskazuje na serwer, a porty 80 i 443 są otwarte;
  • wolumeny danych dla n8n, PostgreSQL, Qdrant i Ollama pozostają takie, jak zdefiniowano w pliku docker-compose.yml zestawu, plik override ich nie zmienia.

Info

Linia networks: ['demo'] jest wymagana. Wszystkie usługi zestawu działają w sieci o nazwie demo, a bez tej linii Caddy nie może połączyć się z n8n i zwraca błąd 502.

N8N_WEBHOOK_URL ustawia adres, którego n8n używa dla webhooków, w tym okna czatu w edytorze. Domena musi rozwiązywać się na Twój serwer z komputera, na którym otwierasz n8n. Jeśli tak nie jest, czat pokazuje tylko komunikat "Failed to receive response", nie wskazując na DNS jako przyczynę.

Utwórz /opt/self-hosted-ai-starter-kit/Caddyfile ze swoją domeną:

n8n.example.com { reverse_proxy n8n:5678 }

Sprawdź scaloną konfigurację:

docker compose --profile cpu config | grep -A4 "ports:"

Powinny być wymienione tylko n8n na 127.0.0.1:5678 i Caddy na portach 80 i 443.

Skonfiguruj zaporę sieciową

Plik override już trzyma wewnętrzne usługi zestawu z dala od sieci. UFW blokuje cały inny przychodzący ruch do serwera, z wyjątkiem SSH, HTTP i HTTPS. Zezwól na nie i włącz UFW:

ufw allow OpenSSH ufw allow 80/tcp ufw allow 443/tcp ufw --force enable

Uruchom zestaw

Uruchom stos w trybie CPU:

docker compose --profile cpu up -d

Przy pierwszym uruchomieniu Docker pobiera około 11 GB obrazów, a osobny kontener pobiera model Llama 3.2. Zajmuje to chwilę, w zależności od szybkości połączenia. Sprawdź, czy model jest na miejscu:

docker exec ollama ollama list

Lista powinna zawierać llama3.2:latest.

Sprawdź, czy na serwerze otwarte są tylko oczekiwane porty:

ss -tlnp

Porty 80 i 443 powinny być otwarte na wszystkich interfejsach, port 5678 tylko na 127.0.0.1. Porty 11434 i 6333 nie powinny znajdować się na liście.

Info

Zestaw używa PostgreSQL 16. Dziennik n8n może pokazywać ostrzeżenie, że ta wersja jest poza obsługiwanym zakresem. To ostrzeżenie nie wpływa na działanie n8n.

Zaimportuj demo przepływu pracy

Zestaw zawiera demo przepływu pracy i dwa demo poświadczeń. Mają one być importowane przy pierwszym uruchomieniu, ale w momencie pisania tego tekstu sprawdzanie importu w pliku docker-compose.yml zestawu nigdy nie przechodzi, więc nic nie jest importowane. Uruchom import ręcznie:

docker compose --profile cpu run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile cpu run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"

Opcja -c jest wymagana: usługa n8n-import uruchamia powłokę, a bez -c polecenie kończy się błędem "can't open 'n8n'".

Utwórz konto właściciela

Otwórz https://n8n.example.com w przeglądarce i utwórz konto właściciela: wprowadź swój e-mail, imię i nazwisko oraz hasło składające się z co najmniej 8 znaków, w tym co najmniej jednej cyfry i jednej wielkiej litery. Po pierwszym logowaniu n8n może wyświetlić krótką ankietę i ofertę darmowego klucza licencyjnego dla niektórych funkcji Community Edition. Oba są opcjonalne.

Strona przeglądu wymienia zaimportowany Demo workflow.

Napraw demo poświadczeń

Demo poświadczeń zostały zaszyfrowane domyślnym kluczem z .env.example. Po zastąpieniu N8N_ENCRYPTION_KEY, n8n nie może ich odszyfrować, więc oba muszą zostać wypełnione ponownie. Ustawienia są zapisywane zaszyfrowane Twoim własnym kluczem.

Otwórz Overview, przejdź do zakładki Credentials i otwórz Local Ollama service. Połączenie nie powiedzie się, a pole Base URL pokaże http://localhost:11434. Wewnątrz kontenera n8n, localhost to samo n8n, a nie Ollama.

Ustaw Base URL na http://ollama:11434, pozostaw API Key puste i kliknij Save. n8n przetestuje połączenie i pokaże Connection tested successfully.

Otwórz Local QdrantApi database. Ustaw Qdrant URL na http://qdrant:6333, pozostaw API Key puste i kliknij Save.

Przetestuj demo przepływu pracy

Otwórz Demo workflow. Zawiera trzy węzły: Chat Trigger odbiera wiadomość, Basic LLM Chain przekazuje ją do modelu, a Ollama Chat Model wysyła ją do Llama 3.2 w Ollama.

Kliknij Open chat na dole płótna i wyślij krótkie pytanie. Węzły zmieniają kolor na zielony w miarę działania przepływu pracy, a odpowiedź modelu pojawia się w czacie. Pierwsza odpowiedź zajmuje więcej czasu, ponieważ Ollama ładuje model do pamięci.

Jeśli czat pokazuje "Failed to receive response", a przepływ pracy się nie uruchamia, sprawdź, czy domena w N8N_WEBHOOK_URL rozwiązuje się na Twój serwer z Twojego komputera.

Użyj karty graficznej NVIDIA GPU

Jeśli serwer ma kartę NVIDIA GPU, zestaw może uruchomić na niej Ollama. Docker potrzebuje do tego NVIDIA Container Toolkit. Jeśli wcześniej nie używałeś GPU z Dockerem na tym serwerze, najpierw zainstaluj go, postępując zgodnie z instrukcjami Docker dla Ollama.

Następnie uruchom zestaw z profilem gpu-nvidia zamiast cpu:

docker compose --profile gpu-nvidia up -d

Powyższy plik override już zamyka port Ollama dla tego profilu. Użyj tego samego profilu we wszystkich innych poleceniach. Na przykład, import demo z profilem GPU:

docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:credentials --separate --input=/demo-data/credentials" docker compose --profile gpu-nvidia run --rm n8n-import -c "n8n import:workflow --separate --input=/demo-data/workflows"

I aktualizacja:

cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile gpu-nvidia pull docker compose --profile gpu-nvidia up -d

Zaktualizuj zestaw

Aby zaktualizować pliki i obrazy zestawu, uruchom polecenia z używanym profilem:

cd /opt/self-hosted-ai-starter-kit git pull docker compose --profile cpu pull docker compose --profile cpu up -d

Twój docker-compose.override.yml, Caddyfile i .env nie są częścią repozytorium, więc git pull ich nie zmienia.

Co dalej

Zestaw jest gotowy do Twoich własnych przepływów pracy AI. Stąd możesz:

  • Pobrać inne modele za pomocą docker exec ollama ollama pull, a następnie nazwy modelu, i wybrać je w węźle Ollama Chat Model;
  • Użyć Qdrant do przeszukiwania własnych dokumentów za pomocą węzłów wektorowej bazy danych w n8n;
  • Połączyć swoje usługi i budować przepływy pracy, które łączą je z lokalnym modelem.

Ogólną instalację n8n bez komponentów AI znajdziesz w przewodniku Instalacja n8n z Dockerem i PostgreSQL . Wyjaśnia on również, jak tworzyć kopie zapasowe i przywracać bazę danych n8n.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • kingdom
  • germany
  • Español
  • French
  • Hrvatska
  • Italiano
  • Poland
  • Slovenski
  • ukraine
  • Türkçe
  • Русский
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA