Integración domótica WireGuard (wg-easy), gratuita y de código abierto

Quién está conectado al VPN WireGuard de su casa, gestionado por wg-easy.
Sepa desde Gladys quién está conectado al VPN WireGuard de su casa cuando ese VPN está gestionado por wg-easy: un dispositivo por cliente VPN (conectado o no, datos recibidos y enviados, último handshake), un widget para el panel y disparadores de escena cuando un cliente se conecta o se desconecta — por ejemplo, para saber que alguien ha abierto el VPN de la casa mientras usted está fuera.
Probada con servidores wg-easy 15.4 y 14 reales en Docker y con un cliente WireGuard real. Sus comentarios son bienvenidos en el foro de Gladys o en las issues.
Qué necesita
- Gladys Assistant 5.1.0 o posterior.
- wg-easy v15 (15.0 a 15.4) o v14, accesible desde Gladys en su red local (puerto 51821 de su interfaz web por defecto).
- En v15: el usuario y la contraseña de un usuario de wg-easy sin
autenticación de dos factores (wg-easy niega a ese usuario el acceso a la
API por contraseña). Un administrador ve todos los clientes, otro usuario
solo los suyos. El acceso por contraseña no debe estar desactivado
(
DISABLE_PASSWORD_AUTH). - En v14: la contraseña de la interfaz web, o nada si no tiene.
Configuración
- En Gladys, instale la integración y abra su pantalla Configuración.
- Dirección: la dirección de la interfaz web de wg-easy, por ejemplo
192.168.1.2:51821, conhttps://si se sirve por HTTPS (detrás de un proxy inverso, por ejemplo). La ruta se ignora. - Usuario (v15):
adminpor defecto; se ignora en v14. - Contraseña: la de este usuario (v15) o la de la interfaz web (v14).
- Aceptar certificados autofirmados: solo para una dirección
https://cuyo certificado no esté firmado por una autoridad conocida. - Intervalo de actualización: frecuencia de lectura de wg-easy, 30 s por defecto. Cada lectura comprueba la contraseña en wg-easy (argon2 en v15, una fracción de segundo de procesador).
- Permitir habilitar y deshabilitar clientes: desactivado por defecto. Vea más abajo.
- Idioma de los nombres: el idioma de los nombres de las funciones y de la fecha del último handshake, fijado al añadir un dispositivo.
- Guarde y use Probar la conexión: responde con la versión de wg-easy, el número de clientes y cuántos están conectados.
- En la pestaña Descubrimiento, añada el servidor y los clientes que quiera seguir.
La versión (v15 o v14) se detecta sola. Los disparadores de escena y el widget funcionan incluso para los clientes no añadidos a Gladys.
Varios servidores
El servidor de la configuración es el primero. Para vigilar otros wg-easy (una segunda residencia, otra máquina), use Añadir un servidor wg-easy con los mismos campos: dirección, usuario, contraseña, certificados autofirmados. Cada servidor tiene su propio dispositivo servidor y sus clientes, nombrados según su dirección. Añadir un servidor ya añadido cambia su usuario, su contraseña o la opción de certificado. Quitar un servidor wg-easy toma su dirección; sus dispositivos se quedan en Gladys hasta que los borre. Mostrar los servidores lista cada servidor con su última lectura. Los servidores añadidos y sus contraseñas se guardan en los datos de la integración, nunca en los registros. El estado de la integración nombra el primer servidor que no responde.
Los dispositivos
El servidor (wg-easy seguido de su dirección):
| Función | Qué muestra |
|---|---|
| Clientes conectados | Clientes conectados en este momento |
| Clientes | Clientes configurados en wg-easy |
Cada cliente VPN (su nombre en wg-easy seguido de (VPN)):
| Función | Qué muestra |
|---|---|
| Conectado | Sí cuando el último handshake tiene menos de 3 minutos y el cliente está habilitado |
| Acceso habilitado | Si el cliente está habilitado en wg-easy (un interruptor, de solo lectura por defecto) |
| Recibido por el cliente | Datos descargados por el cliente a través del VPN, en MB |
| Enviado por el cliente | Datos enviados por el cliente a través del VPN, en MB |
| Último handshake | Fecha y hora del último handshake de WireGuard visto (vacío hasta entonces) |
Conectado sigue al propio WireGuard: mientras pasan paquetes, el cliente renueva su handshake cada 2 minutos. Un cliente que deja de enviar (un teléfono en reposo, sin Persistent keepalive) cuenta como desconectado 3 minutos después de su último handshake, aunque su túnel siga «activado» en el teléfono.
Los contadores de datos son los de la interfaz WireGuard: vuelven a cero al reiniciar wg-easy o su interfaz, y se desconocen para un cliente deshabilitado.
wg-easy olvida el último handshake de un cliente deshabilitado o habilitado de nuevo: la integración sigue mostrando el último que vio.
Acceso habilitado es de solo lectura mientras no marque Permitir habilitar y deshabilitar clientes. Una vez marcada, Gladys, sus escenas y los asistentes de voz pueden cortar el acceso de un cliente (por ejemplo el perfil VPN de un niño, por la noche). Déjela desmarcada si no la necesita: es su acceso VPN desde el exterior. Tras cambiar esta opción, use Actualizar en la pestaña Descubrimiento para que el interruptor cambie en Gladys.
Un cliente se identifica por su clave pública WireGuard: cambiarle el nombre en wg-easy, o pasar de la v14 a la v15, conserva el dispositivo y su historial.
Panel
El widget Clientes VPN muestra el número de clientes conectados y de clientes, y luego una línea por cliente: primero los conectados (Conectado), luego los demás con el tiempo transcurrido desde su último handshake (hace 2 h o Ningún handshake conocido), los deshabilitados al final (Deshabilitado). Diez líneas como máximo; más allá, la última línea cuenta los demás clientes.
Escenas
Disparadores
- Cliente VPN conectado: un cliente se ha conectado al VPN de la casa (un handshake tras 3 minutos de silencio). Filtros: un cliente, o cualquiera; un servidor, o cualquiera. Variables: nombre del cliente, dispositivo del cliente, servidor.
- Cliente VPN desconectado: un cliente lleva 3 minutos sin handshake o ha sido deshabilitado. Filtros: un cliente, o cualquiera; un servidor, o cualquiera. Variables: nombre del cliente, dispositivo del cliente, minutos conectado, servidor.
- wg-easy ya no responde: wg-easy ha dejado de responder (dos lecturas seguidas). Filtro: un servidor, o cualquiera. Variables: el error, el servidor.
- wg-easy responde de nuevo: wg-easy responde de nuevo tras una avería. Filtro: un servidor, o cualquiera. Variables: minutos sin respuesta, el servidor.
No se envía ningún evento al iniciar la integración: el estado anterior no se conoce.
Ideas de escenas
- Alguien ha abierto el VPN de la casa: Cliente VPN conectado (cualquier cliente) → enviar un mensaje «{{client}} está conectado al VPN de la casa».
- El teléfono del niño sigue en el VPN por la noche: Cliente VPN conectado, el teléfono del niño, entre las 22:00 y las 7:00 → apagar su Acceso habilitado (control permitido).
- La caja del VPN está caída: wg-easy ya no responde → enviar un mensaje con el error, antes de necesitar el VPN desde el exterior.
Solución de problemas
- «usuario o contraseña rechazados (o autenticación de dos factores activa)»: compruebe el usuario (v15) y la contraseña. wg-easy v15 niega el acceso a la API por contraseña a un usuario con autenticación de dos factores: cree para Gladys un usuario sin ella.
- «acceso denegado: inicio de sesión con contraseña o usuario
desactivado»: el usuario está desactivado, o wg-easy funciona con
DISABLE_PASSWORD_AUTH. - «la dirección redirige»: la dirección responde con una redirección,
normalmente de HTTP a HTTPS: introduzca la dirección
https://. - «certificado rechazado»: marque Aceptar certificados autofirmados.
- «no hay API de wg-easy en esta dirección»: la dirección no es la de la interfaz web de wg-easy (compruebe el puerto, 51821 por defecto).
- Un cliente sigue en «Conectado: No» con el túnel activado: no envía nada. Configure un Persistent keepalive (25 s) para ese cliente en wg-easy si quiere verlo conectado en reposo.
- Faltan clientes: un usuario de wg-easy que no es administrador solo ve sus propios clientes: use un administrador.
Límites
-
10 servidores wg-easy como máximo: el de la configuración y 9 añadidos.
-
Solo wg-easy v15 y v14; las versiones anteriores no son compatibles.
-
«Conectado» se deduce del último handshake (3 minutos): un cliente que no envía nada cuenta como desconectado, y una desconexión se ve hasta 3 minutos más una lectura después.
-
La fecha del último handshake viene del reloj de wg-easy; los 3 minutos se cuentan con el de Gladys: mantenga ambos en hora (NTP).
-
Los contadores de datos vuelven a cero al reiniciar wg-easy.
-
La integración no crea, no borra ni renombra clientes, ni muestra su código QR: eso sigue en wg-easy.
-
Sin relación con wg-easy ni con WireGuard. WireGuard es una marca registrada de Jason A. Donenfeld.
Parámetros de configuración
Estos son los parámetros que WireGuard (wg-easy) te pide en su pantalla de configuración en Gladys.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| Su wg-easy | section | No | wg-easy v15 (usuario y contraseña de un usuario de wg-easy sin autenticación de dos factores) o v14 (solo contraseña). La dirección de su interfaz web, puerto 51821 por defecto. |
| Dirección | string | Sí | Dirección de la interfaz web de wg-easy, con https:// para HTTPS y :puerto. |
| Usuario (v15) | string | No | Un usuario de wg-easy. Un administrador ve todos los clientes, otro usuario solo los suyos. Se ignora en v14. |
| Contraseña | secret | No | Contraseña de este usuario (v15) o de la interfaz web (v14). |
| Aceptar certificados autofirmados | boolean | No | Solo para una dirección https:// cuyo certificado no esté firmado por una autoridad conocida. |
| Intervalo de actualización | select | No | Frecuencia de lectura de wg-easy. Cada lectura comprueba la contraseña en wg-easy. |
| Permitir habilitar y deshabilitar clientes | boolean | No | Desactivado: el interruptor «Acceso habilitado» es de solo lectura. Activado: Gladys, sus escenas y los asistentes de voz pueden cortar el acceso de un cliente. |
| Idioma de los nombres | select | No | Idioma de los nombres de las funciones y de la fecha del último handshake, fijado al añadir un dispositivo. |
Cómo instalar WireGuard (wg-easy) en Gladys
- En Gladys, abre Integraciones: WireGuard (wg-easy) aparece en el catálogo junto a las integraciones nativas, con una insignia de comunidad.
- Haz clic en Instalar. Gladys descarga la imagen Docker (
ghcr.io/guim31/gladys-wg-easy:1.1.0), la ejecuta en un entorno aislado del núcleo y genera la interfaz de la integración (dispositivos, descubrimiento y configuración). - Abre la pantalla de Configuración de la integración, rellena los parámetros y guarda.
- También puedes instalarla directamente desde la URL de su repositorio: https://github.com/guim31/gladys-wg-easy.
WireGuard (wg-easy) requiere Gladys >=5.1.0. El catálogo de Gladys se actualiza cada hora, así que una nueva versión está disponible como máximo una hora después de publicarse.
¿Todavía no usas Gladys? Es gratuito y de código abierto: sigue la guía de instalación para empezar.
Sobre las integraciones externas
WireGuard (wg-easy) es una integración externa: una integración comunitaria empaquetada como contenedor Docker y publicada en GitHub. Gladys la instala con un clic y la ejecuta en un entorno aislado del núcleo. La publica y mantiene guim31, no el equipo principal de Gladys.
- Explorar todas las integraciones, nativas y de la comunidad
- Crear y publicar tu propia integración externa
- Código fuente en GitHub — fuente de esta documentación