Ten przewodnik krok po kroku pokaże Ci, jak zainstalować i skonfigurować N8N — darmowe narzędzie open-source do automatyzacji procesów. Użyjemy serwera z systemem Linux, Docker Compose oraz skonfigurujemy własną domenę z certyfikatem SSL. Omówimy również procedury tworzenia kopii zapasowych i utrzymania systemu.
Dlaczego warto samodzielnie hostować N8N?#
Samodzielne utrzymywanie serwera N8N daje firmie szereg korzyści, zwłaszcza gdy rosną jej potrzeby w zakresie automatyzacji:
- Oszczędność w skali: Oficjalne plany N8N szybko stają się drogie. Podstawowy plan za 20$ miesięcznie pozwala na uruchomienie tylko 5 aktywnych procesów, co dla większości firm jest niewystarczające. Plany enterprise to koszt rzędu tysięcy dolarów miesięcznie. Własny serwer eliminuje te ograniczenia.
- Pełna kontrola: Jesteś właścicielem swojej infrastruktury, bez uzależniania się od jednego dostawcy. Możesz dowolnie modyfikować integracje, zachowujesz pełną kontrolę nad danymi i zapewniasz ciągłość działania biznesu.
- Nieograniczona skalowalność: Uruchamiaj tyle procesów, na ile pozwala Twoja infrastruktura. Nie ma tu sztucznych limitów wykonań, przechowywania danych czy liczby połączonych usług.
- Bezpieczeństwo i zgodność z przepisami: Przechowuj wrażliwe dane we własnej infrastrukturze, co jest kluczowe w branżach takich jak finanse, medycyna czy administracja publiczna.
Poradnik oparty jest na materiałach:
- Oficjalna dokumentacja N8N
- Poradnik wideo: How to self host n8n on a Linux server
Krok 0: Przygotowanie maszyny wirtualnej w GCP#
Utwórz nową maszynę wirtualną (VM instance) w Google Cloud Platform o następujących parametrach:
- Region:
us-east1(objęty darmowym poziomem usług - free tier) - Typ maszyny:
e2-micro - System operacyjny: Ubuntu 20.04 LTS
- Dysk: 30GB, Standard persistent disk (limit darmowego poziomu)
- Zapora sieciowa (Firewall): Zaznacz “Allow HTTP traffic” i “Allow HTTPS traffic”.
Krok 1: Instalacja Dockera#
Połącz się z serwerem przez SSH i wykonaj poniższe polecenia.
Aktualizacja pakietów:
sudo apt updateInstalacja Dockera i zależności:
sudo apt install docker.io ca-certificates curl gnupg lsb-releaseUruchomienie i włączenie Dockera przy starcie systemu:
sudo systemctl start docker sudo systemctl enable dockerInstalacja Docker Compose:
sudo curl -SL "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-composeWeryfikacja instalacji:
docker-compose --version
Krok 2: Konfiguracja i uruchomienie N8N#
Utwórz plik
docker-compose.yaml:nano docker-compose.yamlWklej do niego poniższą zawartość:
services: traefik: image: "traefik" restart: always command: - "--api=true" - "--api.insecure=true" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--entrypoints.web.address=:80" - "--entrypoints.web.http.redirections.entryPoint.to=websecure" - "--entrypoints.web.http.redirections.entrypoint.scheme=https" - "--entrypoints.websecure.address=:443" - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true" - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}" - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json" ports: - "80:80" - "443:443" volumes: - traefik_data:/letsencrypt - /var/run/docker.sock:/var/run/docker.sock:ro n8n: image: docker.n8n.io/n8nio/n8n restart: always ports: - "127.0.0.1:5678:5678" labels: - traefik.enable=true - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`) - traefik.http.routers.n8n.tls=true - traefik.http.routers.n8n.entrypoints=web,websecure - traefik.http.routers.n8n.tls.certresolver=mytlschallenge - traefik.http.middlewares.n8n.headers.SSLRedirect=true - traefik.http.middlewares.n8n.headers.STSSeconds=315360000 - traefik.http.middlewares.n8n.headers.browserXSSFilter=true - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true - traefik.http.middlewares.n8n.headers.forceSTSHeader=true - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME} - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true - traefik.http.middlewares.n8n.headers.STSPreload=true - traefik.http.routers.n8n.middlewares=n8n@docker environment: - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME} - N8N_PORT=5678 - N8N_PROTOCOL=https - NODE_ENV=production - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/ - GENERIC_TIMEZONE=${GENERIC_TIMEZONE} # Poniższe zmienne pomagają utrzymać mały rozmiar bazy danych SQLite - EXECUTIONS_DATA_PRUNE=true - EXECUTIONS_DATA_MAX_AGE=168 - DB_SQLITE_VACUUM_ON_STARTUP=true volumes: - n8n_data:/home/node/.n8n volumes: traefik_data: external: true n8n_data: external: trueUtwórz plik
.envze zmiennymi środowiskowymi:nano .envWklej i uzupełnij poniższą treść:
# Domena główna, np. twojadomena.com DOMAIN_NAME=twojadomena.com # Subdomena, na której będzie działać N8N, np. n8n SUBDOMAIN=n8n # Powyższy przykład da w rezultacie adres: https://n8n.twojadomena.com # Strefa czasowa, np. dla harmonogramów (Cron) GENERIC_TIMEZONE=Europe/Warsaw # Adres email dla certyfikatu SSL SSL_EMAIL=twoj-email@twojadomena.comUtwórz wolumeny dla Traefik i N8N:
sudo docker volume create traefik_data sudo docker volume create n8n_dataSkonfiguruj rekord DNS typu A: W panelu swojego dostawcy DNS dodaj rekord A, który będzie wskazywał na publiczny adres IP Twojego serwera.
- Typ: A
- Nazwa/Host:
n8n(lub inna subdomena z pliku.env) - Wartość/Kieruje na:
adres-ip-twojego-serwera - TTL: dowolny, np. 3600
Uruchom kontenery:
sudo docker-compose up -dPo kilku chwilach Twoja instancja N8N powinna być dostępna pod skonfigurowanym adresem.
Pełna procedura aktualizacji i tworzenia kopii zapasowej#
Zanim zaktualizujesz N8N, zawsze twórz kopię zapasową.
Zatrzymaj kontenery N8N:
sudo docker-compose downUtwórz kopię zapasową danych N8N: Polecenie spakuje cały wolumen
n8n_datado archiwumtar.gz.sudo docker run --rm -v n8n_data:/source -v $(pwd):/backup alpine tar -czf /backup/n8n_data_backup.tar.gz -C /source .Pobierz kopię zapasową i pliki konfiguracyjne na swój komputer: Użyj
gcloud compute scplub innego klienta SCP.# Przykład pobrania kopii zapasowej gcloud compute scp nazwa-usera@nazwa-maszyny:/sciezka/do/n8n_data_backup.tar.gz . # Przykład pobrania pliku .env gcloud compute scp nazwa-usera@nazwa-maszyny:/sciezka/do/.env .Zaktualizuj N8N: Po wykonaniu kopii zapasowej, wykonaj te kroki, aby zaktualizować N8N do najnowszej wersji.
# Pobierz najnowszy obraz N8N sudo docker-compose pull # Uruchom ponownie kontenery z nową wersją sudo docker-compose up -d
Zarządzanie konfiguracją przy użyciu Git#
Przechowywanie plików docker-compose.yaml i .env (bez wrażliwych danych!) w repozytorium Git to dobra praktyka.
# Sprawdź status zmian
git status
# Dodaj pliki do przechowalni
git add docker-compose.yaml .env
# Zapisz zmiany (commit)
git commit -m "Aktualizacja konfiguracji N8N"
# Wyślij zmiany do zdalnego repozytorium
git push origin main
Monitorowanie i diagnostyka#
# Sprawdź status kontenerów
sudo docker-compose ps
# Przeglądaj logi wszystkich usług
sudo docker-compose logs
# Śledź logi N8N w czasie rzeczywistym
sudo docker-compose logs -f n8n
Dobre praktyki i bezpieczeństwo#
- Regularne kopie zapasowe: Najlepiej zautomatyzowane.
- Kontrola wersji: Używaj Git do śledzenia zmian w konfiguracji.
- Aktualizacje: Regularnie aktualizuj N8N, zawsze po wykonaniu kopii zapasowej.
- Kontrola dostępu: Używaj zapory sieciowej (firewall) i ogranicz dostęp do niezbędnych portów.
- Certyfikaty SSL: Upewnij się, że certyfikaty odnawiają się automatycznie.
To kompleksowe podejście sprawi, że Twoja instancja N8N będzie stabilna, bezpieczna i łatwa w utrzymaniu.
Potrzebujesz pomocy przy konfiguracji?#
Jeśli proces ten wydaje Ci się zbyt skomplikowany lub po prostu chcesz zaoszczędzić czas, chętnie pomogę. Oferuję profesjonalne wsparcie w zakresie:
- Pełnej konfiguracji i wdrożenia N8N.
- Optymalizacji infrastruktury w chmurze.
- Automatyzacji procesów tworzenia kopii zapasowych i odzyskiwania po awarii.
- Tworzenia niestandardowych scenariuszy automatyzacji.
