[{"data":1,"prerenderedAt":214},["ShallowReactive",2],{"seo-verification":3,"blog-desplegar-netbird-vpn-mesh-wireguard-en-vps-ma-es":6,"promo-bar-likely":213},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-desplegar-netbird-vpn-mesh-wireguard-en-vps-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":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":29,"intro":32,"sections":33,"ctaTitle":148,"ctaBody":149,"ctaButton":150,"ctaUrl":151,"relatedPosts":152},291,"desplegar-netbird-vpn-mesh-wireguard-en-vps",{"fr":12,"en":13,"ar":14,"es":10},"deployer-netbird-controle-vpn-mesh-vps","netbird-self-hosted-wireguard-mesh-vpn-on-a-vps","netbird-شبكة-vpn-مشبكة-wireguard-باستضافة-ذاتية","Netbird: red mesh WireGuard autoalojada en un VPS","Conecte VPS de clientes sin abrir puertos: despliegue el plano de control Netbird (servidor combinado, relé, interfaz web) y aísle cada cliente.",18,4,false,"2026-08-21T00:00:00+00:00","2026-11-09T20:55:15+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},3,"Despliegue","deploiement","bg-success\u002F10 text-success",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-netbird-controle-vpn-mesh-vps-poster.svg","Usted gestiona servidores repartidos en varias cuentas de clientes y acaba abriendo puertos, manteniendo reglas UFW distintas o distribuyendo claves WireGuard estáticas a mano. Headscale responde a la misma necesidad para una red plana — le dedicamos \u003Ca href=\"\u002Fes\u002Fblog\u002Fauto-alojar-headscale-en-un-vps-servidor-tailscale\">una guía específica\u003C\u002Fa>. Netbird es otra respuesta, pensada para gestionar varias redes aisladas: grupos de pares, reglas de acceso por red e interfaz web incluida. Esta guía despliega el plano de control Netbird (más de 30 000 estrellas en GitHub, AGPLv3 en el lado del servidor) en un VPS dedicado, conecta tres nodos en malla sin abrir un solo puerto público y después aborda el aislamiento por cliente, la publicación de un servicio con `netbird expose` y la resolución de problemas.",[34,38,41,44,69,72,75,78,112,115,119,122,125,134,137,145],{"type":35,"title":36,"body":37},"h2","WireGuard estático, Headscale, Netbird: tres enfoques distintos","WireGuard estático (vea \u003Ca href=\"\u002Fes\u002Fblog\u002Fwireguard-en-un-vps-vpn-rapido-y-privado\">nuestra guía de WireGuard\u003C\u002Fa>) se basa en una configuración fija: cada par debe conocer la clave pública y la dirección accesible de sus homólogos, y cada nuevo par obliga a editar `\u002Fetc\u002Fwireguard\u002Fwg0.conf` en los demás. Eficaz para dos o tres servidores fijos. Inmanejable en cuanto un parque de agencia mezcla VPS, portátiles itinerantes y oficinas detrás de un CGNAT: añadir una máquina significa retocar todas las demás; retirar a un técnico significa revocar su clave en todas partes.\n\nHeadscale reimplementa el servidor de coordinación de Tailscale: conserva los clientes oficiales de Tailscale y obtiene una red plana sin tope de usuarios. El aislamiento entre clientes pasa por un único archivo de política ACL para toda la red. Es la opción adecuada para un solo equipo que quiere seguir en el ecosistema Tailscale.\n\nNetbird toma el camino contrario: aporta su propio cliente, su propio plano de control y una noción de **grupos** unidos por reglas de acceso granulares, gestionadas desde la interfaz web incluida de serie. Una sola instancia puede alojar varios parques completamente separados, lo que la convierte en la herramienta natural para una agencia que gestiona clientes distintos.",{"type":35,"title":39,"body":40},"Arquitectura de Netbird: un servidor combinado","El script de instalación actual ya no despliega cuatro contenedores separados. Genera una pila Docker Compose de tres servicios:\n\n**`netbird-server`** — el servidor combinado. Reúne en un solo contenedor el **Management** (distribución de claves WireGuard, aplicación de las reglas de acceso, API REST), el **Signal** (intercambio de descriptores de conexión ICE entre pares), el **Relay** y un servidor **STUN** integrado. Se configura con un único `config.yaml`, que sustituye a los antiguos `management.json` y `relay.env`. Almacenamiento SQLite por defecto, PostgreSQL como opción.\n\n**`netbird-dashboard`** — la interfaz web que consume la API de Management: grupos, pares, reglas de acceso y claves de alta, sin línea de comandos.\n\n**`netbird-traefik`** — el proxy inverso que termina el TLS (certificado Let's Encrypt automático) y enruta el gRPC, el WebSocket y la API hacia el servidor.\n\nDos cambios importan respecto a los tutoriales antiguos. El relé ya no es COTURN: desde la v0.29, Netbird usa su propia implementación, que hace pasar las conexiones retransmitidas por el puerto 443 (WebSocket sobre TCP, o QUIC sobre UDP) en lugar de asignar un rango de puertos UDP. Y la autenticación está integrada: desde la v0.62, un proveedor de identidad embebido (basado en Dex) gestiona los usuarios locales, sin Zitadel ni Keycloak que desplegar. Un quinto servicio, el **proxy de Netbird**, se añade si lo activa para publicar servicios en Internet (vea más abajo).\n\nTodos los flujos entre clientes pasan por **WireGuard cifrado de extremo a extremo**: el servidor solo ve los metadatos de alta, nunca el tráfico de las aplicaciones. En cuanto a licencias, el cliente está bajo BSD-3-Clause; los directorios `management\u002F`, `signal\u002F`, `relay\u002F` y `combined\u002F` del repositorio están bajo AGPLv3.",{"type":35,"title":42,"body":43},"Requisitos previos","**Un VPS dedicado al plano de control.** Prevea un VPS distinto de sus nodos de cliente. La documentación de Netbird pide al menos 1 vCPU y 2 GB de RAM; un VPS Solo sirve para empezar.\n\n**Puertos que abrir en el VPS de control:**\n\n`80` (TCP) — validación de Let's Encrypt y redirección a HTTPS.\n`443` (TCP) — Dashboard, API y gRPC de Management, Signal, Relay por WebSocket.\n`3478` (UDP) — STUN integrado en el servidor.\n\nEl rango UDP `49152-65535` ya no es necesario: solo servía al relé COTURN de las versiones anteriores a la v0.29, y solo se mantiene abierto si clientes antiguos aún dependen de él. Los nodos de cliente no tienen **ningún puerto entrante que abrir**: el cliente Netbird establece conexiones salientes hacia el plano de control.\n\n**Software necesario en el VPS de control:** Docker con el plugin Compose, `jq` y `curl`, y un nombre de dominio cuyo registro A apunte a la IP del VPS (`netbird.su-dominio.com`). Si activa el proxy de Netbird, añada un CNAME `*.netbird` hacia ese mismo nombre. Detrás de Cloudflare, la documentación de Netbird deja ambos registros en modo solo DNS.\n\n**En cada nodo de cliente:** el cliente `netbird` (paquete Debian\u002FRPM o binario estático), acceso root o sudo.",{"type":45,"title":46,"steps":47},"steps","Desplegar el plano de control y conectar tres nodos",[48,51,54,57,60,63,66],{"title":49,"body":50},"Ejecutar el script de instalación","En el VPS de control, descargue el script oficial y ejecútelo:\n\n```bash\ncurl -fsSL https:\u002F\u002Fgithub.com\u002Fnetbirdio\u002Fnetbird\u002Freleases\u002Flatest\u002Fdownload\u002Fgetting-started.sh | bash\n```\n\nEl script le pide su dominio (`netbird.su-dominio.com`) y luego el proxy inverso que usar: conserve la opción `[0]` (Traefik integrado, TLS automático). Después propone activar el proxy de Netbird, que también puede añadir más adelante. Genera `docker-compose.yml`, `config.yaml` y `dashboard.env` (más `proxy.env` si el proxy está activado) y arranca la pila. Para una instalación sin preguntas (cloud-init, CI), exporte antes `NETBIRD_DOMAIN`, `NETBIRD_LETSENCRYPT_EMAIL` y `NETBIRD_NON_INTERACTIVE=true`.",{"title":52,"body":53},"Comprobar que los servicios responden","Desde el directorio de instalación, confirme que los contenedores están en marcha:\n\n```bash\ndocker compose ps\n```\n\nDebe ver `netbird-traefik`, `netbird-dashboard` y `netbird-server` en estado `running` (más el proxy si está activado). En caso de duda, la mayoría de los errores de configuración aparecen en el registro del servidor:\n\n```bash\ndocker compose logs -f netbird-server\n```",{"title":55,"body":56},"Crear la cuenta de administrador y una Setup Key","Abra `https:\u002F\u002Fnetbird.su-dominio.com` en un navegador. El script despliega Netbird **sin ningún usuario**: se le redirige a la página `\u002Fsetup`, donde crea la cuenta de administrador (correo, nombre, contraseña). Esta página solo está disponible mientras no exista ningún usuario.\n\nEn el menú **Setup Keys**, haga clic en **Create Setup Key**. Póngale un nombre (`vps-client-a`), elija el tipo `Reusable` (para dar de alta varias máquinas con la misma clave) y una duración de caducidad. Copie la clave: la necesitará en cada nodo.",{"title":58,"body":59},"Dar de alta el nodo 1","En el primer VPS de cliente, instale el cliente Netbird:\n\n```bash\ncurl -fsSL https:\u002F\u002Fpkgs.netbird.io\u002Finstall.sh | sh\n```\n\nDespués conéctelo al plano de control apuntando a su instancia (sin `--management-url`, el cliente apunta al servicio en la nube de Netbird):\n\n```bash\nnetbird up \\\n  --management-url https:\u002F\u002Fnetbird.su-dominio.com \\\n  --setup-key \u003CSU_SETUP_KEY>\n```\n\nConfirme la conexión:\n\n```bash\nnetbird status\n```\n\nDebe leer `Management: Connected` y `Signal: Connected`, además de una IP de malla en el rango `100.64.x.x` asignada por su servidor.",{"title":61,"body":62},"Dar de alta los nodos 2 y 3","Repita exactamente el mismo procedimiento en los otros dos VPS de cliente. Mismo comando `curl` para instalar el cliente, mismo comando `netbird up` con el mismo `--management-url` y la misma `--setup-key` (si es de tipo `Reusable`).\n\nUna vez dados de alta los tres nodos, compruebe desde el nodo 1 que los pares son visibles:\n\n```bash\nnetbird status --detail\n```\n\nLa salida enumera cada par con su IP de malla, su estado y su latencia. Desde la v0.82, `netbird status --table` presenta la misma información en forma de tabla.",{"title":64,"body":65},"Probar la conectividad de la malla sin puerto público abierto","Antes de probar, compruebe el estado del cortafuegos en el nodo 1 — no debe haber ningún puerto entrante abierto hacia los demás nodos:\n\n```bash\nsudo ufw status numbered\n```\n\nSolo debe aparecer el puerto SSH (22). Ahora haga ping al nodo 2 por su IP de malla (visible en `netbird status --detail`, por ejemplo `100.64.0.2`):\n\n```bash\nping -c 3 100.64.0.2\n```\n\nEl ping atraviesa el túnel WireGuard establecido entre los pares. Si una conexión directa es imposible, el relé integrado en el servidor toma el relevo en el puerto 443: el ping funciona en ambos casos, sin ninguna regla UFW adicional.",{"title":67,"body":68},"Distinguir conexiones directas y retransmitidas","Para saber si un par conecta en directo o a través del relé:\n\n```bash\nnetbird status --detail\n```\n\nEl campo `Connection type` muestra `P2P` para una conexión directa o `Relayed` cuando el tráfico pasa por el relé. Para listar solo los pares retransmitidos:\n\n```bash\nnetbird status -d --filter-by-connection-type Relayed\n```\n\n`P2P` es el estado esperado entre dos VPS con IPv4 pública. `Relayed` sigue cifrado de extremo a extremo, pero añade latencia: la sección de resolución de problemas indica qué comprobar.",{"type":35,"title":70,"body":71},"Aislamiento multicliente: grupos y reglas de acceso","La fuerza de Netbird frente a Headscale es la separación por **grupo**, gestionada desde la interfaz. Un punto que conocer primero: al crear la cuenta, Netbird establece una política **Default** que permite a todos los pares del grupo especial `All` comunicarse entre sí. Mientras exista, ningún aislamiento se sostiene. Para separar los servidores del cliente A de los del cliente B:\n\n**1. Cree un grupo por cliente** en la interfaz web (`client-a`, `client-b`) y un grupo `agencia-ops` para los equipos del personal.\n\n**2. Asigne cada par a su grupo.** En la ficha del par, en la sección de grupos, añada el grupo correspondiente. Una Setup Key también puede asignar un grupo automáticamente a cada máquina dada de alta con ella: prevea una clave por cliente.\n\n**3. Defina las reglas de acceso** (Access Control → Policies). Una política `client-a-interna` autoriza el tráfico entre pares del grupo `client-a`. Una política `ops-ssh` autoriza solo al grupo `agencia-ops` a alcanzar el puerto 22 de los grupos de clientes: un equipo comprometido dentro de la malla ya no puede servir de trampolín hacia todos los VPS. No se crea ninguna regla entre `client-a` y `client-b`.\n\n**4. Elimine la política Default** una vez que las políticas de sustitución estén en su sitio. En el orden inverso, toda comunicación entre pares se detiene.\n\nResultado: el equipo de un administrador del cliente A alcanza el VPS A por su IP de malla pero no ve el VPS B, y el grupo `agencia-ops` sigue siendo el único miembro transversal. También puede definir **Network Routes**: un par actúa como router de una subred privada (p. ej. `192.168.10.0\u002F24`) y la expone a los demás pares del grupo, sin cliente Netbird en cada máquina de esa subred.",{"type":35,"title":73,"body":74},"Cerrar el SSH público: escuchar solo en la interfaz de malla","Una vez dados de alta los nodos, la administración ya no necesita un puerto SSH abierto a Internet: `ssh admin@100.64.0.2` transita por completo dentro del túnel cifrado. El cliente Netbird crea la interfaz WireGuard `wt0` (nombre por defecto); autorice SSH en esa interfaz y luego rechácelo en el resto:\n\n```bash\nsudo ufw allow in on wt0 to any port 22 proto tcp\nsudo ufw deny 22\u002Ftcp\nsudo ufw status numbered\n```\n\nUFW aplica la primera regla que coincide: la regla `wt0` debe aparecer antes del rechazo. Mantenga abierta su sesión SSH actual y pruebe una nueva conexión por la IP de malla antes de cerrarla: si el túnel no se levanta, conserva una vía de salida. La política `ops-ssh` vista antes limita después quién, dentro de la malla, puede alcanzar ese puerto.",{"type":35,"title":76,"body":77},"`netbird expose`: publicar un servicio local sin abrir puertos","La malla une sus máquinas entre sí. Para hacer accesible un servicio **desde Internet** sin tocar el cortafuegos del VPS, Netbird ofrece desde la v0.66 (febrero de 2026) el comando `netbird expose`. Se apoya en el proxy de Netbird: en una instancia autoalojada, debe estar activado (en la instalación o más tarde), con un registro DNS comodín hacia el servidor.\n\nUn administrador debe autorizar primero la función: **Settings → Clients → Peer Expose**, limitando si es necesario los grupos de pares autorizados. Después, en el VPS donde funciona por ejemplo un Grafana en `127.0.0.1:3000`:\n\n```bash\nnetbird expose 3000 --with-name-prefix grafana --with-user-groups supervision-admins\n```\n\nEl comando muestra una URL pública en el dominio del proxy y mantiene la sesión abierta; `Ctrl+C` la retira. El servicio es **efímero**: el cliente lo renueva cada 30 segundos, y el servidor lo elimina entre 90 y 120 segundos después de la última renovación si el cliente desaparece. El puerto 3000 sigue cerrado en el cortafuegos del VPS.\n\nSin opción de autenticación, la URL es **pública** para cualquiera que la conozca. Existen tres protecciones para HTTP: `--with-user-groups` (inicio de sesión SSO, reservado a los grupos indicados), `--with-password \u003Ccontraseña>` (una contraseña que usted elige) y `--with-pin \u003C6 cifras>`. `--protocol tcp` publica un servicio no HTTP, sin autenticación posible. Cada par puede mantener 10 sesiones simultáneas, y el comando falla si la opción Block Inbound Connections está activa en el par. Para un servicio permanente, créelo mejor en el Dashboard.",{"type":79,"title":80,"headers":81,"rows":86},"comparison","Netbird, Headscale y WireGuard manual de un vistazo",[82,83,84,85],"Criterio","Netbird autoalojado","Headscale","WireGuard manual",[87,92,97,102,107],[88,89,90,91],"Gestión de pares","Automática, plano de control e interfaz web","Automática, clientes oficiales de Tailscale","Manual, un archivo `wg0.conf` en cada nodo",[93,94,95,96],"NAT y CGNAT","STUN integrado, relé en el puerto 443","Servidores DERP (servidor DERP integrado opcional)","Exige una IP pública o una redirección de puertos",[98,99,100,101],"Separación","Grupos y políticas en la interfaz","Archivo de política ACL (HuJSON)","Ninguna, aparte de los `AllowedIPs` de cada par",[103,104,105,106],"Publicación de un servicio","`netbird expose` o proxy de Netbird","No integrada","Túnel SSH o proxy inverso que montar uno mismo",[108,109,110,111],"Licencia","BSD-3 (cliente), AGPLv3 (servidor)","BSD-3-Clause","Software libre (núcleo Linux y herramientas)",{"type":35,"title":113,"body":114},"Operaciones habituales","**Renovar o revocar una Setup Key.** En la interfaz web, Setup Keys → su clave → Revoke. Los pares ya dados de alta conservan su conexión; los nuevos intentos de alta con esa clave se rechazan. Cree una clave nueva para las próximas altas.\n\n**Revocar un par.** Peers → seleccione el par → Delete. El nodo sale de la malla; en el lado del cliente, la conexión con Management cae y se destruyen los túneles WireGuard hacia ese par.\n\n**Acceso a la API para la automatización.** Netbird expone una API REST documentada. Cree un usuario de servicio (Team → Service Users) y su token de acceso, y gestione todo desde sus scripts de Ansible o sus pipelines de CI:\n\n```bash\ncurl -s https:\u002F\u002Fnetbird.su-dominio.com\u002Fapi\u002Fpeers \\\n  -H 'Authorization: Token \u003CPAT>'\n```\n\n**Monitorización.** El servidor combinado expone sus métricas Prometheus en `\u002Fmetrics`, puerto `9090` por defecto (clave `server.metricsPort` de `config.yaml`): un único objetivo de scrape cubre Management, Signal y Relay. Conecte Grafana para seguir los pares conectados y la actividad del relé.\n\n**Actualizar.** Desde el directorio de instalación, descargue las nuevas imágenes y recree los contenedores:\n\n```bash\ndocker compose pull netbird-server dashboard\ndocker compose up -d --force-recreate netbird-server dashboard\n```\n\nAñada `proxy` a ambos comandos si está activado. Si `docker-compose.yml` fija versiones, cambie primero las etiquetas `image:`: `docker compose pull` no las modifica. Los pares pierden el plano de control unos segundos durante el reinicio; programe la operación fuera de las horas de más uso. Traefik se actualiza por separado de Netbird.",{"type":116,"title":117,"body":118},"tip","Refuerzo: MFA en el Dashboard y copias de seguridad de los datos","El proveedor de identidad embebido gestiona la doble autenticación de las cuentas locales: **Settings → Authentication → Local MFA** exige un código TOTP a cada usuario. También puede conectar un proveedor OIDC (Keycloak, Authentik, Microsoft Entra ID…) y aplicar allí su propia política de MFA.\n\nEl estado persistente de su red (base de datos de Management, claves de cifrado) vive en el volumen Docker `netbird_data`, montado en `\u002Fvar\u002Flib\u002Fnetbird`: perderlo significa volver a dar de alta todos sus pares. Detenga la pila para obtener una copia coherente, guarde los archivos de configuración y el volumen, y vuelva a arrancar:\n\n```bash\ndocker compose stop\nmkdir -p backup\ncp docker-compose.yml config.yaml dashboard.env backup\u002F\ndocker compose cp -a netbird-server:\u002Fvar\u002Flib\u002Fnetbird\u002F backup\u002F\ndocker compose start\n```\n\nSi el proxy está activado, añada `proxy.env` y `traefik-dynamic.yaml`. Conserve al menos siete días de copias, fuera del VPS.",{"type":35,"title":120,"body":121},"Resolución de problemas","**Pares bloqueados en `Relayed`.**\nEl relé funciona, pero la conexión directa falla. Compruebe primero que el puerto UDP 3478 del VPS de control está abierto (`ufw status`) y después que los nodos pueden emitir UDP saliente. En un VPS con IP pública y sin NAT, un cortafuegos de host que rechaza el UDP entrante no solicitado basta para que falle la conexión directa; la documentación de Netbird propone entonces `sudo ufw allow in proto udp to any port 49152:65535`, a costa de una apertura más amplia, o aceptar el relé. Un par `Connected` que no responde al ping suele señalar el mismo bloqueo, en el lado de la interfaz `wt0`.\n\n**UDP bloqueado por una red corporativa.**\nNada que configurar: desde la v0.36, el cliente prueba el relé por QUIC (UDP\u002F443) y por WebSocket (TCP\u002F443), y se queda con el primero que responde. Si solo pasa el TCP\u002F443 saliente, el par sigue conectado, en modo retransmitido.\n\n**Par bloqueado en `Connecting`.**\nEl alta ha funcionado pero el túnel no se forma. Compruebe que `netbird status` muestra `Signal: Connected`, que el servidor anuncia una dirección pública correcta (campo `exposedAddress` de `config.yaml`) y que los puertos 443\u002FTCP y 3478\u002FUDP son accesibles desde el nodo.\n\n**Leer los registros.**\nEn el servidor, `docker compose logs -f netbird-server`. En el cliente, el registro se escribe por defecto en `\u002Fvar\u002Flog\u002Fnetbird\u002Fclient.log`. Para un diagnóstico completo, `netbird debug for 5m` pone el cliente en registro detallado durante cinco minutos y luego genera un archivo de diagnóstico (`netbird debug bundle` lo genera de inmediato).\n\n**Resolución DNS entre pares.**\nNetbird asigna un nombre DNS a cada par, visible en el campo **Domain Name** de su ficha. Si el ping por nombre falla mientras que `ping 100.64.0.2` funciona, compruebe que el servicio está en marcha en el par (`sudo netbird service status`) y que el DNS del sistema pasa realmente por Netbird (`resolvectl status`).",{"type":35,"title":123,"body":124},"Proxy de Netbird bloqueado en «Issuing certificate…»","Cuando el proxy está activado, un síntoma se repite: el servicio creado se queda en «Issuing certificate…» (estado `certificate_pending`, o `certificate_failed`) y nunca es accesible. La incidencia netbird #5517, abierta el 5 de marzo de 2026, sigue abierta a 7 de noviembre de 2026 con 36 comentarios y la etiqueta `triage-needed`. El mensaje más frecuente en el registro del proxy, `no viable challenge type found`, solo dice que la autoridad de certificación no obtuvo ninguna respuesta válida a sus desafíos: no hay una causa única. Empiece por leer el registro (`docker compose logs proxy | grep -i acme`) y anote el error exacto; después descarte las causas una a una.",{"type":126,"title":127,"items":128},"ul","Orden de diagnóstico de un certificado que no se emite",[129,130,131,132,133],"**Permisos de la carpeta de certificados** — un error `permission denied` en `\u002Fcerts` es el único caso zanjado por un colaborador del repositorio: ninguna actualización lo corregirá, la causa son los permisos del sistema de archivos. Compruebe con qué usuario se ejecuta el contenedor antes de cambiar los permisos.","**DNS, CAA y puertos** — el nombre debe resolver hacia el proxy y ningún registro CAA debe excluir a Let's Encrypt. El puerto 443 debe ser accesible desde Internet para el desafío `tls-alpn-01` (el predeterminado), el puerto 80 para `http-01`. Let's Encrypt valida desde varias regiones del mundo: un filtrado geográfico hace fallar la validación.","**CDN o proxy previo** — Cloudflare y algunos equipos no transmiten el protocolo ALPN `acme-tls\u002F1`. En ese caso, pase a `NB_PROXY_ACME_CHALLENGE_TYPE=http-01` en `proxy.env`.","**Traefik delante** — si Traefik retransmite el TLS hacia el proxy en passthrough, su punto de entrada HTTPS debe llevar `allowACMEByPass=true`, que el script de instalación establece en `websecure`. En un Traefik existente, use el nombre de su propio punto de entrada; algunos participantes de la incidencia tuvieron que añadirlo también al punto de entrada HTTP, otros ya lo tenían sin resultado.","**Lo que no está demostrado** — ninguna de estas pistas es «la» causa: pruébelas en su instalación antes de concluir.",{"type":35,"title":135,"body":136},"Origen cerrado: el certificado por DNS-01 con lego","Los desafíos `tls-alpn-01` y `http-01` exigen que la autoridad alcance su proxy desde Internet, lo que choca con un origen cerrado a los rangos de una CDN o con un filtrado geográfico. El desafío `dns-01` elimina esa restricción: demuestra el control del dominio con un registro TXT temporal, creado mediante la API de su proveedor DNS. El proxy de Netbird no lo integra de forma nativa: la petición (incidencia #5450, abierta el 25 de febrero de 2026) sigue abierta. La documentación de Netbird describe en cambio un montaje «private proxy with lego»: lego obtiene y renueva un certificado comodín por DNS-01, un hook de despliegue lo deposita en un volumen compartido y el proxy lo recarga en caliente tras cada renovación.",{"type":126,"title":138,"items":139},"Puntos de atención del montaje con lego",[140,141,142,143,144],"**Variables del proxy** — `NB_PROXY_WILDCARD_CERT_DIR` indica la carpeta de los certificados comodín, `NB_PROXY_PRIVATE=true` activa las escuchas privadas en la malla. Fije una imagen del proxy que conozca ambas variables.","**El modo privado no cierra nada por sí solo** — `NB_PROXY_PRIVATE` no desactiva la escucha ordinaria del proxy. Retire usted mismo los puertos publicados y las rutas de entrada (etiquetas de Traefik, Caddy, nginx) que llevan al contenedor.","**Alcance del comodín** — `*.proxy.su-dominio.com` solo cubre un nivel de subdominio. Un nombre fuera de esa cobertura vuelve al ACME integrado, que no puede funcionar si el proxy es completamente privado.","**Exposición del certificado** — el comodín y el dominio base aparecen en los registros de Certificate Transparency, no los nombres de los servicios que cubre; en cambio, una clave comodín comprometida afecta a todos esos nombres.","**Explotación** — use el servidor ACME de producción de Let's Encrypt (sus certificados de prueba no son de confianza), guarde los volúmenes de lego y de los certificados, y fije versiones probadas de lego y del proxy.",{"type":35,"title":146,"body":147},"Lo que la malla cambia en la gestión del parque","Una malla Netbird autoalojada sustituye tres capas que usted mantiene a mano: la distribución de claves WireGuard, las reglas UFW entre servidores y la documentación de los accesos cruzados. Cada nuevo VPS de cliente se da de alta con un comando; cada revocación es inmediata y centralizada. El SSH público puede cerrarse, y `netbird expose` publica bajo demanda un servicio sin abrir ningún puerto.\n\nEl aislamiento por grupo le permite crecer sin riesgo de colisión: los servidores de dos clientes distintos no pueden verse, aunque funcionen en la misma infraestructura. Y el plano de control sigue bajo su control: ninguna dependencia de un SaaS de terceros, ningún límite de puestos, ninguna suscripción por nodo.\n\nPara ir más lejos, describa el aprovisionamiento de los nodos en Ansible (vea \u003Ca href=\"\u002Fes\u002Fblog\u002Fautomatizar-servidores-vps-con-ansible\">nuestra guía de Ansible\u003C\u002Fa>): la instalación del cliente, el comando `netbird up` y las reglas UFW en `wt0` se convierten en tareas idempotentes dentro de un rol reutilizable.","Sus VPS y las cuentas de sus clientes, en una sola cuenta","Su área de cliente de ServOrbit.com reúne sus dominios, alojamientos y VPS, con sus vencimientos. El Espacio Reseller añade las cuentas cPanel de sus clientes. Añada un VPS dedicado al plano de control de Netbird.","Descubrir la oferta para agencias","\u002Fsolutions\u002Fagences",[153,178,197],{"id":154,"slug":155,"slugs":156,"title":160,"excerpt":161,"readTime":162,"views":163,"isPinned":19,"noindex":19,"publishedAt":164,"updatedAt":165,"category":166,"categories":172,"featuredImage":29,"bgImage":30,"posterImage":174,"relatedSolution":175},164,"auto-alojar-headscale-en-un-vps-servidor-tailscale",{"fr":157,"en":158,"ar":159,"es":155},"self-host-headscale-tailscale-vps","self-host-headscale-on-a-vps-your-own-tailscale-control-server","استضافة-headscale-على-vps-خادم-تحكم-tailscale-خاص-بك","Alojar Headscale en un VPS: servidor de control Tailscale","Sustituya el servidor de control en la nube de Tailscale por Headscale en su VPS: usuarios ilimitados, malla WireGuard completa, magic DNS y ACL, sin SaaS.",19,2,"2026-07-05T00:00:00+00:00","2026-11-08T01:13:12+00:00",{"id":167,"name":168,"slug":169,"color":170,"icon":171},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[173],{"id":167,"name":168,"slug":169,"color":170,"icon":171},"\u002Fblog\u002Fcovers\u002Fself-host-headscale-tailscale-vps-poster.svg",{"categorySlug":176,"appSlug":177},"redes-vpn","headscale",{"id":179,"slug":180,"slugs":181,"title":185,"excerpt":186,"readTime":187,"views":163,"isPinned":19,"noindex":19,"publishedAt":188,"updatedAt":189,"category":190,"categories":194,"featuredImage":29,"bgImage":30,"posterImage":196,"relatedSolution":29},236,"automatizar-servidores-vps-con-ansible",{"fr":182,"en":183,"ar":184,"es":180},"ansible-automatiser-serveurs-vps","automating-vps-server-management-with-ansible","أتمتة-إدارة-خوادم-vps-باستخدام-ansible","Automatizar la gestión de servidores VPS con Ansible","Automatice la gestión de una flota de servidores VPS con Ansible: inventario, playbooks, roles y Vault para una infraestructura reproducible.",10,"2026-08-08T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":163,"name":191,"slug":192,"color":193,"icon":192},"Automatización","automatisation","bg-brand-action\u002F10 text-brand-action",[195],{"id":163,"name":191,"slug":192,"color":193,"icon":192},"\u002Fblog\u002Fcovers\u002Fansible-automatiser-serveurs-vps-poster.svg",{"id":198,"slug":199,"slugs":200,"title":204,"excerpt":205,"readTime":167,"views":206,"isPinned":19,"noindex":19,"publishedAt":207,"updatedAt":208,"category":209,"categories":210,"featuredImage":29,"bgImage":30,"posterImage":212,"relatedSolution":29},228,"hardening-inicial-servidor-linux",{"fr":201,"en":202,"ar":203,"es":199},"durcissement-serveur-linux-initial","initial-linux-server-hardening","تصليب-الخادم-linux-الأولي","Endurecimiento (hardening) inicial de un servidor Linux","Cree un usuario sudo, configure SSH con claves y active UFW y fail2ban en Ubuntu o Debian en menos de una hora.",1,"2026-08-06T00:00:00+00:00","2026-10-20T23:18:07+00:00",{"id":167,"name":168,"slug":169,"color":170,"icon":171},[211],{"id":167,"name":168,"slug":169,"color":170,"icon":171},"\u002Fblog\u002Fcovers\u002Fdurcissement-serveur-linux-initial-poster.svg",true,1794270590772]