[{"data":1,"prerenderedAt":1022},["ShallowReactive",2],{"navigation":3,"\u002Fen\u002Fblog\u002Fself-hosted-n8n-on-hetzner":4,"\u002Fen\u002Fblog\u002Fself-hosted-n8n-on-hetzner-surround":1011},[],{"id":5,"title":6,"authors":7,"badge":13,"body":14,"date":999,"description":1000,"extension":1001,"image":1002,"lastUpdated":1004,"meta":1005,"navigation":318,"path":1006,"published":318,"seo":1007,"stem":1008,"tags":1009,"__hash__":1010},"posts\u002Fen\u002F3.blog\u002F3.self-hosted-n8n-on-hetzner.md","Self-Host n8n on Hetzner: Complete Docker Setup Guide",[8],{"name":9,"to":10,"avatar":11},"Fabian Sander","\u002Fabout\u002Ffabiansander",{"src":12},"\u002Fimages\u002Fblog\u002Fauthors\u002Ffabian.png",null,{"type":15,"value":16,"toc":978},"minimark",[17,22,26,34,39,42,47,53,59,65,68,76,80,83,89,95,101,107,111,120,124,137,141,154,336,343,349,353,356,360,366,372,378,384,387,413,417,420,424,427,454,458,464,778,782,788,796,799,803,806,822,829,833,839,845,851,916,922,942,946,949,952,958,961,974],[18,19,21],"h1",{"id":20},"automation-made-easy-self-hosting-n8n","Automation made easy: Self-hosting n8n",[23,24,25],"p",{},"Every day, companies juggle dozens of different tools. From CRM to Slack to Google Sheets. The problem: These applications rarely talk to each other. The result? Manual work, lost time, and unnecessary errors.",[23,27,28,29,33],{},"The solution is workflow automation. This article shows how to automate processes with ",[30,31,32],"strong",{},"n8n"," in just a few steps. And best of all, the self-hosted version of n8n can be operated for free, with only server costs incurred.",[35,36,38],"h2",{"id":37},"what-is-n8n-and-why-should-you-self-host-it","What is n8n and why should you self-host it?",[23,40,41],{},"n8n is a node-based workflow automation platform that allows you to connect various services and APIs. Unlike cloud-based alternatives like Zapier, self-hosting n8n offers complete control over data and workflows.",[43,44,46],"h3",{"id":45},"how-n8n-works-simply","How n8n works simply:",[23,48,49,52],{},[30,50,51],{},"Nodes"," are the building blocks. Every service, be it Slack, Gmail, a CRM system, or a simple HTTP request, is represented as a node.",[23,54,55,58],{},[30,56,57],{},"Workflows"," are created by visually connecting these nodes via drag-and-drop. No code is required, but JavaScript or Python can be used if needed.",[23,60,61,64],{},[30,62,63],{},"Triggers"," start workflows automatically. This can be a new email, a webhook call, or a time-based trigger like \"Every Monday at 9 AM\".",[23,66,67],{},"The big advantage of self-hosting n8n: Sensitive business data never leaves your own infrastructure. The solution is GDPR-compliant and can be adapted to specific requirements.",[23,69,70,71],{},"Here is a simple example of a workflow:\n",[72,73],"img",{"alt":74,"src":75},"n8n Workflow Example","\u002Fimages\u002Fblog\u002Fn8n-workflow-example.png",[35,77,79],{"id":78},"practical-use-cases-for-n8n","Practical Use Cases for n8n",[23,81,82],{},"Here are some concrete examples of how n8n can simplify your daily work:",[23,84,85,88],{},[30,86,87],{},"Automate Lead Management",": A new contact fills out a web form. n8n receives the data via webhook, checks the email address for validity, and automatically creates a new entry in the CRM – including a notification to the sales team via Slack.",[23,90,91,94],{},[30,92,93],{},"Improve Internal Communication",": As soon as a new entry appears in the Airtable project database, n8n automatically sends a formatted message to the relevant Slack channel with all relevant details.",[23,96,97,100],{},[30,98,99],{},"Accelerate Content Workflows",": After publishing a new blog article in WordPress, n8n automatically posts an engaging link to LinkedIn and Twitter accounts – with individually adapted text for each platform.",[23,102,103,106],{},[30,104,105],{},"Synchronize Data",": Keep customer master data synchronized between the shop system and accounting software, even if both systems do not offer native integration.",[35,108,110],{"id":109},"self-hosting-n8n-with-docker-the-technical-foundation","Self-hosting n8n with Docker: The Technical Foundation",[23,112,113,114,119],{},"If n8n is to be installed on your own server, Docker is the recommended method. Docker ensures that n8n runs in an isolated environment and brings all dependencies with it. A small tutorial on Docker fundamentals is available in our ",[115,116,118],"a",{"href":117},"\u002Fen\u002Fblog\u002Fhow-docker-works","Docker basics guide",".",[43,121,123],{"id":122},"basic-requirements","Basic Requirements:",[125,126,127,131,134],"ul",{},[128,129,130],"li",{},"A server or VPS (recommended: at least 2 GB RAM)",[128,132,133],{},"Installed Docker Engine",[128,135,136],{},"A domain for access via HTTPS",[43,138,140],{"id":139},"a-minimal-docker-setup","A Minimal Docker Setup",[23,142,143,144,148,149,153],{},"With ",[115,145,147],{"href":146},"\u002Fen\u002Fblog\u002Fdocker-compose-for-beginners","Docker Compose",", n8n can be started with just a few lines of configuration. A simple ",[150,151,152],"code",{},"docker-compose.yml"," looks like this:",[155,156,161],"pre",{"className":157,"code":158,"language":159,"meta":160,"style":160},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","version: '3.8'\nservices:\n  n8n:\n    image: n8nio\u002Fn8n\n    container_name: n8n\n    restart: always\n    ports:\n      - '5678:5678'\n    environment:\n      - N8N_HOST=your-domain.de\n      - N8N_PORT=5678\n      - N8N_PROTOCOL=https\n      - WEBHOOK_URL=https:\u002F\u002Fyour-domain.de\u002F\n    volumes:\n      - n8n_data:\u002Fhome\u002Fnode\u002F.n8n\n\nvolumes:\n  n8n_data:\n","yaml","",[150,162,163,186,195,203,214,225,236,244,257,265,273,281,289,297,305,313,320,328],{"__ignoreMap":160},[164,165,168,172,176,179,183],"span",{"class":166,"line":167},"line",1,[164,169,171],{"class":170},"swJcz","version",[164,173,175],{"class":174},"sMK4o",":",[164,177,178],{"class":174}," '",[164,180,182],{"class":181},"sfazB","3.8",[164,184,185],{"class":174},"'\n",[164,187,189,192],{"class":166,"line":188},2,[164,190,191],{"class":170},"services",[164,193,194],{"class":174},":\n",[164,196,198,201],{"class":166,"line":197},3,[164,199,200],{"class":170},"  n8n",[164,202,194],{"class":174},[164,204,206,209,211],{"class":166,"line":205},4,[164,207,208],{"class":170},"    image",[164,210,175],{"class":174},[164,212,213],{"class":181}," n8nio\u002Fn8n\n",[164,215,217,220,222],{"class":166,"line":216},5,[164,218,219],{"class":170},"    container_name",[164,221,175],{"class":174},[164,223,224],{"class":181}," n8n\n",[164,226,228,231,233],{"class":166,"line":227},6,[164,229,230],{"class":170},"    restart",[164,232,175],{"class":174},[164,234,235],{"class":181}," always\n",[164,237,239,242],{"class":166,"line":238},7,[164,240,241],{"class":170},"    ports",[164,243,194],{"class":174},[164,245,247,250,252,255],{"class":166,"line":246},8,[164,248,249],{"class":174},"      -",[164,251,178],{"class":174},[164,253,254],{"class":181},"5678:5678",[164,256,185],{"class":174},[164,258,260,263],{"class":166,"line":259},9,[164,261,262],{"class":170},"    environment",[164,264,194],{"class":174},[164,266,268,270],{"class":166,"line":267},10,[164,269,249],{"class":174},[164,271,272],{"class":181}," N8N_HOST=your-domain.de\n",[164,274,276,278],{"class":166,"line":275},11,[164,277,249],{"class":174},[164,279,280],{"class":181}," N8N_PORT=5678\n",[164,282,284,286],{"class":166,"line":283},12,[164,285,249],{"class":174},[164,287,288],{"class":181}," N8N_PROTOCOL=https\n",[164,290,292,294],{"class":166,"line":291},13,[164,293,249],{"class":174},[164,295,296],{"class":181}," WEBHOOK_URL=https:\u002F\u002Fyour-domain.de\u002F\n",[164,298,300,303],{"class":166,"line":299},14,[164,301,302],{"class":170},"    volumes",[164,304,194],{"class":174},[164,306,308,310],{"class":166,"line":307},15,[164,309,249],{"class":174},[164,311,312],{"class":181}," n8n_data:\u002Fhome\u002Fnode\u002F.n8n\n",[164,314,316],{"class":166,"line":315},16,[164,317,319],{"emptyLinePlaceholder":318},true,"\n",[164,321,323,326],{"class":166,"line":322},17,[164,324,325],{"class":170},"volumes",[164,327,194],{"class":174},[164,329,331,334],{"class":166,"line":330},18,[164,332,333],{"class":170},"  n8n_data",[164,335,194],{"class":174},[23,337,338,339,342],{},"With the command ",[150,340,341],{},"docker-compose up -d",", the n8n instance is started. The data is stored persistently in a Docker Volume and is not lost even after restarts.",[23,344,345,348],{},[30,346,347],{},"Important",": For production use, a reverse proxy like Caddy or Nginx is additionally required to handle SSL certificates.",[35,350,352],{"id":351},"setting-up-n8n-on-hetzner-vps-german-server-meets-workflow-automation","Setting up n8n on Hetzner VPS: German Server meets Workflow Automation",[23,354,355],{},"For self-hosting n8n, a reliable server provider is important. Hetzner offers an excellent combination of performance, price, and data protection.",[43,357,359],{"id":358},"why-hetzner-is-ideal-for-n8n","Why Hetzner is ideal for n8n:",[23,361,362,365],{},[30,363,364],{},"Data Centers in Germany",": Data remains in Germany and is thus subject to strict GDPR guidelines. This is ideal for companies with high compliance requirements.",[23,367,368,371],{},[30,369,370],{},"Docker-Ready Images",": Hetzner offers pre-configured cloud servers with Docker already installed. This saves manual installation and allows you to start deployment directly.",[23,373,374,377],{},[30,375,376],{},"Fair Pricing",": Cloud servers (Cloud VPS) start at just a few Euros per month. You only pay for the time actually used. This is perfect for testing and for small to medium-sized projects.",[23,379,380,383],{},[30,381,382],{},"Scalable",": If automation requirements grow, the Hetzner server can be easily scaled up without having to start completely from scratch.",[23,385,386],{},"A typical configuration for n8n on Hetzner:",[125,388,389,395,401,407],{},[128,390,391,394],{},[30,392,393],{},"Server Type",": CX23 (2 vCPU, 4 GB RAM, 40 GB SSD)",[128,396,397,400],{},[30,398,399],{},"Location",": Nuremberg or Falkenstein (Germany)",[128,402,403,406],{},[30,404,405],{},"Image",": Docker CE App",[128,408,409,412],{},[30,410,411],{},"Cost",": From approx. €3.49 per month",[35,414,416],{"id":415},"practical-example-n8n-with-caddy-as-reverse-proxy","Practical Example: n8n with Caddy as Reverse Proxy",[23,418,419],{},"Manually setting up n8n requires a few technical steps. Here is a complete example that anyone can replicate. With automatic SSL certificates through Caddy.",[43,421,423],{"id":422},"step-1-prepare-server","Step 1: Prepare Server",[23,425,426],{},"After logging into the Hetzner server, first create the necessary directories:",[155,428,432],{"className":429,"code":430,"language":431,"meta":160,"style":160},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","mkdir -p ~\u002Fn8n-setup\ncd ~\u002Fn8n-setup\n\n","bash",[150,433,434,446],{"__ignoreMap":160},[164,435,436,440,443],{"class":166,"line":167},[164,437,439],{"class":438},"sBMFI","mkdir",[164,441,442],{"class":181}," -p",[164,444,445],{"class":181}," ~\u002Fn8n-setup\n",[164,447,448,452],{"class":166,"line":188},[164,449,451],{"class":450},"s2Zo4","cd",[164,453,445],{"class":181},[43,455,457],{"id":456},"step-2-create-docker-compose-file","Step 2: Create Docker Compose File",[23,459,460,461,463],{},"A complete ",[150,462,152],{}," with n8n and Caddy as Reverse Proxy:",[155,465,467],{"className":157,"code":466,"language":159,"meta":160,"style":160},"version: '3.8'\n\nservices:\n  caddy:\n    image: caddy:2-alpine\n    container_name: caddy\n    restart: always\n    ports:\n      - '80:80'\n      - '443:443'\n    volumes:\n      - .\u002FCaddyfile:\u002Fetc\u002Fcaddy\u002FCaddyfile\n      - caddy_data:\u002Fdata\n      - caddy_config:\u002Fconfig\n    networks:\n      - n8n-network\n\n  n8n:\n    image: n8nio\u002Fn8n\n    container_name: n8n\n    restart: always\n    environment:\n      - N8N_HOST=automation.your-domain.de\n      - N8N_PORT=5678\n      - N8N_PROTOCOL=https\n      - NODE_ENV=production\n      - WEBHOOK_URL=https:\u002F\u002Fautomation.your-domain.de\u002F\n      - GENERIC_TIMEZONE=Europe\u002FBerlin\n    volumes:\n      - n8n_data:\u002Fhome\u002Fnode\u002F.n8n\n    networks:\n      - n8n-network\n\nvolumes:\n  n8n_data:\n  caddy_data:\n  caddy_config:\n\nnetworks:\n  n8n-network:\n    driver: bridge\n",[150,468,469,481,485,491,498,507,516,524,530,541,552,558,565,572,579,586,593,597,603,612,621,630,637,645,652,659,667,675,683,690,697,704,711,716,723,730,738,746,751,759,767],{"__ignoreMap":160},[164,470,471,473,475,477,479],{"class":166,"line":167},[164,472,171],{"class":170},[164,474,175],{"class":174},[164,476,178],{"class":174},[164,478,182],{"class":181},[164,480,185],{"class":174},[164,482,483],{"class":166,"line":188},[164,484,319],{"emptyLinePlaceholder":318},[164,486,487,489],{"class":166,"line":197},[164,488,191],{"class":170},[164,490,194],{"class":174},[164,492,493,496],{"class":166,"line":205},[164,494,495],{"class":170},"  caddy",[164,497,194],{"class":174},[164,499,500,502,504],{"class":166,"line":216},[164,501,208],{"class":170},[164,503,175],{"class":174},[164,505,506],{"class":181}," caddy:2-alpine\n",[164,508,509,511,513],{"class":166,"line":227},[164,510,219],{"class":170},[164,512,175],{"class":174},[164,514,515],{"class":181}," caddy\n",[164,517,518,520,522],{"class":166,"line":238},[164,519,230],{"class":170},[164,521,175],{"class":174},[164,523,235],{"class":181},[164,525,526,528],{"class":166,"line":246},[164,527,241],{"class":170},[164,529,194],{"class":174},[164,531,532,534,536,539],{"class":166,"line":259},[164,533,249],{"class":174},[164,535,178],{"class":174},[164,537,538],{"class":181},"80:80",[164,540,185],{"class":174},[164,542,543,545,547,550],{"class":166,"line":267},[164,544,249],{"class":174},[164,546,178],{"class":174},[164,548,549],{"class":181},"443:443",[164,551,185],{"class":174},[164,553,554,556],{"class":166,"line":275},[164,555,302],{"class":170},[164,557,194],{"class":174},[164,559,560,562],{"class":166,"line":283},[164,561,249],{"class":174},[164,563,564],{"class":181}," .\u002FCaddyfile:\u002Fetc\u002Fcaddy\u002FCaddyfile\n",[164,566,567,569],{"class":166,"line":291},[164,568,249],{"class":174},[164,570,571],{"class":181}," caddy_data:\u002Fdata\n",[164,573,574,576],{"class":166,"line":299},[164,575,249],{"class":174},[164,577,578],{"class":181}," caddy_config:\u002Fconfig\n",[164,580,581,584],{"class":166,"line":307},[164,582,583],{"class":170},"    networks",[164,585,194],{"class":174},[164,587,588,590],{"class":166,"line":315},[164,589,249],{"class":174},[164,591,592],{"class":181}," n8n-network\n",[164,594,595],{"class":166,"line":322},[164,596,319],{"emptyLinePlaceholder":318},[164,598,599,601],{"class":166,"line":330},[164,600,200],{"class":170},[164,602,194],{"class":174},[164,604,606,608,610],{"class":166,"line":605},19,[164,607,208],{"class":170},[164,609,175],{"class":174},[164,611,213],{"class":181},[164,613,615,617,619],{"class":166,"line":614},20,[164,616,219],{"class":170},[164,618,175],{"class":174},[164,620,224],{"class":181},[164,622,624,626,628],{"class":166,"line":623},21,[164,625,230],{"class":170},[164,627,175],{"class":174},[164,629,235],{"class":181},[164,631,633,635],{"class":166,"line":632},22,[164,634,262],{"class":170},[164,636,194],{"class":174},[164,638,640,642],{"class":166,"line":639},23,[164,641,249],{"class":174},[164,643,644],{"class":181}," N8N_HOST=automation.your-domain.de\n",[164,646,648,650],{"class":166,"line":647},24,[164,649,249],{"class":174},[164,651,280],{"class":181},[164,653,655,657],{"class":166,"line":654},25,[164,656,249],{"class":174},[164,658,288],{"class":181},[164,660,662,664],{"class":166,"line":661},26,[164,663,249],{"class":174},[164,665,666],{"class":181}," NODE_ENV=production\n",[164,668,670,672],{"class":166,"line":669},27,[164,671,249],{"class":174},[164,673,674],{"class":181}," WEBHOOK_URL=https:\u002F\u002Fautomation.your-domain.de\u002F\n",[164,676,678,680],{"class":166,"line":677},28,[164,679,249],{"class":174},[164,681,682],{"class":181}," GENERIC_TIMEZONE=Europe\u002FBerlin\n",[164,684,686,688],{"class":166,"line":685},29,[164,687,302],{"class":170},[164,689,194],{"class":174},[164,691,693,695],{"class":166,"line":692},30,[164,694,249],{"class":174},[164,696,312],{"class":181},[164,698,700,702],{"class":166,"line":699},31,[164,701,583],{"class":170},[164,703,194],{"class":174},[164,705,707,709],{"class":166,"line":706},32,[164,708,249],{"class":174},[164,710,592],{"class":181},[164,712,714],{"class":166,"line":713},33,[164,715,319],{"emptyLinePlaceholder":318},[164,717,719,721],{"class":166,"line":718},34,[164,720,325],{"class":170},[164,722,194],{"class":174},[164,724,726,728],{"class":166,"line":725},35,[164,727,333],{"class":170},[164,729,194],{"class":174},[164,731,733,736],{"class":166,"line":732},36,[164,734,735],{"class":170},"  caddy_data",[164,737,194],{"class":174},[164,739,741,744],{"class":166,"line":740},37,[164,742,743],{"class":170},"  caddy_config",[164,745,194],{"class":174},[164,747,749],{"class":166,"line":748},38,[164,750,319],{"emptyLinePlaceholder":318},[164,752,754,757],{"class":166,"line":753},39,[164,755,756],{"class":170},"networks",[164,758,194],{"class":174},[164,760,762,765],{"class":166,"line":761},40,[164,763,764],{"class":170},"  n8n-network",[164,766,194],{"class":174},[164,768,770,773,775],{"class":166,"line":769},41,[164,771,772],{"class":170},"    driver",[164,774,175],{"class":174},[164,776,777],{"class":181}," bridge\n",[43,779,781],{"id":780},"step-3-create-caddyfile","Step 3: Create Caddyfile",[23,783,784,785,175],{},"In the same directory, create a file named ",[150,786,787],{},"Caddyfile",[155,789,794],{"className":790,"code":792,"language":793},[791],"language-text","automation.your-domain.de {\n    reverse_proxy n8n:5678\n}\n\n","text",[150,795,792],{"__ignoreMap":160},[23,797,798],{},"Caddy automatically takes care of SSL certificates from Let's Encrypt. No manual configuration is necessary.",[43,800,802],{"id":801},"step-4-start-and-test","Step 4: Start and Test",[23,804,805],{},"Start the entire setup with a simple command:",[155,807,809],{"className":429,"code":808,"language":431,"meta":160,"style":160},"docker-compose up -d\n\n",[150,810,811],{"__ignoreMap":160},[164,812,813,816,819],{"class":166,"line":167},[164,814,815],{"class":438},"docker-compose",[164,817,818],{"class":181}," up",[164,820,821],{"class":181}," -d\n",[23,823,824,825,828],{},"After about 30 seconds, n8n is accessible at ",[150,826,827],{},"https:\u002F\u002Fautomation.your-domain.de",". An admin account is created upon the first visit.",[43,830,832],{"id":831},"important-notes-for-production-operation","Important Notes for Production Operation",[23,834,835,838],{},[30,836,837],{},"DNS Configuration",": The domain must point to the server's IP address. An A-record with the server IP value is sufficient.",[23,840,841,844],{},[30,842,843],{},"Firewall",": Ports 80 and 443 must be open. In Hetzner Cloud, this can be done via the firewall settings.",[23,846,847,850],{},[30,848,849],{},"Backups",": Regular backups of the n8n_data volume secure all workflows:",[155,852,854],{"className":429,"code":853,"language":431,"meta":160,"style":160},"docker run --rm -v n8n-setup_n8n_data:\u002Fdata -v $(pwd):\u002Fbackup alpine tar czf \u002Fbackup\u002Fn8n-backup-$(date +%Y%m%d).tar.gz \u002Fdata\n\n",[150,855,856],{"__ignoreMap":160},[164,857,858,861,864,867,870,873,875,878,881,884,887,890,893,896,899,902,905,908,910,913],{"class":166,"line":167},[164,859,860],{"class":438},"docker",[164,862,863],{"class":181}," run",[164,865,866],{"class":181}," --rm",[164,868,869],{"class":181}," -v",[164,871,872],{"class":181}," n8n-setup_n8n_data:\u002Fdata",[164,874,869],{"class":181},[164,876,877],{"class":174}," $(",[164,879,880],{"class":450},"pwd",[164,882,883],{"class":174},")",[164,885,886],{"class":181},":\u002Fbackup",[164,888,889],{"class":181}," alpine",[164,891,892],{"class":181}," tar",[164,894,895],{"class":181}," czf",[164,897,898],{"class":181}," \u002Fbackup\u002Fn8n-backup-",[164,900,901],{"class":174},"$(",[164,903,904],{"class":438},"date",[164,906,907],{"class":181}," +%Y%m%d",[164,909,883],{"class":174},[164,911,912],{"class":181},".tar.gz",[164,914,915],{"class":181}," \u002Fdata\n",[23,917,918,921],{},[30,919,920],{},"Updates",": n8n can be updated with just a few commands:",[155,923,925],{"className":429,"code":924,"language":431,"meta":160,"style":160},"docker-compose pull\ndocker-compose up -d\n\n",[150,926,927,934],{"__ignoreMap":160},[164,928,929,931],{"class":166,"line":167},[164,930,815],{"class":438},[164,932,933],{"class":181}," pull\n",[164,935,936,938,940],{"class":166,"line":188},[164,937,815],{"class":438},[164,939,818],{"class":181},[164,941,821],{"class":181},[35,943,945],{"id":944},"conclusion-workflow-automation-without-compromises","Conclusion: Workflow Automation without Compromises",[23,947,948],{},"Installing n8n on your own server offers maximum flexibility and data control. With over 400 integrations, practically any service can be integrated into automations. The difference to cloud solutions: You don't pay per workflow execution, but only for the server resources.",[23,950,951],{},"Combined with the reliability of Hetzner servers and the simplicity of the LowCloud template, nothing stands in the way of your automation strategy.",[23,953,954,957],{},[30,955,956],{},"Ready for your first automation?"," Start now with the n8n template in LowCloud and experience how easy professional workflow automation can be.",[959,960],"hr",{},[23,962,963],{},[964,965,966,967,973],"em",{},"Further information on n8n can be found in the ",[115,968,972],{"href":969,"rel":970},"https:\u002F\u002Fdocs.n8n.io\u002F",[971],"nofollow","official documentation",". If you have questions about deployment or DevOps-as-a-Service solutions, the lowcloud team is happy to help.",[975,976,977],"style",{},"html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":160,"searchDepth":188,"depth":188,"links":979},[980,983,984,988,991,998],{"id":37,"depth":188,"text":38,"children":981},[982],{"id":45,"depth":197,"text":46},{"id":78,"depth":188,"text":79},{"id":109,"depth":188,"text":110,"children":985},[986,987],{"id":122,"depth":197,"text":123},{"id":139,"depth":197,"text":140},{"id":351,"depth":188,"text":352,"children":989},[990],{"id":358,"depth":197,"text":359},{"id":415,"depth":188,"text":416,"children":992},[993,994,995,996,997],{"id":422,"depth":197,"text":423},{"id":456,"depth":197,"text":457},{"id":780,"depth":197,"text":781},{"id":801,"depth":197,"text":802},{"id":831,"depth":197,"text":832},{"id":944,"depth":188,"text":945},"2025-12-09","Step-by-step: deploy n8n with Docker on a Hetzner VPS. Covers reverse proxy, SSL, backups, and data sovereignty — no managed cloud needed.","md",{"src":1003},"\u002Fimages\u002Fblog\u002Fn8n_workflow_blog_title.jpeg","2026-04-01",{},"\u002Fen\u002Fblog\u002Fself-hosted-n8n-on-hetzner",{"title":6,"description":1000},"en\u002F3.blog\u002F3.self-hosted-n8n-on-hetzner","Hetzner, n8n, Docker","yuWRSvYkz2cRYmy5mdO4wLy-FawhrlhEq4L9pbt3RUM",[1012,1017],{"title":1013,"path":1014,"stem":1015,"description":1016,"children":-1},"Data Residency vs. Data Sovereignty: What Really Matters","\u002Fen\u002Fblog\u002Fdata-residency-vs-data-sovereignty","en\u002F3.blog\u002F29.data-residency-vs-data-sovereignty","Data residency isn",{"title":1018,"path":1019,"stem":1020,"description":1021,"children":-1},"Manual Deployments: An Underestimated Risk for SMBs","\u002Fen\u002Fblog\u002Fmanual-deployment-risks","en\u002F3.blog\u002F30.manual-deployment-risks","Why manual software deployments cause outages, security gaps, and technical debt in mid-sized companies – and how CI\u002FCD automation solves it.",1776469309277]