{"id":82128,"date":"2026-06-18T08:00:00","date_gmt":"2026-06-18T15:00:00","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=82128"},"modified":"2026-08-25T12:18:09","modified_gmt":"2026-08-25T19:18:09","slug":"como-ejecutar-n8n-en-tu-propio-servidor-es","status":"publish","type":"post","link":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/","title":{"rendered":"n8n autoalojado: c\u00f3mo ejecutar n8n en tu propio servidor"},"content":{"rendered":"<div class=\"tldr-block\" style=\"display: none;\">\n\t<div class=\"svg\">\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 119.25 37.8\">\n\t<g>\n\t\t<g>\n\t\t\t<path fill=\"#ffffff\" d=\"M23.4,6.93h-8.1v24.57h-7.2V6.93H0V0h23.4v6.93Z\" \/>\n\t\t\t<path fill=\"#ffffff\" d=\"M45,24.57v6.93h-18.45V0h7.2v24.57h11.25Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M90.9,15.75c0,8.91-6.61,15.75-15.3,15.75h-12.6V0h12.6c8.68,0,15.3,6.84,15.3,15.75ZM83.97,15.75c0-5.4-3.42-8.82-8.37-8.82h-5.4v17.64h5.4c4.95,0,8.37-3.42,8.37-8.82Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M105.57,21.15h-3.42v10.35h-7.2V0h12.6c5.98,0,10.8,4.81,10.8,10.8,0,3.87-2.34,7.38-5.81,9.13l6.71,11.56h-7.74l-5.94-10.35ZM102.15,14.85h5.4c1.98,0,3.6-1.75,3.6-4.05s-1.62-4.05-3.6-4.05h-5.4v8.1Z\" \/>\n\t\t<\/g>\n\t\t<path\n\t\t\tfill=\"#0173ec\"\n\t\t\td=\"M53.97,37.8h-5.4l1.8-13.27h7.2l-3.6,13.27ZM49.02,12.55c0-2.34,1.93-4.27,4.27-4.27s4.27,1.94,4.27,4.27-1.93,4.27-4.27,4.27-4.27-1.94-4.27-4.27Z\"\n\t\t \/>\n\t<\/g>\n<\/svg>\n\t<\/div>\n\t<div class=\"tldr-wrap\">\n\t\t\n\n<p class=\"wp-block-paragraph\">n8n autoalojado es la Community edition gratuita de la plataforma de automatizaci\u00f3n n8n, ejecutada en un servidor que t\u00fa controlas: no le pagas a n8n licencias ni ejecuciones para los usos permitidos, aunque el servidor, el dominio, el almacenamiento para respaldos y la administraci\u00f3n siguen corriendo por tu cuenta. El plan Starter de n8n Cloud incluye 2,500 ejecuciones de flujos de trabajo al mes (\u20ac20 mensuales con facturaci\u00f3n anual); la Community edition autoalojada no tiene ning\u00fan tope de ejecuciones.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Necesitas un VPS con acceso root (4 GB de RAM es un punto de partida prudente), Docker Compose, PostgreSQL y la disposici\u00f3n de encargarte de las actualizaciones y los respaldos. Esta gu\u00eda recorre el despliegue completo en 11 pasos. \u00bfPrefieres salt\u00e1rtelo? El VPS Hosting de DreamHost incluye n8n en su biblioteca de aplicaciones de un clic, preinstalado con PostgreSQL y SSL autom\u00e1tico.<\/p>\n\n\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Llevas seis meses viendo c\u00f3mo sube tu factura de Zapier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cada flujo de trabajo nuevo agrega una l\u00ednea al recibo, y cada paso de acci\u00f3n completado con \u00e9xito cuenta como una tarea. La factura mensual ya cuesta m\u00e1s que tu herramienta de gesti\u00f3n de proyectos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Empiezas a buscar alternativas en Google y das con <strong>n8n<\/strong>, una plataforma de automatizaci\u00f3n que puedes autoalojar en tu propio servidor privado virtual (VPS) por lo que cuesta un servidor peque\u00f1o.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sin topes de ejecuciones. Sin cobros por tarea. Sin facturas sorpresa cuando tus automatizaciones despegan.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y s\u00ed, aqu\u00ed te acompa\u00f1amos en todo el proceso, comando por comando: de un servidor Ubuntu reci\u00e9n entregado a una instancia funcionando con HTTPS, respaldos y una restauraci\u00f3n ya probada.<\/p>\n\n\n\n<h2 id=\"h-what-is-n8n-and-why-are-people-self-hosting-it\" class=\"wp-block-heading\">\u00bfQu\u00e9 es n8n y por qu\u00e9 tanta gente lo autoaloja?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">n8n es una plataforma de automatizaci\u00f3n de flujos de trabajo: te permite conectar aplicaciones, mover datos entre servicios y construir automatizaciones complejas desde un editor visual. Piensa en n8n como el motor detr\u00e1s de &#8220;cuando pase X, haz Y y Z&#8221;, solo que en lugar de escribir c\u00f3digo, arrastras nodos y trazas conexiones.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1310\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow.webp\" alt=\"Diagrama de flujo mostrando la presentaci\u00f3n de un formulario de usuario\" class=\"wp-image-81963 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow-300x246.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow-1024x838.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow-768x629.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow-1536x1258.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow-600x491.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow-1200x983.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow-730x598.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow-1460x1195.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow-784x642.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow-1568x1284.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/01_an_n8n_workflow-877x718.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1310;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">El proyecto ya super\u00f3 las <a target=\"_blank\" href=\"https:\/\/github.com\/n8n-io\/n8n\">200,000 estrellas en GitHub<\/a> (en ingl\u00e9s), y su imagen oficial de Docker registra m\u00e1s de <a target=\"_blank\" href=\"https:\/\/hub.docker.com\/r\/n8nio\/n8n\">100 millones de descargas<\/a> (en ingl\u00e9s). Hay much\u00edsimos servidores ejecutando n8n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La plataforma se distribuye bajo la <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/privacy-and-security\/sustainable-use-license\">Sustainable Use License<\/a> (licencia de uso sostenible, en ingl\u00e9s), y conviene entenderla antes de comprometerte. No es c\u00f3digo abierto tradicional (la propia n8n dice que no usa ese t\u00e9rmino, porque las licencias aprobadas por la OSI no pueden restringir el uso), pero tampoco es un candado. Puedes ejecutarla libremente para los fines internos de tu negocio; lo que no puedes hacer es vender un producto, servicio o m\u00f3dulo cuyo valor derive total o sustancialmente de la funcionalidad de n8n.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">&#8220;En la pr\u00e1ctica, esto significa que todo uso est\u00e1 permitido, salvo que vendas un producto, servicio o m\u00f3dulo cuyo valor derive total o sustancialmente de la funcionalidad de n8n&#8221;, seg\u00fan las <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/privacy-and-security\/sustainable-use-license\">preguntas frecuentes de la licencia de n8n<\/a> (en ingl\u00e9s).<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">La gente autoaloja n8n porque las cuentas cambian en cuanto superas el uso b\u00e1sico. <a target=\"_blank\" href=\"https:\/\/n8n.io\/pricing\/\">n8n Cloud<\/a> (en ingl\u00e9s) parte de \u20ac20 al mes (con facturaci\u00f3n anual) por 2,500 ejecuciones en el plan Starter, y si manejas un volumen real, ese l\u00edmite aparece r\u00e1pido. Si el concepto te suena nuevo, tenemos una gu\u00eda sobre <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/self-hosting\/\">qu\u00e9 es el autoalojamiento<\/a> (en ingl\u00e9s).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfY en tu propio VPS? Sin tope de ejecuciones, con control sobre los datos que tu instancia de n8n almacena y sin factura de licencias ni de ejecuciones de n8n, aunque el servidor, el dominio, el almacenamiento para respaldos y la administraci\u00f3n siguen teniendo su costo. Las ejecuciones en s\u00ed no cuestan nada extra; eso s\u00ed, un volumen mayor consume m\u00e1s memoria y almacenamiento, pero esa es una cuesti\u00f3n de dimensionamiento (la vemos m\u00e1s abajo), no de facturaci\u00f3n.<\/p>\n\n\n\n<h3 id=\"h-what-can-you-automate-with-n8n\" class=\"wp-block-heading\">\u00bfQu\u00e9 puedes automatizar con n8n?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Las m\u00e1s de 400 integraciones de n8n cubren un rango muy amplio, y los nodos creados por la comunidad extienden la lista todav\u00eda m\u00e1s. n8n es, adem\u00e1s, una de tantas alternativas autoalojadas a las herramientas SaaS; la misma l\u00f3gica aplica a todo, desde el CRM hasta la gesti\u00f3n de proyectos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algunas configuraciones comunes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>CRM y distribuci\u00f3n de leads.<\/strong> Sincroniza contactos entre tu CRM, tu plataforma de correo y Slack cuando lleguen prospectos nuevos.<\/li>\n\n\n\n<li><strong>Flujos activados por webhooks.<\/strong> Responde en tiempo real a eventos de procesadores de pago, env\u00edos de formularios o commits de GitHub.<\/li>\n\n\n\n<li><strong>Automatizaci\u00f3n de pipelines de datos.<\/strong> Extrae datos mediante distintas API, transf\u00f3rmalos y env\u00edalos a bases de datos u hojas de c\u00e1lculo seg\u00fan un calendario.<\/li>\n\n\n\n<li><strong>Cadenas de agentes de IA.<\/strong> Conecta modelos de lenguaje de gran tama\u00f1o (LLM, por sus siglas en ingl\u00e9s) con tus herramientas internas para crear asistentes de IA a la medida que buscan, resumen y act\u00faan sobre tus datos.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">(En esa \u00faltima configuraci\u00f3n empiezan a importar los recursos de tu servidor; hablamos de eso en la secci\u00f3n de especificaciones.)<\/p>\n\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n<h2 id=\"h-how-much-does-self-hosting-n8n-cost\" class=\"wp-block-heading\">\u00bfCu\u00e1nto cuesta autoalojar n8n?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La Community edition autoalojada no cobra licencias ni ejecuciones de n8n para los usos permitidos. Tu costo total incluye el servidor, m\u00e1s el dominio, el almacenamiento para respaldos y el tiempo de administraci\u00f3n que apliquen. El <a target=\"_blank\" href=\"https:\/\/expresstech.io\/the-real-cost-of-self-hosting-n8n-in-2026\/\">desglose de costos 2026 de ExpressTech<\/a> (en ingl\u00e9s) calcula <strong>$4\u20135 USD al mes<\/strong> para un VPS b\u00e1sico con Docker, $5\u20138 para un VPS administrado con Coolify, y $3\u20137 para las plataformas que instalan n8n con un clic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esas son las estimaciones de ExpressTech para hosting de terceros. Un dato de primera mano: el plan que recomendamos m\u00e1s abajo, DreamHost VPS Hosting Stack 4, cuesta $8.99 USD al mes durante los primeros 3 meses con facturaci\u00f3n mensual y se renueva autom\u00e1ticamente a $15.99 USD al mes despu\u00e9s, a agosto de 2026, y el periodo completo, m\u00e1s impuestos, se cobra al finalizar la compra (los precios vigentes est\u00e1n en la <a href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/n8n\/\">p\u00e1gina de VPS con n8n<\/a>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Comp\u00e1ralo con los planes alojados y con licencia de n8n, tal como aparecen en la <a target=\"_blank\" href=\"https:\/\/n8n.io\/pricing\/\">p\u00e1gina de precios de n8n<\/a>. n8n publica sus precios en euros; estas son las tarifas con facturaci\u00f3n anual:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Plan<\/strong><\/td><td><strong>Costo mensual<\/strong><\/td><td><strong>L\u00edmite de ejecuciones<\/strong><\/td><\/tr><tr><td>n8n Cloud Starter<\/td><td>\u20ac20\/mes<\/td><td>2,500 ejecuciones<\/td><\/tr><tr><td>n8n Cloud Pro<\/td><td>\u20ac50\/mes<\/td><td>10,000 ejecuciones<\/td><\/tr><tr><td>n8n Business (licencia autoalojada)<\/td><td>\u20ac667\/mes<\/td><td>40,000 ejecuciones<\/td><\/tr><tr><td>Community edition autoalojada en un VPS<\/td><td>Sin licencias ni cobros por ejecuci\u00f3n de n8n para los usos permitidos; el VPS, el dominio, el almacenamiento para respaldos y la administraci\u00f3n pueden sumar costos<\/td><td>Sin tope<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La brecha se ampl\u00eda cuando consideras c\u00f3mo mide el uso cada plataforma. n8n cobra una ejecuci\u00f3n por cada corrida de un flujo de trabajo, &#8220;sin importar la complejidad&#8221;, y todos los planes incluyen pasos ilimitados. Zapier, en cambio, <a target=\"_blank\" href=\"https:\/\/help.zapier.com\/hc\/en-us\/articles\/8496196837261-How-is-task-usage-measured-in-Zapier\">cuenta cada paso de acci\u00f3n exitoso como una tarea<\/a> (en ingl\u00e9s).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed, un flujo con cuatro pasos de acci\u00f3n que se ejecuta 100 veces al d\u00eda suma 3,000 ejecuciones de n8n al mes, pero alrededor de 12,000 tareas de Zapier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los n\u00fameros lo respaldan. El <a target=\"_blank\" href=\"https:\/\/expresstech.io\/the-real-cost-of-self-hosting-n8n-in-2026\/\">an\u00e1lisis de ExpressTech<\/a> desarrolla un ejemplo con cuatro flujos de trabajo que suman unas 7,000 ejecuciones al mes: esa carga rebasa el plan Starter de n8n Cloud y exige el nivel Pro (que ah\u00ed aparece a $60 USD mensuales con facturaci\u00f3n mensual), mientras que una instalaci\u00f3n autoalojada de $3\u20137 USD al mes la ejecuta sin l\u00edmites. La diferencia que calculan: <strong>entre $636 y $684 USD al a\u00f1o<\/strong>.<\/p>\n\n\n\n<h3 id=\"h-the-hidden-costs-of-self-hosting\" class=\"wp-block-heading\">Los costos ocultos del autoalojamiento<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El ahorro en dinero es real. Pero autoalojar no es gratis en todos los sentidos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto es lo que te cuesta:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tu tiempo. <\/strong>El tiempo de mantenimiento var\u00eda seg\u00fan tu carga de trabajo y tu experiencia operando servidores, pero las actualizaciones, los respaldos, el monitoreo y las pruebas de restauraci\u00f3n corren por tu cuenta. Las instalaciones m\u00e1s pesadas, con automatizaciones de IA, exigen m\u00e1s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>La fricci\u00f3n de configurar OAuth.<\/strong> Conectar servicios como Google Workspace o Microsoft 365 requiere configurar credenciales OAuth: reserva tiempo adicional para cada proveedor y sigue la documentaci\u00f3n de su consola. (Si alguna vez has visto girar la ruedita de carga mientras una pantalla de consentimiento decide si conf\u00eda en tu aplicaci\u00f3n, sabes de qu\u00e9 hablamos.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>La renovaci\u00f3n de TLS tambi\u00e9n necesita supervisi\u00f3n.<\/strong> El proxy Caddy de la configuraci\u00f3n de abajo obtiene y renueva autom\u00e1ticamente un certificado de confianza p\u00fablica, con un emisor como Let&#8217;s Encrypt o ZeroSSL. Autom\u00e1tico no es lo mismo que irrompible: despu\u00e9s de un cambio de DNS o de proxy, confirma que el certificado se siga renovando.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>La curva de aprendizaje si no tienes experiencia con servidores.<\/strong> La gu\u00eda de abajo asume que sabes entrar a un servidor por SSH, editar un archivo y ejecutar comandos. Si nunca lo has hecho, presupuesta tiempo de aprendizaje adem\u00e1s del despliegue en s\u00ed.<\/p>\n\n\n\n<h2 id=\"h-what-server-specs-does-n8n-need\" class=\"wp-block-heading\">\u00bfQu\u00e9 especificaciones de servidor necesita n8n?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">n8n, por s\u00ed solo, es ligero. Lo m\u00e1s cercano a un dimensionamiento oficial son las <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/deploy-as-an-oem-integration\/prerequisites\">cifras de ejemplo de la documentaci\u00f3n OEM de n8n<\/a> (en ingl\u00e9s), que n8n etiqueta como &#8220;solo con fines ilustrativos&#8221; y que se basan en n8n Cloud: un rango de memoria de 320 MB a 2 GB, una base de datos de 512 MB a 4 GB sobre SSD, y alrededor de 100 MB de memoria para una instancia inactiva. Como punto de partida prudente, no como un m\u00ednimo oficial de n8n, considera 2 GB para pruebas y 4 GB cuando sumes PostgreSQL y flujos de producci\u00f3n. Monitorea flujos representativos y agrega memoria cuando aparezca presi\u00f3n sostenida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Recuerda adem\u00e1s que n8n suele depender m\u00e1s de la memoria que de la CPU. La propia documentaci\u00f3n lo dice sin rodeos: la plataforma &#8220;no es intensiva en CPU&#8221; y, &#8220;por lo general, los requisitos de memoria superan a los de CPU&#8221;. Lo que dispara la memoria son tus flujos de trabajo: el volumen de datos, los nodos Code (que copian los datos antes y despu\u00e9s de procesarlos) y los archivos binarios grandes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nuestra regla r\u00e1pida para dimensionar con holgura:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dimensiona seg\u00fan la concurrencia de ejecuciones y el volumen de datos que procesa cada flujo, y luego observa el uso de memoria con una carga representativa. Los nodos Code y los archivos binarios pesados pueden elevar los requisitos de memoria, as\u00ed que deja margen y escala el VPS cuando el monitoreo muestre presi\u00f3n sostenida.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1652\" height=\"952\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a.webp\" alt=\"Gr\u00e1fico con puntos de partida prudentes de RAM para autoalojar n8n: 2 GB para pruebas y uso ligero, 4 GB para producci\u00f3n con PostgreSQL y 8 GB para m\u00e1s margen de memoria; no es un m\u00ednimo oficial de n8n.\" class=\"wp-image-88707 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a.webp 1652w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a-300x173.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a-1024x590.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a-768x443.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a-1536x885.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a-600x346.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a-1200x692.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a-730x421.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a-1460x841.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a-784x452.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a-1568x904.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-punto-partida-autoalojar-n8n-dreamops-ef8d0bf8d81c84ef6d6a722a-877x505.webp 877w\" data-sizes=\"(max-width: 1652px) 100vw, 1652px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1652px; --smush-placeholder-aspect-ratio: 1652\/952;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfPrimera vez con un VPS? Empieza con la <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/beginners-guide-vps\/\">gu\u00eda de VPS para principiantes<\/a> de DreamHost (en ingl\u00e9s) para dominar lo b\u00e1sico antes de dimensionar tu servidor.<\/p>\n\n\n\n<h2 id=\"h-which-vps-should-you-choose-for-self-hosted-n8n\" class=\"wp-block-heading\">\u00bfQu\u00e9 VPS te conviene para autoalojar n8n?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">n8n no publica niveles fijos de RAM por tipo de carga. Dimensiona seg\u00fan la concurrencia de ejecuciones y el volumen de datos, deja margen para Docker y PostgreSQL, y luego monitorea flujos representativos y escala cuando la presi\u00f3n de memoria sea sostenida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con esa l\u00f3gica, as\u00ed traducimos esos criterios a los planes de DreamHost:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Plan<\/strong><\/td><td><strong>Especificaciones<\/strong><\/td><td><strong>Cu\u00e1ndo elegirlo<\/strong><\/td><\/tr><tr><td>DreamHost VPS Hosting Stack 4<\/td><td>4 GB de RAM, 2 vCPU, 75 GB NVMe SSD<\/td><td>Un punto de partida prudente de 4 GB para un primer servidor de n8n, aunque no est\u00e1 respaldado por pruebas propias.<\/td><\/tr><tr><td>DreamHost VPS Hosting Stack 8<\/td><td>8 GB de RAM, 2 vCPU, 150 GB NVMe SSD<\/td><td>La opci\u00f3n de 8 GB para m\u00e1s margen de memoria cuando el monitoreo muestra presi\u00f3n sostenida, con el doble de RAM y de almacenamiento.<\/td><\/tr><tr><td>DreamHost VPS Hosting Stack 16<\/td><td>16 GB de RAM, 4 vCPU, 250 GB NVMe SSD<\/td><td>La opci\u00f3n de 16 GB para m\u00e1s concurrencia, vol\u00famenes de datos mayores o para sumar workers de Redis en modo de cola.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Un par de especificaciones que pesan m\u00e1s all\u00e1 de la RAM: n8n se\u00f1ala el almacenamiento SSD como una buena pr\u00e1ctica para la base de datos. La memoria suele importar m\u00e1s que la CPU, pero el cuello de botella real depende de la concurrencia de tus flujos, el volumen de datos y los nodos que uses. Y el ancho de banda sin medici\u00f3n importa si ejecutas cargas intensivas en webhooks, con un flujo constante de solicitudes HTTP entrantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Elige un entorno de hosting que te permita ejecutar Docker y configurar la base de datos, la red, el almacenamiento persistente y el proxy inverso. El <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/es\/hosting-compartido-vs-vps\/\">hosting compartido<\/a> convencional normalmente no ofrece ese nivel de control.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Los planes de <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/\">VPS Hosting<\/a> de DreamHost cumplen con todo lo esencial (almacenamiento NVMe SSD, ancho de banda sin medici\u00f3n, acceso root completo y soporte para Docker), y <a href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/n8n\/\">n8n est\u00e1 en la biblioteca de aplicaciones de un clic<\/a>, preinstalado con PostgreSQL y SSL autom\u00e1tico, por si prefieres saltarte la instalaci\u00f3n manual que viene a continuaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nuestra elecci\u00f3n para un primer servidor de n8n es Stack 4. A agosto de 2026, cuesta $8.99 USD al mes durante los primeros 3 meses con facturaci\u00f3n mensual y se renueva autom\u00e1ticamente a $15.99 USD al mes, y el periodo completo, m\u00e1s impuestos, se cobra al finalizar la compra; la <a href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/n8n\/\">p\u00e1gina de VPS con n8n<\/a> siempre muestra las tarifas vigentes. Ese precio de renovaci\u00f3n es el n\u00famero honesto para comparar contra los \u20ac20 al mes del Starter de n8n Cloud.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ah, y un dato que conviene guardar para m\u00e1s adelante: <strong>cuando tu uso crezca, n8n soporta el modo de cola (queue mode)<\/strong>, una arquitectura de escalado que separa la instancia principal (interfaz, disparadores, webhooks) de la ejecuci\u00f3n de los flujos, usando Redis como intermediario de mensajes e instancias worker que procesan los trabajos. La <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/configure-n8n\/scaling\/enable-queue-mode\">documentaci\u00f3n de n8n<\/a> (en ingl\u00e9s) lo describe como el modo que &#8220;ofrece la mejor escalabilidad&#8221;.<\/p>\n\n\n\n<h2 id=\"h-how-do-you-set-up-n8n-on-a-vps\" class=\"wp-block-heading\">\u00bfC\u00f3mo se instala n8n en un VPS?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Desplegar una instancia autoalojada de n8n toma 11 pasos: DNS, refuerzo de SSH, firewall, <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/es\/que-es-docker\/\">Docker<\/a>, secretos, un archivo de Compose para el conjunto de tres contenedores (n8n, PostgreSQL y Caddy), el Caddyfile, arranque y verificaci\u00f3n, actualizaciones, respaldos y una prueba de restauraci\u00f3n. Caddy es nuestro proxy inverso: el servidor que se coloca entre internet y tu aplicaci\u00f3n para encargarse del TLS y del enrutamiento. Incluimos los comandos del despliegue central y de una prueba manual de respaldo y restauraci\u00f3n.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1536\" height=\"1024\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/diagrama-arquitectura-n8n-autoalojado-proxy-inverso-dreamops-886ae25e61ba7f687c03b325.webp\" alt=\"Diagrama de arquitectura mostrando la configuraci\u00f3n de autoalojamiento de n8n\" class=\"wp-image-87114 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/diagrama-arquitectura-n8n-autoalojado-proxy-inverso-dreamops-886ae25e61ba7f687c03b325.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/diagrama-arquitectura-n8n-autoalojado-proxy-inverso-dreamops-886ae25e61ba7f687c03b325-300x200.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/diagrama-arquitectura-n8n-autoalojado-proxy-inverso-dreamops-886ae25e61ba7f687c03b325-1024x683.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/diagrama-arquitectura-n8n-autoalojado-proxy-inverso-dreamops-886ae25e61ba7f687c03b325-768x512.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/diagrama-arquitectura-n8n-autoalojado-proxy-inverso-dreamops-886ae25e61ba7f687c03b325-600x400.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/diagrama-arquitectura-n8n-autoalojado-proxy-inverso-dreamops-886ae25e61ba7f687c03b325-1200x800.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/diagrama-arquitectura-n8n-autoalojado-proxy-inverso-dreamops-886ae25e61ba7f687c03b325-730x487.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/diagrama-arquitectura-n8n-autoalojado-proxy-inverso-dreamops-886ae25e61ba7f687c03b325-1460x973.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/diagrama-arquitectura-n8n-autoalojado-proxy-inverso-dreamops-886ae25e61ba7f687c03b325-784x523.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/diagrama-arquitectura-n8n-autoalojado-proxy-inverso-dreamops-886ae25e61ba7f687c03b325-877x585.webp 877w\" data-sizes=\"(max-width: 1536px) 100vw, 1536px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1536px; --smush-placeholder-aspect-ratio: 1536\/1024;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Los comandos est\u00e1n pensados para Ubuntu 22.04 o m\u00e1s reciente; sustituye el dominio de ejemplo, los valores secretos, el nombre del volumen y los nombres de respaldo con fecha donde se te indique. La <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/install-options\/use-a-cloud-provider\/use-docker-compose\">documentaci\u00f3n de Docker Compose de n8n<\/a> (en ingl\u00e9s) cubre el mismo terreno con un proxy Traefik, por si prefieres seguir la plantilla de la propia n8n.<\/p>\n\n\n\n<h3 id=\"h-what-you-will-need-before-you-start\" class=\"wp-block-heading\">Lo que necesitas antes de empezar<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Un VPS con acceso root<\/strong> que ejecute Ubuntu 22.04 o m\u00e1s reciente, con al menos 2 GB de RAM (4 GB es nuestra recomendaci\u00f3n prudente para producci\u00f3n)<\/li>\n\n\n\n<li><strong>Un nombre de dominio<\/strong> que puedas apuntar a la direcci\u00f3n IP de tu servidor (para el TLS y para acceder al editor de n8n)<\/li>\n\n\n\n<li><strong>Soltura b\u00e1sica en la terminal<\/strong>: saber entrar a un servidor por SSH, editar un archivo y ejecutar comandos<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Un requisito m\u00e1s que no aparece en ninguna lista oficial: <strong>respalda tu <code>N8N_ENCRYPTION_KEY<\/code> en cuanto la generes.<\/strong> Por eso el paso 5 te pide crear la clave con <code>openssl rand -hex 32<\/code> antes del primer arranque, en lugar de dejar que n8n genere una en silencio. Esta clave cifra todas tus credenciales almacenadas, incluida cada clave de API, cada token de OAuth y cada contrase\u00f1a de base de datos que hayas conectado. La propia <a target=\"_blank\" href=\"https:\/\/hub.docker.com\/r\/n8nio\/n8n\">documentaci\u00f3n de Docker de n8n<\/a> advierte que, si la clave no aparece al arrancar, n8n crea una nueva y las credenciales existentes ya no se pueden descifrar. Es decir: a reconstruir cada integraci\u00f3n desde cero (mientras lamentas tus decisiones de vida). C\u00f3piala en un lugar seguro, separada de los respaldos de tu base de datos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si tu proveedor solo te entreg\u00f3 un acceso root, crea primero un usuario de despliegue, desde la consola del proveedor o desde una sesi\u00f3n SSH como root, antes de los comandos locales de SSH del paso 2:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>adduser deploy\nusermod -aG sudo deploy<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Todo lo que sigue se ejecuta con ese usuario, con <code>sudo<\/code> donde haga falta.<\/p>\n\n\n\n<h3 id=\"h-step-1-point-your-domain-at-the-server\" class=\"wp-block-heading\">Paso 1: apunta tu dominio al servidor<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Crea un registro DNS de tipo A para un subdominio dedicado (<code>n8n.example.com<\/code> a lo largo de esta gu\u00eda) que apunte a la direcci\u00f3n IP de tu servidor, tal como lo describe la <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/install-options\/use-a-cloud-provider\/use-docker-compose\">gu\u00eda de Docker Compose de n8n<\/a>. Hazlo primero: si el DNS no se ha propagado, Caddy no puede obtener el certificado y tu navegador puede mostrar un error de seguridad en lugar del editor de n8n.<\/p>\n\n\n\n<h3 id=\"h-step-2-harden-ssh-access\" class=\"wp-block-heading\">Paso 2: refuerza el acceso por SSH<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En tu m\u00e1quina <em>local<\/em>, genera un par de claves (la <a target=\"_blank\" href=\"https:\/\/ubuntu.com\/server\/docs\/how-to\/security\/openssh-server\/\">documentaci\u00f3n de OpenSSH de Ubuntu<\/a>, en ingl\u00e9s, recomienda ed25519) y c\u00f3pialo al servidor:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssh-keygen -t ed25519\nssh-copy-id deploy@your_server_ip<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Confirma que puedes iniciar sesi\u00f3n con la clave. Luego, en el servidor, desactiva el acceso con contrase\u00f1a y el acceso como root, y revisa qu\u00e9 va a aplicar sshd en realidad:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo tee \/etc\/ssh\/sshd_config.d\/00-hardening.conf &gt; \/dev\/null &lt;&lt;'EOF'\nPasswordAuthentication no\nPermitRootLogin no\nEOF\nsudo sshd -t\nsudo sshd -T | grep -E '^(passwordauthentication|permitrootlogin) '<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El prefijo <code>00-<\/code> es deliberado. OpenSSH usa el <em>primer<\/em> valor que lee para cada directiva, seg\u00fan el <a target=\"_blank\" href=\"https:\/\/man.openbsd.org\/sshd_config\">manual de sshd_config<\/a> (en ingl\u00e9s), y las im\u00e1genes de servidores en la nube suelen traer archivos previos en ese mismo directorio (cloud-init, por ejemplo, escribe su configuraci\u00f3n de SSH en <code>50-cloud-init.conf<\/code>). Si nombras tu archivo <code>99-hardening.conf<\/code>, cualquiera de esos fragmentos puede ganarle sin que lo notes. <code>sshd -t<\/code> revisa que la configuraci\u00f3n no tenga errores; <code>sshd -T<\/code> imprime la configuraci\u00f3n efectiva despu\u00e9s de combinar todos los archivos. Confirma que el \u00faltimo comando imprima <code>passwordauthentication no<\/code> y <code>permitrootlogin no<\/code> antes de seguir adelante. Despu\u00e9s reinicia sshd:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart ssh.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La documentaci\u00f3n de Ubuntu advierte que una configuraci\u00f3n de sshd defectuosa en un servidor remoto puede dejarte fuera. Mant\u00e9n abierta tu sesi\u00f3n actual y prueba un inicio de sesi\u00f3n nuevo en una segunda terminal antes de cerrar nada.<\/p>\n\n\n\n<h3 id=\"h-step-3-turn-on-the-firewall\" class=\"wp-block-heading\">Paso 3: activa el firewall<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ubuntu trae UFW (Uncomplicated Firewall) desactivado de f\u00e1brica. Permite el SSH <em>antes<\/em> de activarlo, para que el firewall no corte tu propia sesi\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 22\/tcp\nsudo ufw allow 80\/tcp\nsudo ufw allow 443\/tcp\nsudo ufw --force enable\nsudo ufw status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tres puertos y nada m\u00e1s. Una advertencia espec\u00edfica de Docker, tomada de su propia <a target=\"_blank\" href=\"https:\/\/docs.docker.com\/engine\/install\/ubuntu\/\">documentaci\u00f3n de instalaci\u00f3n<\/a> (en ingl\u00e9s): las reglas de UFW no se aplican a los puertos que Docker publica en el host. Por eso el archivo compose del paso 6 solo publica puertos del host para Caddy: los \u00fanicos puertos de contenedor que Compose publica son el 80 y el 443 (el 22 de SSH tambi\u00e9n est\u00e1 abierto), y ni n8n ni PostgreSQL publican puerto alguno en el host.<\/p>\n\n\n\n<h3 id=\"h-step-4-install-docker-and-docker-compose\" class=\"wp-block-heading\">Paso 4: instala Docker y Docker Compose<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Instala Docker Engine desde el repositorio apt oficial de Docker, no con el script de conveniencia de <code>get.docker.com<\/code>, que la documentaci\u00f3n de Docker recomienda solo para pruebas y desarrollo. Primero los prerrequisitos y la clave de firma de Docker:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install ca-certificates curl\nsudo install -m 0755 -d \/etc\/apt\/keyrings\nsudo curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg -o \/etc\/apt\/keyrings\/docker.asc\nsudo chmod a+r \/etc\/apt\/keyrings\/docker.asc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s registra el repositorio. Este comando escribe el archivo del repositorio seg\u00fan la <a target=\"_blank\" href=\"https:\/\/docs.docker.com\/engine\/install\/ubuntu\/\">gu\u00eda de instalaci\u00f3n de Docker para Ubuntu<\/a>, completando tu versi\u00f3n de Ubuntu autom\u00e1ticamente:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo tee \/etc\/apt\/sources.list.d\/docker.sources &gt; \/dev\/null &lt;&lt;EOF\nTypes: deb\nURIs: https:\/\/download.docker.com\/linux\/ubuntu\nSuites: $(. \/etc\/os-release &amp;&amp; echo \"${UBUNTU_CODENAME:-$VERSION_CODENAME}\")\nComponents: stable\nSigned-By: \/etc\/apt\/keyrings\/docker.asc\nEOF<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Luego instala y verifica:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\nsudo docker run hello-world<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Si <code>hello-world<\/code> imprime su mensaje de confirmaci\u00f3n, Docker y el plugin de Compose est\u00e1n listos.<\/p>\n\n\n\n<h3 id=\"h-step-5-create-the-project-directory-and-secrets\" class=\"wp-block-heading\">Paso 5: crea el directorio del proyecto y los secretos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Crea el directorio del proyecto y genera despu\u00e9s tu clave de cifrado; no dejes que n8n invente una en silencio en el primer arranque:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo mkdir -p \/opt\/n8n-compose\ncd \/opt\/n8n-compose\nopenssl rand -hex 32<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Copia el resultado en un lugar seguro ahora mismo, fuera del servidor. Despu\u00e9s ponlo, junto con una contrase\u00f1a fuerte para la base de datos, en un archivo <code>.env<\/code> protegido junto a tu archivo compose (Docker Compose lo lee autom\u00e1ticamente). Sustituye ambos valores de ejemplo por los tuyos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo tee \/opt\/n8n-compose\/.env &gt; \/dev\/null &lt;&lt;'EOF'\nPOSTGRES_PASSWORD=choose_a_strong_password\nN8N_ENCRYPTION_KEY=paste_the_64_character_key_you_just_generated\nEOF\nsudo chmod 600 \/opt\/n8n-compose\/.env<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El <code>chmod 600<\/code> importa: este archivo guarda secretos, as\u00ed que solo su due\u00f1o (root) debe poder leerlo. En el archivo compose, <code>N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true<\/code> aplica la misma idea dentro del contenedor: seg\u00fan la <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/configure-n8n\/basic-configuration\/use-environment-variables\/security\">referencia de variables de seguridad de n8n<\/a> (en ingl\u00e9s), hace que n8n intente fijar permisos 0600 en su propio archivo de configuraci\u00f3n.<\/p>\n\n\n\n<h3 id=\"h-step-6-write-the-docker-compose-file\" class=\"wp-block-heading\">Paso 6: escribe el archivo de Docker Compose<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Crea <code>\/opt\/n8n-compose\/docker-compose.yml<\/code> (por ejemplo, con <code>sudo nano \/opt\/n8n-compose\/docker-compose.yml<\/code>) y pega lo siguiente, cambiando <code>n8n.example.com<\/code> por tu propio dominio en las dos l\u00edneas de URL y ajustando tu zona horaria (por ejemplo, America\/Mexico_City):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:\n  caddy:\n    image: caddy:2\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n    volumes:\n      - .\/Caddyfile:\/etc\/caddy\/Caddyfile\n      - caddy_data:\/data\n      - caddy_config:\/config\n\n  n8n:\n    image: docker.n8n.io\/n8nio\/n8n:2.36.7\n    restart: unless-stopped\n    expose:\n      - \"5678\"\n    environment:\n      - DB_TYPE=postgresdb\n      - DB_POSTGRESDB_HOST=postgres\n      - DB_POSTGRESDB_DATABASE=n8n\n      - DB_POSTGRESDB_USER=n8n\n      - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}\n      - N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}\n      - N8N_HOST=n8n.example.com\n      - N8N_PORT=5678\n      - N8N_PROTOCOL=https\n      - N8N_WEBHOOK_URL=https:\/\/n8n.example.com\/\n      - N8N_PROXY_HOPS=1\n      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true\n      - GENERIC_TIMEZONE=America\/New_York\n      - TZ=America\/New_York\n      - EXECUTIONS_DATA_MAX_AGE=168\n    depends_on:\n      postgres:\n        condition: service_healthy\n    volumes:\n      - n8n_data:\/home\/node\/.n8n\n\n  postgres:\n    image: postgres:18\n    restart: unless-stopped\n    environment:\n      - POSTGRES_USER=n8n\n      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}\n      - POSTGRES_DB=n8n\n      - PGDATA=\/var\/lib\/postgresql\/data\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U n8n -d n8n\"]\n      interval: 5s\n      timeout: 5s\n      retries: 10\n    volumes:\n      - postgres_data:\/var\/lib\/postgresql\/data\n\nvolumes:\n  caddy_data:\n  caddy_config:\n  n8n_data:\n  postgres_data:<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cinco detalles de ese archivo se ganan su lugar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>La imagen est\u00e1 fijada a una versi\u00f3n espec\u00edfica<\/strong> (2.36.7 es la versi\u00f3n estable al momento de escribir esto, seg\u00fan la <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/install-options\/use-a-cloud-provider\/use-docker-compose\">documentaci\u00f3n de instalaci\u00f3n de n8n<\/a>), para que las actualizaciones solo ocurran cuando t\u00fa lo decidas.<\/li>\n\n\n\n<li><strong>n8n no publica ning\u00fan puerto del host.<\/strong> Los contenedores de la red de Compose, incluido Caddy, pueden comunicarse con n8n, pero no hay puerto del host publicado, as\u00ed que al editor solo se puede llegar a trav\u00e9s del proxy inverso, nunca directamente desde internet.<\/li>\n\n\n\n<li><strong>El healthcheck hace que n8n espere a PostgreSQL.<\/strong> Un <code>depends_on<\/code> a secas solo espera a que el contenedor arranque, no a que la base de datos acepte conexiones. El patr\u00f3n <code>condition: service_healthy<\/code> viene directo del <a target=\"_blank\" href=\"https:\/\/github.com\/n8n-io\/n8n-hosting\">archivo compose de ejemplo con Postgres de n8n<\/a> (en ingl\u00e9s), que tambi\u00e9n despliega PostgreSQL 18.<\/li>\n\n\n\n<li><strong>El par <code>N8N_WEBHOOK_URL<\/code> \/ <code>N8N_PROXY_HOPS<\/code> importa detr\u00e1s de un proxy.<\/strong> n8n normalmente construye las URLs de sus webhooks a partir del protocolo, el host y el puerto, y la <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/configure-n8n\/basic-configuration\/configuration-examples\/configure-webhook-urls-with-reverse-proxy\">documentaci\u00f3n de n8n<\/a> (en ingl\u00e9s) advierte que eso no funciona detr\u00e1s de un proxy inverso. Por eso defines la URL de los webhooks a mano, para que n8n pueda &#8220;registrar las URLs de webhook correctas con los servicios externos&#8221;, fijas <code>N8N_PROXY_HOPS<\/code> en 1 y te aseguras de que el proxy pase los encabezados X-Forwarded-For, X-Forwarded-Host y X-Forwarded-Proto. (La misma p\u00e1gina se\u00f1ala que <code>N8N_WEBHOOK_URL<\/code> sustituye a la antigua <code>WEBHOOK_URL<\/code>, obsoleta desde n8n 2.35.0.)<\/li>\n\n\n\n<li><strong><code>TZ<\/code> y <code>GENERIC_TIMEZONE<\/code> hacen trabajos distintos.<\/strong> Seg\u00fan la <a target=\"_blank\" href=\"https:\/\/hub.docker.com\/r\/n8nio\/n8n\">documentaci\u00f3n de Docker de n8n<\/a>, <code>GENERIC_TIMEZONE<\/code> gobierna los nodos de programaci\u00f3n, como Schedule, mientras que <code>TZ<\/code> define la zona horaria del sistema dentro del contenedor (lo que reportan comandos como <code>date<\/code>). Asigna el mismo valor a ambas.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">(Empieza con PostgreSQL desde el primer d\u00eda. n8n usa SQLite de forma predeterminada, que sirve para pruebas, pero las plantillas de hosting de n8n recomiendan PostgreSQL para producci\u00f3n, y migrar despu\u00e9s duele, de esos dolores de &#8220;ojal\u00e1 lo hubiera hecho bien desde el principio&#8221;.)<\/p>\n\n\n\n<h3 id=\"h-step-7-write-the-caddyfile\" class=\"wp-block-heading\">Paso 7: escribe el Caddyfile<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Crea <code>\/opt\/n8n-compose\/Caddyfile<\/code> con tu dominio (otra vez, reemplaza <code>n8n.example.com<\/code>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>n8n.example.com {\n    reverse_proxy n8n:5678\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esa es toda la configuraci\u00f3n del proxy inverso. Seg\u00fan la <a target=\"_blank\" href=\"https:\/\/caddyserver.com\/docs\/automatic-https\">documentaci\u00f3n de HTTPS autom\u00e1tico de Caddy<\/a> (en ingl\u00e9s), Caddy obtiene y renueva autom\u00e1ticamente un certificado de confianza p\u00fablica, con un emisor como Let&#8217;s Encrypt o ZeroSSL, y redirige el tr\u00e1fico HTTP a HTTPS, siempre que tu registro DNS de tipo A apunte al servidor y los puertos 80 y 443 est\u00e9n abiertos (pasos 1 y 3). Caddy es, adem\u00e1s, uno de los proxies inversos de los <a target=\"_blank\" href=\"https:\/\/github.com\/n8n-io\/n8n-hosting\">ejemplos oficiales de hosting de n8n<\/a>.<\/p>\n\n\n\n<h3 id=\"h-step-8-launch-and-verify\" class=\"wp-block-heading\">Paso 8: arranca y verifica<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/opt\/n8n-compose\nsudo docker compose up -d\nsudo docker compose ps<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Espera a que <code>ps<\/code> muestre el contenedor de postgres como healthy y n8n en ejecuci\u00f3n, y luego prueba la puerta de entrada desde cualquier m\u00e1quina:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -fsS -o \/dev\/null -w '%{http_code}' https:\/\/n8n.example.com\/<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Un c\u00f3digo 2xx (o una redirecci\u00f3n 3xx) significa que Caddy gestion\u00f3 la conexi\u00f3n TLS y n8n respondi\u00f3; si <code>curl<\/code> termina con un error, hay que revisar el DNS, el certificado o los contenedores (<code>sudo docker compose logs caddy<\/code> y <code>sudo docker compose logs n8n<\/code> son los primeros lugares donde mirar). Abre <code>https:\/\/n8n.example.com<\/code> en un navegador y crea tu cuenta de propietario.<\/p>\n\n\n\n<h3 id=\"h-step-9-update-n8n-deliberately\" class=\"wp-block-heading\">Paso 9: actualiza n8n con toda la intenci\u00f3n<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">n8n publica una nueva versi\u00f3n menor casi cada semana, y sus <a target=\"_blank\" href=\"https:\/\/hub.docker.com\/r\/n8nio\/n8n\">instrucciones de actualizaci\u00f3n<\/a> piden revisar el registro de cambios incompatibles antes de actualizar. Cuando est\u00e9s listo: edita la etiqueta de versi\u00f3n en <code>docker-compose.yml<\/code> y luego<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/opt\/n8n-compose\nsudo docker compose pull\nsudo docker compose up -d<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Con una etiqueta fijada, descargar la imagen no cambia nada por s\u00ed solo: cada actualizaci\u00f3n la eliges t\u00fa al cambiar la etiqueta, y ese es justamente el prop\u00f3sito de fijarla. Ejecuta un respaldo (paso 10) antes de las actualizaciones de versi\u00f3n mayor.<\/p>\n\n\n\n<h3 id=\"h-step-10-schedule-backups\" class=\"wp-block-heading\">Paso 10: programa los respaldos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para una restauraci\u00f3n utilizable se requieren tres cosas: la base de datos PostgreSQL, el volumen <code>n8n_data<\/code> y el archivo <code>.env<\/code> que aporta la <code>N8N_ENCRYPTION_KEY<\/code>. La <a target=\"_blank\" href=\"https:\/\/hub.docker.com\/r\/n8nio\/n8n\">documentaci\u00f3n de Docker de n8n<\/a> es expl\u00edcita: incluso cuando usas PostgreSQL, la carpeta <code>\/home\/node\/.n8n<\/code> (nuestro volumen <code>n8n_data<\/code>) sigue guardando datos esenciales, incluido el material de la clave de cifrado. Respalda las tres cosas y conserva <code>docker-compose.yml<\/code> y el <code>Caddyfile<\/code> para poder reconstruir el conjunto. El script de abajo se encarga de la base de datos y del volumen; copiar los archivos de configuraci\u00f3n fuera del servidor viene justo despu\u00e9s. Crea el script como un archivo propiedad de root:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo tee \/opt\/n8n-compose\/backup.sh &gt; \/dev\/null &lt;&lt;'EOF'\n#!\/bin\/bash\nset -euo pipefail\ncd \/opt\/n8n-compose\nSTAMP=$(date +%Y-%m-%d)\nmkdir -p \/opt\/n8n-backups\ndocker compose exec -T postgres pg_dump -U n8n -d n8n &gt; \"\/opt\/n8n-backups\/n8n-db-${STAMP}.sql\"\ndocker run --rm -v n8n-compose_n8n_data:\/data -v \/opt\/n8n-backups:\/backup alpine \\\n  tar czf \"\/backup\/n8n-data-${STAMP}.tar.gz\" -C \/data .\nfind \/opt\/n8n-backups -name 'n8n-db-*.sql' -mtime +30 -delete\nfind \/opt\/n8n-backups -name 'n8n-data-*.tar.gz' -mtime +30 -delete\nEOF\nsudo chmod 700 \/opt\/n8n-compose\/backup.sh\nsudo \/opt\/n8n-compose\/backup.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Notas sobre el script: <code>n8n-compose_n8n_data<\/code> es el nombre de volumen que Compose crea para un directorio de proyecto llamado <code>n8n-compose<\/code>; confirma el tuyo con <code>sudo docker volume ls<\/code> y aj\u00fastalo si difiere. Las dos l\u00edneas de <code>find<\/code> conservan 30 d\u00edas de respaldos; define otra retenci\u00f3n seg\u00fan tu almacenamiento y tus necesidades de recuperaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Progr\u00e1malo desde el crontab de root. El cron de root solo debe ejecutar un script propiedad de root (<code>chmod 700<\/code>, con el <code>.env<\/code> en <code>600<\/code>), nunca un archivo que otro usuario pueda editar. Ejecuta <code>sudo crontab -e<\/code> y agrega una l\u00ednea para una corrida diaria a las 3 a.m.:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>0 3 * * * \/opt\/n8n-compose\/backup.sh<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El script respalda la base de datos PostgreSQL y el volumen <code>n8n_data<\/code> seg\u00fan el calendario. Copia el <code>.env<\/code> (que contiene tu clave de cifrado) y los archivos de Compose y de Caddy fuera del servidor ahora y cada vez que cambien. En el servidor, crea un archivo comprimido temporal y protegido:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo tar -C \/opt\/n8n-compose -czf \/home\/deploy\/n8n-config.tar.gz .env docker-compose.yml Caddyfile\nsudo chown deploy:deploy \/home\/deploy\/n8n-config.tar.gz\nchmod 600 \/home\/deploy\/n8n-config.tar.gz<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s, desde tu m\u00e1quina local, descarga ese archivo de configuraci\u00f3n junto con los respaldos y borra la copia temporal del servidor:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>scp deploy@your_server_ip:\/home\/deploy\/n8n-config.tar.gz .\nscp -r deploy@your_server_ip:\/opt\/n8n-backups .\nssh deploy@your_server_ip 'rm \/home\/deploy\/n8n-config.tar.gz'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Un respaldo que solo existe en el servidor que protege desaparece junto con el servidor.<\/p>\n\n\n\n<h3 id=\"h-step-11-test-a-restore-on-a-scratch-vps\" class=\"wp-block-heading\">Paso 11: prueba una restauraci\u00f3n en un VPS desechable<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este es un procedimiento de respaldo y restauraci\u00f3n para comprobar que tus respaldos sirven. Haz la prueba en un VPS desechable reci\u00e9n creado, nunca en tu servidor de producci\u00f3n. Contrata un servidor temporal, repite ah\u00ed el paso 4 (Docker) y copia tus archivos de proyecto (<code>docker-compose.yml<\/code>, <code>Caddyfile<\/code>, <code>.env<\/code>) y tus respaldos con fecha m\u00e1s recientes en las mismas rutas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primero, cambia el hostname: pon uno de prueba (digamos, <code>n8n-restore-test.example.com<\/code>, con un registro A apuntando al VPS desechable) en <code>N8N_HOST<\/code>, <code>N8N_WEBHOOK_URL<\/code> y el Caddyfile. Despu\u00e9s, sustituyendo los nombres de archivo con fecha por los tuyos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/opt\/n8n-compose\nsudo docker compose create\nsudo docker run --rm -v n8n-compose_n8n_data:\/data -v \/opt\/n8n-backups:\/backup alpine \\\n  sh -c \"cd \/data &amp;&amp; tar xzf \/backup\/n8n-data-2026-08-25.tar.gz\"\nsudo docker compose up -d --wait postgres\nsudo docker compose exec -T postgres psql -U n8n -d n8n &lt; \/opt\/n8n-backups\/n8n-db-2026-08-25.sql\nsudo docker compose run --rm n8n unpublish:workflow --all\nsudo docker compose up -d<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La l\u00ednea <code>unpublish:workflow --all<\/code> usa la <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/configure-n8n\/use-the-command-line\">Server CLI integrada de n8n<\/a> (en ingl\u00e9s) para despublicar cada flujo restaurado antes de que la instancia arranque, de modo que los horarios y disparadores restaurados no se activen contra tus sistemas de producci\u00f3n desde la m\u00e1quina de prueba. Termina con la misma verificaci\u00f3n de <code>curl<\/code> del paso 8, contra el hostname de prueba.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00e9 honesto contigo sobre lo que significa una verificaci\u00f3n exitosa: confirma que la base de datos y el volumen se restauraron y que el conjunto arranca correctamente. No ejercita tus flujos en el editor, as\u00ed que inicia sesi\u00f3n en la instancia de prueba y revisa a mano los que no puedes darte el lujo de perder.<\/p>\n\n\n\n<h2 id=\"h-how-do-you-keep-a-self-hosted-n8n-instance-secure\" class=\"wp-block-heading\">\u00bfC\u00f3mo mantener segura una instancia autoalojada de n8n?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una instancia autoalojada de n8n es tan segura como el servidor donde se ejecuta, y ese servidor lo controlas t\u00fa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La seguridad se reduce a seis puntos. Ninguno es complicado por s\u00ed solo, pero saltarte cualquiera deja un hueco real. La configuraci\u00f3n de arriba ya implementa los primeros tres.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>HTTPS a trav\u00e9s de un proxy inverso.<\/strong> Nunca entres al editor de n8n por HTTP simple. La configuraci\u00f3n de Caddy del paso 7 obtiene y renueva autom\u00e1ticamente un certificado de confianza p\u00fablica, con un emisor como Let&#8217;s Encrypt o ZeroSSL, y redirige HTTP a HTTPS.<\/li>\n\n\n\n<li><strong>Firewall bien cerrado.<\/strong> UFW solo permite SSH (22), HTTP (80) y HTTPS (443). <em>Nunca<\/em> expongas el puerto predeterminado de n8n, el 5678, directamente a internet. El archivo compose de arriba lo garantiza al no publicar ning\u00fan puerto del host para n8n, as\u00ed que solo los contenedores de la red de Compose pueden alcanzarlo.<\/li>\n\n\n\n<li><strong>Aislamiento de red en Docker.<\/strong> PostgreSQL y n8n se comunican por la red interna de Compose. El puerto de tu base de datos nunca se publica en el host, as\u00ed que nunca es accesible desde afuera.<\/li>\n\n\n\n<li><strong>Autenticaci\u00f3n fuerte.<\/strong> Usa una contrase\u00f1a de propietario fuerte y activa la autenticaci\u00f3n de dos factores; la <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/configure-n8n\/security\">gu\u00eda de seguridad de n8n<\/a> (en ingl\u00e9s) incluye el 2FA entre sus protecciones recomendadas para instancias autoalojadas.<\/li>\n\n\n\n<li><strong>Actualizaciones regulares.<\/strong> Actualiza la etiqueta de versi\u00f3n en tu archivo compose, descarga la imagen y reinicia (paso 9). Lee primero el registro de cambios, porque las actualizaciones de n8n pueden incluir cambios incompatibles.<\/li>\n\n\n\n<li><strong>Respaldos que ya restauraste.<\/strong> Los pasos 10 y 11 te dan el calendario y la prueba. Un respaldo que nunca has probado es una <em>esperanza<\/em>, no un plan.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Hay un detalle m\u00e1s que vigilar; no es estrictamente de seguridad, pero marca una gran diferencia. De forma predeterminada, n8n guarda en su base de datos la entrada y la salida de cada ejecuci\u00f3n. La <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/configure-n8n\/scaling\/manage-execution-data\">limpieza autom\u00e1tica viene activada<\/a> (en ingl\u00e9s): n8n borra las ejecuciones con m\u00e1s de 336 horas, es decir, 14 d\u00edas, o cuando superas las 10,000 ejecuciones almacenadas. Aun as\u00ed, una instancia con mucho movimiento puede inflar PostgreSQL entretanto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si tus flujos son parlanchines, ajusta la limpieza: define <code>EXECUTIONS_DATA_MAX_AGE=168<\/code> para borrar los datos de ejecuci\u00f3n con m\u00e1s de siete d\u00edas (el archivo compose de arriba ya lo hace), o deja de guardar por completo las ejecuciones exitosas con <code>EXECUTIONS_DATA_SAVE_ON_SUCCESS=none<\/code>.<\/p>\n\n\n\n<h2 id=\"h-what-are-the-trade-offs-of-self-hosting-vs-n8n-cloud\" class=\"wp-block-heading\">\u00bfQu\u00e9 sacrificas al autoalojar frente a usar n8n Cloud?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Autoalojar n8n te da una instancia sin tope de ejecuciones y con control sobre los datos que almacena, por el costo de un VPS peque\u00f1o m\u00e1s tu propia administraci\u00f3n. n8n Cloud te da cero mantenimiento de servidor, con topes de ejecuciones seg\u00fan el nivel. La decisi\u00f3n se reduce a si quieres ser due\u00f1o de tu infraestructura de automatizaci\u00f3n o pagarle a alguien m\u00e1s para que la administre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/install-options\/use-a-cloud-provider\/use-docker-compose\">documentaci\u00f3n de n8n<\/a> lo plantea as\u00ed: &#8220;n8n recomienda el autoalojamiento para usuarios expertos. Los errores pueden causar p\u00e9rdida de datos, problemas de seguridad y tiempo de inactividad. Si no tienes experiencia administrando servidores, n8n recomienda n8n Cloud&#8221;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed se comparan las dos opciones:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Factor<\/strong><\/td><td><strong>Autoalojado<\/strong><\/td><td><strong>n8n Cloud<\/strong><\/td><\/tr><tr><td>Costo mensual<\/td><td>Tu factura de VPS, m\u00e1s el dominio, el almacenamiento para respaldos y la administraci\u00f3n que apliquen (DreamHost Stack 4: $8.99 USD\/mes por 3 meses y luego $15.99 USD\/mes, a agosto de 2026; estimaciones de terceros de ExpressTech para 2026: $4\u20138 USD\/mes)<\/td><td>\u20ac20\u201350 (facturaci\u00f3n anual), seg\u00fan el nivel<\/td><\/tr><tr><td>Ejecuciones<\/td><td>Sin tope; la capacidad depende de los recursos de tu servidor<\/td><td>2,500 (Starter) o 10,000 (Pro)<\/td><\/tr><tr><td>Instalaci\u00f3n<\/td><td>La gu\u00eda de 11 pasos de arriba<\/td><td>Minutos<\/td><\/tr><tr><td>Mantenimiento<\/td><td>Las actualizaciones, los respaldos y el monitoreo corren por tu cuenta<\/td><td>Lo maneja n8n<\/td><\/tr><tr><td>Ubicaci\u00f3n de los datos<\/td><td>Tu servidor<\/td><td>La infraestructura de n8n<\/td><\/tr><tr><td>Actualizaciones<\/td><td>Manuales (cambias la etiqueta, descargas la imagen y reinicias)<\/td><td>Autom\u00e1ticas<\/td><\/tr><tr><td>TLS<\/td><td>Caddy obtiene y renueva los certificados autom\u00e1ticamente (con un emisor como Let&#8217;s Encrypt o ZeroSSL)<\/td><td>Incluido<\/td><\/tr><tr><td>Escalado<\/td><td>Agrega RAM o usa el modo de cola con workers de Redis<\/td><td>Sube de nivel de plan<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Tambi\u00e9n existe un punto intermedio que vale la pena conocer. <\/strong>Plataformas administradas como PikaPods (alrededor de $3.80 USD al mes) y Elestio (alrededor de $17 USD al mes, seg\u00fan la <a target=\"_blank\" href=\"https:\/\/expresstech.io\/the-real-cost-of-self-hosting-n8n-in-2026\/\">comparaci\u00f3n de ExpressTech<\/a>) ejecutan n8n autoalojado sin que t\u00fa administres el servidor. Estos servicios pueden reducir el trabajo de administraci\u00f3n, aunque conviene verificar qui\u00e9n se encarga de las actualizaciones de n8n, los respaldos, el monitoreo y la seguridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero mira el panorama completo. En cualquier plan alojado, tu capacidad de ejecuci\u00f3n es un nivel de facturaci\u00f3n, y los niveles los define la plataforma. Los precios, los topes y las funciones pueden cambiar despu\u00e9s de que ya construiste flujos que dependen de la plataforma.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con el autoalojamiento, la instancia y los datos que almacena se alojan en infraestructura que <em>t\u00fa<\/em> controlas (los servicios conectados siguen recibiendo lo que tus flujos les env\u00edan). Control total, responsabilidad total.<\/p>\n\n\n\n<h2 id=\"h-making-the-final-call\" class=\"wp-block-heading\">La decisi\u00f3n final: \u00bfte conviene autoalojar?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Autoalojar tiene sentido cuando se alinean tres cosas:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ejecutas suficientes automatizaciones como para que los topes de ejecuciones de la nube te aprieten<\/li>\n\n\n\n<li>Quieres los datos de tus flujos de trabajo en infraestructura que t\u00fa controlas<\/li>\n\n\n\n<li>T\u00fa, o alguien de tu equipo, est\u00e1 dispuesto a encargarse de las actualizaciones, los respaldos y el monitoreo<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Si no, n8n Cloud es una opci\u00f3n razonable. Pagar el plan Starter para no pensar nunca en los registros de Docker es un intercambio justo, sobre todo para un equipo peque\u00f1o que solo quiere que sus automatizaciones funcionen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero cuando est\u00e9s listo para cruzar el umbral del autoalojamiento, la ventaja econ\u00f3mica se vuelve clara muy r\u00e1pido. Un VPS de 4 GB es un punto de partida pr\u00e1ctico, aunque no est\u00e1 respaldado por pruebas propias; la capacidad de producci\u00f3n depende de la concurrencia, el volumen de datos y los nodos que uses, as\u00ed que monitorea la instancia y esc\u00e1lala conforme crezca la demanda. Empieza peque\u00f1o, mejora el plan cuando tus flujos crezcan y conserva el control total de tu stack.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esa \u00faltima parte importa m\u00e1s de lo que parece. Siempre puedes pasarte a un servidor m\u00e1s grande. Desvincularte de una plataforma SaaS despu\u00e9s de que cambi\u00f3 los precios de los que dependen los flujos que ya construiste es mucho m\u00e1s dif\u00edcil.<\/p>\n\n\n\n\n<div class=\"article-cta-shared article-cta-small article-cta--product\">\n\t<div class=\"tr-img-wrap-outer jsLoading\"><img decoding=\"async\" class=\"js-img-lazy \" src=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/lazy-loading-transparent.webp\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/cta_image_a-877x522.webp 1x, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/cta_image_a.webp 2x\"  \/><\/div>\n\n\t<a href='https:\/\/www.dreamhost.com\/hosting\/vps\/' class='link-top' target='_blank' rel='noopener noreferrer'>\n\t\t<span>VPS<\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\" width=\"15\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n\n\t<div class=\"content-btm\">\n\t\t<h2 class=\"h2--md\">\n\t\t\tOwn Your Entire Stack. Apps, AI, Databases, and More.\n\t\t<\/h2>\n\t\t<p class=\"p--md\">\n\t\t\tKeep every credential and conversation on a server you control, with NVMe speed and unmetered bandwidth built in.\n\t\t<\/p>\n\n\t\t        <a\n            href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Explore VPS Hosting Plans                    <\/a>\n\n\t<\/div>\n<\/div>\n\n<h2 id=\"h-frequently-asked-questions-about-self-hosting-n8n\" class=\"wp-block-heading\">Preguntas frecuentes sobre el autoalojamiento de n8n<\/h2>\n\n\n\n<h3 id=\"h-is-n8n-really-free-to-self-host\" class=\"wp-block-heading\">\u00bfDe verdad es gratis autoalojar n8n?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El software de n8n es gratuito en tu propio servidor bajo la Sustainable Use License. La Community edition autoalojada (la versi\u00f3n est\u00e1ndar que n8n publica en GitHub) no cobra licencias ni ejecuciones de n8n para los usos permitidos, como la automatizaci\u00f3n interna de un negocio. Lo &#8220;gratis&#8221; es el software: el servidor lo sigues pagando t\u00fa, m\u00e1s el dominio, el almacenamiento para respaldos y el tiempo de administraci\u00f3n que apliquen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La licencia restringe vender un producto, servicio o m\u00f3dulo cuyo valor derive total o sustancialmente de la funcionalidad de n8n. Revisa las <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/privacy-and-security\/sustainable-use-license\">preguntas frecuentes de la licencia de n8n<\/a> si planeas ofrecer funciones basadas en n8n a tus clientes.<\/p>\n\n\n\n<h3 id=\"h-what-are-the-minimum-system-requirements-for-n8n\" class=\"wp-block-heading\">\u00bfCu\u00e1les son los requisitos m\u00ednimos del sistema para n8n?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">n8n publica ejemplos de dimensionamiento en lugar de un m\u00ednimo estricto, y etiqueta esas cifras como ilustrativas (salen de su documentaci\u00f3n de despliegue OEM): unos 100 MB de memoria en reposo, un rango de ejemplo de 320 MB a 2 GB, y una base de datos de 512 MB a 4 GB sobre SSD. Como punto de partida prudente, no como un m\u00ednimo oficial de n8n, considera 2 GB para pruebas y 4 GB cuando sumes PostgreSQL y flujos de producci\u00f3n; despu\u00e9s monitorea y agrega memoria cuando aparezca presi\u00f3n sostenida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El plan Stack 4 de DreamHost VPS Hosting ofrece 4 GB de RAM con almacenamiento NVMe SSD y acceso root completo para ejecutar aplicaciones autoalojadas como n8n. Consulta los planes de <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/\">VPS Hosting<\/a> para ver los detalles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Usa PostgreSQL en lugar de SQLite para producci\u00f3n, y da preferencia al almacenamiento SSD, que n8n se\u00f1ala como buena pr\u00e1ctica para la base de datos.<\/p>\n\n\n\n<h3 id=\"h-can-i-run-n8n-locally-instead-of-on-a-vps\" class=\"wp-block-heading\">\u00bfPuedo ejecutar n8n en mi computadora en lugar de un VPS?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed: un solo comando de Docker ejecuta n8n en tu propia m\u00e1quina, y es una excelente manera de probar flujos de trabajo antes de comprometerte con un servidor. El problema son los webhooks: los flujos activados por servicios externos necesitan que tu instancia sea accesible desde internet, y una laptop detr\u00e1s del router de tu casa no lo es de forma predeterminada. El reenv\u00edo de puertos, las VPN y los t\u00faneles pueden resolverlo, cada uno con su propia configuraci\u00f3n y sus propios sacrificios de seguridad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">n8n ofrece un servicio de t\u00fanel para reenviar webhooks a una instancia local, pero su <a target=\"_blank\" href=\"https:\/\/hub.docker.com\/r\/n8nio\/n8n\">documentaci\u00f3n de Docker<\/a> es tajante: el t\u00fanel &#8220;est\u00e1 pensado \u00fanicamente para desarrollo local y pruebas&#8221; y no debe usarse en producci\u00f3n. Para algo que funciona las 24 horas, usa un VPS.<\/p>\n\n\n\n<h3 id=\"h-can-i-migrate-from-zapier-to-n8n\" class=\"wp-block-heading\">\u00bfPuedo migrar de Zapier a n8n?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No esperes una importaci\u00f3n con un clic. Planea reconstruir tus flujos de trabajo en el editor visual de n8n, en lugar de importarlos desde Zapier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La buena noticia: n8n tiene m\u00e1s de 400 integraciones, pero revisa cada aplicaci\u00f3n, disparador y acci\u00f3n que usan tus flujos actuales antes de planear la migraci\u00f3n. Los flujos simples se rearman r\u00e1pido; las secuencias complejas de varios pasos tardan m\u00e1s.<\/p>\n\n\n\n<h3 id=\"h-how-do-i-update-a-self-hosted-n8n-instance\" class=\"wp-block-heading\">\u00bfC\u00f3mo actualizo una instancia autoalojada de n8n?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Edita la etiqueta de versi\u00f3n en tu <code>docker-compose.yml<\/code> a la versi\u00f3n que quieras, y luego ejecuta <code>docker compose pull<\/code> seguido de <code>docker compose up -d<\/code>. Con una etiqueta fijada como <code>docker.n8n.io\/n8nio\/n8n:2.36.7<\/code>, descargar la imagen no cambia nada por s\u00ed solo: cada actualizaci\u00f3n la eliges t\u00fa al cambiar la etiqueta, y para eso mismo sirve fijarla. (Si usas la etiqueta <code>latest<\/code>, basta con descargar y reiniciar, pero cada reinicio se convierte en una actualizaci\u00f3n sorpresa.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Respalda tu base de datos PostgreSQL antes de una actualizaci\u00f3n de versi\u00f3n mayor. El script de respaldo de la gu\u00eda de arriba se encarga de eso, o ejecuta <code>pg_dump<\/code> directamente en el contenedor de PostgreSQL.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las actualizaciones descuidadas rompen cosas, y n8n publica una nueva versi\u00f3n menor casi cada semana. Las propias <a target=\"_blank\" href=\"https:\/\/hub.docker.com\/r\/n8nio\/n8n\">instrucciones de actualizaci\u00f3n de n8n<\/a> piden revisar el registro de cambios incompatibles antes de actualizar: l\u00e9elo antes de descargar. El reinicio en s\u00ed es r\u00e1pido; leer el registro de cambios es la parte que merece tu tiempo.<\/p>\n\n\n\n<h3 id=\"h-is-self-hosted-n8n-secure-enough-for-business-data\" class=\"wp-block-heading\">\u00bfEs n8n autoalojado lo bastante seguro para datos empresariales?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El autoalojamiento te da control sobre d\u00f3nde guarda n8n las definiciones de flujos, las credenciales y los datos de ejecuci\u00f3n. Eso s\u00ed: los servicios conectados siguen recibiendo los datos que tus flujos les env\u00edan, y asegurar el servidor sigue siendo tu responsabilidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sigue la lista de seis puntos de la secci\u00f3n de seguridad de arriba: HTTPS, firewall, aislamiento en Docker, autenticaci\u00f3n fuerte con 2FA, actualizaciones regulares y respaldos ya probados. El equipo de n8n mantiene una <a target=\"_blank\" href=\"https:\/\/docs.n8n.io\/deploy\/host-n8n\/configure-n8n\/security\">gu\u00eda de seguridad<\/a> con consideraciones adicionales para producci\u00f3n, desde auditor\u00edas de seguridad hasta autenticaci\u00f3n de dos factores.<\/p>\n\n\n\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"headline\":\"n8n autoalojado: c\u00f3mo ejecutar n8n en tu propio servidor\",\"description\":\"Autoaloja n8n en un VPS: la Community edition no cobra licencias ni ejecuciones para los usos permitidos. Requisitos del servidor, instalaci\u00f3n en 11 pasos con Docker Compose y Caddy, seguridad, respaldos y cu\u00e1ndo conviene m\u00e1s que n8n Cloud.\",\"datePublished\":\"2026-04-15\",\"dateModified\":\"2026-08-25\",\"author\":{\"@type\":\"Organization\",\"name\":\"DreamHost Blog\",\"url\":\"https:\/\/www.dreamhost.com\/blog\/\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"DreamHost\",\"url\":\"https:\/\/www.dreamhost.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https:\/\/www.dreamhost.com\/assets\/images\/dh-logo.svg\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/\"},\"keywords\":[\"n8n autoalojado\",\"autoalojar n8n\",\"n8n docker\",\"n8n VPS\",\"hosting n8n\",\"automatizaci\u00f3n de flujos de trabajo\"]},{\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"\u00bfDe verdad es gratis autoalojar n8n?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"El software de n8n es gratuito en tu propio servidor bajo la Sustainable Use License. La Community edition autoalojada (la versi\u00f3n est\u00e1ndar que n8n publica en GitHub) no cobra licencias ni ejecuciones de n8n para los usos permitidos, como la automatizaci\u00f3n interna de un negocio. Lo gratis es el software: el servidor lo sigues pagando t\u00fa, m\u00e1s el dominio, el almacenamiento para respaldos y el tiempo de administraci\u00f3n que apliquen. La licencia restringe vender un producto, servicio o m\u00f3dulo cuyo valor derive total o sustancialmente de la funcionalidad de n8n; revisa las preguntas frecuentes de la licencia de n8n si planeas ofrecer funciones basadas en n8n a tus clientes.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfCu\u00e1les son los requisitos m\u00ednimos del sistema para n8n?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"n8n publica ejemplos de dimensionamiento en lugar de un m\u00ednimo estricto, y etiqueta esas cifras como ilustrativas: unos 100 MB de memoria en reposo, un rango de ejemplo de 320 MB a 2 GB, y una base de datos de 512 MB a 4 GB sobre SSD. Como punto de partida prudente, no como un m\u00ednimo oficial de n8n, considera 2 GB para pruebas y 4 GB cuando sumes PostgreSQL y flujos de producci\u00f3n; despu\u00e9s monitorea y agrega memoria cuando aparezca presi\u00f3n sostenida. Usa PostgreSQL en lugar de SQLite para producci\u00f3n, y da preferencia al almacenamiento SSD, que n8n se\u00f1ala como buena pr\u00e1ctica para la base de datos.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfPuedo ejecutar n8n en mi computadora en lugar de un VPS?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"S\u00ed: un solo comando de Docker ejecuta n8n en tu propia m\u00e1quina, y es una excelente manera de probar flujos de trabajo. El problema son los webhooks: los flujos activados por servicios externos necesitan que tu instancia sea accesible desde internet, y una laptop detr\u00e1s del router de tu casa no lo es de forma predeterminada; el reenv\u00edo de puertos, las VPN y los t\u00faneles pueden resolverlo, cada uno con sus propios sacrificios. n8n ofrece un servicio de t\u00fanel para reenviar webhooks a una instancia local, pero su documentaci\u00f3n indica que est\u00e1 pensado \u00fanicamente para desarrollo local y pruebas, no para producci\u00f3n. Para automatizaciones que funcionan las 24 horas, usa un VPS.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfPuedo migrar de Zapier a n8n?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No esperes una importaci\u00f3n con un clic: planea reconstruir tus flujos de trabajo en el editor visual de n8n, en lugar de importarlos desde Zapier. n8n tiene m\u00e1s de 400 integraciones, pero revisa cada aplicaci\u00f3n, disparador y acci\u00f3n que usan tus flujos actuales antes de planear la migraci\u00f3n. Los flujos simples se rearman r\u00e1pido; las secuencias complejas de varios pasos tardan m\u00e1s.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfC\u00f3mo actualizo una instancia autoalojada de n8n?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Edita la etiqueta de versi\u00f3n en tu docker-compose.yml a la versi\u00f3n que quieras, y luego ejecuta docker compose pull seguido de docker compose up -d. Con una etiqueta fijada, descargar la imagen no cambia nada por s\u00ed solo: cada actualizaci\u00f3n la eliges t\u00fa al cambiar la etiqueta. Respalda tu base de datos PostgreSQL antes de una actualizaci\u00f3n de versi\u00f3n mayor, y revisa el registro de cambios incompatibles de n8n antes de actualizar; n8n publica una nueva versi\u00f3n menor casi cada semana.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfEs n8n autoalojado lo bastante seguro para datos empresariales?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"El autoalojamiento te da control sobre d\u00f3nde guarda n8n las definiciones de flujos, las credenciales y los datos de ejecuci\u00f3n. Sin embargo, los servicios conectados siguen recibiendo los datos que tus flujos les env\u00edan, y asegurar el servidor sigue siendo tu responsabilidad. Proteger una instancia autoalojada requiere HTTPS mediante un proxy inverso, un firewall, aislamiento de red en Docker, autenticaci\u00f3n fuerte con 2FA, actualizaciones regulares y respaldos ya probados.\"}}]},{\"@type\":\"HowTo\",\"name\":\"C\u00f3mo instalar n8n en un VPS\",\"description\":\"Despliega n8n autoalojado con Docker Compose en un VPS con Ubuntu, con PostgreSQL y un proxy inverso Caddy, incluidos los respaldos y una prueba de restauraci\u00f3n.\",\"tool\":[{\"@type\":\"HowToTool\",\"name\":\"VPS con Ubuntu 22.04 o m\u00e1s reciente\"},{\"@type\":\"HowToTool\",\"name\":\"Nombre de dominio que puedas apuntar al servidor\"},{\"@type\":\"HowToTool\",\"name\":\"Acceso a la terminal por SSH\"}],\"step\":[{\"@type\":\"HowToStep\",\"position\":1,\"name\":\"Apunta tu dominio al servidor\",\"text\":\"Crea un registro DNS de tipo A para un subdominio dedicado que apunte a la direcci\u00f3n IP de tu servidor.\"},{\"@type\":\"HowToStep\",\"position\":2,\"name\":\"Refuerza el acceso por SSH\",\"text\":\"Genera un par de claves ed25519, c\u00f3pialo al servidor con ssh-copy-id y desactiva despu\u00e9s el acceso por contrase\u00f1a y como root en un archivo 00-hardening.conf, probando la configuraci\u00f3n con sshd -t y confirmando los valores efectivos con sshd -T antes de reiniciar.\"},{\"@type\":\"HowToStep\",\"position\":3,\"name\":\"Activa el firewall\",\"text\":\"Permite los puertos 22, 80 y 443 con UFW, autorizando el SSH antes de activar el firewall para no quedarte fuera.\"},{\"@type\":\"HowToStep\",\"position\":4,\"name\":\"Instala Docker y Docker Compose\",\"text\":\"Instala Docker Engine y el plugin de Compose desde el repositorio apt oficial de Docker, y verifica con hello-world.\"},{\"@type\":\"HowToStep\",\"position\":5,\"name\":\"Crea el directorio del proyecto y los secretos\",\"text\":\"Crea \/opt\/n8n-compose, genera una clave de cifrado con openssl rand -hex 32 y gu\u00e1rdala con la contrase\u00f1a de la base de datos en un archivo .env protegido con chmod 600.\"},{\"@type\":\"HowToStep\",\"position\":6,\"name\":\"Escribe el archivo de Docker Compose\",\"text\":\"Define tres servicios, Caddy, n8n fijado a una versi\u00f3n espec\u00edfica y PostgreSQL con healthcheck, publicando puertos del host solo para Caddy.\"},{\"@type\":\"HowToStep\",\"position\":7,\"name\":\"Escribe el Caddyfile\",\"text\":\"Un Caddyfile de dos l\u00edneas hace de proxy inverso de tu dominio hacia n8n:5678; Caddy obtiene y renueva autom\u00e1ticamente un certificado de confianza p\u00fablica.\"},{\"@type\":\"HowToStep\",\"position\":8,\"name\":\"Arranca y verifica\",\"text\":\"Ejecuta docker compose up -d, comprueba la instancia con curl -fsS -o \/dev\/null -w '%{http_code}' contra tu dominio y crea la cuenta de propietario.\"},{\"@type\":\"HowToStep\",\"position\":9,\"name\":\"Actualiza n8n con toda la intenci\u00f3n\",\"text\":\"Revisa el registro de cambios incompatibles, edita la etiqueta de versi\u00f3n fijada, y luego descarga la imagen y reinicia.\"},{\"@type\":\"HowToStep\",\"position\":10,\"name\":\"Programa los respaldos\",\"text\":\"Un script propiedad de root vuelca la base de datos PostgreSQL y archiva el volumen n8n_data cada d\u00eda desde el crontab de root, conservando 30 d\u00edas; copia los respaldos, el archivo .env y los archivos de configuraci\u00f3n fuera del servidor.\"},{\"@type\":\"HowToStep\",\"position\":11,\"name\":\"Prueba una restauraci\u00f3n en un VPS desechable\",\"text\":\"En un VPS desechable reci\u00e9n creado, restaura el volumen y la base de datos, despublica todos los flujos con la CLI de n8n para que los disparadores restaurados no se activen, y luego arranca el conjunto y verifica.\"}]},{\"@type\":\"SoftwareApplication\",\"name\":\"n8n\",\"applicationCategory\":\"BusinessApplication\",\"operatingSystem\":\"Linux\",\"description\":\"Plataforma fair-code de automatizaci\u00f3n de flujos de trabajo con m\u00e1s de 400 integraciones para conectar aplicaciones, mover datos y crear automatizaciones complejas desde un editor visual.\",\"url\":\"https:\/\/github.com\/n8n-io\/n8n\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"USD\",\"description\":\"La Community edition autoalojada no cobra licencias ni ejecuciones de n8n para los usos permitidos, como la automatizaci\u00f3n interna de un negocio; tu propia infraestructura de servidor la sigues pagando t\u00fa.\"},\"softwareVersion\":\"2.36.7\",\"author\":{\"@type\":\"Organization\",\"name\":\"n8n GmbH\",\"url\":\"https:\/\/n8n.io\"}}]}<\/script>\n","protected":false},"excerpt":{"rendered":"<p>El autoalojamiento de n8n cuesta $4\u201310\/mes por ejecuciones ilimitadas de flujos de trabajo. Aprende sobre las especificaciones del servidor, la configuraci\u00f3n de Docker Compose, la seguridad y cu\u00e1ndo el autoalojamiento supera a n8n Cloud.<\/p>\n","protected":false},"author":2,"featured_media":81962,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_opengraph-title":"n8n autoalojado: ejecuta n8n en tu propio servidor","_yoast_wpseo_opengraph-description":"Autoaloja n8n en un VPS sin topes de ejecuciones: gu\u00eda de 11 pasos con Docker Compose, Caddy y PostgreSQL, m\u00e1s seguridad, respaldos y costos vs. n8n Cloud.","_yoast_wpseo_twitter-title":"n8n autoalojado: ejecuta n8n en tu propio servidor","_yoast_wpseo_twitter-description":"Autoaloja n8n en un VPS sin topes de ejecuciones: gu\u00eda de 11 pasos con Docker Compose, Caddy y PostgreSQL, m\u00e1s seguridad, respaldos y costos vs. n8n Cloud.","toc_headlines":"[[\"h-what-is-n8n-and-why-are-people-self-hosting-it\",\"\u00bfQu\u00e9 es n8n y por qu\u00e9 tanta gente lo autoaloja?\"],[\"h-how-much-does-self-hosting-n8n-cost\",\"\u00bfCu\u00e1nto cuesta autoalojar n8n?\"],[\"h-what-server-specs-does-n8n-need\",\"\u00bfQu\u00e9 especificaciones de servidor necesita n8n?\"],[\"h-which-vps-should-you-choose-for-self-hosted-n8n\",\"\u00bfQu\u00e9 VPS te conviene para autoalojar n8n?\"],[\"h-how-do-you-set-up-n8n-on-a-vps\",\"\u00bfC\u00f3mo se instala n8n en un VPS?\"],[\"h-how-do-you-keep-a-self-hosted-n8n-instance-secure\",\"\u00bfC\u00f3mo mantener segura una instancia autoalojada de n8n?\"],[\"h-what-are-the-trade-offs-of-self-hosting-vs-n8n-cloud\",\"\u00bfQu\u00e9 sacrificas al autoalojar frente a usar n8n Cloud?\"],[\"h-making-the-final-call\",\"La decisi\u00f3n final: \u00bfte conviene autoalojar?\"],[\"h-frequently-asked-questions-about-self-hosting-n8n\",\"Preguntas frecuentes sobre el autoalojamiento de n8n\"]]","hide_toc":false,"show_updated_at":"1","footnotes":""},"categories":[14852,11690],"tags":[],"class_list":["post-82128","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai-es","category-vps-hosting"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>n8n autoalojado: ejecuta n8n en tu propio servidor<\/title>\n<meta name=\"description\" content=\"Autoaloja n8n en un VPS sin topes de ejecuciones: gu\u00eda de 11 pasos con Docker Compose, Caddy y PostgreSQL, m\u00e1s seguridad, respaldos y costos vs. n8n Cloud.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"n8n autoalojado: ejecuta n8n en tu propio servidor\" \/>\n<meta property=\"og:description\" content=\"Autoaloja n8n en un VPS sin topes de ejecuciones: gu\u00eda de 11 pasos con Docker Compose, Caddy y PostgreSQL, m\u00e1s seguridad, respaldos y costos vs. n8n Cloud.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-18T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-25T19:18:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_self_host_n8n.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"1095\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Dallas Kashuba\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"n8n autoalojado: ejecuta n8n en tu propio servidor\" \/>\n<meta name=\"twitter:description\" content=\"Autoaloja n8n en un VPS sin topes de ejecuciones: gu\u00eda de 11 pasos con Docker Compose, Caddy y PostgreSQL, m\u00e1s seguridad, respaldos y costos vs. n8n Cloud.\" \/>\n<meta name=\"twitter:creator\" content=\"@http:\/\/twitter.com\/dallas\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dallas Kashuba\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"16 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"n8n autoalojado: ejecuta n8n en tu propio servidor","description":"Autoaloja n8n en un VPS sin topes de ejecuciones: gu\u00eda de 11 pasos con Docker Compose, Caddy y PostgreSQL, m\u00e1s seguridad, respaldos y costos vs. n8n Cloud.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/","og_locale":"en_US","og_type":"article","og_title":"n8n autoalojado: ejecuta n8n en tu propio servidor","og_description":"Autoaloja n8n en un VPS sin topes de ejecuciones: gu\u00eda de 11 pasos con Docker Compose, Caddy y PostgreSQL, m\u00e1s seguridad, respaldos y costos vs. n8n Cloud.","og_url":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2026-06-18T15:00:00+00:00","article_modified_time":"2026-08-25T19:18:09+00:00","og_image":[{"width":1460,"height":1095,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_self_host_n8n.webp","type":"image\/webp"}],"author":"Dallas Kashuba","twitter_card":"summary_large_image","twitter_title":"n8n autoalojado: ejecuta n8n en tu propio servidor","twitter_description":"Autoaloja n8n en un VPS sin topes de ejecuciones: gu\u00eda de 11 pasos con Docker Compose, Caddy y PostgreSQL, m\u00e1s seguridad, respaldos y costos vs. n8n Cloud.","twitter_creator":"@http:\/\/twitter.com\/dallas","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Dallas Kashuba","Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/#article","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/"},"author":{"name":"Dallas Kashuba","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/f6a12ad459538e8e418cf31b8b603814"},"headline":"n8n autoalojado: c\u00f3mo ejecutar n8n en tu propio servidor","datePublished":"2026-06-18T15:00:00+00:00","dateModified":"2026-08-25T19:18:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/"},"wordCount":6500,"publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_self_host_n8n.webp","articleSection":["AI","VPS Hosting"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/","url":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/","name":"n8n autoalojado: ejecuta n8n en tu propio servidor","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/#primaryimage"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_self_host_n8n.webp","datePublished":"2026-06-18T15:00:00+00:00","dateModified":"2026-08-25T19:18:09+00:00","description":"Autoaloja n8n en un VPS sin topes de ejecuciones: gu\u00eda de 11 pasos con Docker Compose, Caddy y PostgreSQL, m\u00e1s seguridad, respaldos y costos vs. n8n Cloud.","breadcrumb":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/#primaryimage","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_self_host_n8n.webp","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460_x_1095_blog_hero_self_host_n8n.webp","width":1460,"height":1095,"caption":"How To Run n8n on Your Own Server"},{"@type":"BreadcrumbList","@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dreamhost.com\/blog\/"},{"@type":"ListItem","position":2,"name":"n8n autoalojado: c\u00f3mo ejecutar n8n en tu propio servidor"}]},{"@type":"WebSite","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website","url":"https:\/\/www-dev.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www-dev.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www-dev.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/f6a12ad459538e8e418cf31b8b603814","name":"Dallas Kashuba","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","caption":"Dallas Kashuba"},"description":"Dallas Kashuba co-founded DreamHost while attending Harvey Mudd College and has spent nearly three decades building infrastructure at scale. Today he serves as an advisor, board member, and investor for various tech startups, with a consistent focus on user privacy, open source, and data portability. When he's not thinking about the Open Web, he's probably making music. Follow Dallas on X.","sameAs":["http:\/\/www.idallas.com\/","https:\/\/x.com\/http:\/\/twitter.com\/dallas"],"url":"https:\/\/www-dev.dreamhost.com\/blog\/author\/dallas\/"}]}},"lang":"es","translations":{"es":82128,"en":83819,"uk":82113,"ru":82143,"pt":82098,"pl":82107,"de":82110,"nl":82104,"fr":82140,"it":82100},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/82128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":4,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/82128\/revisions"}],"predecessor-version":[{"id":88708,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/82128\/revisions\/88708"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/81962"}],"wp:attachment":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=82128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=82128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=82128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}