[{"data":1,"prerenderedAt":212},["ShallowReactive",2],{"seo-verification":3,"blog-desplegar-con-traefik-ma-es":6,"promo-bar-likely":211},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-desplegar-con-traefik-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":26,"featuredImage":28,"bgImage":29,"posterImage":30,"relatedSolution":28,"intro":31,"sections":32,"ctaTitle":154,"ctaBody":155,"ctaButton":156,"ctaUrl":157,"relatedPosts":158},38,"desplegar-con-traefik",{"fr":12,"en":13,"ar":14,"es":10},"deployer-avec-traefik","deploy-your-applications-with-traefik-on-a-vps","انشر-تطبيقاتك-باستخدام-traefik-على-خادم-vps","Desplegar sus aplicaciones con Traefik en un VPS","Despliegue Traefik como reverse proxy en su VPS: enrutamiento automático de los contenedores Docker, certificados SSL Let's Encrypt y balanceo de carga.",11,3,false,"2026-05-13T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":18,"name":23,"slug":24,"color":25,"icon":24},"Despliegue","deploiement","bg-success\u002F10 text-success",[27],{"id":18,"name":23,"slug":24,"color":25,"icon":24},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-avec-traefik-poster.svg","Traefik es un reverse proxy y balanceador de carga cloud-native que descubre sus contenedores Docker automáticamente y les asigna rutas y certificados SSL sin recarga manual. Desplegado en su VPS, se convierte en la puerta de entrada única de todas sus aplicaciones, con una configuración declarativa mediante labels Docker. Esta guía instala la rama v3 (v3.7 en el momento de escribir), con HTTPS Let's Encrypt, dashboard protegido, HTTP\u002F3, middlewares de producción y las trampas que conviene conocer si viene de Traefik v2.",[33,37,49,52,77,80,88,91,94,97,106,140,143,151],{"type":34,"title":35,"body":36},"h2","¿Por qué poner Traefik al frente de su VPS?","Cuando ejecuta varias aplicaciones en contenedores sobre un mismo VPS, gestionar manualmente los virtual hosts de Nginx y renovar cada certificado se vuelve rápidamente inmanejable. Traefik resuelve ese problema leyendo directamente los labels de sus contenedores Docker: usted declara una ruta en el momento del `docker run` o en su `docker-compose.yml`, y Traefik la configura en caliente, genera el certificado Let's Encrypt y la expone por HTTPS. Ningún archivo de configuración que editar, ningún reload: todo es dinámico.\n\nNginx sigue siendo un servidor HTTP excelente, pero su configuración es estática: cada servicio nuevo exige un vhost, un `nginx -s reload` y una herramienta ACME aparte (certbot y su tarea de renovación). Traefik se diseñó para una topología que cambia sin cesar, que es justo el caso de un VPS donde se añaden, actualizan y retiran contenedores cada semana. La rama v3, publicada en abril de 2024, estabilizó HTTP\u002F3 y la exportación de trazas con OpenTelemetry, y endureció la sintaxis de las reglas de enrutamiento.",{"type":38,"title":39,"items":40},"ul","Lo que Traefik aporta en concreto en un VPS",[41,42,43,44,45,46,47,48],"Descubrimiento automático de los contenedores Docker mediante el provider Docker (las rutas aparecen sin reiniciar)","Certificados SSL Let's Encrypt generados y renovados automáticamente (challenges HTTP-01, TLS-ALPN-01 o DNS-01), renovados por defecto 30 días antes de caducar","Enrutamiento por dominio, por ruta o por cabecera, gestionado íntegramente mediante los labels Docker","Dashboard web integrado para visualizar routers, servicios y middlewares en tiempo real","Middlewares listos para usar: redirección HTTPS, basic auth, rate limiting, cabeceras de seguridad, compresión","Balanceo de carga automático cuando escala un servicio a varias réplicas","HTTP\u002F3 (QUIC) activable en un entrypoint con una sola opción","Otros providers además de Docker (Swarm, Kubernetes, Nomad, archivos) si su infraestructura crece",{"type":34,"title":50,"body":51},"Requisitos previos","Traefik en sí es muy ligero: 1 vCPU y 1 GB de RAM bastan de sobra para el proxy solo, ya que el sobrecoste viene de sus aplicaciones que están detrás. Prevea un VPS con Debian 12 o Ubuntu 22.04\u002F24.04 con Docker Engine y el plugin Docker Compose v2 instalados (el comando `docker compose`, sin guion), un nombre de dominio cuyos registros A\u002FAAAA apunten a la IP del VPS **antes** del primer arranque (si no, Let's Encrypt no puede validar el dominio), y los puertos 80 y 443 abiertos en entrada en su cortafuegos (UFW), en TCP, más el 443 en UDP si activa HTTP\u002F3. Tenga a mano una dirección de correo válida para la cuenta ACME. Para los certificados wildcard, también necesitará un acceso a la API de su proveedor de DNS.",{"type":53,"title":54,"steps":55},"steps","Desplegar Traefik con Docker Compose",[56,59,62,65,68,71,74],{"title":57,"body":58},"Crear la red y la estructura de carpetas","Cree una red Docker compartida que usarán Traefik y sus aplicaciones, y luego una carpeta dedicada que contenga el archivo `acme.json` (el almacén de los certificados y de sus claves privadas):\n\n```bash\ndocker network create proxy\nmkdir -p \u002Fopt\u002Ftraefik && cd \u002Fopt\u002Ftraefik\ntouch acme.json && chmod 600 acme.json\n```\n\nCree el archivo **antes** del primer arranque: si la ruta montada no existe, Docker crea una carpeta en su lugar y Traefik ya no puede escribir en ella. Los permisos 600 son obligatorios: Traefik rechaza un archivo legible por otros usuarios.",{"title":60,"body":61},"Configurar los entrypoints y el resolutor ACME","Coloque este archivo en `\u002Fopt\u002Ftraefik\u002Fdocker-compose.yml`. Declara dos entrypoints (`web` en :80, `websecure` en :443), un certificateResolver de Let's Encrypt validado por el challenge HTTP, el descubrimiento de los contenedores mediante el socket de Docker montado en solo lectura, y el dashboard:\n\n```yaml\nservices:\n  traefik:\n    image: traefik:v3.7\n    container_name: traefik\n    restart: unless-stopped\n    ports:\n      - \"80:80\"\n      - \"443:443\"\n      - \"443:443\u002Fudp\"\n    command:\n      - \"--providers.docker=true\"\n      - \"--providers.docker.exposedbydefault=false\"\n      - \"--providers.docker.network=proxy\"\n      - \"--entrypoints.web.address=:80\"\n      - \"--entrypoints.web.http.redirections.entrypoint.to=websecure\"\n      - \"--entrypoints.web.http.redirections.entrypoint.scheme=https\"\n      - \"--entrypoints.websecure.address=:443\"\n      - \"--entrypoints.websecure.http3=true\"\n      - \"--certificatesresolvers.letsencrypt.acme.email=admin@example.com\"\n      - \"--certificatesresolvers.letsencrypt.acme.storage=\u002Facme.json\"\n      - \"--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web\"\n      - \"--api.dashboard=true\"\n    volumes:\n      - \"\u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro\"\n      - \".\u002Facme.json:\u002Facme.json\"\n    networks:\n      - proxy\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.dashboard.rule=Host(`traefik.example.com`)\"\n      - \"traefik.http.routers.dashboard.entrypoints=websecure\"\n      - \"traefik.http.routers.dashboard.tls.certresolver=letsencrypt\"\n      - \"traefik.http.routers.dashboard.service=api@internal\"\n      - \"traefik.http.routers.dashboard.middlewares=dashboard-auth\"\n      - \"traefik.http.middlewares.dashboard-auth.basicauth.users=admin:$$2y$$05$$REMPLACER_PAR_LE_HASH\"\n\nnetworks:\n  proxy:\n    external: true\n```\n\nLa opción `exposedbydefault=false` es esencial: sin ella, cada contenedor del VPS quedaría publicado, incluida su base de datos. Fije la rama (`v3.7`) en lugar de `latest` y siga las releases antes de cambiar de versión menor.",{"title":63,"body":64},"Forzar la redirección de HTTP a HTTPS","La redirección se declara directamente en el entrypoint `web`, con las dos opciones `--entrypoints.web.http.redirections.entrypoint.to=websecure` y `...entrypoint.scheme=https` ya presentes en el archivo anterior. Es más simple y más seguro que un router «catch-all» con middleware: todo el tráfico en claro pasa a HTTPS mediante una redirección permanente, sin label que repetir en cada servicio, y el challenge HTTP de Let's Encrypt sigue pasando por el puerto 80.",{"title":66,"body":67},"Asegurar el dashboard","El dashboard se expone en `traefik.example.com`, detrás del middleware `basicauth` llamado `dashboard-auth`. Genere un hash bcrypt (paquete `apache2-utils` en Debian\u002FUbuntu) duplicando los `$`, como exige un valor de label en un archivo Compose:\n\n```bash\napt install -y apache2-utils\nhtpasswd -nB admin | sed -e 's\u002F\\$\u002F\\$\\$\u002Fg'\n```\n\nPegue el resultado en lugar de `admin:$$2y$$05$$REMPLACER_PAR_LE_HASH`. Un hash pegado con `$` simples lo interpreta Compose como variables y rompe la autenticación. No deje nunca el flag `--api.insecure=true` en producción: publica el dashboard sin autenticación.",{"title":69,"body":70},"Lanzar Traefik","Arranque el stack y siga los logs:\n\n```bash\ncd \u002Fopt\u002Ftraefik\ndocker compose up -d\ndocker compose logs -f traefik\n```\n\nDebe ver arrancar el provider Docker y luego engancharse el router `dashboard`, sin errores ACME. Durante sus pruebas, añada temporalmente `--certificatesresolvers.letsencrypt.acme.caserver=https:\u002F\u002Facme-staging-v02.api.letsencrypt.org\u002Fdirectory`: el servidor de staging de Let's Encrypt emite certificados que los navegadores no reconocen, pero le protege del rate limit de producción si una configuración falla en bucle. Retire la opción y vacíe `acme.json` antes de pasar a producción.",{"title":72,"body":73},"Conectar una aplicación","Cada aplicación vive en su propio `docker-compose.yml`, conectada a la red `proxy` y descrita por sus labels:\n\n```yaml\nservices:\n  app:\n    image: ghcr.io\u002Fexample\u002Fapp:1.0.0\n    restart: unless-stopped\n    networks:\n      - proxy\n    labels:\n      - \"traefik.enable=true\"\n      - \"traefik.http.routers.app.rule=Host(`app.example.com`)\"\n      - \"traefik.http.routers.app.entrypoints=websecure\"\n      - \"traefik.http.routers.app.tls.certresolver=letsencrypt\"\n      - \"traefik.http.services.app.loadbalancer.server.port=3000\"\n\nnetworks:\n  proxy:\n    external: true\n```\n\nAl hacer `docker compose up -d`, Traefik detecta el contenedor, obtiene el certificado y activa la ruta en unos segundos, sin tocar su propia configuración. El label `loadbalancer.server.port` indica el puerto interno de la aplicación; se vuelve imprescindible en cuanto la imagen expone varios. El nombre del router (`app` aquí) debe ser único en todo el VPS.",{"title":75,"body":76},"Comprobar el certificado y la redirección","Compruebe desde una máquina externa al VPS:\n\n```bash\ncurl -I http:\u002F\u002Fapp.example.com\ncurl -I https:\u002F\u002Fapp.example.com\ndig +short app.example.com\n```\n\nLa primera petición debe devolver una redirección permanente hacia `https:\u002F\u002F`, la segunda un `200` (o el código de su aplicación) servido con un certificado Let's Encrypt válido, y `dig` debe mostrar la IP del VPS. El dashboard también lista cada router con su resolutor de certificados. Un puerto 80 que rechaza la conexión casi siempre apunta al cortafuegos.",{"type":34,"title":78,"body":79},"Middlewares útiles en producción","Un middleware de Traefik se declara por label, una sola vez, y después se asocia a uno o varios routers con `traefik.http.routers.\u003Crouter>.middlewares=\u003Cnombre1>,\u003Cnombre2>`. Así que los define en el servicio afectado, sin tocar la configuración central de Traefik. Estos son los que sirven en casi todos los VPS.",{"type":38,"title":81,"items":82},"Cinco middlewares que conviene conocer",[83,84,85,86,87],"**BasicAuth en una herramienta de administración** (Adminer, Flower…): `traefik.http.middlewares.adminauth.basicauth.users=admin:$$2y$$05$$...`, y después `traefik.http.routers.miadmin.middlewares=adminauth`. La misma regla de `$` duplicados que para el dashboard.","**Rate limit** delante de una API o un formulario: `traefik.http.middlewares.ratelimit.ratelimit.average=100`, `...ratelimit.period=1s` y `...ratelimit.burst=200` permiten 100 peticiones por segundo de media, con ráfagas de hasta 200. Sin `average`, el límite está desactivado.","**Cabeceras de seguridad**: el middleware `headers` añade HSTS (`stsSeconds=31536000`, `stsIncludeSubdomains=true`), `X-Frame-Options: DENY` (`frameDeny=true`) y `X-Content-Type-Options: nosniff` (`contentTypeNosniff=true`), sin archivo de configuración aparte.","**Redirección de www al dominio desnudo**: `redirectregex` con `regex=^https:\u002F\u002Fwww\\.(.+)`, `replacement=https:\u002F\u002F$${1}` y `permanent=true`. Recuerde declarar los dos hosts en la regla del router para que el certificado cubra `www`.","**Compresión**: `traefik.http.middlewares.compress.compress=true` activa gzip, Brotli y Zstandard según lo que acepte el navegador, sin ajuste en la aplicación.",{"type":89,"body":90},"tip","Para obtener un certificado wildcard (`*.example.com`) y evitar exponer cada subdominio, pase del `httpChallenge` al `dnsChallenge`: es el único challenge que emite un wildcard. Con Cloudflare, declare `--certificatesresolvers.letsencrypt.acme.dnschallenge.provider=cloudflare` y pase a Traefik la variable `CF_DNS_API_TOKEN`, un token de API limitado a los permisos Zone \u002F DNS \u002F Edit y Zone \u002F Zone \u002F Read. El antiguo par `CF_API_EMAIL` + `CF_API_KEY` también funciona, pero exige la clave de API global, que abre toda la cuenta: prefiera el token. Traefik demuestra entonces la propiedad del dominio con un registro TXT, lo que funciona incluso para servicios que no están expuestos públicamente.",{"type":34,"title":92,"body":93},"Activar HTTP\u002F3 (QUIC)","El archivo Compose anterior ya lo activa: `--entrypoints.websecure.http3=true` en el entrypoint TLS y la publicación del puerto `443:443\u002Fudp`. Traefik escucha entonces en UDP en el mismo puerto que el entrypoint TCP; una conexión empieza siempre en TCP y luego el navegador pasa a QUIC en la siguiente vuelta. Dos condiciones: solo los routers con TLS se sirven en HTTP\u002F3, y el cortafuegos debe dejar pasar el puerto 443 en UDP (`ufw allow 443\u002Fudp`). Si publica un puerto UDP distinto del del entrypoint, la opción `http3.advertisedPort` anuncia el correcto. Para comprobarlo, use un `curl` compilado con HTTP\u002F3: `curl --http3 -I https:\u002F\u002Fapp.example.com`.",{"type":34,"title":95,"body":96},"Venir de Traefik v2: lo que se rompe","La v3 mantiene compatible la configuración de enrutamiento v2, pero cambia la sintaxis por defecto de las reglas y se niega a arrancar con varias opciones retiradas. Para migrar sin reescribirlo todo de golpe, añada `--core.defaultRuleSyntax=v2` en la configuración de instalación: sus reglas antiguas siguen funcionando, pasa los routers uno a uno a la sintaxis v3 y después retira la opción. Los logs de Traefik señalan cada opción obsoleta que siga en uso: léalos tras el primer arranque. Los cambios que más a menudo atrapan:",{"type":38,"title":98,"items":99},"Cambios incompatibles de la v3",[100,101,102,103,104,105],"**Swarm**: la opción `swarmMode` del provider Docker ya no existe y bloquea el arranque. Docker Swarm tiene ahora su propio provider (`--providers.swarm`).","**Reglas de enrutamiento**: `Headers` y `HeadersRegexp` pasan a ser `Header` y `HeaderRegexp`, `HostHeader` desaparece en favor de `Host`, y la mayoría de los matchers solo aceptan ya un valor.","**Rutas**: `Path` y `PathPrefix` ya no leen expresiones regulares ni placeholders como `{id}`; una ruta así ya no coincide con nada. Pase a `PathRegexp`, que sigue la sintaxis regexp de Go, como `HostRegexp`.","**Middlewares renombrados o recortados**: `IPWhiteList` pasa a ser `IPAllowList` (mismas opciones); el middleware `headers` pierde `sslRedirect`, `sslTemporaryRedirect`, `sslHost`, `sslForceHost` y `featurePolicy`.","**Content-Type**: Traefik ya no adivina el tipo de una respuesta que el backend no ha tipado; añada el middleware `ContentType` si una aplicación depende de ello.","**Providers y observabilidad retirados**: Marathon, Rancher v1, Traefik Pilot y las métricas InfluxDB v1 impiden el arranque; el tracing pasa únicamente por OpenTelemetry (sin exportación directa a Jaeger, Zipkin o Datadog).",{"type":107,"title":108,"headers":109,"rows":114},"comparison","Traefik v3, Nginx o Caddy delante de sus contenedores",[110,111,112,113],"Criterio","Traefik v3","Nginx","Caddy 2",[115,120,125,130,135],[116,117,118,119],"Configuración","Labels Docker, YAML o TOML, aplicados en caliente","Archivos vhost estáticos, `nginx -s reload` en cada cambio","Caddyfile o API JSON, recarga sin corte",[121,122,123,124],"HTTPS automático","Integrado (ACME: HTTP-01, TLS-ALPN-01, DNS-01)","Herramienta externa (certbot) y tarea de renovación","Integrado y activo por defecto",[126,127,128,129],"Descubrimiento de contenedores","Nativo, mediante el socket de Docker","Ausente: herramienta de terceros o edición manual","Mediante el módulo comunitario caddy-docker-proxy",[131,132,133,134],"HTTP\u002F3","Estable desde la v3.0 (abril de 2024), una opción por entrypoint","Experimental desde nginx 1.25.0 (mayo de 2023), configuración dedicada","Activo por defecto desde Caddy 2.6 (septiembre de 2022)",[136,137,138,139],"Curva de aprendizaje","Media: routers, servicios y middlewares que asimilar","Conocido por todos, pero HTTPS + Docker exigen herramientas","La más rápida para unos pocos sitios",{"type":34,"title":141,"body":142},"Resolución de problemas: los errores más frecuentes","La mayoría de los incidentes de Traefik vienen de cuatro fuentes: el DNS o el cortafuegos que impiden la validación de Let's Encrypt, el archivo `acme.json`, una red Docker que falta y labels mal escritos. Los síntomas y sus correcciones:",{"type":38,"title":144,"items":145},"Síntomas y correcciones",[146,147,148,149,150],"**Certificado no obtenido, error ACME `unauthorized` o `403` en los logs**: Let's Encrypt no alcanza su dominio. Compruebe desde fuera que el puerto 80 responde (`curl -I http:\u002F\u002Fapp.example.com`) y que el DNS apunta al VPS (`dig +short app.example.com`). Detrás de un CDN en modo proxy, prefiera el `dnsChallenge`.","**`permissions 644 for \u002Facme.json are too open, please use 600`**: el resolutor rechaza el archivo. Corríjalo con `chmod 600 \u002Fopt\u002Ftraefik\u002Facme.json` y reinicie Traefik; este control protege las claves privadas que contiene.","**Ruta visible en el dashboard pero `502 Bad Gateway`**: el contenedor no está en la red `proxy`, o el puerto interno es incorrecto. Compruébelo con `docker inspect \u003Ccontenedor>` (sección `Networks`), añada la red o el label `loadbalancer.server.port` y recree el contenedor. En un contenedor conectado a varias redes, el label `traefik.docker.network=proxy` elimina la ambigüedad.","**Labels ignorados, ruta ausente del dashboard**: falta `traefik.enable=true` (obligatorio con `exposedbydefault=false`), o dos servicios declaran el mismo nombre de router. Los logs de Traefik señalan entonces el conflicto.","**BasicAuth que rechaza una contraseña correcta**: los `$` del hash no están duplicados en el `docker-compose.yml`. En un archivo Compose, cada `$` se convierte en `$$`; en un archivo de configuración dinámica YAML o TOML, el hash se pega tal cual.",{"type":34,"title":152,"body":153},"Siguiente paso: endurecer el stack","Traefik resuelve el enrutamiento y el TLS, pero un stack listo para producción exige más: healthchecks, política de reinicio, rotación de logs, secretos fuera del archivo Compose y copias de seguridad de los volúmenes (incluido `acme.json`). Nuestro \u003Ca href=\"\u002Fes\u002Fblog\u002Fchecklist-docker-compose-en-produccion\">checklist de Docker Compose en producción\u003C\u002Fa> repasa esos puntos uno por uno. Y si aún duda sobre la herramienta, la \u003Ca href=\"\u002Fes\u002Fblog\u002Felegir-reverse-proxy-vps-caddy-traefik-nginx\">comparativa de Caddy, Traefik y Nginx Proxy Manager\u003C\u002Fa> le ayuda a decidir según el número de servicios y la necesidad de descubrimiento automático.","Lance Traefik en unos minutos en un VPS Cloud ServOrbit","Pida un VPS Cloud con Docker preinstalado y despliegue su stack Traefik a partir de la plantilla Despliegue. Sus aplicaciones se enrutan por HTTPS automáticamente.","Ver los VPS Cloud","\u002Fvps-cloud",[159,179,195],{"id":160,"slug":161,"slugs":162,"title":166,"excerpt":167,"readTime":168,"views":169,"isPinned":19,"noindex":19,"publishedAt":170,"updatedAt":171,"category":172,"categories":173,"featuredImage":28,"bgImage":29,"posterImage":175,"relatedSolution":176},33,"desplegar-aplicaciones-con-caprover-en-un-vps",{"fr":163,"en":164,"ar":165,"es":161},"deployer-avec-caprover","deploy-your-applications-with-caprover-on-a-vps","انشر-تطبيقاتك-باستخدام-caprover-على-خادم-vps","Desplegar sus aplicaciones con CapRover en un VPS","Guía completa de CapRover: instalación, captain-definition, CI\u002FCD con GitHub Actions, clúster multinodo, copias de seguridad y resolución de problemas.",10,2,"2026-05-18T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":18,"name":23,"slug":24,"color":25,"icon":24},[174],{"id":18,"name":23,"slug":24,"color":25,"icon":24},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caprover-poster.svg",{"categorySlug":177,"appSlug":178},"despliegue-de-aplicaciones-devops","caprover",{"id":180,"slug":181,"slugs":182,"title":186,"excerpt":187,"readTime":17,"views":188,"isPinned":19,"noindex":19,"publishedAt":189,"updatedAt":190,"category":191,"categories":192,"featuredImage":28,"bgImage":29,"posterImage":194,"relatedSolution":28},34,"desplegar-aplicaciones-con-dokku-en-un-vps",{"fr":183,"en":184,"ar":185,"es":181},"deployer-avec-dokku","deploy-your-applications-with-dokku-on-a-vps","انشر-تطبيقاتك-باستخدام-dokku-على-خادم-vps","Desplegar sus aplicaciones con Dokku en un VPS","Guía completa de Dokku v0.35: instalación, buildpacks, variables de entorno, rollback, plugins postgres\u002Fredis\u002Fletsencrypt y resolución de errores frecuentes.",1,"2026-05-17T00:00:00+00:00","2026-10-18T21:57:59+00:00",{"id":18,"name":23,"slug":24,"color":25,"icon":24},[193],{"id":18,"name":23,"slug":24,"color":25,"icon":24},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-dokku-poster.svg",{"id":196,"slug":197,"slugs":198,"title":202,"excerpt":203,"readTime":168,"views":188,"isPinned":19,"noindex":19,"publishedAt":204,"updatedAt":171,"category":205,"categories":206,"featuredImage":28,"bgImage":29,"posterImage":208,"relatedSolution":209},35,"desplegar-aplicaciones-con-portainer-en-un-vps",{"fr":199,"en":200,"ar":201,"es":197},"deployer-avec-portainer","deploy-your-applications-with-portainer-on-a-vps","انشر-تطبيقاتك-باستخدام-portainer-على-خادم-vps","Desplegar sus aplicaciones con Portainer en un VPS","Pilote Docker visualmente con Portainer en su VPS: contenedores, stacks, volúmenes y redes gestionados desde una interfaz web clara.","2026-05-16T00:00:00+00:00",{"id":18,"name":23,"slug":24,"color":25,"icon":24},[207],{"id":18,"name":23,"slug":24,"color":25,"icon":24},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-portainer-poster.svg",{"categorySlug":177,"appSlug":210},"portainer",true,1794270590000]