Onion Information
Self-Hosted Real Time Push Notification Server für Android und LineageOS (Open Source)
Self-Hosted Real Time Push Notification Server für Android und LineageOS (Open Source) Wie in anderen Beiträgen im Blog bereits beschrieben ist es möglich, mobile Endgräte unter Android oder LineageOS sehr Datensparsam einzurichten. Durch d...
Onion Details
Page Clicks: 0
First Seen: 03/11/2024
Last Indexed: 10/22/2024
Onion Content
Kontakt Self-Hosted Real Time Push Notification Server für Android und LineageOS (Open Source) Wie in anderen Beiträgen im Blog bereits beschrieben ist es möglich, mobile Endgräte unter Android oder LineageOS sehr Datensparsam einzurichten. Durch den Verzicht auf die offiziellen, bzw. FOSS Google Apps (gapps) gibt es dadurch eine Einschränkung im Bereich der Push Benachrichtigungen. Dazu muss man wissen, dass mobile Endgeräte die Push-Benachrichtigungen von Apps durch die Server von Google oder Apple senden. Damit ergeben sich, auch wenn gute Apps darüber nur „Aufwecknachrichten" senden, massive Meta Daten bei den großen Datensilos. Um keine Daten an Dritte weiterzugeben wurden in den anderen Artikel bereits umfangreiche Vorkehrungen getroffen ( http://wmv7y4tehgsvghaabiqvrm76uag7c6vdxufzoorjso3escefkiwo4tid.onion/Am%20Android%20Tablet%20oder%20Smartphone%20mit%20LineageOS%20f%C3%BCr%20Sicherheit%20und%20Privatsph%C3%A4re%20sorgen%20%28Teil%206%29/ ) . Nun fehlte noch eine selbst gehosteter Push-Notification Server und nach langer Suche fiel die Entscheidung auf Gotify. Durch den mit Plugins erweiterbaren Push-Server können Matrix Push Benachrichtigungen genauso gesendet werden, wie Push-Benachrichtigungen per wget, PHP, und anderen Tools und Programmiersprachen. Damit ist es auch möglich das Nagios Real Time Monitoring auf einen neuen Level zu heben. Viele Muster zum Senden von Nachrichten finden sich hier: https://gotify.net/docs/more-pushmsg . Der Gotify Server ist in Go Programmiert und läuft damit auf vielen Betriebssystemen. Das Project stellt auch ein Docker Image. Ich selbst bevorzuge Bare-Install und virtualisiere mit Proxmox. Zusätzlich war eine Voraussetzung, dass der Push-Server nicht als Root und ohne Reversed-Proxy, in Verbindung mit SQLite läuft. Damit kann mit einem statischen Binary und der Datenbank im Unterordner der gesamte Server als non-privileged Benutzer betrieben werden. Das Setup Installieren von Go wie üblich Go muss im PATH sein Als root, bzw. sudo pkg install yarn um Yarn und Node zu installieren. Danach git clone https://github.com/gotify/server.git && cd server export GO111MODULE=on make download-tools go get -d cd ui yarn cd .. (cd ui && yarn build) go run hack/packr/packr.go export LD_FLAGS="-w -s -X main.Version=$(git describe -tags | cut -c 2-) -X main.BuildDate=$(date „+%F-%T") -X main.Commit=$(git rev-parse -verify HEAD) -X main.Mode=prod"; go build -ldflags="$LD_FLAGS" -o gotify-server Das Binary in das Home Verzeichnis des ausführenden Benutzers kopieren. Erstelle ./config.yaml Muster: https://raw.githubusercontent.com/gotify/server/master/config.example.yml Speziell In unserem Fall wurden die Standard Ports auf High-Ports gelegt, damit kann der Gotify Server ohne root Berechtigungen gestartet werden. Ich habe eine eigene lokale CA und damit die Zertifikate erstellt. Viele Details zur eigenen CA finden sich hier: https://digitalbooks24.com/de/product/my-own-certificate-authority-epub/ Kurzinfo zum Hinzufügen der eigenen CA als vertrauenswürdige Ausstellerinstanz openssl x509 -noout -hash -in ca.crt > ca.crt.hash ln -s ca.crt `cat ca.crt.hash`.0 echo „copy ca.crt and `cat ca.crt.hash`.0 to /etc/ssl/certs" Testen: openssl s\_client -connect gotify.server.tld:PORTNUMBER \| grep -i -e verify Start- und Prüfscript Dieses Script am besten in der Crontab mit dem jeweiligen Benutzer, alle 5 Minuten laufen lassen. Benötigt etc/Runs/nagios/plugins/check_tcp , welches sich in den Nagios-Plugins findet. !/bin/sh RUNAS=gotify MAILTO=root MAIL=/usr/bin/mail GETUSERNAME=`/usr/bin/whoami` if [ "${GETUSERNAME}" != "${RUNAS}" ]; then echo "####################################################" echo "ERROR: This script must be run as ${RUNAS}, exiting" echo "TIP : use su -m ${RUNAS} -c command" echo "####################################################" echo "ERROR: This script must be run as ${RUNAS}, exiting" | \ ${MAIL} -s "ERROR: MATRIXBOT start exited with error on `hostname`" ${MAILTO} exit 1 fi if (! /etc/Runs/nagios/plugins/check_tcp -p 4080 -H 127.0.0.1 2>&1 >/dev/null); then echo "Service MATRIXGOTIFY not running" echo "Service MATRIXGOTIFY not running" | mail -s "`hostname` Service MATRIXGOTIFY not running RESTARTET" root cd /home/gotify && \ /home/gotify/gotify-server & fi Testen Gotify Server Dazu meldet man sich am Web Interface an, bzw, installiert am besten auch die App am mobilen Gerät. Das Token ersetzen! #!/bin/sh token="ACepUABC5Vornq." subject="wget" message="Test Message to Mobile via WGET" priority=5 PORTNUMBER=443 # Set your non standard port here, if used! wget --no-check-certificate "https://localhost:$PORTNUMBER/message?token=$token" --post-data "title=$subject&message=$message&priority=$priority" -O /dev/null Danach sollten im Web und in der App die Nachricht auftauchen. Nun kann das Matrix Plugin für Gotify kompiliert werden git clone https://gitlab.com/Sorunome/matrix-gotify cd matrix-gotify make download-tools go build -mod=readonly -a -installsuffix cgo -ldflags „$LD_FLAGS" -buildmode=plugin -o build/matrix-gotify.so Das build/matrix-gotify.so in den Plugin Ordner beim Gotify Server kopieren. Betrieb Zum Betrieb von Matrix-Push Benachrichtigungen müssen wir am Matrix Synapse Server noch einen Pusher für den Benutzer einrichten. Muster Registrieren Pusher /usr/local/bin/curl -H ‚Authorization: Bearer ACCESS_TOKEN’ -H ‚Content-Type: application/json’ -X POST -d ‚{„lang": „en",“kind”: „http",“app_display_name”: „Gotify",“device_display_name”: „Gotify",“pushkey”: „SECRET-SET-IN-WEB-IF-PLUGIN",“app_id”: „de.sorunome.gotify",“data”: {„url": „https://SERVER.TLD:PORTNUMBER/plugin/2/custom/FROM_LINK_IN_PLUGIN/hook",“format”: „full_event"}}' https://MATRIX_SERVER_TLD/_matrix/client/r0/pushers/set Löschen Pusher /usr/local/bin/curl -H ‚Authorization: Bearer ACCESS_TOKEN’ -H ‚Content-Type: application/json’ -X POST -d ‚{„lang": „en",“kind”: „null",“app_display_name”: „Gotify",“device_display_name”: „Gotify",“pushkey”: „SECRET-SET-IN-WEB-IF-PLUGIN",“app_id”: „de.sorunome.gotify",“data”: {„url": „https://SERVER.TLD:PORTNUMBER/plugin/2/custom/FROM_LINK_IN_PLUGIN/hook",“format”: „full_event"}}' https://MATRIX_SERVER_TLD/_matrix/client/r0/pushers/set Pushers auflisten /usr/local/bin/curl -H ‚Authorization: Bearer ACCESS_TOKEN’ -X GET https://MATRIX_SERVER_TLD/_matrix/client/r0/pushers Bei eigener CA muss jeder Beteiligte Server, Gotify und Matrix die eigene CA im OpenSSL eingerichtet haben. Mit der Installation ist nun ein selbst gehosteter Push Server verfügbar, der verschlüsselt, ohne Daten an Dritte zu senden, Push Benachrichtigungen unter Android und LineageOS ermöglicht. Apple verbietet Web-Socket Verbindungen, dadurch gibt es auch keine APP für IOS. Mit Android und LineageOS ist aber einen großflächige Marktabdeckung, speziell bei smarten Benutzern mit hohem Interesse an Privatsphäre gegeben. Join my public room in the Matrix If you like this blog entry feel free to join my public room by entering /join #kmj:matrix.ctseuro.com anywhere in the Element Messenger ( https://element.io ) box to send a message! Help or answering questions ONLY in this room! Enterprise Support and Setup https://cts-solutions.at Wir arbeiten auch als Level2 und Level 3 Remote Support! Links zum Artikel https://github.com/gotify/ https://gotify.net/docs/more-pushmsg https://gitlab.com/Sorunome/matrix-gotify https://f-droid.org/de/packages/com.github.gotify/ Go Programmiersprache https://golang.io Matrix Doc https://matrix.org/docs/spec/client _server/latest#post-matrix-client-r0-pushers-set https://matrix.org/docs/spec/client _server/latest#def-pushers Sample Payload https://matrix.org/docs/spec/client _server/latest#post-matrix-client-r0-pushers-set Weitere Artikel Am Android Tablet oder Smartphone mit LineageOS für Sicherheit und Privatsphäre sorgen Professionelle Enterprise-Grade VoIP Telefonie mit Home-Office und Mobiltelefon Support (Kostenlos, Open Source) E-Books My own Certificate Authority (ePub) Einträge auf CPV.Agency Posts in Deutsch: Self-Hosted Real Time Push Notification Server für Android und LineageOS (Open Source) https://cpv.agency/kmjblog/2020/12/19/self-hosted-real-time-push-notification-server-fuer-android-und-lineageos-open-source/ Post in English: Self-Hosted Real Time Push Notification Server for Android and LineageOS (Open Source) https://cpv.agency/kmjblog/en/2020/12/19/self-hosted-real-time-push-notification-server-fuer-android-und-lineageos-open-source/