Bot profesional de Telegram para administrar y consultar WireGuard mediante la API de WGDashboard. Permite a administradores gestionar peers, monitorear estado del servidor y ejecutar acciones administrativas directamente desde Telegram.
- 📡 Gestión de Configuraciones: Ver todas las configuraciones WireGuard
- 👥 Gestión de Peers: Crear, eliminar, ver detalles y monitorear peers
- 🔒 Restricciones: Restringir/permitir acceso de peers específicos
- 🧹 Limpiar Tráfico: Resetear contadores de datos de peers
- ⏰ Schedule Jobs: Crear trabajos programados (límites de datos y fechas de expiración)
- 🖥️ Estado del Sistema: Monitorear CPU, memoria, discos e interfaces
- 📊 Estadísticas: Ver información detallada del sistema
- 👷 Supervisión de Operadores: Ver actividad de operadores autorizados
- 🌐 Multiidioma: Soporte para español e inglés
- ➕ Crear Peers Temporales: Generar peers con límites automáticos
- 📥 Descargar Config: Obtener archivo
.confpara el nuevo peer - 🌐 Cambiar Idioma: Seleccionar entre español e inglés
- ⏳ Límites Automáticos: 1 GB de datos y 24 horas de duración por peer
TGBot-saveOK/
├── main.py # Punto de entrada del bot
├── config.py # Configuración y variables de entorno
├── handlers.py # Handlers de comandos y callbacks (4100+ líneas)
├── keyboards.py # Teclados inline de Telegram
├── i18n.py # Sistema de traducción multiidioma
├── operators.py # Control de operadores autorizados
├── utils.py # Funciones utilitarias
├── wg_api.py # Cliente de la API WGDashboard
├── setup_logging.py # Configuración de logs
├── .env # Variables de entorno (NO subir a git)
├── requirements.txt # Dependencias del proyecto
├── README.md # Este archivo
├── locales/
│ ├── es.json # Traducción al español
│ └── en.json # Traducción al inglés
└── info/
├── resumen.md # Documentación técnica
├── CAMBIOS_REALIZADOS.md # Historial de cambios
└── IMPLEMENTACION_*.md # Documentación de features
- Linux (Ubuntu 20.04 LTS o superior recomendado)
- Python 3.10 o superior
- pip (Python Package Manager)
- WireGuard: Instalado y configurado en el servidor
- WGDashboard: Funcionando y accesible via API
- Bot de Telegram: Creado con @BotFather
git clone https://github.com/WGDashboard/WGErinys
cd WGErinyspython3 -m venv .venv
source .venv/bin/activate # En Windows: .venv\Scripts\activatepip install -r requirements.txtCrear archivo .env en la raíz del proyecto:
# ===== TELEGRAM =====
TELEGRAM_BOT_TOKEN=tu_token_aqui # Obtener de @BotFather en Telegram
# ===== WGDASHBOARD API =====
WG_API_BASE_URL=https://tu-dominio.com/api # URL base de la API
WG_API_KEY=tu_api_key_aqui # API Key de WGDashboard
WG_API_PREFIX=wg # Prefijo de la API (si aplica)
API_TIMEOUT=10 # Timeout en segundos
# ===== LOGGING =====
LOG_FILE=wg_bot.log # Archivo de logs
LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR
# ===== ACCESO =====
ALLOWED_USERS=123456789,987654321 # IDs de Telegram autorizados
ROLE_ADMIN=admin # Rol de administrador
ROLE_OPERATOR=operator # Rol de operador
ADMIN_IDS=123456789 # IDs que son administradores
OPERATOR_IDS=987654321,111222333 # IDs que son operadores
# ===== LÍMITES DE OPERADOR =====
OPERATOR_DATA_LIMIT_GB=1 # GB por peer creado
OPERATOR_TIME_LIMIT_HOURS=24 # Horas de duración del peerEditar config.py y agregar los IDs de Telegram:
# IDs autorizados a usar el bot
ALLOWED_USERS = [
123456789, # Admin 1
987654321, # Admin 2
111222333, # Operador 1
]
# Configuración de roles
ADMIN_USERS = [123456789, 987654321]
OPERATOR_USERS = [111222333]
# Límites para operadores
OPERATOR_DATA_LIMIT_GB = 1 # 1 GB por peer
OPERATOR_TIME_LIMIT_HOURS = 24 # 24 horas de duraciónPara obtener tu ID de Telegram:
- Abre @userinfobot en Telegram
- El bot te mostrará tu ID
# Con el entorno virtual activado
python main.pyCrear archivo de servicio:
sudo nano /etc/systemd/system/wgbot.serviceContenido del archivo:
[Unit]
Description=WGDashboard Telegram Bot
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=wgbot
Group=wgbot
WorkingDirectory=/home/wgbot/TGBot-saveOK
Environment="PATH=/home/wgbot/TGBot-saveOK/.venv/bin"
ExecStart=/home/wgbot/TGBot-saveOK/.venv/bin/python main.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.targetHabilitar e iniciar el servicio:
# Recargar systemd
sudo systemctl daemon-reload
# Habilitar para que inicie automáticamente
sudo systemctl enable wgbot
# Iniciar el bot
sudo systemctl start wgbot
# Ver estado
sudo systemctl status wgbot
# Ver logs en tiempo real
sudo journalctl -u wgbot -f
# Detener
sudo systemctl stop wgbot
# Reiniciar
sudo systemctl restart wgbot# Construir imagen
docker build . -f docker/Dockerfile -t wgerinys:latest
# Ejecutar contenedor
docker run -d --name wgerinys --env-file .env wgerinys:latest# Instalar tmux
sudo apt-get install tmux
# Crear sesión
tmux new-session -d -s wgbot -c /ruta/al/bot python main.py
# Ver sesión
tmux list-sessions
# Conectar a sesión
tmux attach-session -t wgbot
# Desconectar (Ctrl+b, luego d)| Comando | Descripción |
|---|---|
/start |
Inicia el bot y muestra menú principal |
/help |
Muestra ayuda y comandos disponibles |
/stats |
Muestra estadísticas del sistema |
/configs |
Lista todas las configuraciones WireGuard |
Funciones via menú:
- 📡 Configuraciones - Gestionar todas las configs
- 👥 Peers - Ver, crear, eliminar, listar
- 🖥️ Estado del Sistema - CPU, RAM, discos, network
- ⚡ Protocolos - Ver protocolos habilitados
- 👷 Operadores - Ver actividad de operadores
- 🌐 Idioma - Cambiar entre español e inglés
| Comando | Descripción |
|---|---|
/start |
Muestra menú para crear peers |
/help |
Información sobre límites y funciones |
Funciones:
- ➕ Crear Peer - Generar nuevo peer temporal
- 📥 Descargar - Obtener archivo de configuración
- 🌐 Idioma - Cambiar idioma
Administrador (acceso completo)
- Todas las funciones del bot
- Gestión total de peers
- Acceso a estadísticas
- Supervisión de operadores
Operador (acceso limitado)
- Solo crear peers temporales
- Descargar configuración de peers creados
- Sin acceso a gestión de peers existentes
No autorizado (sin acceso)
- El bot rechaza cualquier comando
- Mensaje de error: "Acceso restringido"
-
API Key de WGDashboard
- Usar en variables de entorno
.env - Nunca subir
.enva git - Agregar a
.gitignore
- Usar en variables de entorno
-
Token del Bot de Telegram
- Mantener en
.env - Cambiar si se expone
- Usar restricciones de webhook si es posible
- Mantener en
-
Acceso al servidor
- Firewall activo
- SSH con claves públicas
- Cambiar puerto SSH por defecto
- Monitorear logs regularmente
-
WGDashboard
- Detrás de proxy reverso (nginx)
- HTTPS obligatorio
- Autenticación fuerte
- Backups regulares
- Nombre único
- IP automática
- Claves WireGuard generadas
- Archivo
.confenviado directamente - Límites automáticos aplicados
- Información de red (IP, endpoint, DNS)
- Estado de conexión (conectado/desconectado)
- Tráfico (enviado, recibido, acumulativo)
- Claves (pública, pre-shared)
- Trabajos programados
- Enlaces compartidos
- Restringir peer (bloquea conexión)
- Permitir access (quita restricción)
- Visualización por página
- Filtros disponibles
Los trabajos programados permiten:
- Límite de datos: Restringir cuando alcanza X GB
- Fecha de expiración: Restringir automáticamente en fecha X
- Crear/eliminar jobs sobre la marcha
- Gestión completa de tareas
Monitorea en tiempo real:
- 💻 Uso de CPU (%)
- 🧠 Uso de RAM (% y detalles)
- 💾 Uso de discos (principales)
- 📡 Interfaces de red (tráfico)
- 🔗 Interfaces WireGuard
El bot soporta automáticamente:
- 🇪🇸 Español - Interfaz completa en español
- 🇬🇧 Inglés - Interfaz completa en inglés
Los usuarios pueden cambiar el idioma desde el menú en cualquier momento. Las preferencias se guardan automáticamente.
# Si usas systemd
sudo journalctl -u wgbot -f
# Si ejecutas directamente
tail -f wg_bot.logDEBUG - Información detallada para debugging
INFO - Eventos importantes
WARNING - Advertencias (problemas potenciales)
ERROR - Errores que afectan funcionamiento
Editar .env:
LOG_LEVEL=DEBUG # Para más detalle en desarrollo
# Verificar que está corriendo
sudo systemctl status wgbot
# Ver logs
sudo journalctl -u wgbot -n 50
# Reiniciar
sudo systemctl restart wgbot- Verificar
WG_API_BASE_URLen.env - Verificar
WG_API_KEYes correcta - Probar conectividad:
curl https://tu-url/api/handshake - Verificar firewall/proxy permite la conexión
- Verificar
TELEGRAM_BOT_TOKENen.env - Crear nuevo token con @BotFather
- Verificar no hay espacios en blanco
# Reiniciar para cargar cambios
sudo systemctl restart wgbot
# O si usas tmux
tmux send-keys -t wgbot "C-c"
python main.pyinfo/resumen.md- Análisis técnico de la APIinfo/CAMBIOS_REALIZADOS.md- Historial de cambiosinfo/IMPLEMENTACION_*.md- Detalles de features
Las contribuciones son bienvenidas. Por favor:
- Fork del proyecto
- Crear rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit cambios (
git commit -m 'Add AmazingFeature') - Push a rama (
git push origin feature/AmazingFeature) - Abrir Pull Request
Jorge Elián Martinez Perdomo
Bot profesional de Telegram para administración de WireGuard usando WGDashboard
- GitHub: @jemartinezp1994
- Telegram: @jemp01K
- Discord: ff_c3r0