Przejdź do głównej zawartości

Rozdzielone środowiska n8n w sieci lokalnej – przewodnik najlepszych praktyk

· 7 min aby przeczytać
Przemysław Majdak
Full-Stack Developer, Automation Engineer & Web Security Specialist

Pierwsza zasada stabilnej automatyzacji brzmi: Projektuj i testuj w bezpiecznym miejscu, a produkcję trzymaj z dala od klawiatury dewelopera. W przypadku n8n najprostszy sposób to uruchomić edytor z UI na komputerze stacjonarnym (Windows / Linux), a gotowe, aktywne workflow wykonywać na Raspberry Pi pracującym w trybie headless. Poniższy przewodnik krok po kroku pokazuje, jak zbudować taką infrastrukturę, jak przenosić workflow oraz poświadczenia, a także jak zadbać o bezpieczeństwo i utrzymanie[^1][^2].

1. Koncepcja i architektura rozdzielonych środowisk

W proponowanym układzie każda maszyna pełni wyraźnie określoną rolę:

  • Dev PC – pełny edytor n8n z interfejsem graficznym, konteneryzowany w Dockerze; lokalna baza SQLite lub PostgreSQL na potrzeby testów.
  • Git / CLI – repozytorium (np. GitLab CE) oraz CLI n8n do eksportu-importu workflow i credentiali[^3].
  • Raspberry Pi – pojedyncza instancja n8n uruchamiana jako usługa systemd lub kontener Docker-Compose, pozbawiona UI (N8N_DISABLE_UI=true)[^4][^5]; stały klucz szyfrowania oraz wolumeny Docker zabezpieczają dane[^6][^7].

Local development–production separation for n8n: design on desktop, deploy to Raspberry Pi via Git/CLI.

Local development–production separation for n8n: design on desktop, deploy to Raspberry Pi via Git/CLI.

2. Środowisko deweloperskie – komputer Windows / Linux

2.1 Instalacja i konfiguracja

  1. Zainstaluj Docker Desktop lub Podman.
  2. Utwórz katalog projektu i plik compose.yaml w wersji uproszczonej:
services:
n8n-dev:
image: n8nio/n8n:latest
ports:
- "5678:5678"
volumes:
- ./data:/home/node/.n8n
environment:
- GENERIC_TIMEZONE=Europe/Warsaw
- N8N_EDITOR_BASE_URL=http://localhost:5678

Domyślna konfiguracja UI pozwala bezpiecznie testować lokalnie[^7].

2.2 Kontrola wersji i migracje

  • W edycji Enterprise możesz skorzystać z funkcji Source Control i powiązać instancję z gałęzią Git; n8n przechowuje wtedy kopie workflow w repozytorium[^1][^8][^9].
  • W licencji OSS najprościej użyć CLI:
n8n export:workflow --backup --output=./backups/workflows --separate --pretty
n8n export:credentials --backup --decrypted --output=./backups/creds

Polecenia tworzą czytelne pliki JSON gotowe do commitowania[^3][^10].

2.3 Stały klucz szyfrowania

Aby przy przenoszeniu credentiali uniknąć błędu “Credentials could not be decrypted”, ustaw zmienną N8N_ENCRYPTION_KEY zarówno w dev, jak i prod – najlepiej wygenerowaną raz losową wartość base64[^6][^11].

3. Środowisko produkcyjne – Raspberry Pi headless

3.1 Instalacja systemd lub Docker-Compose

Na Raspberry Pi (64-bit, Debian/Ubuntu) wykonaj:

sudo apt update && sudo apt install -y docker docker-compose
sudo usermod -aG docker pi

Następnie sklonuj plik compose.yaml (przykład z traefik + PostgreSQL)[^12][^7]:

services:
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
environment:
- N8N_DISABLE_UI=true
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- WEBHOOK_URL=https://pi.local/webhook/
- N8N_HOST=pi.local
- N8N_PROTOCOL=https
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
volumes:
- ./data:/home/node/.n8n
networks: [backend]
redis:
image: redis:7-alpine
networks: [backend]
networks:
backend:
  • N8N_DISABLE_UI usuwa frontend z produkcji, zmniejszając powierzchnię ataku[^4][^5].
  • Ten sam klucz szyfrowania gwarantuje poprawny import poświadczeń[^11].

3.2 Uruchomienie i hardening

  1. docker compose up -d – instancja startuje w tle.
  2. Zablokuj port 5678 w zapórze, otwórz tylko 443 (reverse proxy) i 22 (SSH).
  3. Włącz zmienne N8N_PUBLIC_API_DISABLED=true i N8N_DIAGNOSTICS_ENABLED=false, jeżeli nie potrzebujesz publicznego API ani telemetrii[^13][^14].

4. Transfer workflow i poświadczeń

4.1 Eksportowanie w środowisku dev

n8n export:workflow --backup --output=dist/workflows --separate --pretty
n8n export:credentials --backup --decrypted --output=dist/creds

Flagę --decrypted można stosować tylko wtedy, gdy docelowa instancja ma ten sam N8N_ENCRYPTION_KEY; inaczej import się nie powiedzie[^15][^16][^17].

