Przejdź do treści

stack i tech

n8n self-hosted: kiedy, po co, na czym.

Self-hosted n8n to nie oszczędność na subskrypcji. To kontrola nad tym, gdzie siedzą Twoje dane, kiedy się aktualizują i co się dzieje, gdy coś pójdzie nie tak. Poniżej perspektywa wdrożeniowca: kiedy to ma sens, a kiedy nie.

Ostatnia aktualizacja: 23 kwietnia 2026 Autor: Adrian Krawczyk

Co oznacza self-hosted w kontekście n8n

Self-hosted n8n to instalacja serwera n8n na infrastrukturze, którą kontrolujesz Ty albo Twój dostawca (GCP, AWS, Hetzner, on-prem). Pracuje jako proces Node.js z bazą PostgreSQL i opcjonalnie Redisem jako kolejką execution. W przeciwieństwie do n8n Cloud, gdzie n8n.io zajmuje się uruchomieniem i aktualizacjami, przy self-hosted zarządzasz stackiem sam lub oddajesz komuś (mnie, DevOpsowi, managed providerowi).

Rozróżnienie formalne: n8n Cloud to SaaS z miesięczną subskrypcją i hostem dostawcy. n8n self-hosted (community edition) jest darmowy, open-source, ale wymaga infrastruktury i utrzymania. n8n Enterprise self-hosted to wersja z dodatkami (SSO, environments, audit logs), licencja płatna ale hosting nadal u Ciebie.

Kiedy self-hosted ma sens

Trzy scenariusze, w których polecam self-hosted bez zastanowienia:

  • RODO-sensitive dane: jeśli workflow przepuszczają dane osobowe, medyczne albo finansowe, potrzebujesz fizycznej kontroli nad miejscem przechowywania i jurysdykcją. Cloud rozwiązuje to częściowo (n8n Cloud EU region), ale self-hosted na Twoim GCP europe-west4 daje Ci pełny audit trail i umowę powierzenia jedynie z dostawcą chmury, nie z n8n.io.
  • Integracje z systemami on-prem albo private network: jeśli musisz sięgnąć do CRM-a klienta zamkniętego w VPN, do ERP-a dostępnego tylko z konkretnego IP, albo do pgSQL za firewallem, self-hosted w tym samym VPC rozwiązuje to natywnie. Cloud wymaga VPN tunnel albo publicznego exposure z whitelistą IP.
  • Workflow'y wysokowolumenowe: przy tysiącach execution dziennie cennik n8n Cloud per-execution robi się zauważalnie drogi. Self-hosted na VPS za 200 PLN miesięcznie obsłuży wolumeny, które w Cloud kosztowałyby kilka tysięcy PLN.

Dwa scenariusze, w których self-hosted nie ma sensu (i rekomenduję Cloud):

  • Startup, który testuje pomysł: dopóki nie wiadomo czy workflow przetrwa miesiąc, n8n Cloud Starter (kilkadziesiąt PLN miesięcznie) jest znacznie tańszy niż koszt postawienia i utrzymania własnej infra.
  • Brak kompetencji DevOps po stronie klienta: self-hosted to nie tylko setup. Potrzeba kogoś, kto ogarnie aktualizacje (co 2-4 tygodnie nowy release), backup, monitoring, rotację sekretów. Bez tej osoby wdrożenie rozsypuje się w ciągu roku.

Jak wygląda setup produkcyjny

Minimalny zestaw, który stawiam u klienta, ma cztery elementy uruchamiane przez Docker Compose:

  • n8n: sam serwer aplikacji, jeden kontener dla web UI i executions (albo osobny n8n-worker jeśli wolumen uzasadnia rozdzielenie).
  • PostgreSQL: baza dla workflow'ów, credentials (szyfrowane), execution history.
  • Redis: opcjonalnie, ale zalecany przy wyższych wolumenach jako queue dla n8n-worker.
  • Caddy: reverse proxy z automatycznym TLS przez Let's Encrypt, blokada dotfiles, rate limiting, nagłówki bezpieczeństwa.

