kontakt@tujestbug.pl

Spis Treści

Jak zaktualizować n8n w Dockerze?

Cześć! Pewnie nie raz chciałeś zaktualizować swojego n8n, otworzyłeś tutorial na YouTube… i okazało się, że wszyscy zakładają, że masz już docker compose. A Ty odpaliłeś n8n zwykłym docker run. Sam niedawno byłem dokładnie w tej sytuacji.

Mam dla Ciebie dobrą wiadomość — nie musisz pisać pliku docker-compose.yml ręcznie. W tym artykule pokażę Ci, jak przejść z docker run na docker compose i zaktualizować n8n bez utraty workflowów, credentiali i danych.

Po co w ogóle aktualizować, skoro wszystko działa? Z dwóch powodów. Po pierwsze bezpieczeństwo — n8n trzyma Twoje credentiale do Slacka, Jiry czy GitHuba, a kolejne wersje łatają luki, przez które mogłyby wyciec. Po drugie n8n bardzo szybko się rozwija i z każdą wersją dostajesz nowe możliwości.

W skrócie

  1. Backup workflowów (i opcjonalnie bazy SQLite).
  2. docker inspect n8n > inspect.json → LLM zamienia JSON na docker-compose.yml.
  3. Walidacja: image, porty, wolumeny, zmienne środowiskowe.
  4. docker stop n8n + docker rm n8n (kontener, nie wolumen!) → docker compose up -d.
  5. W docker-compose.yml zmieniasz wersję obrazu na latest → docker compose pull n8n + docker compose up -d.

Od tej pory każdy kolejny update to dwie komendy.

Jak zrobić backup n8n przed aktualizacją?

Najprościej — wyeksportować wszystkie workflowy dwiema komendami. Pierwsza uruchamia CLI n8n wewnątrz kontenera i tworzy tam plik z workflowami, druga kopiuje go z kontenera do bieżącego katalogu na Twoim komputerze:

docker exec n8n n8n export:workflow --all --output=/home/node/.n8n/backup-workflows.json
docker cp n8n:/home/node/.n8n/backup-workflows.json ./backup-workflows.json

Plik backup-workflows.json to zwykły, czytelny JSON — możesz go otworzyć w edytorze i zajrzeć do środka.

Jeśli poza workflowami masz sporo innych danych (historia wykonań, data tables, credentiale), zabierz też plik bazy SQLite. Tu wystarczy jedna komenda, bo plik już istnieje:

docker cp n8n:/home/node/.n8n/database.sqlite ./backup-database.sqlite

Spokojnie z credentialami — w bazie są zaszyfrowane, a klucz do nich n8n trzyma w tym samym wolumenie, którego nie ruszamy. Po migracji wszystko odszyfruje się samo.

Masz tylko kilka workflowów? Możesz pominąć komendy i pobrać je ręcznie z UI: menu „…” przy workflow → Download.

Backup n8n krok po kroku na wideo

Jak wygenerować docker-compose.yml z działającego kontenera?

Nie piszesz go od zera. Twój działający kontener „wie”, z jakimi ustawieniami został uruchomiony — wystarczy te ustawienia wyciągnąć i poprosić LLM-a o przetłumaczenie ich na format compose’a.

docker inspect n8n > inspect.json

W pliku inspect.json jest wszystko, z czym kontener został uruchomiony: obraz, porty, wolumeny, zmienne środowiskowe, polityka restartu. Skopiuj całą zawartość i wklej do dowolnego LLM-a — ChatGPT, Claude, Copilot, Gemini — z promptem:

Na podstawie tego outputu z docker inspect wygeneruj mi docker-compose.yml dla tego kontenera.

Zanim użyjesz wyniku, zrób szybką walidację — LLM też się myli. Porównaj z inspect.json:

  • image — ta sama wersja n8n co obecnie (u mnie n8nio/n8n:1.120.4),
  • ports — np. 5678:5678,
  • volumes — dokładnie ta sama ścieżka do danych,
  • environment — wszystkie zmienne przeniesione.

Na tym etapie celowo zostawiamy starą wersję. Najpierw przenosimy n8n na compose 1:1, a aktualizujemy dopiero, gdy wiemy, że wszystko działa.

Generowanie docker-compose.yml na wideo

Jak przejść z docker run na docker compose bez utraty danych?

Utwórz katalog na nowy setup (gdziekolwiek na maszynie z Dockerem) i zapisz w nim wygenerowany plik:

mkdir n8n-compose
cd n8n-compose
vim docker-compose.yml

Na minimalnych obrazach Linuksa (np. Alpine) zamiast vim wpisz vi. Wklej YAML, wyjdź z trybu edycji (Esc) i zapisz plik: :wq + Enter.

Teraz zatrzymaj i usuń stary kontener, a następnie uruchom n8n z compose’a:

docker stop n8n
docker rm n8n
docker compose up -d

Usuwasz sam kontener, nie wolumen — dane zostają na miejscu, a backup i tak masz z pierwszego kroku. Sprawdź w przeglądarce: n8n działa po staremu, ta sama wersja, wszystkie workflowy na miejscu. Jesteś na compose, jeszcze bez aktualizacji.

Migracja na docker compose na wideo

Co zrobić, gdy komenda docker compose nie działa?

Na niektórych systemach — głównie minimalnych obrazach typu Alpine albo na Macu z Colimą — docker compose nie jest zainstalowany. Sprawdź:

docker compose version

Jeśli komenda nie działa, doinstaluj compose menedżerem pakietów swojego systemu:

SystemKomenda
macOS + Colimabrew install docker-compose
Alpineapk add docker-cli-compose
Debian / Ubuntuapt install docker-compose-plugin

Starsza składnia docker-compose (z myślnikiem) działa tak samo jak docker compose.

Jak zaktualizować n8n w docker compose?

Otwórz docker-compose.yml i zmień konkretną wersję obrazu na latest, czyli najnowszą stabilną:

image: n8nio/n8n:latest

A potem dwie komendy — pierwsza pobiera nowy obraz, druga podmienia kontener na nowszą wersję:

docker compose pull n8n
docker compose up -d

Zostało sprawdzenie: w n8n wejdź w Settings — powinieneś zobaczyć nowy numer wersji (u mnie skok z 1.120.4 na 2.29). Workflowy i credentiale są na swoim miejscu.

Aktualizacja n8n na wideo

Podsumowanie

No i to by było na tyle! Przejście z docker run na docker compose robisz raz — a od tej pory każda aktualizacja n8n to dokładnie dwie komendy:

docker compose pull n8n
docker compose up -d

Jeśli chcesz zobaczyć cały proces w praktyce — od backupu po nową wersję w Settings — sprawdź moje wideo na YouTube.

A jeśli n8n już u Ciebie działa i chcesz pójść dalej — na kanale Tu jest Bug nagrywam całą serię o n8n w pracy testera, od pierwszego workflow po agentów AI.

Pozdrawiam!
Piotr

P.S. Jeśli przy aktualizacji n8n trafiłeś na problem, którego tu nie opisałem, daj znać w komentarzu!

				
					console.log( 'Code is Poetry' );