4.2 Import na Raspberry Pi

Kopiujemy pliki (np. scp) i wykonujemy w kontenerze:

docker exec -u node -it rpi_n8n n8n import:credentials --separate --input=/files/creds
docker exec -u node -it rpi_n8n n8n import:workflow --separate --input=/files/workflows

n8n aktywuje domyślnie webhooki w trybie production, więc nie trzeba ręcznie przełączać URL-i[^18].

5. Konfiguracja WEBHOOK_URL i reverse proxy

n8n buduje adres webhooku z kombinacji N8N_PROTOCOL, N8N_HOST i N8N_PORT; za reverse proxy port 5678 jest niewidoczny, dlatego dodaj WEBHOOK_URL=https://pi.local/[^19][^20][^21]. Używasz Nginx Proxy Manager? Utwórz dwa vhosty:

HostZastosowanieNagłówek proxy_set_header Host
devpc.local:5678UI w sieci deweloperskiejlocalhost
https://pi.localProdukcyjne webhookipi.local

Takie przekierowanie rozwiązuje problem „localhost:5678” w callbackach OAuth[^22][^23].

6. Bezpieczeństwo i utrzymanie

  1. Aktualizacje – kontenery n8n aktualizują się bezboleśnie; sprawdź changelog i przed aktualizacją zrób docker compose pull && docker compose up -d[^7].
  2. Backup – raz dziennie kopiuj wolumen /home/node/.n8n oraz bazę Postgres/SQlite; wbudowany CLI ma flagę --backup[^3].
  3. Monitoring – w queue mode sprawdzaj metryki Redis i czas wykonania; dzięki DB_POSTGRESDB_POOL_SIZE i --concurrency możesz regulować liczbę równoległych zadań[^24][^25].
  4. Ograniczenia sieci – produkcyjny serwer powinien przyjmować ruch tylko z zaufanych podsieci i od reverse proxy; reguły iptables/ufw oraz ACL w NGINX skutecznie blokują nieautoryzowany dostęp[^26].

7. Skalowanie i wydajność

Dla większej liczby aktywnych workflow uruchom Raspberry Pi w queue mode i dodaj kolejny kontener worker (n8n worker --concurrency=2), pozostawiając dev-PC wyłącznie jako edytor[^27][^28]. Współużytkowanie bazy danych przez wiele instancji main nie jest wspierane – zmiany statusu workflow propagują się dopiero po restarcie[^29][^30].

8. Podsumowanie

Oddzielenie edytora od środowiska produkcyjnego pozwala:

  • zminimalizować ryzyko – UI znikające z produkcji to mniej ataków i przypadkowych zmian[^4].
  • ułatwić migracje – CLI plus wspólny klucz szyfrowania przenoszą workflow i credentiale w ciągu sekund[^3][^10].
  • skalować – Raspberry Pi może działać jako worker w kolejce, a cięższe testy zostają na PC[^24].

Stosując powyższe praktyki, zyskujesz solidny, lekki i w pełni kontrolowany system automatyzacji w sieci lokalnej – dokładnie taki, jakiego wymaga produkcyjny workflow.

References

  1. n8n Source Control Environments
  2. n8n Source Control Environments
  3. n8n CLI Commands
  4. Disable UI in Docker
  5. Deployment Environment Variables
  6. n8n Encryption Key
  7. n8n Docker Compose
  8. Create Environments
  9. Copy Work
  10. Import/Export Credentials
  11. Encryption Key
  12. Hosting n8n on Raspberry Pi
  13. Disable Public API
  14. Telemetry Opt-out
  15. n8n Issue #1546
  16. Credentials Export/Import Bug
  17. Self-Hosted AI Starter Kit Error
  18. Test Production URL Toggle
  19. n8n Webhook URL
  20. Change Webhook URL
  21. OAuth Redirect URL and Webhook URL Configuration
  22. Reverse Proxy and Custom Webhook Domain
  23. n8n Issue #1449
  24. n8n Queue Mode
  25. n8n Queue Mode Tutorial
  26. Restrict Webhook URL
  27. Queue Mode Main Process Worker Processes
  28. Execute One Workflow Instance at a Time
  29. Several n8n Instances Main Mode on Kubernetes
  30. Can I Run Multiple Instances on the Same Postgres DB
  31. n8n Deployment Guide: How to Set Up, Scale, and Maintain Your Automation Infrastructure
  32. Guide to n8n Configuration Settings
  33. n8n Nodes Starter Kit
  34. n8n Best Practices for Clean & Profitable Workflows
  35. n8n Node Development Environment
  36. n8n Development Environment Setup
  37. How to Setup a Dev Environment for Node Building
  38. n8n User Management Best Practices
  39. Development and Production Environments in n8n
  40. n8n Configuration Guide
  41. n8n Deployment Environment Variables
  42. n8n Embed Deployment Guide
  43. n8n Development Environment
  44. Best Practices for Multiple Environments and Deployment
  45. n8n Workflow Automation
  46. AI Orchestration with n8n
  47. How to Run Development Environment
  48. n8n Import and Export CLI Command
  49. n8n Course: Level 1, Chapter 6
  50. n8n Installation Script for Raspberry Pi