[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-n8n-self-hosted-docker-compose-guide":3},{"id":4,"title":5,"author":6,"body":7,"date":2395,"description":2396,"extension":2397,"image":2398,"meta":2399,"navigation":219,"path":2400,"readingTime":304,"seo":2401,"stem":2402,"tags":2403,"__hash__":2408},"content/blog/n8n-self-hosted-docker-compose-guide.md","n8n Self-Hosted mit Docker Compose: Der ultimative Setup-Guide","KIana",{"type":8,"value":9,"toc":2355},"minimark",[10,23,28,34,39,52,56,67,71,82,86,92,128,132,136,139,184,188,195,682,686,692,800,809,813,819,835,838,863,867,870,889,895,899,910,914,919,1128,1132,1136,1139,1323,1326,1349,1353,1362,1459,1463,1468,1555,1559,1562,1618,1622,1626,1633,1682,1687,1719,1723,1726,1832,1836,1840,1886,1890,1898,1911,1915,1965,1969,1973,1979,2046,2050,2055,2114,2118,2217,2226,2230,2236,2269,2272,2276,2281,2307,2317,2320,2326,2331,2351],[11,12,13,14,18,19,22],"p",{},"Ihr wollt ",[15,16,17],"strong",{},"n8n self-hosted"," betreiben und maximale Kontrolle über eure Workflow-Automation haben? Mit ",[15,20,21],{},"n8n Docker Compose"," könnt ihr in wenigen Minuten eine produktionsreife Instanz aufsetzen. In diesem Guide zeige ich euch, wie ihr n8n professionell selbst hostet – mit allen wichtigen Konfigurationen, Sicherheits-Best-Practices und Tipps aus der Praxis.",[24,25,27],"h2",{"id":26},"warum-n8n-self-hosted","Warum n8n Self-Hosted?",[11,29,30,31,33],{},"Bevor wir in die technische Umsetzung einsteigen, hier die wichtigsten Gründe für ",[15,32,17],{},":",[35,36,38],"h3",{"id":37},"volle-datenkontrolle","✅ Volle Datenkontrolle",[40,41,42,46,49],"ul",{},[43,44,45],"li",{},"Alle Workflow-Daten bleiben auf euren eigenen Servern",[43,47,48],{},"DSGVO-konform ohne Drittanbieter-Abhängigkeiten",[43,50,51],{},"Keine Limits bei sensiblen Daten",[35,53,55],{"id":54},"kosteneffizienz","✅ Kosteneffizienz",[40,57,58,61,64],{},[43,59,60],{},"Keine monatlichen SaaS-Gebühren",[43,62,63],{},"Unbegrenzte Workflows und Executions",[43,65,66],{},"Skalierbar nach Bedarf",[35,68,70],{"id":69},"anpassbarkeit","✅ Anpassbarkeit",[40,72,73,76,79],{},[43,74,75],{},"Custom Nodes und Extensions möglich",[43,77,78],{},"Volle Kontrolle über Updates",[43,80,81],{},"Integration in bestehende Infrastruktur",[24,83,85],{"id":84},"voraussetzungen","Voraussetzungen",[11,87,88,89,91],{},"Für die ",[15,90,21],{}," Installation benötigt ihr:",[40,93,94,100,106,112,118],{},[43,95,96,99],{},[15,97,98],{},"Docker"," (Version 20.10+)",[43,101,102,105],{},[15,103,104],{},"Docker Compose"," (Version 2.0+)",[43,107,108,111],{},[15,109,110],{},"Linux Server"," (Ubuntu 22.04 empfohlen) oder macOS",[43,113,114,117],{},[15,115,116],{},"Domain"," mit SSL-Zertifikat (für Produktiv-Umgebung)",[43,119,120,121,124,125],{},"Mindestens ",[15,122,123],{},"2GB RAM"," und ",[15,126,127],{},"10GB Speicher",[24,129,131],{"id":130},"n8n-docker-compose-setup-schritt-für-schritt","n8n Docker Compose Setup: Schritt für Schritt",[35,133,135],{"id":134},"_1-projektstruktur-erstellen","1. Projektstruktur erstellen",[11,137,138],{},"Erstellt zunächst ein dediziertes Verzeichnis für eure n8n-Installation:",[140,141,146],"pre",{"className":142,"code":143,"language":144,"meta":145,"style":145},"language-bash shiki shiki-themes github-light github-dark","mkdir -p ~/n8n-docker\ncd ~/n8n-docker\nmkdir -p data\n","bash","",[147,148,149,166,174],"code",{"__ignoreMap":145},[150,151,154,158,162],"span",{"class":152,"line":153},"line",1,[150,155,157],{"class":156},"sScJk","mkdir",[150,159,161],{"class":160},"sj4cs"," -p",[150,163,165],{"class":164},"sZZnC"," ~/n8n-docker\n",[150,167,169,172],{"class":152,"line":168},2,[150,170,171],{"class":160},"cd",[150,173,165],{"class":164},[150,175,177,179,181],{"class":152,"line":176},3,[150,178,157],{"class":156},[150,180,161],{"class":160},[150,182,183],{"class":164}," data\n",[35,185,187],{"id":186},"_2-docker-compose-datei-erstellen","2. Docker Compose Datei erstellen",[11,189,190,191,194],{},"Erstellt eine ",[147,192,193],{},"docker-compose.yml"," mit folgender Konfiguration:",[140,196,200],{"className":197,"code":198,"language":199,"meta":145,"style":145},"language-yaml shiki shiki-themes github-light github-dark","version: \"3.8\"\n\nservices:\n  n8n:\n    image: n8nio/n8n:latest\n    container_name: n8n\n    restart: unless-stopped\n    ports:\n      - \"5678:5678\"\n    environment:\n      # Basis-Konfiguration\n      - N8N_HOST=${N8N_HOST}\n      - N8N_PORT=5678\n      - N8N_PROTOCOL=${N8N_PROTOCOL}\n      - NODE_ENV=production\n\n      # Datenbank (PostgreSQL empfohlen für Produktion)\n      - DB_TYPE=postgresdb\n      - DB_POSTGRESDB_HOST=postgres\n      - DB_POSTGRESDB_PORT=5432\n      - DB_POSTGRESDB_DATABASE=${POSTGRES_DB}\n      - DB_POSTGRESDB_USER=${POSTGRES_USER}\n      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}\n\n      # Authentifizierung\n      - N8N_BASIC_AUTH_ACTIVE=true\n      - N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}\n      - N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}\n\n      # Webhook-URL\n      - WEBHOOK_URL=${WEBHOOK_URL}\n\n      # Timezone\n      - GENERIC_TIMEZONE=Europe/Berlin\n      - TZ=Europe/Berlin\n\n    volumes:\n      - ./data:/home/node/.n8n\n    depends_on:\n      - postgres\n    networks:\n      - n8n-network\n\n  postgres:\n    image: postgres:15-alpine\n    container_name: n8n-postgres\n    restart: unless-stopped\n    environment:\n      - POSTGRES_DB=${POSTGRES_DB}\n      - POSTGRES_USER=${POSTGRES_USER}\n      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}\n    volumes:\n      - postgres-data:/var/lib/postgresql/data\n    networks:\n      - n8n-network\n\nvolumes:\n  postgres-data:\n\nnetworks:\n  n8n-network:\n    driver: bridge\n","yaml",[147,201,202,215,221,229,237,248,259,270,278,287,295,302,310,318,326,334,339,345,353,361,369,377,385,393,398,404,412,420,428,433,439,447,452,458,466,474,479,487,495,503,511,519,527,532,540,550,560,569,576,584,592,600,607,615,622,629,634,642,650,655,663,671],{"__ignoreMap":145},[150,203,204,208,212],{"class":152,"line":153},[150,205,207],{"class":206},"s9eBZ","version",[150,209,211],{"class":210},"sVt8B",": ",[150,213,214],{"class":164},"\"3.8\"\n",[150,216,217],{"class":152,"line":168},[150,218,220],{"emptyLinePlaceholder":219},true,"\n",[150,222,223,226],{"class":152,"line":176},[150,224,225],{"class":206},"services",[150,227,228],{"class":210},":\n",[150,230,232,235],{"class":152,"line":231},4,[150,233,234],{"class":206},"  n8n",[150,236,228],{"class":210},[150,238,240,243,245],{"class":152,"line":239},5,[150,241,242],{"class":206},"    image",[150,244,211],{"class":210},[150,246,247],{"class":164},"n8nio/n8n:latest\n",[150,249,251,254,256],{"class":152,"line":250},6,[150,252,253],{"class":206},"    container_name",[150,255,211],{"class":210},[150,257,258],{"class":164},"n8n\n",[150,260,262,265,267],{"class":152,"line":261},7,[150,263,264],{"class":206},"    restart",[150,266,211],{"class":210},[150,268,269],{"class":164},"unless-stopped\n",[150,271,273,276],{"class":152,"line":272},8,[150,274,275],{"class":206},"    ports",[150,277,228],{"class":210},[150,279,281,284],{"class":152,"line":280},9,[150,282,283],{"class":210},"      - ",[150,285,286],{"class":164},"\"5678:5678\"\n",[150,288,290,293],{"class":152,"line":289},10,[150,291,292],{"class":206},"    environment",[150,294,228],{"class":210},[150,296,298],{"class":152,"line":297},11,[150,299,301],{"class":300},"sJ8bj","      # Basis-Konfiguration\n",[150,303,305,307],{"class":152,"line":304},12,[150,306,283],{"class":210},[150,308,309],{"class":164},"N8N_HOST=${N8N_HOST}\n",[150,311,313,315],{"class":152,"line":312},13,[150,314,283],{"class":210},[150,316,317],{"class":164},"N8N_PORT=5678\n",[150,319,321,323],{"class":152,"line":320},14,[150,322,283],{"class":210},[150,324,325],{"class":164},"N8N_PROTOCOL=${N8N_PROTOCOL}\n",[150,327,329,331],{"class":152,"line":328},15,[150,330,283],{"class":210},[150,332,333],{"class":164},"NODE_ENV=production\n",[150,335,337],{"class":152,"line":336},16,[150,338,220],{"emptyLinePlaceholder":219},[150,340,342],{"class":152,"line":341},17,[150,343,344],{"class":300},"      # Datenbank (PostgreSQL empfohlen für Produktion)\n",[150,346,348,350],{"class":152,"line":347},18,[150,349,283],{"class":210},[150,351,352],{"class":164},"DB_TYPE=postgresdb\n",[150,354,356,358],{"class":152,"line":355},19,[150,357,283],{"class":210},[150,359,360],{"class":164},"DB_POSTGRESDB_HOST=postgres\n",[150,362,364,366],{"class":152,"line":363},20,[150,365,283],{"class":210},[150,367,368],{"class":164},"DB_POSTGRESDB_PORT=5432\n",[150,370,372,374],{"class":152,"line":371},21,[150,373,283],{"class":210},[150,375,376],{"class":164},"DB_POSTGRESDB_DATABASE=${POSTGRES_DB}\n",[150,378,380,382],{"class":152,"line":379},22,[150,381,283],{"class":210},[150,383,384],{"class":164},"DB_POSTGRESDB_USER=${POSTGRES_USER}\n",[150,386,388,390],{"class":152,"line":387},23,[150,389,283],{"class":210},[150,391,392],{"class":164},"DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}\n",[150,394,396],{"class":152,"line":395},24,[150,397,220],{"emptyLinePlaceholder":219},[150,399,401],{"class":152,"line":400},25,[150,402,403],{"class":300},"      # Authentifizierung\n",[150,405,407,409],{"class":152,"line":406},26,[150,408,283],{"class":210},[150,410,411],{"class":164},"N8N_BASIC_AUTH_ACTIVE=true\n",[150,413,415,417],{"class":152,"line":414},27,[150,416,283],{"class":210},[150,418,419],{"class":164},"N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER}\n",[150,421,423,425],{"class":152,"line":422},28,[150,424,283],{"class":210},[150,426,427],{"class":164},"N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD}\n",[150,429,431],{"class":152,"line":430},29,[150,432,220],{"emptyLinePlaceholder":219},[150,434,436],{"class":152,"line":435},30,[150,437,438],{"class":300},"      # Webhook-URL\n",[150,440,442,444],{"class":152,"line":441},31,[150,443,283],{"class":210},[150,445,446],{"class":164},"WEBHOOK_URL=${WEBHOOK_URL}\n",[150,448,450],{"class":152,"line":449},32,[150,451,220],{"emptyLinePlaceholder":219},[150,453,455],{"class":152,"line":454},33,[150,456,457],{"class":300},"      # Timezone\n",[150,459,461,463],{"class":152,"line":460},34,[150,462,283],{"class":210},[150,464,465],{"class":164},"GENERIC_TIMEZONE=Europe/Berlin\n",[150,467,469,471],{"class":152,"line":468},35,[150,470,283],{"class":210},[150,472,473],{"class":164},"TZ=Europe/Berlin\n",[150,475,477],{"class":152,"line":476},36,[150,478,220],{"emptyLinePlaceholder":219},[150,480,482,485],{"class":152,"line":481},37,[150,483,484],{"class":206},"    volumes",[150,486,228],{"class":210},[150,488,490,492],{"class":152,"line":489},38,[150,491,283],{"class":210},[150,493,494],{"class":164},"./data:/home/node/.n8n\n",[150,496,498,501],{"class":152,"line":497},39,[150,499,500],{"class":206},"    depends_on",[150,502,228],{"class":210},[150,504,506,508],{"class":152,"line":505},40,[150,507,283],{"class":210},[150,509,510],{"class":164},"postgres\n",[150,512,514,517],{"class":152,"line":513},41,[150,515,516],{"class":206},"    networks",[150,518,228],{"class":210},[150,520,522,524],{"class":152,"line":521},42,[150,523,283],{"class":210},[150,525,526],{"class":164},"n8n-network\n",[150,528,530],{"class":152,"line":529},43,[150,531,220],{"emptyLinePlaceholder":219},[150,533,535,538],{"class":152,"line":534},44,[150,536,537],{"class":206},"  postgres",[150,539,228],{"class":210},[150,541,543,545,547],{"class":152,"line":542},45,[150,544,242],{"class":206},[150,546,211],{"class":210},[150,548,549],{"class":164},"postgres:15-alpine\n",[150,551,553,555,557],{"class":152,"line":552},46,[150,554,253],{"class":206},[150,556,211],{"class":210},[150,558,559],{"class":164},"n8n-postgres\n",[150,561,563,565,567],{"class":152,"line":562},47,[150,564,264],{"class":206},[150,566,211],{"class":210},[150,568,269],{"class":164},[150,570,572,574],{"class":152,"line":571},48,[150,573,292],{"class":206},[150,575,228],{"class":210},[150,577,579,581],{"class":152,"line":578},49,[150,580,283],{"class":210},[150,582,583],{"class":164},"POSTGRES_DB=${POSTGRES_DB}\n",[150,585,587,589],{"class":152,"line":586},50,[150,588,283],{"class":210},[150,590,591],{"class":164},"POSTGRES_USER=${POSTGRES_USER}\n",[150,593,595,597],{"class":152,"line":594},51,[150,596,283],{"class":210},[150,598,599],{"class":164},"POSTGRES_PASSWORD=${POSTGRES_PASSWORD}\n",[150,601,603,605],{"class":152,"line":602},52,[150,604,484],{"class":206},[150,606,228],{"class":210},[150,608,610,612],{"class":152,"line":609},53,[150,611,283],{"class":210},[150,613,614],{"class":164},"postgres-data:/var/lib/postgresql/data\n",[150,616,618,620],{"class":152,"line":617},54,[150,619,516],{"class":206},[150,621,228],{"class":210},[150,623,625,627],{"class":152,"line":624},55,[150,626,283],{"class":210},[150,628,526],{"class":164},[150,630,632],{"class":152,"line":631},56,[150,633,220],{"emptyLinePlaceholder":219},[150,635,637,640],{"class":152,"line":636},57,[150,638,639],{"class":206},"volumes",[150,641,228],{"class":210},[150,643,645,648],{"class":152,"line":644},58,[150,646,647],{"class":206},"  postgres-data",[150,649,228],{"class":210},[150,651,653],{"class":152,"line":652},59,[150,654,220],{"emptyLinePlaceholder":219},[150,656,658,661],{"class":152,"line":657},60,[150,659,660],{"class":206},"networks",[150,662,228],{"class":210},[150,664,666,669],{"class":152,"line":665},61,[150,667,668],{"class":206},"  n8n-network",[150,670,228],{"class":210},[150,672,674,677,679],{"class":152,"line":673},62,[150,675,676],{"class":206},"    driver",[150,678,211],{"class":210},[150,680,681],{"class":164},"bridge\n",[35,683,685],{"id":684},"_3-environment-variablen-konfigurieren","3. Environment-Variablen konfigurieren",[11,687,190,688,691],{},[147,689,690],{},".env"," Datei für eure Konfiguration:",[140,693,695],{"className":142,"code":694,"language":144,"meta":145,"style":145},"# n8n Konfiguration\nN8N_HOST=n8n.euredomain.de\nN8N_PROTOCOL=https\nWEBHOOK_URL=https://n8n.euredomain.de/\n\n# Authentifizierung (ÄNDERN!)\nN8N_BASIC_AUTH_USER=admin\nN8N_BASIC_AUTH_PASSWORD=IhrSicheresPasswort123!\n\n# PostgreSQL Datenbank\nPOSTGRES_DB=n8n\nPOSTGRES_USER=n8n\nPOSTGRES_PASSWORD=IhrDatenbankPasswort456!\n",[147,696,697,702,714,724,734,738,743,753,763,767,772,781,790],{"__ignoreMap":145},[150,698,699],{"class":152,"line":153},[150,700,701],{"class":300},"# n8n Konfiguration\n",[150,703,704,707,711],{"class":152,"line":168},[150,705,706],{"class":210},"N8N_HOST",[150,708,710],{"class":709},"szBVR","=",[150,712,713],{"class":164},"n8n.euredomain.de\n",[150,715,716,719,721],{"class":152,"line":176},[150,717,718],{"class":210},"N8N_PROTOCOL",[150,720,710],{"class":709},[150,722,723],{"class":164},"https\n",[150,725,726,729,731],{"class":152,"line":231},[150,727,728],{"class":210},"WEBHOOK_URL",[150,730,710],{"class":709},[150,732,733],{"class":164},"https://n8n.euredomain.de/\n",[150,735,736],{"class":152,"line":239},[150,737,220],{"emptyLinePlaceholder":219},[150,739,740],{"class":152,"line":250},[150,741,742],{"class":300},"# Authentifizierung (ÄNDERN!)\n",[150,744,745,748,750],{"class":152,"line":261},[150,746,747],{"class":210},"N8N_BASIC_AUTH_USER",[150,749,710],{"class":709},[150,751,752],{"class":164},"admin\n",[150,754,755,758,760],{"class":152,"line":272},[150,756,757],{"class":210},"N8N_BASIC_AUTH_PASSWORD",[150,759,710],{"class":709},[150,761,762],{"class":164},"IhrSicheresPasswort123!\n",[150,764,765],{"class":152,"line":280},[150,766,220],{"emptyLinePlaceholder":219},[150,768,769],{"class":152,"line":289},[150,770,771],{"class":300},"# PostgreSQL Datenbank\n",[150,773,774,777,779],{"class":152,"line":297},[150,775,776],{"class":210},"POSTGRES_DB",[150,778,710],{"class":709},[150,780,258],{"class":164},[150,782,783,786,788],{"class":152,"line":304},[150,784,785],{"class":210},"POSTGRES_USER",[150,787,710],{"class":709},[150,789,258],{"class":164},[150,791,792,795,797],{"class":152,"line":312},[150,793,794],{"class":210},"POSTGRES_PASSWORD",[150,796,710],{"class":709},[150,798,799],{"class":164},"IhrDatenbankPasswort456!\n",[801,802,803],"blockquote",{},[11,804,805,808],{},[15,806,807],{},"⚠️ Wichtig:"," Ändert unbedingt die Passwörter vor dem produktiven Einsatz!",[35,810,812],{"id":811},"_4-n8n-starten","4. n8n starten",[11,814,815,816,818],{},"Startet eure ",[15,817,17],{}," Instanz:",[140,820,822],{"className":142,"code":821,"language":144,"meta":145,"style":145},"docker-compose up -d\n",[147,823,824],{"__ignoreMap":145},[150,825,826,829,832],{"class":152,"line":153},[150,827,828],{"class":156},"docker-compose",[150,830,831],{"class":164}," up",[150,833,834],{"class":160}," -d\n",[11,836,837],{},"Überprüft den Status:",[140,839,841],{"className":142,"code":840,"language":144,"meta":145,"style":145},"docker-compose ps\ndocker-compose logs -f n8n\n",[147,842,843,850],{"__ignoreMap":145},[150,844,845,847],{"class":152,"line":153},[150,846,828],{"class":156},[150,848,849],{"class":164}," ps\n",[150,851,852,854,857,860],{"class":152,"line":168},[150,853,828],{"class":156},[150,855,856],{"class":164}," logs",[150,858,859],{"class":160}," -f",[150,861,862],{"class":164}," n8n\n",[35,864,866],{"id":865},"_5-zugriff-auf-n8n","5. Zugriff auf n8n",[11,868,869],{},"Öffnet euren Browser und navigiert zu:",[40,871,872,881],{},[43,873,874,877,878],{},[15,875,876],{},"Lokal:"," ",[147,879,880],{},"http://localhost:5678",[43,882,883,877,886],{},[15,884,885],{},"Produktiv:",[147,887,888],{},"https://n8n.euredomain.de",[11,890,891,892,894],{},"Loggt euch mit den Credentials aus der ",[147,893,690],{}," ein.",[24,896,898],{"id":897},"produktiv-setup-ssl-reverse-proxy","Produktiv-Setup: SSL & Reverse Proxy",[11,900,901,902,905,906,909],{},"Für den produktiven Einsatz empfehle ich ",[15,903,904],{},"Traefik"," oder ",[15,907,908],{},"Nginx"," als Reverse Proxy mit automatischem SSL.",[35,911,913],{"id":912},"traefik-integration","Traefik Integration",[11,915,916,917,33],{},"Erweitert eure ",[147,918,193],{},[140,920,922],{"className":197,"code":921,"language":199,"meta":145,"style":145},"services:\n  traefik:\n    image: traefik:v2.10\n    container_name: traefik\n    restart: unless-stopped\n    command:\n      - \"--api.insecure=true\"\n      - \"--providers.docker=true\"\n      - \"--entrypoints.web.address=:80\"\n      - \"--entrypoints.websecure.address=:443\"\n      - \"--certificatesresolvers.letsencrypt.acme.email=info@euredomain.de\"\n      - \"--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json\"\n      - \"--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web\"\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock:ro\n      - ./letsencrypt:/letsencrypt\n    networks:\n      - n8n-network\n\n  n8n:\n    # ... bestehende Konfiguration\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.n8n.rule=Host(`n8n.euredomain.de`)\"\n      - \"traefik.http.routers.n8n.entrypoints=websecure\"\n      - \"traefik.http.routers.n8n.tls.certresolver=letsencrypt\"\n      - \"traefik.http.services.n8n.loadbalancer.server.port=5678\"\n",[147,923,924,930,937,946,955,963,970,977,984,991,998,1005,1012,1019,1025,1032,1039,1045,1052,1059,1065,1071,1075,1081,1086,1093,1100,1107,1114,1121],{"__ignoreMap":145},[150,925,926,928],{"class":152,"line":153},[150,927,225],{"class":206},[150,929,228],{"class":210},[150,931,932,935],{"class":152,"line":168},[150,933,934],{"class":206},"  traefik",[150,936,228],{"class":210},[150,938,939,941,943],{"class":152,"line":176},[150,940,242],{"class":206},[150,942,211],{"class":210},[150,944,945],{"class":164},"traefik:v2.10\n",[150,947,948,950,952],{"class":152,"line":231},[150,949,253],{"class":206},[150,951,211],{"class":210},[150,953,954],{"class":164},"traefik\n",[150,956,957,959,961],{"class":152,"line":239},[150,958,264],{"class":206},[150,960,211],{"class":210},[150,962,269],{"class":164},[150,964,965,968],{"class":152,"line":250},[150,966,967],{"class":206},"    command",[150,969,228],{"class":210},[150,971,972,974],{"class":152,"line":261},[150,973,283],{"class":210},[150,975,976],{"class":164},"\"--api.insecure=true\"\n",[150,978,979,981],{"class":152,"line":272},[150,980,283],{"class":210},[150,982,983],{"class":164},"\"--providers.docker=true\"\n",[150,985,986,988],{"class":152,"line":280},[150,987,283],{"class":210},[150,989,990],{"class":164},"\"--entrypoints.web.address=:80\"\n",[150,992,993,995],{"class":152,"line":289},[150,994,283],{"class":210},[150,996,997],{"class":164},"\"--entrypoints.websecure.address=:443\"\n",[150,999,1000,1002],{"class":152,"line":297},[150,1001,283],{"class":210},[150,1003,1004],{"class":164},"\"--certificatesresolvers.letsencrypt.acme.email=info@euredomain.de\"\n",[150,1006,1007,1009],{"class":152,"line":304},[150,1008,283],{"class":210},[150,1010,1011],{"class":164},"\"--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json\"\n",[150,1013,1014,1016],{"class":152,"line":312},[150,1015,283],{"class":210},[150,1017,1018],{"class":164},"\"--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web\"\n",[150,1020,1021,1023],{"class":152,"line":320},[150,1022,275],{"class":206},[150,1024,228],{"class":210},[150,1026,1027,1029],{"class":152,"line":328},[150,1028,283],{"class":210},[150,1030,1031],{"class":164},"\"80:80\"\n",[150,1033,1034,1036],{"class":152,"line":336},[150,1035,283],{"class":210},[150,1037,1038],{"class":164},"\"443:443\"\n",[150,1040,1041,1043],{"class":152,"line":341},[150,1042,484],{"class":206},[150,1044,228],{"class":210},[150,1046,1047,1049],{"class":152,"line":347},[150,1048,283],{"class":210},[150,1050,1051],{"class":164},"/var/run/docker.sock:/var/run/docker.sock:ro\n",[150,1053,1054,1056],{"class":152,"line":355},[150,1055,283],{"class":210},[150,1057,1058],{"class":164},"./letsencrypt:/letsencrypt\n",[150,1060,1061,1063],{"class":152,"line":363},[150,1062,516],{"class":206},[150,1064,228],{"class":210},[150,1066,1067,1069],{"class":152,"line":371},[150,1068,283],{"class":210},[150,1070,526],{"class":164},[150,1072,1073],{"class":152,"line":379},[150,1074,220],{"emptyLinePlaceholder":219},[150,1076,1077,1079],{"class":152,"line":387},[150,1078,234],{"class":206},[150,1080,228],{"class":210},[150,1082,1083],{"class":152,"line":395},[150,1084,1085],{"class":300},"    # ... bestehende Konfiguration\n",[150,1087,1088,1091],{"class":152,"line":400},[150,1089,1090],{"class":206},"    labels",[150,1092,228],{"class":210},[150,1094,1095,1097],{"class":152,"line":406},[150,1096,283],{"class":210},[150,1098,1099],{"class":164},"\"traefik.enable=true\"\n",[150,1101,1102,1104],{"class":152,"line":414},[150,1103,283],{"class":210},[150,1105,1106],{"class":164},"\"traefik.http.routers.n8n.rule=Host(`n8n.euredomain.de`)\"\n",[150,1108,1109,1111],{"class":152,"line":422},[150,1110,283],{"class":210},[150,1112,1113],{"class":164},"\"traefik.http.routers.n8n.entrypoints=websecure\"\n",[150,1115,1116,1118],{"class":152,"line":430},[150,1117,283],{"class":210},[150,1119,1120],{"class":164},"\"traefik.http.routers.n8n.tls.certresolver=letsencrypt\"\n",[150,1122,1123,1125],{"class":152,"line":435},[150,1124,283],{"class":210},[150,1126,1127],{"class":164},"\"traefik.http.services.n8n.loadbalancer.server.port=5678\"\n",[24,1129,1131],{"id":1130},"best-practices-für-n8n-self-hosted","Best Practices für n8n Self-Hosted",[35,1133,1135],{"id":1134},"_1-regelmäßige-backups","1. Regelmäßige Backups",[11,1137,1138],{},"Erstellt ein Backup-Script:",[140,1140,1142],{"className":142,"code":1141,"language":144,"meta":145,"style":145},"#!/bin/bash\n# backup-n8n.sh\n\nBACKUP_DIR=\"/backups/n8n\"\nDATE=$(date +%Y%m%d_%H%M%S)\n\n# PostgreSQL Backup\ndocker exec n8n-postgres pg_dump -U n8n n8n > \"$BACKUP_DIR/n8n_db_$DATE.sql\"\n\n# n8n Daten Backup\ntar -czf \"$BACKUP_DIR/n8n_data_$DATE.tar.gz\" -C ~/n8n-docker data/\n\n# Alte Backups löschen (älter als 30 Tage)\nfind $BACKUP_DIR -name \"*.sql\" -mtime +30 -delete\nfind $BACKUP_DIR -name \"*.tar.gz\" -mtime +30 -delete\n",[147,1143,1144,1149,1154,1158,1168,1187,1191,1196,1236,1240,1245,1274,1278,1283,1306],{"__ignoreMap":145},[150,1145,1146],{"class":152,"line":153},[150,1147,1148],{"class":300},"#!/bin/bash\n",[150,1150,1151],{"class":152,"line":168},[150,1152,1153],{"class":300},"# backup-n8n.sh\n",[150,1155,1156],{"class":152,"line":176},[150,1157,220],{"emptyLinePlaceholder":219},[150,1159,1160,1163,1165],{"class":152,"line":231},[150,1161,1162],{"class":210},"BACKUP_DIR",[150,1164,710],{"class":709},[150,1166,1167],{"class":164},"\"/backups/n8n\"\n",[150,1169,1170,1173,1175,1178,1181,1184],{"class":152,"line":239},[150,1171,1172],{"class":210},"DATE",[150,1174,710],{"class":709},[150,1176,1177],{"class":210},"$(",[150,1179,1180],{"class":156},"date",[150,1182,1183],{"class":164}," +%Y%m%d_%H%M%S",[150,1185,1186],{"class":210},")\n",[150,1188,1189],{"class":152,"line":250},[150,1190,220],{"emptyLinePlaceholder":219},[150,1192,1193],{"class":152,"line":261},[150,1194,1195],{"class":300},"# PostgreSQL Backup\n",[150,1197,1198,1201,1204,1207,1210,1213,1216,1218,1221,1224,1227,1230,1233],{"class":152,"line":272},[150,1199,1200],{"class":156},"docker",[150,1202,1203],{"class":164}," exec",[150,1205,1206],{"class":164}," n8n-postgres",[150,1208,1209],{"class":164}," pg_dump",[150,1211,1212],{"class":160}," -U",[150,1214,1215],{"class":164}," n8n",[150,1217,1215],{"class":164},[150,1219,1220],{"class":709}," >",[150,1222,1223],{"class":164}," \"",[150,1225,1226],{"class":210},"$BACKUP_DIR",[150,1228,1229],{"class":164},"/n8n_db_",[150,1231,1232],{"class":210},"$DATE",[150,1234,1235],{"class":164},".sql\"\n",[150,1237,1238],{"class":152,"line":280},[150,1239,220],{"emptyLinePlaceholder":219},[150,1241,1242],{"class":152,"line":289},[150,1243,1244],{"class":300},"# n8n Daten Backup\n",[150,1246,1247,1250,1253,1255,1257,1260,1262,1265,1268,1271],{"class":152,"line":297},[150,1248,1249],{"class":156},"tar",[150,1251,1252],{"class":160}," -czf",[150,1254,1223],{"class":164},[150,1256,1226],{"class":210},[150,1258,1259],{"class":164},"/n8n_data_",[150,1261,1232],{"class":210},[150,1263,1264],{"class":164},".tar.gz\"",[150,1266,1267],{"class":160}," -C",[150,1269,1270],{"class":164}," ~/n8n-docker",[150,1272,1273],{"class":164}," data/\n",[150,1275,1276],{"class":152,"line":304},[150,1277,220],{"emptyLinePlaceholder":219},[150,1279,1280],{"class":152,"line":312},[150,1281,1282],{"class":300},"# Alte Backups löschen (älter als 30 Tage)\n",[150,1284,1285,1288,1291,1294,1297,1300,1303],{"class":152,"line":320},[150,1286,1287],{"class":156},"find",[150,1289,1290],{"class":210}," $BACKUP_DIR ",[150,1292,1293],{"class":160},"-name",[150,1295,1296],{"class":164}," \"*.sql\"",[150,1298,1299],{"class":160}," -mtime",[150,1301,1302],{"class":164}," +30",[150,1304,1305],{"class":160}," -delete\n",[150,1307,1308,1310,1312,1314,1317,1319,1321],{"class":152,"line":328},[150,1309,1287],{"class":156},[150,1311,1290],{"class":210},[150,1313,1293],{"class":160},[150,1315,1316],{"class":164}," \"*.tar.gz\"",[150,1318,1299],{"class":160},[150,1320,1302],{"class":164},[150,1322,1305],{"class":160},[11,1324,1325],{},"Automatisiert mit Cron:",[140,1327,1329],{"className":142,"code":1328,"language":144,"meta":145,"style":145},"0 2 * * * /path/to/backup-n8n.sh\n",[147,1330,1331],{"__ignoreMap":145},[150,1332,1333,1336,1339,1342,1344,1346],{"class":152,"line":153},[150,1334,1335],{"class":156},"0",[150,1337,1338],{"class":160}," 2",[150,1340,1341],{"class":160}," *",[150,1343,1341],{"class":160},[150,1345,1341],{"class":160},[150,1347,1348],{"class":164}," /path/to/backup-n8n.sh\n",[35,1350,1352],{"id":1351},"_2-monitoring-logging","2. Monitoring & Logging",[11,1354,1355,1356,124,1359,33],{},"Integriert Monitoring mit ",[15,1357,1358],{},"Prometheus",[15,1360,1361],{},"Grafana",[140,1363,1365],{"className":197,"code":1364,"language":199,"meta":145,"style":145},"services:\n  prometheus:\n    image: prom/prometheus:latest\n    volumes:\n      - ./prometheus.yml:/etc/prometheus/prometheus.yml\n    networks:\n      - n8n-network\n\n  grafana:\n    image: grafana/grafana:latest\n    ports:\n      - \"3000:3000\"\n    networks:\n      - n8n-network\n",[147,1366,1367,1373,1380,1389,1395,1402,1408,1414,1418,1425,1434,1440,1447,1453],{"__ignoreMap":145},[150,1368,1369,1371],{"class":152,"line":153},[150,1370,225],{"class":206},[150,1372,228],{"class":210},[150,1374,1375,1378],{"class":152,"line":168},[150,1376,1377],{"class":206},"  prometheus",[150,1379,228],{"class":210},[150,1381,1382,1384,1386],{"class":152,"line":176},[150,1383,242],{"class":206},[150,1385,211],{"class":210},[150,1387,1388],{"class":164},"prom/prometheus:latest\n",[150,1390,1391,1393],{"class":152,"line":231},[150,1392,484],{"class":206},[150,1394,228],{"class":210},[150,1396,1397,1399],{"class":152,"line":239},[150,1398,283],{"class":210},[150,1400,1401],{"class":164},"./prometheus.yml:/etc/prometheus/prometheus.yml\n",[150,1403,1404,1406],{"class":152,"line":250},[150,1405,516],{"class":206},[150,1407,228],{"class":210},[150,1409,1410,1412],{"class":152,"line":261},[150,1411,283],{"class":210},[150,1413,526],{"class":164},[150,1415,1416],{"class":152,"line":272},[150,1417,220],{"emptyLinePlaceholder":219},[150,1419,1420,1423],{"class":152,"line":280},[150,1421,1422],{"class":206},"  grafana",[150,1424,228],{"class":210},[150,1426,1427,1429,1431],{"class":152,"line":289},[150,1428,242],{"class":206},[150,1430,211],{"class":210},[150,1432,1433],{"class":164},"grafana/grafana:latest\n",[150,1435,1436,1438],{"class":152,"line":297},[150,1437,275],{"class":206},[150,1439,228],{"class":210},[150,1441,1442,1444],{"class":152,"line":304},[150,1443,283],{"class":210},[150,1445,1446],{"class":164},"\"3000:3000\"\n",[150,1448,1449,1451],{"class":152,"line":312},[150,1450,516],{"class":206},[150,1452,228],{"class":210},[150,1454,1455,1457],{"class":152,"line":320},[150,1456,283],{"class":210},[150,1458,526],{"class":164},[35,1460,1462],{"id":1461},"_3-ressourcen-limits","3. Ressourcen-Limits",[11,1464,1465,1466,33],{},"Begrenzt CPU und RAM in der ",[147,1467,193],{},[140,1469,1471],{"className":197,"code":1470,"language":199,"meta":145,"style":145},"services:\n  n8n:\n    # ... bestehende Konfiguration\n    deploy:\n      resources:\n        limits:\n          cpus: \"2\"\n          memory: 2G\n        reservations:\n          cpus: \"1\"\n          memory: 1G\n",[147,1472,1473,1479,1485,1489,1496,1503,1510,1520,1530,1537,1546],{"__ignoreMap":145},[150,1474,1475,1477],{"class":152,"line":153},[150,1476,225],{"class":206},[150,1478,228],{"class":210},[150,1480,1481,1483],{"class":152,"line":168},[150,1482,234],{"class":206},[150,1484,228],{"class":210},[150,1486,1487],{"class":152,"line":176},[150,1488,1085],{"class":300},[150,1490,1491,1494],{"class":152,"line":231},[150,1492,1493],{"class":206},"    deploy",[150,1495,228],{"class":210},[150,1497,1498,1501],{"class":152,"line":239},[150,1499,1500],{"class":206},"      resources",[150,1502,228],{"class":210},[150,1504,1505,1508],{"class":152,"line":250},[150,1506,1507],{"class":206},"        limits",[150,1509,228],{"class":210},[150,1511,1512,1515,1517],{"class":152,"line":261},[150,1513,1514],{"class":206},"          cpus",[150,1516,211],{"class":210},[150,1518,1519],{"class":164},"\"2\"\n",[150,1521,1522,1525,1527],{"class":152,"line":272},[150,1523,1524],{"class":206},"          memory",[150,1526,211],{"class":210},[150,1528,1529],{"class":164},"2G\n",[150,1531,1532,1535],{"class":152,"line":280},[150,1533,1534],{"class":206},"        reservations",[150,1536,228],{"class":210},[150,1538,1539,1541,1543],{"class":152,"line":289},[150,1540,1514],{"class":206},[150,1542,211],{"class":210},[150,1544,1545],{"class":164},"\"1\"\n",[150,1547,1548,1550,1552],{"class":152,"line":297},[150,1549,1524],{"class":206},[150,1551,211],{"class":210},[150,1553,1554],{"class":164},"1G\n",[35,1556,1558],{"id":1557},"_4-updates-durchführen","4. Updates durchführen",[11,1560,1561],{},"Regelmäßige Updates sind wichtig:",[140,1563,1565],{"className":142,"code":1564,"language":144,"meta":145,"style":145},"# Images aktualisieren\ndocker-compose pull\n\n# Container neu starten\ndocker-compose up -d\n\n# Alte Images aufräumen\ndocker image prune -a\n",[147,1566,1567,1572,1579,1583,1588,1596,1600,1605],{"__ignoreMap":145},[150,1568,1569],{"class":152,"line":153},[150,1570,1571],{"class":300},"# Images aktualisieren\n",[150,1573,1574,1576],{"class":152,"line":168},[150,1575,828],{"class":156},[150,1577,1578],{"class":164}," pull\n",[150,1580,1581],{"class":152,"line":176},[150,1582,220],{"emptyLinePlaceholder":219},[150,1584,1585],{"class":152,"line":231},[150,1586,1587],{"class":300},"# Container neu starten\n",[150,1589,1590,1592,1594],{"class":152,"line":239},[150,1591,828],{"class":156},[150,1593,831],{"class":164},[150,1595,834],{"class":160},[150,1597,1598],{"class":152,"line":250},[150,1599,220],{"emptyLinePlaceholder":219},[150,1601,1602],{"class":152,"line":261},[150,1603,1604],{"class":300},"# Alte Images aufräumen\n",[150,1606,1607,1609,1612,1615],{"class":152,"line":272},[150,1608,1200],{"class":156},[150,1610,1611],{"class":164}," image",[150,1613,1614],{"class":164}," prune",[150,1616,1617],{"class":160}," -a\n",[24,1619,1621],{"id":1620},"erweiterte-konfiguration","Erweiterte Konfiguration",[35,1623,1625],{"id":1624},"custom-nodes-installieren","Custom Nodes installieren",[11,1627,1628,1629,1632],{},"Erstellt ein ",[147,1630,1631],{},"Dockerfile"," für Custom Nodes:",[140,1634,1638],{"className":1635,"code":1636,"language":1637,"meta":145,"style":145},"language-dockerfile shiki shiki-themes github-light github-dark","FROM n8nio/n8n:latest\n\nUSER root\n\n# Custom Node installieren\nRUN cd /usr/local/lib/node_modules/n8n && \\\n    npm install n8n-nodes-custom-package\n\nUSER node\n","dockerfile",[147,1639,1640,1645,1649,1654,1658,1663,1668,1673,1677],{"__ignoreMap":145},[150,1641,1642],{"class":152,"line":153},[150,1643,1644],{},"FROM n8nio/n8n:latest\n",[150,1646,1647],{"class":152,"line":168},[150,1648,220],{"emptyLinePlaceholder":219},[150,1650,1651],{"class":152,"line":176},[150,1652,1653],{},"USER root\n",[150,1655,1656],{"class":152,"line":231},[150,1657,220],{"emptyLinePlaceholder":219},[150,1659,1660],{"class":152,"line":239},[150,1661,1662],{},"# Custom Node installieren\n",[150,1664,1665],{"class":152,"line":250},[150,1666,1667],{},"RUN cd /usr/local/lib/node_modules/n8n && \\\n",[150,1669,1670],{"class":152,"line":261},[150,1671,1672],{},"    npm install n8n-nodes-custom-package\n",[150,1674,1675],{"class":152,"line":272},[150,1676,220],{"emptyLinePlaceholder":219},[150,1678,1679],{"class":152,"line":280},[150,1680,1681],{},"USER node\n",[11,1683,1684,1685,33],{},"Aktualisiert die ",[147,1686,193],{},[140,1688,1690],{"className":197,"code":1689,"language":199,"meta":145,"style":145},"services:\n  n8n:\n    build: .\n    # statt: image: n8nio/n8n:latest\n",[147,1691,1692,1698,1704,1714],{"__ignoreMap":145},[150,1693,1694,1696],{"class":152,"line":153},[150,1695,225],{"class":206},[150,1697,228],{"class":210},[150,1699,1700,1702],{"class":152,"line":168},[150,1701,234],{"class":206},[150,1703,228],{"class":210},[150,1705,1706,1709,1711],{"class":152,"line":176},[150,1707,1708],{"class":206},"    build",[150,1710,211],{"class":210},[150,1712,1713],{"class":160},".\n",[150,1715,1716],{"class":152,"line":231},[150,1717,1718],{"class":300},"    # statt: image: n8nio/n8n:latest\n",[35,1720,1722],{"id":1721},"mehrere-n8n-instanzen-queue-mode","Mehrere n8n Instanzen (Queue Mode)",[11,1724,1725],{},"Für High-Availability Setup:",[140,1727,1729],{"className":197,"code":1728,"language":199,"meta":145,"style":145},"services:\n  n8n-main:\n    # Main Instance\n    environment:\n      - EXECUTIONS_MODE=queue\n      - QUEUE_BULL_REDIS_HOST=redis\n\n  n8n-worker:\n    # Worker Instance\n    command: worker\n    environment:\n      - EXECUTIONS_MODE=queue\n      - QUEUE_BULL_REDIS_HOST=redis\n\n  redis:\n    image: redis:7-alpine\n",[147,1730,1731,1737,1744,1749,1755,1762,1769,1773,1780,1785,1794,1800,1806,1812,1816,1823],{"__ignoreMap":145},[150,1732,1733,1735],{"class":152,"line":153},[150,1734,225],{"class":206},[150,1736,228],{"class":210},[150,1738,1739,1742],{"class":152,"line":168},[150,1740,1741],{"class":206},"  n8n-main",[150,1743,228],{"class":210},[150,1745,1746],{"class":152,"line":176},[150,1747,1748],{"class":300},"    # Main Instance\n",[150,1750,1751,1753],{"class":152,"line":231},[150,1752,292],{"class":206},[150,1754,228],{"class":210},[150,1756,1757,1759],{"class":152,"line":239},[150,1758,283],{"class":210},[150,1760,1761],{"class":164},"EXECUTIONS_MODE=queue\n",[150,1763,1764,1766],{"class":152,"line":250},[150,1765,283],{"class":210},[150,1767,1768],{"class":164},"QUEUE_BULL_REDIS_HOST=redis\n",[150,1770,1771],{"class":152,"line":261},[150,1772,220],{"emptyLinePlaceholder":219},[150,1774,1775,1778],{"class":152,"line":272},[150,1776,1777],{"class":206},"  n8n-worker",[150,1779,228],{"class":210},[150,1781,1782],{"class":152,"line":280},[150,1783,1784],{"class":300},"    # Worker Instance\n",[150,1786,1787,1789,1791],{"class":152,"line":289},[150,1788,967],{"class":206},[150,1790,211],{"class":210},[150,1792,1793],{"class":164},"worker\n",[150,1795,1796,1798],{"class":152,"line":297},[150,1797,292],{"class":206},[150,1799,228],{"class":210},[150,1801,1802,1804],{"class":152,"line":304},[150,1803,283],{"class":210},[150,1805,1761],{"class":164},[150,1807,1808,1810],{"class":152,"line":312},[150,1809,283],{"class":210},[150,1811,1768],{"class":164},[150,1813,1814],{"class":152,"line":320},[150,1815,220],{"emptyLinePlaceholder":219},[150,1817,1818,1821],{"class":152,"line":328},[150,1819,1820],{"class":206},"  redis",[150,1822,228],{"class":210},[150,1824,1825,1827,1829],{"class":152,"line":336},[150,1826,242],{"class":206},[150,1828,211],{"class":210},[150,1830,1831],{"class":164},"redis:7-alpine\n",[24,1833,1835],{"id":1834},"troubleshooting","Troubleshooting",[35,1837,1839],{"id":1838},"problem-container-startet-nicht","Problem: Container startet nicht",[140,1841,1843],{"className":142,"code":1842,"language":144,"meta":145,"style":145},"# Logs prüfen\ndocker-compose logs n8n\n\n# Container neu erstellen\ndocker-compose down\ndocker-compose up -d --force-recreate\n",[147,1844,1845,1850,1858,1862,1867,1874],{"__ignoreMap":145},[150,1846,1847],{"class":152,"line":153},[150,1848,1849],{"class":300},"# Logs prüfen\n",[150,1851,1852,1854,1856],{"class":152,"line":168},[150,1853,828],{"class":156},[150,1855,856],{"class":164},[150,1857,862],{"class":164},[150,1859,1860],{"class":152,"line":176},[150,1861,220],{"emptyLinePlaceholder":219},[150,1863,1864],{"class":152,"line":231},[150,1865,1866],{"class":300},"# Container neu erstellen\n",[150,1868,1869,1871],{"class":152,"line":239},[150,1870,828],{"class":156},[150,1872,1873],{"class":164}," down\n",[150,1875,1876,1878,1880,1883],{"class":152,"line":250},[150,1877,828],{"class":156},[150,1879,831],{"class":164},[150,1881,1882],{"class":160}," -d",[150,1884,1885],{"class":160}," --force-recreate\n",[35,1887,1889],{"id":1888},"problem-webhooks-funktionieren-nicht","Problem: Webhooks funktionieren nicht",[11,1891,1892,1893,1895,1896,33],{},"Überprüft die ",[147,1894,728],{}," in der ",[147,1897,690],{},[140,1899,1901],{"className":142,"code":1900,"language":144,"meta":145,"style":145},"WEBHOOK_URL=https://n8n.euredomain.de/\n",[147,1902,1903],{"__ignoreMap":145},[150,1904,1905,1907,1909],{"class":152,"line":153},[150,1906,728],{"class":210},[150,1908,710],{"class":709},[150,1910,733],{"class":164},[35,1912,1914],{"id":1913},"problem-datenbank-verbindung-fehlgeschlagen","Problem: Datenbank-Verbindung fehlgeschlagen",[140,1916,1918],{"className":142,"code":1917,"language":144,"meta":145,"style":145},"# PostgreSQL Container prüfen\ndocker-compose logs postgres\n\n# Datenbank-Verbindung testen\ndocker exec -it n8n-postgres psql -U n8n -d n8n\n",[147,1919,1920,1925,1934,1938,1943],{"__ignoreMap":145},[150,1921,1922],{"class":152,"line":153},[150,1923,1924],{"class":300},"# PostgreSQL Container prüfen\n",[150,1926,1927,1929,1931],{"class":152,"line":168},[150,1928,828],{"class":156},[150,1930,856],{"class":164},[150,1932,1933],{"class":164}," postgres\n",[150,1935,1936],{"class":152,"line":176},[150,1937,220],{"emptyLinePlaceholder":219},[150,1939,1940],{"class":152,"line":231},[150,1941,1942],{"class":300},"# Datenbank-Verbindung testen\n",[150,1944,1945,1947,1949,1952,1954,1957,1959,1961,1963],{"class":152,"line":239},[150,1946,1200],{"class":156},[150,1948,1203],{"class":164},[150,1950,1951],{"class":160}," -it",[150,1953,1206],{"class":164},[150,1955,1956],{"class":164}," psql",[150,1958,1212],{"class":160},[150,1960,1215],{"class":164},[150,1962,1882],{"class":160},[150,1964,862],{"class":164},[24,1966,1968],{"id":1967},"performance-optimierung","Performance-Optimierung",[35,1970,1972],{"id":1971},"_1-postgresql-tuning","1. PostgreSQL Tuning",[11,1974,1975,1976,33],{},"Erstellt ",[147,1977,1978],{},"postgres.conf",[140,1980,1984],{"className":1981,"code":1982,"language":1983,"meta":145,"style":145},"language-conf shiki shiki-themes github-light github-dark","# Für 2GB RAM Server\nshared_buffers = 512MB\neffective_cache_size = 1536MB\nmaintenance_work_mem = 128MB\ncheckpoint_completion_target = 0.9\nwal_buffers = 16MB\ndefault_statistics_target = 100\nrandom_page_cost = 1.1\neffective_io_concurrency = 200\nwork_mem = 2621kB\nmin_wal_size = 1GB\nmax_wal_size = 4GB\n","conf",[147,1985,1986,1991,1996,2001,2006,2011,2016,2021,2026,2031,2036,2041],{"__ignoreMap":145},[150,1987,1988],{"class":152,"line":153},[150,1989,1990],{},"# Für 2GB RAM Server\n",[150,1992,1993],{"class":152,"line":168},[150,1994,1995],{},"shared_buffers = 512MB\n",[150,1997,1998],{"class":152,"line":176},[150,1999,2000],{},"effective_cache_size = 1536MB\n",[150,2002,2003],{"class":152,"line":231},[150,2004,2005],{},"maintenance_work_mem = 128MB\n",[150,2007,2008],{"class":152,"line":239},[150,2009,2010],{},"checkpoint_completion_target = 0.9\n",[150,2012,2013],{"class":152,"line":250},[150,2014,2015],{},"wal_buffers = 16MB\n",[150,2017,2018],{"class":152,"line":261},[150,2019,2020],{},"default_statistics_target = 100\n",[150,2022,2023],{"class":152,"line":272},[150,2024,2025],{},"random_page_cost = 1.1\n",[150,2027,2028],{"class":152,"line":280},[150,2029,2030],{},"effective_io_concurrency = 200\n",[150,2032,2033],{"class":152,"line":289},[150,2034,2035],{},"work_mem = 2621kB\n",[150,2037,2038],{"class":152,"line":297},[150,2039,2040],{},"min_wal_size = 1GB\n",[150,2042,2043],{"class":152,"line":304},[150,2044,2045],{},"max_wal_size = 4GB\n",[35,2047,2049],{"id":2048},"_2-n8n-execution-settings","2. n8n Execution Settings",[11,2051,2052,2053,33],{},"In der ",[147,2054,690],{},[140,2056,2058],{"className":142,"code":2057,"language":144,"meta":145,"style":145},"# Execution Limits\nEXECUTIONS_TIMEOUT=300\nEXECUTIONS_TIMEOUT_MAX=600\nEXECUTIONS_DATA_SAVE_ON_ERROR=all\nEXECUTIONS_DATA_SAVE_ON_SUCCESS=all\nEXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS=true\n",[147,2059,2060,2065,2075,2085,2095,2104],{"__ignoreMap":145},[150,2061,2062],{"class":152,"line":153},[150,2063,2064],{"class":300},"# Execution Limits\n",[150,2066,2067,2070,2072],{"class":152,"line":168},[150,2068,2069],{"class":210},"EXECUTIONS_TIMEOUT",[150,2071,710],{"class":709},[150,2073,2074],{"class":164},"300\n",[150,2076,2077,2080,2082],{"class":152,"line":176},[150,2078,2079],{"class":210},"EXECUTIONS_TIMEOUT_MAX",[150,2081,710],{"class":709},[150,2083,2084],{"class":164},"600\n",[150,2086,2087,2090,2092],{"class":152,"line":231},[150,2088,2089],{"class":210},"EXECUTIONS_DATA_SAVE_ON_ERROR",[150,2091,710],{"class":709},[150,2093,2094],{"class":164},"all\n",[150,2096,2097,2100,2102],{"class":152,"line":239},[150,2098,2099],{"class":210},"EXECUTIONS_DATA_SAVE_ON_SUCCESS",[150,2101,710],{"class":709},[150,2103,2094],{"class":164},[150,2105,2106,2109,2111],{"class":152,"line":250},[150,2107,2108],{"class":210},"EXECUTIONS_DATA_SAVE_MANUAL_EXECUTIONS",[150,2110,710],{"class":709},[150,2112,2113],{"class":164},"true\n",[24,2115,2117],{"id":2116},"kosten-vergleich-self-hosted-vs-cloud","Kosten-Vergleich: Self-Hosted vs. Cloud",[2119,2120,2121,2137],"table",{},[2122,2123,2124],"thead",{},[2125,2126,2127,2131,2134],"tr",{},[2128,2129,2130],"th",{},"Aspekt",[2128,2132,2133],{},"n8n Cloud",[2128,2135,2136],{},"n8n Self-Hosted",[2138,2139,2140,2154,2167,2178,2191,2204],"tbody",{},[2125,2141,2142,2148,2151],{},[2143,2144,2145],"td",{},[15,2146,2147],{},"Monatliche Kosten",[2143,2149,2150],{},"ab 20€/Monat",[2143,2152,2153],{},"Server: ~5-20€/Monat",[2125,2155,2156,2161,2164],{},[2143,2157,2158],{},[15,2159,2160],{},"Workflows",[2143,2162,2163],{},"Limitiert",[2143,2165,2166],{},"Unbegrenzt",[2125,2168,2169,2174,2176],{},[2143,2170,2171],{},[15,2172,2173],{},"Executions",[2143,2175,2163],{},[2143,2177,2166],{},[2125,2179,2180,2185,2188],{},[2143,2181,2182],{},[15,2183,2184],{},"Datenkontrolle",[2143,2186,2187],{},"Bei n8n",[2143,2189,2190],{},"100% bei euch",[2125,2192,2193,2198,2201],{},[2143,2194,2195],{},[15,2196,2197],{},"Wartungsaufwand",[2143,2199,2200],{},"Keine",[2143,2202,2203],{},"Gering (Updates, Backups)",[2125,2205,2206,2211,2214],{},[2143,2207,2208],{},[15,2209,2210],{},"Skalierung",[2143,2212,2213],{},"Automatisch",[2143,2215,2216],{},"Manuell",[11,2218,2219,2222,2223,2225],{},[15,2220,2221],{},"Fazit:"," Ab ~5 Workflows lohnt sich ",[15,2224,17],{}," finanziell.",[24,2227,2229],{"id":2228},"fazit-n8n-docker-compose-lohnt-sich","Fazit: n8n Docker Compose lohnt sich",[11,2231,2232,2233,2235],{},"Mit ",[15,2234,21],{}," habt ihr in wenigen Minuten eine produktionsreife Workflow-Automation-Plattform am Laufen. Die Vorteile:",[11,2237,2238,2239,2242,2243,2246,2247,2250,2251,2246,2253,2256,2257,2246,2259,2262,2263,2246,2265,2268],{},"✅ ",[15,2240,2241],{},"Volle Kontrolle"," über Daten und Infrastruktur",[2244,2245],"br",{},"\n✅ ",[15,2248,2249],{},"Kosteneffizient"," bei regelmäßiger Nutzung",[2244,2252],{},[15,2254,2255],{},"Skalierbar"," nach euren Anforderungen",[2244,2258],{},[15,2260,2261],{},"DSGVO-konform"," durch Self-Hosting",[2244,2264],{},[15,2266,2267],{},"Professionell"," mit PostgreSQL und SSL",[11,2270,2271],{},"Der initiale Setup-Aufwand von 1-2 Stunden zahlt sich schnell aus. Mit den Best Practices aus diesem Guide habt ihr eine stabile, sichere und wartbare n8n-Installation.",[24,2273,2275],{"id":2274},"nächste-schritte","Nächste Schritte",[11,2277,13,2278,2280],{},[15,2279,17],{}," produktiv einsetzen, aber euch fehlt die Zeit oder Expertise für Setup und Wartung? Wir bei Vinspire helfen euch:",[40,2282,2283,2289,2295,2301],{},[43,2284,2285,2288],{},[15,2286,2287],{},"Managed n8n Hosting"," auf eurer Infrastruktur",[43,2290,2291,2294],{},[15,2292,2293],{},"Custom Workflow-Entwicklung"," für eure Prozesse",[43,2296,2297,2300],{},[15,2298,2299],{},"Integration"," in bestehende Systeme (CRM, ERP, etc.)",[43,2302,2303,2306],{},[15,2304,2305],{},"Training & Support"," für euer Team",[11,2308,2309,877,2312],{},[15,2310,2311],{},"Kostenloses Erstgespräch:",[2313,2314,2316],"a",{"href":2315},"#kontakt","Kontakt aufnehmen",[2318,2319],"hr",{},[11,2321,2322,2325],{},[15,2323,2324],{},"Habt ihr Fragen zum n8n Self-Hosting?"," Schreibt uns oder hinterlasst einen Kommentar!",[11,2327,2328],{},[15,2329,2330],{},"Weitere Artikel:",[40,2332,2333,2339,2345],{},[43,2334,2335],{},[2313,2336,2338],{"href":2337},"/blog/n8n-vs-makecom-vergleich","n8n vs Make.com: Der ultimative Vergleich",[43,2340,2341],{},[2313,2342,2344],{"href":2343},"/blog/5-wege-ki-automation-business-transformation","5 Wege, wie KI-Automation euer Business transformiert",[43,2346,2347],{},[2313,2348,2350],{"href":2349},"/blog/buchhaltung-automatisieren-digitalisierung-rechnungswesen","Buchhaltung automatisieren: Der komplette Guide",[2352,2353,2354],"style",{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":145,"searchDepth":168,"depth":168,"links":2356},[2357,2362,2363,2370,2373,2379,2383,2388,2392,2393,2394],{"id":26,"depth":168,"text":27,"children":2358},[2359,2360,2361],{"id":37,"depth":176,"text":38},{"id":54,"depth":176,"text":55},{"id":69,"depth":176,"text":70},{"id":84,"depth":168,"text":85},{"id":130,"depth":168,"text":131,"children":2364},[2365,2366,2367,2368,2369],{"id":134,"depth":176,"text":135},{"id":186,"depth":176,"text":187},{"id":684,"depth":176,"text":685},{"id":811,"depth":176,"text":812},{"id":865,"depth":176,"text":866},{"id":897,"depth":168,"text":898,"children":2371},[2372],{"id":912,"depth":176,"text":913},{"id":1130,"depth":168,"text":1131,"children":2374},[2375,2376,2377,2378],{"id":1134,"depth":176,"text":1135},{"id":1351,"depth":176,"text":1352},{"id":1461,"depth":176,"text":1462},{"id":1557,"depth":176,"text":1558},{"id":1620,"depth":168,"text":1621,"children":2380},[2381,2382],{"id":1624,"depth":176,"text":1625},{"id":1721,"depth":176,"text":1722},{"id":1834,"depth":168,"text":1835,"children":2384},[2385,2386,2387],{"id":1838,"depth":176,"text":1839},{"id":1888,"depth":176,"text":1889},{"id":1913,"depth":176,"text":1914},{"id":1967,"depth":168,"text":1968,"children":2389},[2390,2391],{"id":1971,"depth":176,"text":1972},{"id":2048,"depth":176,"text":2049},{"id":2116,"depth":168,"text":2117},{"id":2228,"depth":168,"text":2229},{"id":2274,"depth":168,"text":2275},"2026-02-05","Komplette Anleitung für n8n self-hosted Installation mit Docker Compose. Schritt-für-Schritt Setup, Best Practices und Produktiv-Konfiguration für maximale Kontrolle über eure Workflow-Automation.","md","/assets/img/blog/n8n-docker-compose.jpg",{},"/blog/n8n-self-hosted-docker-compose-guide",{"title":5,"description":2396},"blog/n8n-self-hosted-docker-compose-guide",[2404,98,2405,2406,2407],"n8n","Self-Hosting","Workflow Automation","DevOps","RloIh1moPogIuEOo6nE0ojn_kND_Bt5vC0mbkBxIH8M"]