NetBird es una VPN mesh sobre WireGuard con su propio plano de control — a diferencia de Tailscale, el plano de control es tuyo de principio a fin, y a diferencia de Headscale no es la reimplementación de un protocolo ajeno, sino un producto propio de código abierto con sus propios clientes. Asigna claves e IPs, resuelve el NAT traversal solo y deja crear políticas de acceso entre grupos de máquinas.
Cómo montar NetBird, tu propia VPN mesh autogestionada sobre WireGuard
- 1
Paso 1: Antes de empezar
Hace falta una máquina con al menos 1 CPU y 2 GB de RAM, con Docker y el plugin compose instalados, y un dominio propio (por ejemplo
netbird.tudominio.com) apuntando a la IP pública de esa máquina. También necesitasjqycurl.sudo apt update sudo apt install -y jq curl
- 2
Paso 2: Instalar con el script oficial
NetBird publica un script que genera una instalación de producción completa:
docker-compose.yml,config.yamly el.envdel panel web, con reverse proxy y TLS incluidos.curl -fsSL https://github.com/netbirdio/netbird/releases/latest/download/getting-started.sh | bash
El script pregunta el dominio y qué reverse proxy usar. Si no tienes ya uno delante, elige Traefik: viene incluido en el compose generado y se encarga del TLS automático con Let's Encrypt.
- 3
Paso 3: Arrancar los servicios
docker compose up -d docker compose ps
- 4
Paso 4: Primer acceso y primer peer
Entra en
https://netbird.tudominio.com, crea la cuenta de administrador y, desde el panel, instala el cliente en cada máquina que quieras sumar a la malla.curl -fsSL https://pkgs.netbird.io/install.sh | sh netbird up --management-url https://netbird.tudominio.com
- 5
Paso 5: Política de acceso mínima
Por defecto, todos los peers se ven entre sí — justo lo contrario de lo que quieres en una red de verdad. Desde Access Control > Policies, crea grupos (por ejemplo "portatiles" y "servidores-homelab") y una política que solo abra el puerto que realmente necesites entre ellos. Borra o desactiva la política por defecto que permite todo.
Conclusión
Para comprobar que funciona, ejecuta netbird status en cualquier peer: debe listar al resto de máquinas de la malla como conectadas. Haz un ping a la IP interna de otro peer después de aplicar la política de acceso del último paso — si la política no lo permite explícitamente, el ping no debería pasar.