Deployment przez CI/CD (GitLab CI albo podobny tool): push na gałąź main triggeruje build obrazu (jeśli mamy custom node'y), push na registry i SSH deploy na VPS. Aktualizacja bazy i migracje n8n są zautomatyzowane, rollback wymaga ręcznej decyzji (bo zwykle chcesz zobaczyć co się zepsuło zanim cofniesz).

Skąd się biorą ceny VPS

Dla typowego wdrożenia wystarczy serwer 2 vCPU / 4 GB RAM / 80 GB SSD. W Hetzner Cloud (CX22) to około 25 PLN miesięcznie plus VAT. Przy wyższych wolumenach (tysiące executions na godzinę) skaluję do 4 vCPU / 8 GB (CX42, około 80 PLN). Managed Postgres (jeśli klient preferuje) dokłada dodatkowe 50-150 PLN miesięcznie zamiast Postgresa w kontenerze.

Co musisz ogarnąć po handoff'ie

Po wdrożeniu dostajesz run-book (dokumentację operacyjną) z listą zadań, które musi ktoś po Twojej stronie trzymać na radarze. Listowo od najczęstszych:

  • Aktualizacje n8n: nowy release co 2-4 tygodnie, semver patch zwykle bezpieczny, minor release wymaga 15 minut testów. Automatyzuję to przez watchtower z flagą "poll-interval=168h" (raz w tygodniu), plus manualny release check co miesiąc.
  • Backup bazy i credentials: pg_dump codziennie do Cloud Storage, retencja 30 dni, test restore raz na kwartał. Bez testu restore backup jest niepotwierdzoną obietnicą.
  • Monitoring execution failures: workflow, który miał być cichy (np. nocna synchronizacja), musi wysłać alert gdy failuje dwa razy z rzędu. Podpinam Prometheus + Alertmanager albo Sentry, zależy od preferencji klienta.
  • Rotacja sekretów: API keys do Resend, Allegro, Google OAuth, klucze SSH. Planuje się rotację co 6-12 miesięcy, automatyka opiera się o Secret Manager, a nie hard-coded w .env.
  • Review workflow 2 razy w roku: po 6 i 12 miesiącach sprawdzam, które workflow'y faktycznie są używane, które padają coraz częściej, które wymagają migracji do nowszej wersji node'ów.

Jeśli w Twoim zespole nie ma osoby, która to weźmie na klatę, dopisujemy support miesięczny do kontraktu wdrożeniowego. Bez tego w horyzoncie 12-18 miesięcy wdrożenie degraduje się do stanu "działa, ale nikt nie wie jak".

Kiedy self-hosted przestaje wystarczać

Self-hosted skaluje się dobrze do kilkunastu tysięcy executions dziennie na pojedynczym hoście. Gdy wolumen rośnie powyżej, a dodatkowo poszczególne workflow'y są długie (LLM calls, OCR, integracje synchroniczne z wolnymi API), skalujemy horyzontalnie. Trzy techniki:

  • Worker nodes: n8n main trzyma UI i scheduler, ale executions idą do worker'ów przez Redis queue. Dodajesz worker'y według potrzeb, każdy obrabiający swoją kolejkę.
  • Queue mode z priorytetami: szybkie workflow'y (sub-second) idą do priority queue, długie (OCR, LLM) do osobnej. Zapobiega temu, że długie zadania blokują szybkie.
  • Cache execution results: jeśli workflow często odpytuje to samo API (np. o kursy walut, statusy faktur), cache w Redisie z TTL 5-60 minut potrafi odjąć 30-80 procent wywołań zewnętrznych.

Powyżej skali, gdzie scale-out n8n robi się wąskim gardłem (kilkadziesiąt tysięcy executions na godzinę, workflow'y z wieloma etapami per execution), rozważam migrację krytycznych pipeline'ów do dedicated orchestratorów (Apache Airflow, Temporal, Dagster). Nie jako zastępstwo całego n8n, tylko dla konkretnych ciężkich flows. Kryterium decyzji: gdy 80 procent wolumenu generuje 5 workflow'ów, które warto wyekstraktować na osobną platformę, n8n zostaje dla pozostałych 95 workflow'ów.

Typowe pułapki self-hosted

Rzeczy, które wielu klientów odkrywa dopiero po kilku miesiącach:

  • Encryption key: n8n szyfruje credentials symetrycznie kluczem z N8N_ENCRYPTION_KEY. Utrata tego klucza oznacza utratę wszystkich credentials (API keys do CRM, SMTP, OAuth tokens). Backup klucza osobno od bazy, w Secret Manager, nigdy nie w repo.
  • Timezone w schedulerze: domyślnie n8n używa UTC. Jeśli cron-trigger ma wystartować o 08:00 czasu lokalnego, a deploy jest w UTC, workflow wystartuje o 10:00 (latem) albo 09:00 (zimą). Ustaw GENERIC_TIMEZONE na Europe/Warsaw przy deploy, ale pamiętaj, że nie każdy node node'ów honoruje tę zmienną.
  • Session secret nie jest domyślnie ustawiony: n8n generuje go losowo, ale jeśli nie zapiszesz go na stałe, restart kontenera wyloguje wszystkich użytkowników UI. Ustaw N8N_USER_MANAGEMENT_JWT_SECRET wyraźnie.
  • Webhook URL-e zmieniają się przy restart: webhooki produkcyjne (których URL znają zewnętrzne systemy) nie powinny używać ścieżek z UUID n8n. Używaj Caddy rewrite'u z własnej domeny (na przykład /api/crm-push → /webhook/wf-crm-push) tak, żeby URL dla zewnętrznego systemu był stabilny nawet po migracji workflow.

Najczęstsze pytania

Czy mogę przenieść workflow z n8n Cloud na self-hosted?

Tak, ale nie przez tradycyjny import. n8n Cloud i self-hosted używają tej samej bazy schema, więc zrobiłem to kilkakrotnie przez pg_dump z Cloud-owej bazy (jeśli masz Enterprise) albo przez manualny export workflow'ów po jednym przez UI. Credentials trzeba odtworzyć ręcznie, bo szyfrowane innym kluczem.

Ile kosztuje self-hosted n8n miesięcznie?

Sam n8n community edition jest darmowy. Koszty to infrastruktura: VPS od 25 PLN miesięcznie dla małego setupu, managed Postgres opcjonalny 50-150 PLN, optional backup storage 10-30 PLN. Typowy startup wydaje 50-200 PLN miesięcznie, enterprise z workerami i HA od 500 PLN wzwyż.

Czy potrzebuję zespołu DevOps, żeby to utrzymać?

Nie koniecznie zespołu, ale osoby, która wie co to Docker Compose, umie zrobić ssh i pg_dump, i przeczyta changelog przed aktualizacją. Jeśli takiej osoby nie masz, zwykle domawiam support miesięczny w ramach kontraktu (1-4 godziny miesięcznie), który pokrywa aktualizacje i reagowanie na alerty.

Czy n8n community edition ma wszystkie funkcje?

Większość. Brak: SSO/SAML, environments (dev/stage/prod w ramach jednej instancji), audit logs, external secrets, workflow history. Jeśli któraś z tych funkcji jest krytyczna, licencja Enterprise. Dla większości średnich firm community edition wystarcza.

Co jeśli chcę mieć n8n self-hosted bez samodzielnego zarządzania?

Zaproponuję managed setup: stawiam infra na mojej albo dostawczej chmurze, aktualizacje i monitoring biorę na siebie, Ty masz tylko UI i workflow. Cena managed hosting ustalana indywidualnie, zależy od wolumenu i wymagań SLA.

Chcesz pogadać o konkretnym projekcie?

Warsztat otwierający to 90 minut, zdalnie albo w Poznaniu, bez zobowiązań. Mówimy, czy Twój proces nadaje się do automatyzacji i w jakiej skali.

napisz do mnie →