# Bezpečná migrace n8n: aktualizace Traefik na 3.3 a Postgres na 16 bez ztráty dat
Migrace n8n z zastaralých verzí Traefik a Postgres na moderní stack vyžaduje řešení kritických problémů kompatibility. V tomto článku najdete technický návod na zachování dat a účtů při přechodu z Traefik 1.x a Postgres 11 na aktuální verze.
Příprava: záloha a klíč šifrování
Klíčovým krokem migrace je správný export dat a uchování klíče šifrování. Bez něj se přihlašovací údaje (Credentials) po přenosu stanou nepřístupnými. Pro n8n je to kritické: systém používá symetrické šifrování pro ukládání tokenů a hesel.
Proveďte dvě povinné akce:
- Vytvořte dump databáze ve formátu
custompro správné obnovení:
docker exec -t postgres_db pg_dump -U root -d n8n -Fc > /tmp/n8n_backup.dump
docker cp postgres_db:/tmp/n8n_backup.dump ./n8n_backup.dump
- Získejte aktuální klíč šifrování z konfigurace. Zdroj může být dvojí:
- Proměnná N8N_ENCRYPTION_KEY v docker-compose.yml
- Parametr encryptionKey v souboru ~/.n8n/config
Přehlížení tohoto kroku vede k chybě Needs first setup po spuštění. Systém databázi rozpozná, ale nebude schopen dešifrovat uložené přihlašovací údaje.
Nasazení stacku: past Traefik 3.3
Při nasazování Traefik 3.3 vzniká kritický problém nekompatibility s Docker API. Router ve výchozím nastavení používá zastaralou verzi API (1.24), zatímco moderní docker démony vyžadují verzi 1.41 a vyšší. To se projevuje chybami 404 při pokusu o detekci kontejnerů.
Řešení spočívá v nuceném nastavení verze API v proměnných prostředí:
environment:
- DOCKER_API_VERSION=1.41
Tato změna nutí Traefik správně komunikovat s Docker Engine. Bez ní router nevidí kontejnery n8n a Postgres, což znemožňuje automatické nastavení tras přes Docker Provider.
Všimněte si síťové izolace: všechny služby musí být ve společné uživatelské síti (n8n_net). To zaručuje stabilní komunikaci mezi kontejnery bez konfliktů směrování. Příklad správné konfigurace:
networks:
n8n_net:
name: n8n_net
services:
traefik:
networks:
- n8n_net
n8n:
networks:
- n8n_net
postgres_db:
networks:
- n8n_net
Obnovení databáze v Postgres 16: řešení problémů s právy
Postgres 16 přináší změny v výchozí bezpečnostní politice. Schéma public nyní má omezená práva, což způsobuje chybu permission denied for schema public při spuštění n8n.
Po obnovení dumpu proveďte:
docker cp n8n_backup.dump postgres_db:/tmp/
docker exec -i postgres_db pg_restore -U root -d n8n -1 /tmp/n8n_backup.dump
Poté přiřaďte vlastníkovi databáze plná práva na schéma:
docker exec -it postgres_db psql -U root -d n8n -c "GRANT ALL ON SCHEMA public TO root;"
Tento krok je nezbytný, protože n8n aktivně používá schéma public pro ukládání metadat. Přeskočení vede k cyklickému pádu kontejneru n8n.
Oprava Credentials: vyhýbáme se chybě "Needs first setup"
I při správném předání N8N_ENCRYPTION_KEY přes proměnné prostředí může n8n klíč ignorovat. Důvod je konflikt mezi proměnnou prostředí a lokálním konfiguračním souborem. Při prvním spuštění systém generuje nový soubor ~/.n8n/config, který přepíše klíč z proměnných.
Řešení:
- Smažte konfigurační soubor uvnitř kontejneru:
docker exec -it n8n rm /home/node/.n8n/config
- Restartujte službu:
docker compose restart n8n
Tento krok nutí n8n používat klíč z proměnných prostředí místo lokálního souboru. Ujistěte se, že v docker-compose.yml je uvedena původní proměnná N8N_ENCRYPTION_KEY.
Další nuance: pozadí procesy a SQLite
Při migraci mohou vzniknout problémy s úlohy na pozadí používajícími SQLite (např. Telegram parsery na Telethon). Po přenosu se objeví chyba sqlite3.OperationalError: database is locked.
Důvod jsou zbytkové soubory logování (.session-journal, .session-wal), které blokují databázi. Řešení:
- Nainstalujte utilitu
psmisc:
apt install psmisc -y
- Nuceně ukončete procesy držící zámek:
fuser -k -v /root/parser_folder/session_name.session
- Smažte dočasné soubory:
rm -f /root/parser_folder/session_name.session-journal
rm -f /root/parser_folder/session_name.session-wal
- Restartujte službu:
systemctl restart jméno_služby.service
Důležité: mazání logů neovlivní hlavní soubor relace. Autorizace v Telegram zůstane zachována.
Co je důležité
- Klíč šifrování je povinný — bez původního
N8N_ENCRYPTION_KEYse všechny Credentials stanou nepřístupnými. - Traefik vyžaduje explicitní uvedení API — parametr
DOCKER_API_VERSION=1.41je kritický pro detekci kontejnerů. - Postgres 16 omezuje práva — nutné ručně udělit
GRANT ALL ON SCHEMA public. - Lokální konfigurace n8n konfliktuje — smazání
~/.n8n/configřeší problém s klíčem šifrování. - SQLite zámky vyžadují čištění — smazání souborů
.journala.walobnoví fungování procesů na pozadí.
Po provedení všech kroků se n8n spustí se zachováním všech pracovních procesů, webhooků a přihlašovacích údajů. Migrace mezi hlavními verzemi softwaru vždy nese rizika, ale dodržení těchto postupů minimalizuje výpadky a ztráty dat.
— Editorial Team
Zatím žádné komentáře.