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
- Backup workflowów (i opcjonalnie bazy SQLite).
docker inspect n8n > inspect.json→ LLM zamienia JSON nadocker-compose.yml.- Walidacja: image, porty, wolumeny, zmienne środowiskowe.
docker stop n8n+docker rm n8n(kontener, nie wolumen!) →docker compose up -d.- W
docker-compose.ymlzmieniasz wersję obrazu nalatest→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.jsonPlik 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.sqliteSpokojnie 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.jsonW 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.ymlNa 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 -dUsuwasz 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 versionJeśli komenda nie działa, doinstaluj compose menedżerem pakietów swojego systemu:
| System | Komenda |
|---|---|
| macOS + Colima | brew install docker-compose |
| Alpine | apk add docker-cli-compose |
| Debian / Ubuntu | apt 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:latestA potem dwie komendy — pierwsza pobiera nowy obraz, druga podmienia kontener na nowszą wersję:
docker compose pull n8n
docker compose up -dZostał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.
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 -dJeś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' );