Gotify Commander
Un mando a distancia para tus servidores. El primer plugin de Gotify que responde.
El Problema
Estás paseando. Tu móvil vibra: un servicio necesita reiniciarse. Con cualquier otra herramienta necesitarías un portátil, una terminal y una sesión SSH. Se acabó el paseo.
La Solución
Con gotify-commander escribes restart nginx y recibes ✓ nginx reiniciado. Es la misma app que ya usas para alertas, y ahora responde. Sin portátil, sin SSH, sin terminal. El paseo continúa.
Características
27 Comandos, 6 Categorías
Reinicia servicios, comprueba discos, consulta logs, analiza tráfico, recibe un resumen de salud cada día, gestiona los contenedores Docker permitidos o localiza tu móvil, todo desde la app de Gotify que ya usas.
Panel de Control Web
Una consola en el navegador, protegida con contraseña. Una línea de comandos que sugiere comandos, máquinas y servicios mientras escribes, los comandos de las categorías de tu YAML a un clic y una sesión con cada comando ejecutado y su salida.
Arquitectura de App Unificada
Comandos y respuestas fluyen por una única app Gotify. Envía un comando, recibe la respuesta como la siguiente notificación. Sin canales separados que gestionar.
Multi-Máquina
Servicios del VPS con systemctl, servicios del Mac con SSH + launchctl. Con os: darwin en un target Mac, los diagnósticos usan lo que tiene macOS. Apunta a cualquier máquina por nombre: free mac, uptime vps.
Seguridad Primero
Contraseña del panel generada por defecto, solo administradores y lista blanca de comandos sin passthrough a la shell. Cada comando tiene un tiempo límite, las claves de host SSH se comprueban y los mensajes se limitan a 20 por minuto. Reboot requiere target explícito.
GPS Locate y Analíticas
Localiza tus dispositivos con locate. Analiza tráfico con rhit, analíticas web con GoAccess. Verificación de certificados TLS, consultas DNS, health probes HTTP.
Config YAML Dinámica
Añade un servicio al YAML y aparece en los comandos, la web UI y los informes de estado. Categorías, dominios, puertos, alias y favicons salen todos de la config.
Primer Plugin Bidireccional
Todos los plugins de Gotify existentes van en un solo sentido y reenvían a Telegram, Slack o email. gotify-commander va en los dos: escribes un comando y recibes el resultado.
Arquitectura
gotify-commander se carga como un plugin nativo de Gotify (.so). Intercepta mensajes en una app de comandos unificada, ejecuta el comando whitelisted correspondiente y devuelve el resultado como notificación en la misma app.
El plugin se ejecuta dentro del proceso del servidor Gotify: sin daemon aparte, sin puertos extra, sin dependencias externas. Los comandos van a systemctl local, a SSH/launchctl remoto o a herramientas de diagnóstico, según la configuración YAML. La web UI se sirve en la ruta webhook del plugin.
Inicio Rápido
Descarga el fichero de tu versión de Gotify, cópialo en la carpeta de plugins y reinicia Gotify. Menos de dos minutos.
Descargas
| Gotify y arquitectura | Fichero | Suma |
|---|---|---|
| Gotify 3.1.1, amd64 | gotify-commander-linux-amd64-for-gotify-3.1.1.so | .sha256 |
| Gotify 3.1.1, arm64 | gotify-commander-linux-arm64-for-gotify-3.1.1.so | .sha256 |
| Gotify 3.1.1, armv7 | gotify-commander-linux-arm-7-for-gotify-3.1.1.so | .sha256 |
| Gotify 2.9.1, amd64 | gotify-commander-linux-amd64-for-gotify-2.9.1.so | .sha256 |
| Gotify 2.9.1, arm64 | gotify-commander-linux-arm64-for-gotify-2.9.1.so | .sha256 |
| Gotify 2.9.1, armv7 | gotify-commander-linux-arm-7-for-gotify-2.9.1.so | .sha256 |
Elige el fichero de tu versión de Gotify; gotify version te dice cuál tienes. Gotify 3.x necesita la app de Android 2.10.1 o posterior. Las versiones anteriores están en la página de releases.
Instalación
- Descarga el fichero de tu versión de Gotify y tu arquitectura, y compruébalo con su
.sha256. - Cópialo en la carpeta de plugins de Gotify: normalmente
/opt/gotify/data/plugins/, o la carpetapluginsdel volumen de datos de Docker. - Reinicia Gotify.
- En el WebUI de Gotify, crea un cliente (Clients → Create client) y copia su token en ese momento: Gotify 3 solo lo enseña una vez.
- Abre Plugins → gotify-commander, pega tu YAML en Configure y activa el plugin.
- La página del plugin muestra ahora el enlace al panel de control y la contraseña generada del panel.
- Envía
helpdesde la app de Gotify en tu móvil.
Referencia de Comandos
27 comandos en 6 categorías. Todos aceptan alias y targets de máquina.
🔄 Gestión de Servicios (7)
| Comando | Argumentos | Descripción |
|---|---|---|
status | [service] | Estado de todos o un servicio específico |
restart | <service> | Reiniciar un servicio (soporta aliases) |
start | <service> | Iniciar un servicio |
stop | <service> | Parar un servicio |
logs | <service> | Últimas N líneas de logs del servicio |
services | — | Listar todos los servicios gestionados |
help | — | Mostrar todos los comandos y servicios |
📊 Diagnósticos de Sistema (9)
| Comando | Argumentos | Descripción |
|---|---|---|
free | [vps|mac] | Uso de memoria |
df | [vps|mac] | Uso de disco |
uptime | [vps|mac] | Uptime + carga media |
top | [vps|mac] | Procesos top por CPU/memoria |
who | [vps|mac] | Usuarios conectados |
ping | [vps|mac] | Health check: responde con "pong" + latencia |
ip | [vps|mac] | Direcciones IP |
ports | [vps|mac] | Puertos abiertos |
connections | [vps|mac] | Estadísticas de sockets |
🌐 Monitoring y Analytics (4)
| Comando | Argumentos | Descripción |
|---|---|---|
traffic | [service] | Análisis de tráfico Nginx vía rhit |
analytics | — | Resumen de analíticas web vía GoAccess |
certs | — | Expiración de certificados SSL |
updates | — | Actualizaciones pendientes (apt) |
📍 Localización (1)
| Comando | Argumentos | Descripción |
|---|---|---|
locate | <lat> <lon> | Geocodificación inversa GPS vía OpenStreetMap |
🧰 Operaciones (4)
| Comando | Argumentos | Descripción |
|---|---|---|
failed | [vps|mac] | Unidades de systemd que han fallado; en un target macOS avisa de que no está disponible |
health | — | Un solo resumen: discos al 85% o más, carga, memoria, unidades fallidas y certificados que caducan en 14 días o menos |
digest | — | El resumen de salud en el momento; con el digest activado llega además cada día |
docker | ps [name] / restart <name> / logs <name> | Solo los contenedores de la lista permitida; restart cuenta como peligroso |
Los cuatro comandos de Operaciones son nuevos en 0.4. docker solo actúa sobre los contenedores de docker.allowed_containers, y digest puede llegar solo cada día a la hora digest.at si digest.enabled está activo.
⚠ Peligro (2)
| Comando | Argumentos | Descripción |
|---|---|---|
reboot | <vps|mac> | Reiniciar máquina (requiere target explícito) |
shutdown | <vps|mac> | Apagar máquina (requiere target explícito) |
Aliases universales: mem/memory → free · disk/space → df · log → logs · up → uptime. Escribir solo el nombre de un servicio equivale a status <servicio>.
¿Por qué Gotify Commander?
Todos los demás plugins de Gotify reenvían notificaciones a otro sitio. Este te permite actuar sobre ellas.
| gotify-commander | Telegram Bot | Uptime Kuma | |
|---|---|---|---|
| Self-hosted | ✅ | ❌ | ✅ |
| Bidireccional | ✅ | ✅ | ❌ |
| Dentro de Gotify | ✅ | ❌ | ❌ |
| Sin servicios terceros | ✅ | ❌ | ✅ |
| Gestión de servicios | ✅ | varía | ❌ |
| Multi-máquina (SSH) | ✅ | varía | ❌ |
| Panel de control web | ✅ | ❌ | ✅ |
| Tráfico y analíticas | ✅ | ❌ | ❌ |
| GPS locate | ✅ | ❌ | ❌ |
| Seguridad Tailscale | ✅ | ❌ | ❌ |
| App ya instalada | ✅ | ✅ | ❌ |
Panel de Control Web
Una consola para tus máquinas en el navegador, servida por el plugin dentro de Gotify. El enlace está en la página del plugin, junto a la contraseña.
- Una línea de comandos que sugiere comandos, máquinas, servicios y contenedores mientras escribes:
Tabcompleta,Enterejecuta, la flecha arriba recupera y/oCtrl+Kla enfoca - Los comandos de las categorías de tu YAML al lado de la salida en pantalla ancha y en pestañas en el móvil, con un selector de servicios agrupado por máquina (favicon, descripción y puerto)
- Una sesión con cada comando, si funcionó, lo que tardó y su salida, con botones para copiarla, repetirlo y quitarlo. El navegador la guarda 24 horas
- Los comandos peligrosos preguntan antes en un diálogo, con Cancelar enfocado
- Las respuestas en Markdown salen como tablas y enlaces, y
locatemuestra su mapa - Tema claro y oscuro que sigue al sistema, tamaño de página del 50 % al 125 % y un candado que olvida la contraseña
El panel está protegido por defecto. Si no hay contraseña, el plugin genera una y la muestra solo en la página del plugin en Gotify; pon tu propia contraseña en web_password. El navegador la guarda hasta que cierras la pestaña.
Configuración
Toda la configuración vive en un único fichero YAML, editable desde el WebUI de Gotify. Define tus servicios, categorías, máquinas, dominios y alias. Un servicio que añades aparece en todas partes.
Seguridad
- Contraseña del panel: el panel de control web está protegido por defecto. Si no hay contraseña, el plugin genera una y la muestra solo en la página del plugin en Gotify. Con
web_passwordpones la tuya. - Solo administradores: solo los administradores de Gotify tienen una instancia del plugin que funciona. Al resto, la página del plugin les muestra un aviso y no se arranca nada.
- Lista blanca de comandos: solo se ejecutan los 27 comandos registrados, nada arbitrario. Para permitir menos, pon los que quieras en
enabled_commands. - Sin shell: los comandos se ejecutan con
exec.Commandsin shell, salvo dos scripts fijos que reciben lo que escribes solo como argumentos. Los nombres de servicio deben cumplir^[a-zA-Z0-9][a-zA-Z0-9._-]*$y estar en tu lista configurada. - Tiempos límite: cada comando tiene un tiempo límite (30 s por defecto) que mata todo su grupo de procesos, así que no queda nada colgado.
- Claves de host SSH: los targets SSH se comprueban contra
known_hosts, sin conexión sin verificar como alternativa. Añade la clave con el usuario que ejecuta Gotify:ssh-keyscan -p <puerto> <host> >> ~/.ssh/known_hosts. - Confirmación (opcional): los comandos de
require_confirmpiden un código de un solo uso antes de ejecutarse cuando llegan como mensaje. - Límite de ritmo: 20 mensajes por minuto por instancia del plugin. El que pasa del límite no se ejecuta, y la respuesta dice cuánto esperar.
- Reboot con target explícito:
rebootsolo devuelve un error, así que ninguna máquina se reinicia por accidente. - SSH solo por clave: sin autenticación por contraseña.
- Registro de auditoría: cada comando queda registrado con hora, comando, origen, resultado y duración.
- VPN: pon Gotify detrás de Tailscale o WireGuard y no lo expongas a internet.
Cuando Gotify se reinicia
Los comandos enviados mientras el plugin estaba desconectado, por ejemplo durante un reinicio de Gotify, se ejecutan al reconectar si tienen menos antigüedad que la ventana de reenvío: replay_window, 5 minutos por defecto; 0s la desactiva.
Compatibilidad de plataforma
Un plugin de Go solo carga si se compiló con la misma versión de Go y de módulos que el servidor Gotify, así que cada release trae un fichero por versión de Gotify y arquitectura.
| Plataforma | Arquitectura | Gotify |
|---|---|---|
| Linux | amd64 | 3.1.1 · 2.9.1 |
| Linux | arm64 | 3.1.1 · 2.9.1 |
| Linux | arm/v7 | 3.1.1 · 2.9.1 |
Construido Con
Un único plugin Go (.so) sin dependencias en runtime más allá del propio Gotify.
- Plugin Go (.so): se carga dentro del propio servidor Gotify
- Gotify Plugin API: integración de primera clase, sin hacks
- SSH: gestión remota de máquinas con SSH estándar
- Config YAML: legible, editable desde el WebUI
- HTML, CSS y JavaScript sin framework: el panel de control es una sola página, servida con una Content Security Policy estricta
- Gin: router HTTP ligero para el panel de control
¿Listo para gestionar tus servidores desde el móvil?
gotify-commander es gratuito, open source, y listo para usar con tu instancia Gotify.