Panel ISP — Manual de uso
Guía completa para administrar tu WISP: clientes, facturación, cobros, cortes, monitoreo y configuración del router MikroTik.
Página de presentación pública
El sistema incluye una página de presentación pública accesible en /presentacion. Esta página usa el diseño Hyperspace con la paleta de colores de Ixtanet y sirve como punto de entrada para visitantes que aún no tienen sesión iniciada.
Comportamiento
- Cualquier visitante que intenta acceder al panel sin sesión activa es redirigido automáticamente a
/presentacion. - Si el usuario ya tiene sesión iniciada, la página muestra el botón "Ir al panel" en lugar de "Iniciar sesión".
- La página es accesible por cualquier persona en la red — no requiere login.
Secciones de la landing page
| Sección | Contenido |
|---|---|
| Inicio (hero) | Descripción principal del sistema + tarjeta de vista previa del panel |
| Características | Facturación automática, corte con portal de aviso y monitoreo centralizado |
| Servicios | Facturación, cobros, tickets, instalaciones con GPS, WhatsApp, POE, reportes, zonas y modalidades prepago/postpago |
| Seguridad | Perfiles por función, sesiones por dispositivo y cierre remoto de accesos sospechosos |
| Integración MikroTik | Simple Queues, Address List, sincronización por zona y acceso remoto mediante WireGuard |
| Acceso | Botón de llamado a la acción para iniciar sesión o ir al panel |
Acceso al panel
El panel es accesible desde cualquier navegador en la red local (o desde internet si se configura el router).
| Campo | Valor por defecto |
|---|---|
| URL | http://IP_DEL_SERVIDOR:8080 |
| Usuario | admin |
| Contraseña | admin123 |
Sesiones, dispositivos y perfiles de acceso
Cada inicio de sesión queda registrado para reconocer accesos normales y cerrar los sospechosos. Todos los perfiles pueden abrir Mis dispositivos desde la cabecera del panel y ver exclusivamente las sesiones de su propia cuenta. El administrador también dispone de la auditoría completa en Ajustes → Usuarios → Sesiones y dispositivos.
| Dato | Para qué sirve |
|---|---|
| Usuario y estado | Identifica la cuenta, la sesión actual y si continúa activa o fue cerrada |
| IP | Muestra desde qué conexión o red se accedió |
| Dispositivo | Resume navegador y sistema operativo detectados |
| Inicio / última actividad | Permite saber cuándo comenzó y cuándo se utilizó por última vez |
Cada usuario puede cerrar una sesión propia concreta o elegir Cerrar mis otras sesiones para conservar únicamente el dispositivo que está usando. No puede consultar ni cerrar dispositivos de otras cuentas. El administrador sí puede auditar todas las cuentas. Cambiar, recuperar o eliminar una contraseña invalida las sesiones anteriores de esa cuenta.
Cambiar la contraseña propia
Los usuarios técnicos y de finanzas pueden actualizar su contraseña sin solicitar ayuda al administrador:
- Inicia sesión y, en la cabecera del panel, selecciona Cambiar contraseña.
- Escribe tu Contraseña actual.
- Escribe una Nueva contraseña de al menos 6 caracteres y repítela en Confirmar nueva contraseña.
- Presiona Guardar. El dispositivo actual seguirá abierto y las demás sesiones de tu cuenta se cerrarán.
El administrador debe cambiarla desde Ajustes → Usuarios, editando su propia cuenta, escribiendo la nueva contraseña en el campo Contraseña y presionando Guardar.
Perfiles disponibles
| Perfil | Acceso principal |
|---|---|
admin | Configuración completa, usuarios, seguridad y todas las operaciones |
tecnico | Clientes, instalaciones, red y atención de tickets; sin funciones financieras |
finanzas | Facturación, cobros, recibos y cartera; sin configuración técnica |
tecnico_cobrador | Combina las tareas de técnico y cobrador sin otorgar permisos de administrador |
Asignar uno o varios sitios
En Ajustes → Usuarios, al crear o editar una cuenta puedes mantener Acceso a todos los sitios o desmarcarlo y seleccionar una o varias zonas. El administrador siempre conserva acceso global.
- Los usuarios existentes mantienen acceso a todos los sitios hasta que se configure una restricción.
- Una cuenta restringida solo ve clientes, mapa, instalaciones, tickets, facturas y cobros de sus zonas.
- El servidor también bloquea accesos directos a registros de otros sitios; no es únicamente un filtro visual.
- No se puede guardar una cuenta restringida sin seleccionar al menos un sitio.
Tab Clientes (directorio + cartera + monitor)
La pestaña Clientes usa una lista compacta, igual que la demostración, para localizar personas con rapidez. Cada tarjeta muestra el estado online/offline, la deuda y los datos esenciales. Al pulsar Ver cliente se abre una ficha separada con sus acciones y cobros reales.
Chips de filtro
Cuatro chips en la parte superior filtran la vista al instante:
| Chip | Muestra |
|---|---|
| Todos | Todos los clientes registrados |
| En Mora | Solo clientes con facturas pendientes |
| Suspendidos | Solo clientes cortados en MikroTik |
| En Línea | Solo clientes activos en ARP del router |
Tarjeta de cliente
Cada cliente se muestra como una tarjeta con:
- Punto de estado ● verde (en línea) / ● rojo (offline o suspendido)
- Badges: Suspendido, N fact · Q X o Al día
- Meta: plan, IP, velocidad y dirección
- Ver cliente: abre inmediatamente debajo de la tarjeta seleccionada una ficha con información, servicios y acciones
- Cobrar: abre la misma ficha directamente en las facturas pendientes
- Dentro de la ficha: WhatsApp, Editar, Cobrar total, Cortar / Reactivar y demás acciones reales
Búsqueda
El buscador propio de Clientes filtra las tarjetas por nombre, teléfono, IP, dirección o zona. Los chips se pueden combinar con la búsqueda y con el selector Todas las zonas, que también permite encontrar clientes sin zona asignada.
El selector de orden permite acomodar los resultados por nombre de A a Z o de Z a A, mayor o menor deuda, y por zona. A la derecha se muestra cuántos clientes cumplen todos los filtros aplicados. En celulares estos controles se acomodan verticalmente para facilitar su uso.
Las opciones de exportación, importación, cortes y suspensión manual están agrupadas en Herramientas para mantener la pantalla despejada.
Campos del cliente
| Campo | Descripción | Requerido |
|---|---|---|
| Nombre | Identificador único del cliente (clave primaria) | Sí |
| IP | Dirección IP asignada al cliente | Sí para corte |
| Teléfono | Número WhatsApp (sin código de país si está configurado globalmente) | Opcional |
| Dirección | Dirección física del cliente | Opcional |
| Plan | Plan de servicio (rellena velocidad y monto automáticamente) | Sí para facturar |
| Monto mensual | Cuota individual (puede diferir del plan) | Sí para facturar |
| Límite facturas | Nro. de facturas pendientes antes del corte automático (default: 3) | Opcional |
| Zona | Zona / nodo al que pertenece el cliente. Determina qué MikroTik gestiona sus colas y cortes. | Opcional |
Importar desde CSV
Usa el botón Importar CSV para cargar tu directorio existente. El archivo debe tener columnas: nombre, ip, telefono, direccion, monto_mensual, velocidad_mbps.
Nueva instalación de cliente
Cuando conectas un cliente nuevo, sigue estos pasos en el panel:
Registrar el cliente
En el tab Clientes, abre Nueva Instalación. Llena nombre, IP asignada y teléfono; selecciona el plan y la Zona / Nodo donde se conectará el cliente.
En la lista de instalaciones, toca el nombre de una instalación completada para ir directamente a la ficha expandida de ese cliente en el panel.
Cola MikroTik creada automáticamente
Al guardar, el panel crea la Simple Queue en el router con el ancho de banda del plan. No necesitas entrar al router.
Verificar en el mismo tab
El cliente aparece en la grilla. Usa el chip En Línea para verificar que ya tiene punto verde si está conectado.
Mapa móvil para recorridos
Desde Mapa, el cobrador puede activar Mi ubicación y ver los clientes ordenados por distancia. En celulares, la lista inferior permite buscar por nombre, dirección o zona y filtrar Con deuda o Cerca de mí (hasta 5 km).
- Cada cliente moroso muestra el total pendiente y la cantidad de facturas.
- Cómo llegar abre la navegación de Google Maps hasta las coordenadas guardadas.
- WhatsApp abre el contacto del cliente sin salir del recorrido.
Facturación
Facturación masiva automática
El sistema genera facturas automáticamente el día configurado en Ajustes → Facturación. No requiere intervención.
Facturación masiva manual
En la pestaña Facturas, el botón "Facturar todos" genera facturas pendientes para todos los clientes con monto > 0. Es idempotente: si ya existe la factura del mes actual, no crea una duplicada.
Facturación por tipo de zona (Prepago / Postpago)
El concepto de cada factura generada automáticamente depende del tipo de cobro configurado en la zona del cliente:
| Tipo de zona | Concepto generado | Ejemplo (ejecución 1 jun 2026) |
|---|---|---|
| Postpago | Servicio del mes en curso | “Servicio Junio 2026” |
| Prepago | Servicio del mes siguiente | “Servicio Julio 2026” |
Los clientes sin zona asignada son tratados como postpago.
Factura individual
En la pestaña Facturas → Emitir Factura Individual, selecciona el cliente y genera la factura si lo necesitas fuera del ciclo normal.
monto_mensual = 0, no se le generan facturas automáticas. Asegúrate de asignar un plan o monto.Cobros y pagos
El flujo guiado de pagos está disponible dentro de la ficha de cada cliente. Permite cobrar una factura, varias o toda la deuda en una sola operación.
Cobrar una factura
Abrir la ficha
En Clientes, pulsa Ver cliente y después Registrar pago.
Seleccionar y revisar
Selecciona una factura, varias o Pagar toda la deuda. El panel calcula el monto; elige el método y pulsa Continuar para revisar el resumen.
Recibo y WhatsApp
Después de confirmar, el recibo se abre y muestra automáticamente el diálogo de impresión. Si el cliente tiene teléfono registrado, el PDF también se envía por WhatsApp. Los botones Ver recibo y Enviar por WhatsApp permanecen disponibles para repetir cualquiera de las acciones.
Reactivación automática
Si el cliente estaba suspendido y al pagar baja su deuda por debajo del límite, se reactiva automáticamente en el router.
Liquidar toda la deuda
Dentro de Registrar pago, pulsa Pagar toda la deuda. Todas las facturas quedarán seleccionadas y podrás revisar el total antes de confirmar.
Pagar y dar de baja el servicio
Si el cliente únicamente llega a cancelar lo que debe y ya no continuará, en Después del pago selecciona Paga su deuda y ya no continuará. El panel exige liquidar toda la deuda, conserva el historial, marca al cliente como Retirado, corta el acceso y deja de generar nuevas mensualidades.
Reconectar aunque todavía tenga deuda
En la ficha de un cliente suspendido con deuda aparece Reconectar junto a un selector de 1, 3, 7 o 15 días. La deuda no se elimina ni se marca como pagada; solamente se concede acceso temporal. Cuando vence el plazo, el siguiente control de cortes vuelve a suspenderlo si continúa sobre su límite.
Historial de pagos
La pestaña Pagos muestra todos los cobros registrados con fecha, monto y método. Cada pago tiene tres acciones rápidas:
| Botón | Acción |
|---|---|
| print Imprimir | Abre el recibo en formato imprimible en una nueva pestaña |
| picture_as_pdf PDF WhatsApp | Genera el recibo con el anuncio del servicio de TV y lo envía al número del cliente vía WhatsApp. Requiere configurar la URL de documentos en Ajustes → WhatsApp. |
| delete Eliminar | Elimina el registro de pago y revierte la factura a estado Pendiente |
Tickets de soporte
La pestaña Soporte centraliza incidencias de clientes, seguimiento interno y resolución. Cada ticket guarda el cliente, la categoría, la prioridad, comentarios y estado de atención.
Los tickets no se eliminan al cerrarlos: quedan como historial permanente en la ficha del cliente. En Clientes → Ver cliente → Tickets anteriores se muestran hasta los últimos 100 reportes con fecha, estado, descripción, técnico asignado, comentarios y fecha de cierre.
Flujo básico
Crear ticket
Desde Soporte → Nuevo Ticket, registra el cliente, título, descripción, categoría y prioridad.
Asignar seguimiento
Los administradores pueden asignar el ticket a un técnico y agregar comentarios durante la atención.
Cerrar y notificar
Al cerrar el ticket, el sistema marca el caso como resuelto y envía una notificación por WhatsApp al cliente si tiene teléfono registrado.
Campos del ticket
| Campo | Descripción |
|---|---|
| Cliente | Nombre del cliente afectado |
| Título | Resumen corto del problema |
| Descripción | Detalle completo de la incidencia |
| Categoría | Soporte técnico, facturación, cambios de servicio, problema general o mantenimiento |
| Prioridad | Baja, Normal, Alta o Urgente |
| Estado | Abierto, En progreso, Resuelto o Cerrado |
| Comentarios | Historial de seguimiento por usuario |
admin, tecnico y tecnico_cobrador pueden crear y comentar tickets. El cierre y la asignación quedan restringidos al administrador.Pago adelantado
Permite registrar el pago de uno o varios meses futuros de un cliente. Las facturas se crean directamente con estado Pagada y la facturación automática las saltará cuando llegue su fecha.
Cómo registrar un pago adelantado
Abrir el modal
En la tarjeta del cliente (tab Clientes), haz clic en el botón Adelantar (ícono de calendario verde).
Indicar cuántos meses
Escribe el número de meses a adelantar (mínimo 1, máximo 12) y selecciona el método de pago: Efectivo, Transferencia o Tarjeta.
Confirmar
Haz clic en Confirmar. El sistema crea N facturas con estado Pagada y N registros de pago vinculados. Si WhatsApp está activo, se envía un mensaje de confirmación al cliente.
¿Desde qué mes empieza?
El sistema toma como punto de partida la última factura registrada del cliente y genera los meses siguientes. Ejemplo:
| Última factura | Meses adelantados | Facturas creadas |
|---|---|---|
| Mayo 2026 | 3 | Junio · Julio · Agosto 2026 |
| Diciembre 2026 | 2 | Enero · Febrero 2027 |
Efecto en la facturación automática
Cuando el scheduler genera la facturación mensual, verifica si ya existe una factura del mes para ese cliente. Como las facturas adelantadas ya existen (aunque sean Pagadas, el concepto del mes coincide), no se duplican.
admin, finanzas y tecnico_cobrador. El rol tecnico no puede registrar pagos adelantados.Actualización obligatoria de datos antes de cobrar
Cuando esta opción está activa, el sistema verifica que el teléfono y la dirección del cliente estén actualizados antes de registrar cualquier cobro. Si alcanzaron el período mensual configurado, aparece un modal pidiendo confirmar o corregir la información.
Configurar el período
Ir a Ajustes → Automatización
En el campo "Actualización de datos cada (meses)", elige de 1 a 12 meses. El sistema compara meses calendario completos, no una cantidad aproximada de días.
Guardar
Haz clic en Guardar configuración. El cambio aplica de inmediato — no requiere reiniciar el servidor.
¿Cómo funciona al cobrar?
Al hacer clic en cualquier botón de cobro (factura individual, cobrar total o desde la pestaña Facturas), el panel consulta /api/check_actualizacion/<nombre> antes de enviar el formulario:
| Resultado | Comportamiento |
|---|---|
necesita: false | El cobro procede normalmente sin interrupción |
necesita: true | Se abre el modal "Actualizar datos del cliente" |
Modal de actualización
El modal muestra el nombre del cliente (no editable), el teléfono actual y la dirección actual, listos para confirmar o corregir. Al hacer clic en "Guardar y Cobrar":
- Se guardan los datos actualizados del cliente (
POST /api/actualizar_datos_cliente) - También puedes confirmar o cambiar la Zona / Nodo del cliente antes de cobrar.
- Se actualiza
ultima_actualizacionen la base de datos - Se envía el formulario de cobro original automáticamente
¿Cuándo se reinicia el contador?
La fecha de ultima_actualizacion se actualiza en dos momentos:
- Al guardar el formulario del cliente (editar desde el acordeón)
- Al confirmar el modal de actualización antes de cobrar
Cortes y suspensiones
Corte automático
El sistema evalúa el estado del cliente cada vez que se crea o cobra una factura. Si las facturas pendientes superan el límite configurado (por defecto 3), el cliente es suspendido automáticamente en MikroTik.
clientes_suspendidos, coloca automáticamente las reglas de bloqueo antes de FastTrack y cierra las conexiones activas para que la suspensión sea inmediata.Los clientes antiguos que todavía no tienen una zona asignada se administran desde la primera zona configurada. Al usar Exportar reglas en esa zona también se sincronizan esos clientes.
Corte manual
En la pestaña Clientes, cada tarjeta tiene el botón Cortar para suspender manualmente sin importar la deuda. También hay un formulario rápido con el botón Suspender manual en la barra de herramientas.
Reactivación
Al cobrar suficientes facturas para bajar la deuda por debajo del límite, el sistema reactiva automáticamente al cliente. También puedes reactivar manualmente con el botón Reactivar en la tarjeta del cliente (tab Clientes).
Corte masivo
El día de corte configurado en Ajustes, el job automático de las 6 AM evalúa a todos los clientes y aplica suspensiones masivas según su deuda acumulada.
| Acción | Efecto en MikroTik |
|---|---|
| Suspender | IP agregada a clientes_suspendidos |
| Activar / pagar | IP eliminada de clientes_suspendidos |
Monitoreo de clientes y red
LibreNMS es la fuente del estado visible de disponibilidad. El panel evita consultar continuamente cada cliente desde MikroTik, reduciendo trabajo en los routers incluso cuando la red crece a cientos o miles de abonados.
Usa el botón LibreNMS de la cabecera o la tarjeta Monitoreo de red de Inicio. Se abrirá el servidor dedicado, donde puedes consultar disponibilidad, CPU, memoria, interfaces, tráfico y gráficas históricas.
La pestaña Clientes muestra un bloque rojo únicamente cuando el último sondeo de LibreNMS marca clientes sin respuesta. Las caídas se ordenan por nombre, se acomodan en dos columnas en computadora y en una columna en celular. Para conservar espacio se muestran primero 5 clientes; usa Ver caídas más para desplegar el resto. El badge indica cuántas caídas existen y se actualiza cada minuto. Una caída permanece visible hasta que un sondeo posterior confirme la recuperación; entonces aparece la alerta verde Conexión recuperada. La primera consulta solo establece la línea base y no repite avisos antiguos. Los clientes nuevos con IP válida se sincronizan con LibreNMS cada hora.
Sistema de notificaciones
La campana combina las notificaciones administrativas de facturación, cobros, suspensiones, reactivaciones y errores de WhatsApp con las caídas activas y reconexiones detectadas por LibreNMS. Cada cliente caído aparece con su nombre e IP; cuando vuelve a estar en línea se retira de las caídas y se agrega un evento verde de recuperación.
Tipos de notificaciones
| Tipo | Color | Cuándo se genera |
|---|---|---|
| Cliente suspendido | danger | Al aplicar corte automático o manual |
| Cliente reactivado | success | Al cobrar y reactivar automáticamente |
| Facturación completada | info | Al terminar la facturación masiva diaria |
| Corte masivo ejecutado | warning | Al terminar el corte masivo del día de corte |
Historial
Haz clic en la campana para ver primero las caídas activas y después las últimas 50 notificaciones administrativas. Abrir la campana marca como leídos los avisos administrativos, pero el contador de caídas permanece visible mientras existan clientes sin conexión.
Dashboard
La pestaña Inicio muestra métricas administrativas y un acceso directo a LibreNMS.
| Métrica | Descripción | Frecuencia |
|---|---|---|
| Clientes al día | Sin facturas pendientes | En cada carga |
| Clientes en mora | Con al menos una factura pendiente | En cada carga |
| Monitoreo de red | Abre LibreNMS en una pestaña nueva | Bajo demanda |
| Total clientes | Total registrados en la DB | En cada carga |
Integración MikroTik
El panel se conecta al router MikroTik vía API RouterOS (puerto 8728 por defecto). Soporta RouterOS 6 y 7.
Configurar la conexión
Habilitar API en MikroTik
En Winbox: IP → Services → api — asegúrate de que esté habilitado (puerto 8728).
Ingresar credenciales en Ajustes
En el panel: Ajustes → MikroTik. Llena IP/host, usuario y contraseña del router.
Configurar firewall para cortes
Agrega una regla en MikroTik: IP → Firewall → Filter — bloquear tráfico forward desde src-address-list=clientes_suspendidos.
error_router.html con botón para reintentar. Los datos de clientes en la DB siguen accesibles aunque el router esté apagado.Portal de Suspensión
Cuando un cliente está suspendido, cualquier página web que intente visitar (HTTP) es redirigida automáticamente a una página personalizada que muestra su nombre, el total adeudado, sus facturas pendientes, datos de contacto y métodos de pago.
Cómo funciona
El sistema usa el Web Proxy de MikroTik (RouterOS), que intercepta el tráfico HTTP y envía al cliente un redirect HTTP 302 a la URL del portal con su nombre incluido:
http://<IP_PANEL>/portal/suspendido/NOMBRE_CLIENTELo que ocurre al suspender un cliente:
- La IP del cliente se agrega a
clientes_suspendidos(address-list del firewall). - El panel habilita el Web Proxy en MikroTik (
/ip/proxy enabled=yes) si no estaba activo. - Se crea (si no existe) la regla NAT que redirige el tráfico HTTP de clientes suspendidos al proxy.
- Se agrega una regla en
/ip/proxy/accesspara esa IP específica conaction=redirecta la URL del portal. - Se cierran las conexiones activas del cliente para evitar que FastTrack mantenga tráfico anterior al corte.
Al reactivar, la regla del web proxy se elimina automáticamente.
Configurar en Ajustes
| Campo | Descripción |
|---|---|
| IP del Panel | IP de este servidor accesible desde los clientes (ej. 10.1.9.17). Es la IP que aparecerá en la URL del portal. |
| Puerto Proxy | Puerto del Web Proxy en MikroTik. Default 8080. WispHub usa 999. Debe coincidir con lo configurado en el router. |
| Contenido del Portal | Editor visual para personalizar dirección, horario, correo, métodos de pago, formato, listas y enlaces sin escribir HTML. |
Lo que ve el cliente
- Nombre de la empresa y del cliente
- Mensaje: “Tu servicio ha sido suspendido por falta de pago”
- Total pendiente destacado
- Tabla con sus facturas pendientes (concepto, monto, fecha)
- Botones de Llamar y WhatsApp
- Bloque personalizable: dirección, horario, email, métodos de pago
https:// o visiten sitios HTTPS verán un error de conexión normal. Para una experiencia completa, el cliente debe intentar visitar un sitio HTTP primero — los navegadores modernos intentan HTTP antes de HTTPS al escribir una URL sin protocolo.Exportar MikroTik
El botón "Exportar MikroTik" en la pestaña Clientes sincroniza todos los clientes al router como Simple Queues. Si tienes varias Zonas configuradas, la exportación agrupa los clientes por zona y sincroniza cada router por separado — todo en un solo clic.
Úsalo cuando:
- El router fue reseteado y perdió la configuración
- Quieres aplicar cambios de velocidad masivos
- Acabas de migrar de otro sistema
Clientes sin plan asignado
Si algún cliente tiene velocidad_mbps = 0, el sistema muestra un modal para asignar plan antes de exportar.
Clientes sin cola en el router
Si un cliente existe en la DB pero no tiene cola en MikroTik (nunca fue instalado), aparece en la lista "Sin cola". Debes crear la cola manualmente o registrar la instalación del cliente con una IP válida.
Colas dinámicas
MikroTik genera colas dinámicas para conexiones DHCP y PPPoE (nombres como <pppoe-oficina> o dhcp-ds<MAC>). Estas colas no se pueden editar. El panel las detecta y las salta automáticamente durante la exportación — no generan error.
Zonas / Nodos Starlink
El sistema de zonas permite gestionar múltiples routers MikroTik simultáneamente. Cada zona representa un nodo de red — por ejemplo, cada enlace Starlink con su propio MikroTik. Cada cliente se asigna a una zona y todas las operaciones (colas, cortes, reactivaciones, exportaciones) se ejecutan automáticamente en el router de esa zona.
Crear una zona
Ir a Ajustes → Zonas / Nodos Starlink
En la sección de Zonas de la página de Ajustes, haz clic en Agregar Zona.
Llenar los datos de la zona
Ingresa el nombre (ej. "Starlink Norte"), el host/IP del MikroTik de esa zona — puede ser una IP WireGuard si está detrás de Starlink —, el usuario, la contraseña y una descripción opcional.
Probar la conexión
Usa el botón Probar junto a la zona. El sistema se conecta al router y devuelve la versión de RouterOS. Si falla, verifica IP, credenciales y que la API (puerto 8728) esté habilitada.
Asignar clientes a la zona
Al editar o crear un cliente, el formulario muestra un selector de zona (visible si hay al menos una zona creada). Elige la zona correspondiente y guarda.
Comportamiento por operación
| Operación | Comportamiento con zonas |
|---|---|
| Crear / editar cliente | La cola Simple Queue se crea/actualiza en el router de la zona del cliente |
| Corte automático / manual | La IP se agrega a clientes_suspendidos en el router de la zona |
| Reactivar | La IP se elimina de clientes_suspendidos en el router correcto |
| Exportar MikroTik | Los clientes se agrupan por zona y se sincroniza cada router por separado en un solo clic |
| Monitor (cada 1 min) | Se consultan ARP y colas de todos los routers y se fusionan en la vista unificada |
| Check de estado en vivo | El dashboard muestra clientes online de todos los routers combinados |
Badge de zona en el directorio
Cada tarjeta de cliente muestra el nombre de su zona bajo el nombre del cliente con el ícono de antena cell_tower. Si la zona es prepago, también se muestra el badge PREPAGO. Esto permite identificar a qué nodo y modelo de cobro pertenece cada cliente de un vistazo.
Tipo de cobro: Prepago vs Postpago
Cada zona puede configurarse como postpago (predeterminado) o prepago. Esto cambia el comportamiento de la facturación automática y el umbral de corte para todos los clientes de esa zona.
| Aspecto | Postpago (default) | Prepago |
|---|---|---|
| Concepto de factura | Mes en curso (ej. “Servicio Mayo 2026”) | Mes siguiente (ej. “Servicio Junio 2026”) |
| Cuándo se genera | Al inicio del mes actual | Al inicio del mes actual (para cubrir el mes siguiente) |
| Límite para corte automático | El configurado en el cliente (default 3) | 1 — corte inmediato con 1 factura pendiente |
| Badge en directorio | — | PREPAGO |
Configurar el tipo de cobro de una zona
Abrir el modal de la zona
En Ajustes → Zonas, haz clic en el botón Editar de la zona que deseas configurar.
Seleccionar el tipo de cobro
En el campo “Tipo de cobro”, elige entre Postpago — factura mes actual o Prepago — factura mes siguiente (pago anticipado).
Guardar
Haz clic en Guardar. El cambio aplica en el próximo ciclo de facturación automática.
Gestión de zonas
| Acción | Descripción |
|---|---|
| Editar | Actualiza nombre, host, usuario y descripción. La contraseña solo se cambia si se escribe una nueva en el modal. |
| Probar | Verifica la conexión al MikroTik de la zona en tiempo real y muestra la versión de RouterOS. |
| Eliminar | Elimina la zona. Los clientes asignados quedan sin zona (pasan a usar el router principal). El tipo de cobro también se pierde. |
Powerbox POE
Monitoreo de switches MikroTik con puertos POE. El link Powerbox POE solo aparece en el menú si tienes al menos un switch registrado.
Agregar un switch POE
Ve a Ajustes → Powerbox POE y registra el switch con su nombre y datos de conexión al router. Desde ese momento el panel tomará lecturas cada 5 minutos.
Información por puerto
| Dato | Descripción |
|---|---|
| Voltaje (V) | Tensión en el puerto POE |
| Corriente (mA) | Corriente consumida |
| Potencia (W) | Potencia activa = V × mA |
| Estado | Activo · Esperando · Falla · Deshabilitado |
Historial gráfico
Selecciona el período: diario, semanal, mensual o trimestral. Los datos se muestrean cada 5 minutos.
MikroTik remoto detrás de Starlink (WireGuard)
Si tienes routers MikroTik en ubicaciones remotas que se conectan a internet vía Starlink, no tienen IP pública fija (CGNAT). El panel no puede alcanzarlos directamente. La solución es crear una VPN WireGuard donde el servidor del panel actúa de hub y cada MikroTik se conecta como cliente.
Arquitectura
| Nodo | IP WireGuard | Rol |
|---|---|---|
| Servidor del panel | 10.200.0.1 | Hub VPN (siempre accesible) |
| MikroTik 1 (Starlink A) | 10.200.0.2 | Peer VPN / router de clientes |
| MikroTik 2 (Starlink B) | 10.200.0.3 | Peer VPN / router de clientes |
Paso 1 — Instalar WireGuard en el servidor Linux
Instalar y generar llaves
apt install wireguard -y
cd /etc/wireguard
# Llave del servidor
wg genkey | tee server_priv | wg pubkey > server_pub
# Una llave por cada MikroTik
wg genkey | tee mt1_priv | wg pubkey > mt1_pub
wg genkey | tee mt2_priv | wg pubkey > mt2_pub
Crear /etc/wireguard/wg0.conf
[Interface]
Address = 10.200.0.1/24
ListenPort = 51820
PrivateKey = <contenido de server_priv>
# MikroTik 1
[Peer]
PublicKey = <contenido de mt1_pub>
AllowedIPs = 10.200.0.2/32
# MikroTik 2
[Peer]
PublicKey = <contenido de mt2_pub>
AllowedIPs = 10.200.0.3/32
Activar la VPN y abrir el puerto
systemctl enable --now wg-quick@wg0
ufw allow 51820/udp
Paso 2 — Configurar WireGuard en cada MikroTik (RouterOS 7)
Ejecuta esto en la terminal de cada MikroTik (Winbox → Terminal o SSH). Reemplaza los valores entre < >:
# ── MikroTik 1 (repite en MikroTik 2 cambiando la IP a 10.200.0.3) ──
/interface/wireguard/add \
name=wg-panel \
listen-port=13231 \
private-key="<contenido de mt1_priv>"
/interface/wireguard/peers/add \
interface=wg-panel \
public-key="<contenido de server_pub>" \
endpoint-address=<IP_PUBLICA_SERVIDOR> \
endpoint-port=51820 \
allowed-address=10.200.0.0/24 \
persistent-keepalive=25
/ip/address/add address=10.200.0.2/24 interface=wg-panel
ping 10.200.0.2 y ping 10.200.0.3. Si responden, el túnel está activo.Paso 3 — Habilitar API en cada MikroTik
El panel se conecta a los routers vía la API RouterOS (puerto 8728). Asegúrate de que la API esté habilitada y acepte conexiones desde la VPN:
/ip/service/set api disabled=no
# Opcional: restringir a solo la IP del servidor VPN
/ip/service/set api address=10.200.0.1/32
Paso 4 — Apuntar el panel al router remoto
Una vez activo el túnel, el router responde en su IP WireGuard. Para operarlo desde el panel:
- Ve a Ajustes → MikroTik
- Cambia el Host a la IP WireGuard del router deseado (ej.
10.200.0.2) - Ingresa usuario y contraseña del router remoto
- Guarda — el panel apuntará a ese router
¿Por qué persistent-keepalive?
Starlink usa CGNAT, lo que significa que el NAT cierra sesiones UDP inactivas. El parámetro persistent-keepalive=25 hace que el MikroTik envíe un paquete al servidor cada 25 segundos, manteniendo el túnel siempre abierto aunque no haya tráfico real de clientes.
Ajustes generales
Los ajustes están organizados en pestañas. Selecciona una categoría en la barra superior para ver solamente sus opciones; la última pestaña utilizada queda recordada para la próxima visita.
| Sección | Qué configura |
|---|---|
| Empresa | Nombre de la empresa y teléfono de contacto |
| MikroTik | IP/host, usuario y contraseña del router |
| Usuarios | Cuentas con perfil administrador, técnico, finanzas o técnico-cobrador |
| Seguridad | Contraseñas, sesiones activas, IP, dispositivo, última actividad y cierre remoto |
| Facturación | Día del mes para generar facturas, día de corte, concepto mensual |
| Automatización | Período de actualización obligatoria de datos del cliente antes de cobrar (0 = desactivado) |
| URL de API, método, headers y cuerpo del mensaje | |
| SMTP | Servidor de correo para backups automáticos |
| Planes | Planes de servicio con velocidad y monto |
| Publicidad | Anuncio configurable que aparece en los recibos impresos y PDF |
| Zonas / Nodos Starlink | Routers MikroTik adicionales. Cada zona tiene host, usuario y contraseña propios, y define el tipo de cobro (postpago o prepago) para sus clientes. Los clientes se asignan a una zona para que sus operaciones usen el router correcto. |
Publicidad en recibos
En Ajustes → Publicidad puedes cambiar el anuncio que aparece al final de cada recibo impreso y PDF.
| Opción | Función |
|---|---|
| Mostrar publicidad | Activa o desactiva completamente el anuncio |
| Mostrar imagen de TV | Permite usar solo texto cuando se imprime con poco espacio o en blanco y negro |
| Elegir imagen | Carga una imagen PNG, JPG o WebP de hasta 3 MB y muestra una vista previa antes de guardar |
| Restaurar original | Vuelve a utilizar la imagen de TV incluida con el panel |
| Título | Frase principal y destacada del anuncio |
| Editor visual | Aplica negrita, cursiva, subrayado, alineación, listas y enlaces sin escribir HTML |
La vista previa cambia mientras escribes. Presiona Guardar Ajustes para aplicar el anuncio a los siguientes recibos.
Planes de servicio
Los planes se administran en Ajustes → Planes de Servicio. Cada plan tiene:
- Nombre: identificador del plan (ej. "Básico 10 Mbps")
- Velocidad (Mbps): se aplica como
max-limiten la cola MikroTik - Monto mensual: cuota que se cobra al cliente
Al seleccionar un plan en el formulario de cliente, se rellenan automáticamente velocidad y monto.
Integración WhatsApp
El panel puede enviar mensajes a través de cualquier API de WhatsApp (CallMeBot, UltraMsg, Twilio, etc.).
Configuración
En Ajustes → WhatsApp:
| Campo | Descripción |
|---|---|
| URL | Endpoint de tu API de WhatsApp |
| Método | GET o POST según tu proveedor |
| Headers | JSON con cabeceras (ej. {"apikey": "xxx"}) |
| Body template | Cuerpo del mensaje con variables {cliente}, {monto}, {count} |
| Código de país | Se agrega como prefijo al teléfono del cliente (ej. 502 para Guatemala) |
Cuándo se envían mensajes
- Al cobrar una factura → mensaje de recibo de pago
- Último día del mes → recordatorio de pago a clientes con deuda
- Manual desde el historial de pagos → recibo en PDF (requiere URL de documentos)
- Alertas de red y disponibilidad → se administran desde LibreNMS
Envío de recibo PDF
El botón PDF en cada fila de la pestaña Pagos genera el recibo en PDF y lo envía vía API. Para usarlo, configura:
| Campo en Ajustes | Descripción |
|---|---|
| URL documentos PDF | Endpoint para enviar documentos (ej. Evolution API: https://tu-servidor/message/sendMedia/INSTANCIA) |
| Body PDF (JSON) | Template JSON con comodines: {destinatario}, {documento_base64}, {filename} |
Los headers y el método se heredan de la configuración principal de WhatsApp.
Si WhatsApp falla
Los errores de envío no bloquean el cobro. El pago se registra igualmente y el detalle completo del error de la API aparece en la campana de notificaciones con el título "Fallo WA — [nombre del cliente]".
"Connection Closed", la instancia de WhatsApp en tu servidor Evolution API está desconectada. Entra al panel de Evolution, busca tu instancia y reconecta escaneando el código QR.Recordatorios masivos — prevenir bloqueo de cuenta
WhatsApp puede detectar como spam los envíos repetitivos o demasiado rápidos. El sistema reduce el riesgo con una cola de envío: aplica una pausa aleatoria mínima de 12 segundos, descansa de 3 a 5 minutos después de cada lote de 20 mensajes, varía el cierre y registra cada destinatario enviado para no repetirlo durante el mismo mes.
| Práctica recomendada | Detalle |
|---|---|
| Pausa entre mensajes | Configurable; el sistema exige al menos 12 s y recomienda 15–30 s |
| Descanso por lote | 3–5 minutos después de cada 20 mensajes enviados |
| Protección ante errores | Detiene la campaña ante señales de límite/bloqueo o 3 errores consecutivos |
| Sin duplicados | Un cliente enviado correctamente no recibe nuevamente el recordatorio durante ese mes |
| Mensaje personalizado | Usa {cliente} en el template para que cada mensaje sea único |
| Evitar palabras bloqueadas | No uses "gratis", "promoción", "ganar" ni URLs acortadas |
| Número verificado | Usa WhatsApp Business con número registrado a nombre de la empresa |
Backup automático
El sistema puede enviar una copia de la base de datos por correo electrónico de forma automática.
Configura el servidor SMTP en Ajustes → SMTP con host, puerto, usuario y contraseña. Selecciona la frecuencia (diaria, cada 3 días, semanal).
Automatización (scheduler)
El panel ejecuta 2 tareas automáticas propias. LibreNMS ejecuta por separado sus tareas de descubrimiento y sondeo:
| Job | Frecuencia | Qué hace |
|---|---|---|
job_diario | Cada día a las 6:00 AM | Facturación masiva (postpago: mes actual; prepago: mes siguiente) + corte automático + recordatorios WA del último día del mes |
job_muestreo_poe | Cada 5 minutos | Registra lecturas POE por puerto en los switches |
Preguntas frecuentes
¿Qué pasa si el MikroTik se apaga?
El panel sigue funcionando. Los datos de clientes, facturas y pagos están en la base de datos local (SQLite). Al volver el router, usa Exportar MikroTik para resincronizar las colas.
¿Puedo tener varios routers MikroTik?
Sí. El panel soporta múltiples routers simultáneamente mediante el sistema de Zonas. Crea una zona por router en Ajustes → Zonas / Nodos Starlink, ingresa las credenciales de cada MikroTik y asigna los clientes a su zona correspondiente. Si los routers están detrás de Starlink (CGNAT), conéctalos al servidor con WireGuard VPN y usa la IP del túnel como host de la zona. Consulta la sección Zonas / Nodos Starlink y MikroTik remoto (WireGuard) del manual.
¿Cómo actualizo el panel?
cd ~/panel-isp-ixtanet
bash start.sh
El script de inicio hace git pull automáticamente y reinicia la aplicación.
¿Dónde está la base de datos?
Archivo pagos.db en la carpeta del proyecto. Es un SQLite estándar — puedes abrirlo con cualquier cliente SQLite (DB Browser, TablePlus, etc.).
¿Por qué me llegó la misma notificación varias veces?
Ocurre si el servidor fue iniciado más de una vez sin detener el proceso anterior, generando múltiples schedulers. Solucionado con bash start.sh que mata procesos previos antes de arrancar.
¿Dónde reviso si un router o enlace está fuera de línea?
Abre LibreNMS desde la cabecera del panel. Allí se centralizan la disponibilidad, interfaces, tráfico, CPU, memoria y gráficas históricas.
¿Puedo acceder desde el celular?
Sí. La interfaz es responsive y funciona bien en dispositivos móviles. Las tarjetas de clientes, facturas y pagos se adaptan a pantallas pequeñas. Asegúrate de acceder desde la red local o configurar acceso remoto en tu router.
¿Cómo importo clientes desde WispHub?
Descarga el backup desde WispHub (CSV de clientes + historial de pagos). Copia los archivos a la carpeta del proyecto y ejecuta en la terminal:
python _importar_wisphub.py
El script importa clientes, facturas y pagos; y agrega columnas extra a la tabla clientes: ip, cedula, fecha_instalacion, id_wisphub, zona. Edita la ruta del backup dentro del script antes de ejecutarlo.
La deuda pendiente muestra un monto muy alto
Si importaste historial desde otro sistema, la DB contiene facturas pendientes de años anteriores. El dashboard filtra la deuda al año actual para mostrar solo lo relevante. El historial completo sigue disponible en la pestaña Facturas.
Panel ISP · Datos 100% locales · Sin dependencias de nube