Rozdzielone środowiska n8n w sieci lokalnej – przewodnik najlepszych praktyk
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.
2. Środowisko deweloperskie – komputer Windows / Linux
2.1 Instalacja i konfiguracja
- Zainstaluj Docker Desktop lub Podman.
- 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
docker compose up -d
– instancja startuje w tle.- Zablokuj port 5678 w zapórze, otwórz tylko 443 (reverse proxy) i 22 (SSH).
- Włącz zmienne
N8N_PUBLIC_API_DISABLED=true
iN8N_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:
Host | Zastosowanie | Nagłówek proxy_set_header Host |
---|---|---|
devpc.local:5678 | UI w sieci deweloperskiej | localhost |
https://pi.local | Produkcyjne webhooki | pi.local |
Takie przekierowanie rozwiązuje problem „localhost:5678” w callbackach OAuth[^22][^23].
6. Bezpieczeństwo i utrzymanie
- Aktualizacje – kontenery n8n aktualizują się bezboleśnie; sprawdź changelog i przed aktualizacją zrób
docker compose pull && docker compose up -d
[^7]. - Backup – raz dziennie kopiuj wolumen
/home/node/.n8n
oraz bazę Postgres/SQlite; wbudowany CLI ma flagę--backup
[^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]. - 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
- n8n Source Control Environments
- n8n Source Control Environments
- n8n CLI Commands
- Disable UI in Docker
- Deployment Environment Variables
- n8n Encryption Key
- n8n Docker Compose
- Create Environments
- Copy Work
- Import/Export Credentials
- Encryption Key
- Hosting n8n on Raspberry Pi
- Disable Public API
- Telemetry Opt-out
- n8n Issue #1546
- Credentials Export/Import Bug
- Self-Hosted AI Starter Kit Error
- Test Production URL Toggle
- n8n Webhook URL
- Change Webhook URL
- OAuth Redirect URL and Webhook URL Configuration
- Reverse Proxy and Custom Webhook Domain
- n8n Issue #1449
- n8n Queue Mode
- n8n Queue Mode Tutorial
- Restrict Webhook URL
- Queue Mode Main Process Worker Processes
- Execute One Workflow Instance at a Time
- Several n8n Instances Main Mode on Kubernetes
- Can I Run Multiple Instances on the Same Postgres DB
- n8n Deployment Guide: How to Set Up, Scale, and Maintain Your Automation Infrastructure
- Guide to n8n Configuration Settings
- n8n Nodes Starter Kit
- n8n Best Practices for Clean & Profitable Workflows
- n8n Node Development Environment
- n8n Development Environment Setup
- How to Setup a Dev Environment for Node Building
- n8n User Management Best Practices
- Development and Production Environments in n8n
- n8n Configuration Guide
- n8n Deployment Environment Variables
- n8n Embed Deployment Guide
- n8n Development Environment
- Best Practices for Multiple Environments and Deployment
- n8n Workflow Automation
- AI Orchestration with n8n
- How to Run Development Environment
- n8n Import and Export CLI Command
- n8n Course: Level 1, Chapter 6
- n8n Installation Script for Raspberry Pi