WGPortal: Panel moderno para gestionar WireGuard
Durante un tiempo utilicé WGDashboard, pero tras varios errores aleatorios y problemas con su mantenimiento, decidí probar WGPortal. Por ahora el cambio ha sido positivo: interfaz más sólida, soporte activo y un enfoque más completo en la gestión de usuarios, peers e interfaces.
Qué es WGPortal
WGPortal es una interfaz web avanzada para administrar WireGuard de forma centralizada y segura.
Permite gestionar usuarios, crear, editar y distribuir configuraciones de peers de manera automatizada, evitando errores manuales en la creación de claves o en la asignación de IPs.
Además, genera automáticamente los archivos .conf y códigos QR listos para importar desde móviles o clientes de escritorio.
Entre sus principales características destacan:
- Gestión de múltiples interfaces WireGuard, como
wg0,wg1owg2, cada una con su propio rango IP y reglas. - Autenticación flexible, compatible con bases de datos locales, LDAP u OIDC (ideal para integrarlo con Authentik o Keycloak).
- Control granular de peers, permitiendo limitar la creación automática, definir subredes, habilitar o deshabilitar peers y asignar rutas personalizadas.
- Panel web moderno y responsivo, con métricas en tiempo real, estado de conexión y estadísticas de tráfico.
- Integración con Prometheus, para exportar métricas y monitorear conexiones activas, uso de ancho de banda o actividad de peers.
- Despliegue sencillo con Docker, con persistencia completa de configuraciones.
Gracias a esta arquitectura modular, WGPortal puede desplegarse tanto en entornos personales como en infraestructuras corporativas.
Archivos de configuración
El proyecto puede desplegarse fácilmente con tres archivos principales, los cuales pueden consultarse en mi Gitea.
El docker-compose.yml mostrado aquí está pensado para instalaciones donde WireGuard ya está configurado en el host, de modo que WGPortal actúe sólo como panel de administración.
En la documentación oficial se incluyen otros ejemplos que permiten elegir si se desean generar las configuraciones directamente dentro del contenedor o gestionarlas externamente desde el sistema anfitrión:
| Archivo | Descripción | Enlace |
|---|---|---|
docker-compose.yml |
Define el contenedor principal con red host y persistencia de datos. |
Ver en Gitea |
config.yml |
Configuración principal del portal: usuario admin, nivel de log, interfaz gestionada, etc. | Ver en Gitea |
Caddyfile |
Proxy inverso sencillo para exponer WGPortal sin autenticación adicional. | Ver en Gitea |
Despliegue básico
docker compose up -d
El contenedor utiliza network_mode: "host", lo que simplifica la gestión de las interfaces WireGuard (no necesita puertos mapeados).
Una vez iniciado, accede a la interfaz web en:
https://vpn.example.com
El usuario y contraseña inicial se definen en el archivo config.yml. O bien, comentar la parte de "web" en el config.yml y acceder por nuestra dirección local en el puerto 8888.
Recomendación de seguridad
Aunque WGPortal incluye su propio sistema de autenticación, se recomienda añadir una capa extra mediante un IdP externo como Authentik, o un proxy inverso con validación previa. Esto mejora la trazabilidad y reduce el riesgo de accesos no autorizados al panel, especialmente en entornos expuestos a Internet.