wg-admin: UI web para administrar un host WireGuard existente
Una interfaz ligera que gestiona los archivos de configuración en /etc/wireguard sin interrumpir la interfaz activa, con soporte para agregar, editar y rotar pares y generar archivos y códigos QR de clientes.
wg-admin es un panel web minimalista pensado para hosts que ya ejecutan WireGuard. En lugar de crear nuevas configuraciones o reemplazar wg‑quick, lee los archivos que ya existen en /etc/wireguard, los muestra y permite modificarlos con un simple clic.
Instalación y uso
git clone https://github.com/logimaxx/wg-admin.git
cd wg-admin
sudo ./install.sh
Una vez instalado, la aplicación escucha en 127.0.0.1:8080. Se configura una contraseña de administrador y se accede a http://127.0.0.1:8080. Los archivos *.conf presentes en /etc/wireguard aparecen en la lista y pueden modificarse directamente.
Para eliminar el servicio, basta con:
sudo ./uninstall.sh
El servicio no toca los archivos de WireGuard; simplemente se elimina la unidad systemd.
Características principales
- Gestión en vivo: cada archivo *.conf se muestra y se puede editar sin reiniciar la interfaz.
- Aplicación sin rebote: al actualizar la configuración se escribe el archivo y, si la interfaz está activa, se ejecuta
wg syncconf; si está apagada, solo se actualiza el archivo. - Ciclo de vida de pares: añadir, renombrar, editar, rotar claves y eliminar pares. Los pares creados en la UI generan un archivo .conf descargable y un código QR.
- Estado en tiempo real: se muestra el último handshake, la transferencia y el endpoint de cada par.
- Respaldo seguro: antes de cada cambio se guarda una copia bajo /var/lib/wg-admin/backups/.
- Seguridad local: escucha solo en 127.0.0.1; se recomienda colocar un proxy con TLS (Caddy, nginx) si se necesita acceso externo.
Requisitos
- Linux con Python 3.11+.
- wireguard-tools (
wg) para leer y aplicar la configuración. - Acceso root o equivalente a /etc/wireguard y CAP_NET_ADMIN.
Configuración por defecto
Los ajustes se almacenan en /etc/wg-admin.env:
WG_ADMIN_HOST=127.0.0.1
WG_ADMIN_PORT=8080
WG_ADMIN_CONFIG_DIR=/etc/wireguard
WG_ADMIN_STATE_DIR=/var/lib/wg-admin
Compatibilidad con la configuración actual
wg-admin conserva todos los valores de la sección [Interface] y de los [Peer] existentes. Los nombres de los pares se extraen de los comentarios (# Alice o # Name = Alice). Solo los pares creados o rotados a través de la UI generan archivos de cliente; los pares preexistentes no reciben claves privadas.
Desarrollo
Para probar el proyecto en modo demo:
python3 -m venv .venv
source .venv/bin/activate
pip install -e '.[dev]'
pytest ./scripts/run-demo.sh
El demo nunca invoca wg.
Contribuciones
wg-admin está bajo licencia MIT y el código está disponible en GitHub. El autor es Sergiu Voicu, cofundador de LogiMaxx Systems, una firma de servicios de TI enfocada en monitoreo y automatización operativa.
Para más información, visita la página de la empresa: LogiMaxx Systems y la discusión en Hacker News: Hacker News.

