NetBird: Implementación de una VPN de malla basada en WireGuard y confianza cero (Parte II)
Ubicación actual
Actualmente estamos ubicados en la carpeta:
netbird/infrastructure_files/
Desde aquí se encuentra el docker-compose.yml principal y demás archivos necesarios para continuar con el despliegue de NetBird.
🔑 Importante: tanto NetBird como Authentik deben estar accesibles con certificados TLS válidos (no autofirmados) y ser accesibles públicamente para que el flujo OIDC funcione correctamente.
Archivos a editar
Se editarán directamente ("en sucio") los siguientes archivos:
docker-compose.yml.tmplsetup.env.example→ una vez editado, se renombrará asetup.env
Cada vez que se realice un cambio en estos archivos, deberá ejecutarse el script configure.sh con:
./configure.sh
Esto generará los archivos finales dentro de la carpeta artifacts/, que también se encuentra en este mismo directorio. Desde ahí, se podrán levantar los contenedores cuando todo esté listo.
Una vez esté todo correctamente rellenado y configurado, volveremos a ejecutar ./configure.sh para generar el docker-compose.yml final y otros archivos necesarios dentro de la carpeta artifacts/. Será desde esa carpeta donde finalmente levantaremos el entorno completo de NetBird.
Después de eso, habrá que editar también el archivo Caddyfile. Se puede tomar como base el ejemplo disponible en el repositorio Gitea (ver más abajo) y adaptarlo a los puertos que hayamos elegido en nuestra configuración.
Una vez añadida la sección correspondiente a NetBird en el Caddyfile, reiniciaremos Caddy para aplicar los cambios:
sudo systemctl restart caddy
Finalmente, con todo en su sitio (entorno, variables y proxy), levantaremos los contenedores de NetBird desde la carpeta artifacts:
cd artifacts/
docker compose up -d
Una vez realizado todo esto, solo tendremos que ir al dominio elegido para NetBird, autenticarnos con Authentik y... finalmente estaremos dentro.
Archivos de ejemplo listos para usar
Para facilitar la configuración, se han preparado versiones de ejemplo ya limpias y ajustadas a la configuración explicada en la primera parte. Algunas secciones se han eliminado porque no son necesarias para este escenario concreto.
Están disponibles en el siguiente repositorio:
Contiene:
docker-compose.yml.tmpl→ listo para rellenarsetup.env→ limpio y preparado para completarCaddyfile→ sección específica para NetBird, lista para copiar y pegar en tu propio archivo de Caddy. Solo hay que sustituir los datos ficticios por los reales
Ayuda para completar setup.env (Authentik como proveedor OIDC)
Qué valores hay que rellenar y de dónde sacarlos
NETBIRD_AUTH_OIDC_CONFIGURATION_ENDPOINT
-
Qué es: URL de configuración OIDC generada por Authentik.
-
Dónde está: Al guardar la aplicación en Authentik, aparece el botón "OpenID configuration".
-
Ejemplo:
https://auth.<tudominio>/application/o/netbird/.well-known/openid-configuration
NETBIRD_AUTH_CLIENT_ID
-
Qué es: El Client ID generado por Authentik.
-
Dónde está: En
Providers > netbird-provider > OAuth2 Configuration -
Este valor también se usa en:
NETBIRD_AUTH_AUDIENCENETBIRD_AUTH_DEVICE_AUTH_CLIENT_IDNETBIRD_AUTH_DEVICE_AUTH_AUDIENCENETBIRD_IDP_MGMT_CLIENT_ID
NETBIRD_AUTH_SUPPORTED_SCOPES
-
Qué poner:
"openid profile email offline_access api"
NETBIRD_IDP_MGMT_EXTRA_USERNAME
-
Qué es: Nombre del usuario de servicio (creado manualmente).
-
Dónde se crea:
Directory > Users > Create- Username:
Netbird - Crear una contraseña de aplicación
- Username:
NETBIRD_IDP_MGMT_EXTRA_PASSWORD
-
Qué es: Contraseña de aplicación del usuario de servicio.
-
Dónde se obtiene:
Users > Netbird > Passwords- Crear nueva contraseña de aplicación
- Copiar el string generado (no se podrá volver a ver)
NETBIRD_AUTH_PKCE_DISABLE_PROMPT_LOGIN=true
- Qué es: Flag necesaria para evitar problemas con PKCE.
- Qué hacer: Dejarla tal cual.
Resumen visual rápido
Variable en .env |
Dónde encontrarla en Authentik |
|---|---|
NETBIRD_AUTH_OIDC_CONFIGURATION_ENDPOINT |
Botón "OpenID configuration" en la aplicación |
NETBIRD_AUTH_CLIENT_ID |
En el Provider (OAuth2 Configuration) |
NETBIRD_AUTH_AUDIENCE |
Igual que el Client ID |
NETBIRD_AUTH_DEVICE_AUTH_CLIENT_ID |
Igual que el Client ID |
NETBIRD_AUTH_DEVICE_AUTH_AUDIENCE |
Igual que el Client ID |
NETBIRD_IDP_MGMT_CLIENT_ID |
Igual que el Client ID |
NETBIRD_IDP_MGMT_EXTRA_USERNAME |
Usuario de servicio creado por ti (Netbird) |
NETBIRD_IDP_MGMT_EXTRA_PASSWORD |
Contraseña de aplicación del usuario de servicio |
Referencias
Esta guía está pensada como complemento práctico, no reemplaza a la documentación oficial. Se recomienda revisar los siguientes enlaces para entender en profundidad cada componente: