
Para aquellos que administran servidores y / o proyectos web, existe una aguda cuesti贸n de conciencia sobre lo que est谩 sucediendo con sus "barrios". Hay muchas decisiones en el mercado sobre alertas sobre fallas, estado de conexi贸n y otros par谩metros, incluso a trav茅s de SMS. Estamos hablando de MRTG, Twilio, F-Droid, servicios de Google y muchos, muchos otros. El 煤nico problema es que la mayor铆a de estas soluciones tienen una especializaci贸n muy limitada y no es posible influir en sus funciones. MRTG dar谩 informaci贸n sobre el tr谩fico y la conexi贸n, Google enviar谩 SMS. Twilio le da cierta libertad en t茅rminos de escribir scripts JavaScript para satisfacer sus necesidades, pero lo siento, este es un proyecto comercial. Es decir, "vamos, paga el bot铆n o vete".
Entonces, en esta familia de herramientas, tenemos una reposici贸n de c贸digo abierto: Gotify es un proyecto simple de cliente-servidor para recibir y enviar notificaciones push y comandos, incluso a trav茅s de una aplicaci贸n de Android. Y definitivamente vale la pena contar un poco m谩s al respecto, creo que ser谩 煤til para aquellos que estaban buscando algo similar y al mismo tiempo gratis, pero finalmente comenzaron su propio proyecto para mascotas. Es posible que esta publicaci贸n le ahorre un par de cientos de horas de su tiempo.
Lo que Gotify ofrece
El proyecto ha estado existiendo y desarroll谩ndose pac铆ficamente en GitHub durante varios a帽os, y durante este tiempo adquiri贸 un servidor, un cliente web, una aplicaci贸n de Android, una API y, por supuesto, documentaci贸n. Decid铆 hablar sobre Gotrify por dos razones: es de c贸digo abierto y funciona no solo en "recepci贸n", sino tambi茅n en "retorno", todo tipo est谩 en GitHub, adem谩s est谩 configurado usando scripts bash. Y por supuesto, es gratis.
La mayor铆a de las soluciones existentes est谩n destinadas exclusivamente a recibir notificaciones del servidor / dispositivo de destino, pero no a una interacci贸n completa entre el cliente y el servidor. Es decir, puede recibir una notificaci贸n de que su servidor se ha bloqueado o que Internet ha desaparecido. No siempre es conveniente preguntarse qu茅 est谩 sucediendo en el "otro lado" y se puede hacer en la misma aplicaci贸n / ventana. La mayor铆a de las veces, para obtener este tipo de informaci贸n, debe cortar una VPN o (Dios no lo quiera) alg煤n TeamViever y verlo "con las manos". Mencion茅 anteriormente que Twilio da algo de alcance a trav茅s de scripts JS auto-escritos, pero es pagado, as铆 que por.
De hecho, todo el proyecto Gotify se divide en tres partes: servidor, cliente y aplicaci贸n. El servidor funciona de manera comprensible sobre c贸mo enviar y recibir mensajes, el cliente solo para recibir y la aplicaci贸n solo para enviar.

Adem谩s, el proyecto tiene un cliente API (y documentaci贸n), una plantilla API, una plantilla de complemento, su propio sitio web, una biblioteca de configuraci贸n Go que admite JSON, YAML, TOML y variables de entorno, as铆 como una construcci贸n de servidor, cliente y, de hecho , Aplicaci贸n de Android. Lo 煤nico que puede molestar es la aplicaci贸n de Android. No hay nada m谩s indefenso, irresponsable e inmoral en el mundo que monitorear la infraestructura a trav茅s de un tel茅fono m贸vil. Pero la tecnolog铆a est谩 avanzando y sabemos que tarde o temprano iremos a esta basura. No es que fuera el conjunto m铆nimo necesario para comunicarse de forma remota con el servidor, pero cuando la comunidad de c贸digo abierto comienza a cortar sus propias herramientas, es dif铆cil que se detenga.
Por separado, vale la pena mencionar que para comunicarse con el servidor solo necesita autenticaci贸n y el token de la aplicaci贸n, que el servidor devuelve a trav茅s de una solicitud REST. En el futuro, utilizando este token, puede recibir mensajes a trav茅s de cualquier cliente http, por ejemplo, a trav茅s de
curl o
HTTPie :
$ curl -X POST "https://push.example.de/message?token=<apptoken>" -F "title=my title" -F "message=my message" -F "priority=5" $ http -f POST "https://push.example.de/message?token=<apptoken>" title="my title" message="my message" priority="5"
De acuerdo con el manual en el sitio web oficial del proyecto, se puede enviar al servidor con diferentes prioridades a Golang y Python:
Golang package main import ( "net/http" "net/url" ) func main() { http.PostForm("http://localhost:8008/message?<apptoken>", url.Values{"message": {"My Message"}, "title": {"My Title"}}) }
Pit贸n import requests
Tambi茅n para Linux y Mac, tambi茅n es posible escribir sus propios complementos. Estas son sus caracter铆sticas disponibles, que se enumeran en el sitio web del proyecto:
- complementos individuales para cada usuario;
- registro de controladores http personalizados;
- enviar mensajes como una aplicaci贸n;
- Sistema de configuraci贸n basado en YAML en WebUI;
- almacenamiento persistente para cada complemento de usuario;
- Mostrar instrucciones generadas din谩micamente para los usuarios.
El sistema de complementos Gotify se basa en el sistema de complementos Go est谩ndar, que
se describe aqu铆 . 驴Por qu茅 se pueden usar en Gotify? los desarrolladores citan el ejemplo de recibir webhooks de GitHub, Travis CI y otros, sondear feeds a trav茅s de fuentes RSS, Atom y expandir la funcionalidad est谩ndar de WebUI y, por supuesto, enviar alertas de alerta sobre bloqueos.
En esta p谩gina puede encontrar una plantilla para el complemento y la explicaci贸n del c贸digo. Para que los complementos funcionen correctamente, los desarrolladores recomiendan usar Docker, pero sin 茅l, es muy posible configurar Gotify para que funcione, aunque el env铆o y la recepci贸n de mensajes correctos en este caso no est谩n garantizados.
No proporcion茅 aqu铆 el texto completo de la documentaci贸n b谩sica del proyecto; puede leer todo usted mismo. A juzgar por las revisiones, el proyecto result贸 ser bastante reflexivo, al menos por otro lado, que no se utiliza la notificaci贸n por SMS (lo cual es inconveniente si est谩 en el extranjero o en el s贸tano), tratando de ignorar activamente el modo de ahorro de energ铆a que se introdujo en Android 6-7 . Gotify es curioso incluso si es de c贸digo abierto, es decir, gratuito y nada impide bifurcar, recoger un archivo y llevar esta herramienta a un estado adecuado para las necesidades de ciertas personas / equipos.
Referencias
- Repositorio de GitHub.
- El sitio oficial del proyecto.
- Documentaci贸n API.