Ereignishorizont
Telegram-BOS-Bot

Telegram-BOS-Bot

Telegram-BOS-Bot 🤖

Mehr Kontrolle über den Lightning ⚡ Node

Der Telegram BOS Bot ist ein Telegram Bot der euch Statusinformationen über euren Lightning Node liefern kann. Der Bot interagiert mit Balance of Satoshis (BOS). BOS ist ein "Command Line Tool" zum Channel Management auf eurem Node. Die Funktion muss man hier aber nicht nutzten, es läuft alles über den Telegram Bot. Auf dem Raspiblitz kann man BOS recht einfach über die Menüauswahl installieren und updaten. Auf anderen Systemen muss man ggf. selber aktiv werden. Anleitungen zur Installation und weitere Informationen zu BOS findet man auf der Github Seite. Soweit ich weiß, gibt es BOS aktuell nur für die Lightning LND Implementation.

Als Grundlage für dieses Anleitung diente der Guide von Joko auf btc21.de

🔥🔥🔥 Hinweis für das Raspiblitz Update auf 1.9.0 🔥🔥🔥

Wenn ihr Euch den Bot bei einer früher Version des Raspiblitz schonmal eingerichtet habt, dann ist er nach dem Update erst nicht mehr aktiv. Ihr könnt ihn aber recht einfach wieder aktivieren, wenn ihr euch den Connection Code abgespeichert habt. Falls nicht, müsst ihr erst den Key einmal löschen und alles neu einrichten.

Wenn ihr den Connection Code noch habt, geht wie folgt vor: Starte wieder mit Punkt 1 bis 5. Dann geht zu Punkt 8. und tragt den Connection Code ein. Bestätigt mit ENTER und alles sollte erstmal wieder laufen. Damit der Bot nach dem nächsten Neustart auch wieder automatisch startet, müsst ihr den Service wieder aktivieren. Dazu einfach die Punkte von 10 bis 14 wiederholen.

Falls ihr Euch den Connection Code nicht gesichert habt, müsst ihr Euch einen neuen Bot einrichten. Vorher müsst ihr aber den API Key des alten Bots löschen, sonst bekommt ihr keinen neuen eingerichten. Dazu die Datei "Telegram_bot_api_key" aus dem Verzeichnis "/home/bos/.bos" löschen. Siehe dazu hier!

Die Funktionen des Bot

Sobald der Bot über BOS mit eurem Node verbunden ist, hat er ein paar sehr nützlich Funktionen zu bieten. Aktualisierte Statusinformationen werden einem unmittelbar in Telegram angezeigt und können per Befehl auch explizit abgefragt werden.

  • Forwards / Routings 💰
  • Lighting Zahlungen erhalten/gesendet 💸
  • Ausstehende onchain Zahlungen ⛓
  • Kanäle geöffnet 🌹 / geschlossen 🥀
  • Keysend Payment / Nachricht 💸💬
  • Senden eines SCBs nach einem open/close eines Kanals 📚

Alle sehr informativ und man muss sich nicht extra auf den Node einloggen um die Daten per Ride The Lighning (RTL) oder ThunderHub App explizit abfragen. Gerade auch die letzte Funktion, das senden von Static Channel Backups (SCB) sobald Channels geöffnet oder geschlossen wurde, ist auch ein Gewisser Sicherheitsgewinn, falls euer Node mal unwiderruflich abstürzt. So habt ihr immer noch den letzten SCB auf Telegram und könnt alle eure Channels damit gezielt „force closen“. Dadurch bekommt ihr dann nach spätestens ein paar Tagen alle restlichen Funds in eurem on-chain Wallet wieder gutgeschrieben, nachdem die Channels geschlossen sind. Dieses Wallets könnt ihr dann mit euren 24 Seed Wörtern recht einfach wiederherstellen.

Sehr spannend finde ich auch die Funktion Keysend / Nachrichten. Euer Bot zeigt euch alle eingehende Zahlungen an, auch Keysend Zahlungen. Und wenn mit dieser Zahlung eine Nachricht übermittelt wird, zeigt er auch die Nachricht an. So kann man z.B. in ThunderHub (oben rechts) die Chat Bubble 💬 auswählen und eine Konversation mit einem anderen Node starten. Mit jeder Nachricht die man sendet oder empfängt, wird dann ein 1 Satoshi übertragen. Das ist auch das Prinzip von Sphinx Chat, einem Third Layer auf Bitcoin.

Beispiel für Keysend Nachrichten: Einige Beispiele

Wer will kann mir eine Nachricht per ThunderHub Keysend Chat schicken.

Mein Node hat den Public Key: 0292f947fa33a527ecd6242e34af2c48327220d327817f0dd39318986619956bf0

Mit dem Telegram BOS Bot sehe ich das und werde euch darauf antworten. 📯

Wichtig: Prüft bitte ob ihr LND Accept Keysend aktiviert habt! Sonst kann ich euch keine Keysend Nachricht schicken. Ihr findet die Möglichkeit zur Aktivierung im Raspiblitz im Menü unter SETTINGS - Node Settings & Options.

Der Bot bietet aber noch weitere nützliche Funktionen die man per Befehl aufrufen kann

Folgende 🤖 Befehle sind aktuell möglich:

  • /backup – Get node backup file
  • /blocknotify – Notification on next block
  • /connect – Connect bot
  • /costs – View costs over the past week
  • /earnings – View earnings over the past week
  • /graph <pubkey or peer alias> – Show info about a node
  • /info – Show wallet info
  • /invoice [amount] [memo] – Make an invoice
  • /liquidity [with] – View node liquidity
  • /mempool – BTC mempool report
  • /pay – Pay an invoice
  • /pending – View pending channels, probes, and forwards
  • /stop – Stop bot
  • /version – View the current bot version

Die Funktion /pay ist aus Sicherheitsgründen Standard mäßig deaktiviert. Dazu muss man vorher ein „Budget“ freigeben. Mehr dazu dazu, siehe hier.

Beispiele der Bot Kommunikation:

Routings, Senden, Empfangen, Earnings, Liquidität, Mempool, Version, subscription pay an fulmo.shop, Backup asdf Spam, Sent, Forwarding, Channel opening / backup / close / (backup), Node Info, Routing Kosten, Invoice ertertert

Die Installation und Einrichtung

Die Installation und Einrichtung ist eigentlich nicht sehr kompliziert, man muss aber öfters hin und her springen und so verliert man schnell die Übersicht. Auch ist die Eingabe auf der Command Line Ebene mit den verschiedenen Usern, Konten und Verzeichnissen etwas verwirred, gerade für Menschen die das nur gelegentlich nutzen. Deswegen habe ich jeden Schritt mit einem Screenshot versehen und nummeriert. Damit sollte das eigentlich so ziemlich jeder schaffen.

1. Auf den Raspiblitz einloggen und Balance of Satoshis installieren
2. Den Command Line Editor starten
3. Zum Superuser/root-Konto wechseln und einen Tor Proxy Agent im BOS Verzeichnis anlegen
$ sudo su 
$ nano /home/bos/balanceofsatoshis/proxy_agent.json
4. In die neu erstellt Datei proxy_agent.json folgenden Zeilen kopieren
 {
    "host": "127.0.0.1",
    "port": 9050
 } 
  • Anschließend mit Ctrl+x -> y -> ENTER speichern und schließen
5. Den Superuser/root-Konto mit $ exit verlassen
6. Den Telegram BotFather aufrufen

Ich habe dafür die Telegram Desktop Version verwendet. Man kann die Desktop Version ganz einfach mit dem Handy Account synchronisieren, so hat man auf beiden die gleichen Informationen. Aber es geht natürlich auch nur mit der Handy App. Mit diesem Link könnt ihr den BotFather auch direkt aufrufen.

7. Einen neuen Bot erstellen, HTTP API Key ermitteln und in die die Zwischenablage kopieren
8. Den "bos" User aufrufen, eine Verbindung "Bot <-> Node" über den Tor Proxy herstellen
$ bos
$ bos telegram --use-proxy /home/bos/balanceofsatoshis/proxy_agent.json

Jetzt den zuvor kopierten HTTP API Token hinter Enter Telegram bot API key (input is hidden) hineinkopieren.

  • Hinweis: Sollte Ihr beim Aufruf $ bos telegram –use-proxy .. eine Fehlermeldung in Form von Error: Unknow option –use-proxy bekommen, dann prüft mit dem Befehl $ bos -V die Version. Die sollte mindestens V12.x sein. Updaten könnt ihr die BOS Version über das Raspiblitz Menü UPDATE check/repair... Danach sollt die Option –use-proxy erkannt werden und keine Fehlermeldung mehr ausgegeben werden.
  • Hinweis: Den Token kopiert ihr aus der Zwischenablage in das Terminal Fenster, in dem ihr mit dem Mauszeige an die Stelle zeigt wo der Cursor blinkt, dann einmal mit der rechten Maustaste klickt und der Text wird an die Stelle kopiert. Man sieht es leider nicht, weil "hidden", aber es ist passiert. Jetzt einfach noch ENTER drücken. Falls das hineinkopieren nicht funktioniert, macht das Fenster vorher "aktiv", in dem ihr nach dem kopieren einmal auf den Fensterrahmen klickt. Dann auf die Stelle zeigen und die rechte Maustaste drücken.
9. Den neu erstellten Bot aufrufen und den Connection Code ermitteln
10. Den Connection Code eingeben und Verbindung starten
11. Verbindung mit Ctrl+c trennen und mit $ exit den "bos" User verlassen
12. Mit dem User "admin" eine ".service" File für den Autostart erstellen
$ sudo nano /etc/systemd/system/bos-telegram.service
13. Die Datei mit folgenden Daten füllen
# /etc/systemd/system/bos-telegram.service

[Unit]
Description=bos-telegram
Wants=lnd.service
After=lnd.service

[Service]
ExecStart=/home/bos/.npm-global/bin/bos telegram --connect YourConnectionCode --use-proxy /home/bos/balanceofsatoshis/proxy_agent.json
User=bos
Restart=always
TimeoutSec=120
RestartSec=30
StandardOutput=null
StandardError=journal

[Install]
WantedBy=multi-user.target
  • Hinweis: Den Teil YourConnectionCode mit deinem persönlichen Connection Code vom Bot austauschen
  • Anschließend mit Ctrl+y -> y -> ENTER speichern und schließen
14. Den Autostart Service "enablen", "starten" und den „Status prüfen“
$ sudo systemctl enable bos-telegram.service
$ sudo systemctl start bos-telegram.service
$ systemctl status bos-telegram.service
  • Mit Ctrl+c den Status verlassen
15. Teste die Verbindung im Telegram Bot mit dem Befehl /version
  • Der Bot sollte euch antworten und zeigt euch die auf dem Raspiblitz installierte (Running) Version und die mögliche letzte (Latest) Version an. Nach einem Update aus dem Raspiblitz Menü sollten beiden Versionen gleich sein.

Was der Bot nicht kann 🖐️

Der Bot zeigt Euch Connected to .. oder Lost connection! Cannot connect to .. an. Jetzt könnte man glauben, man kann damit einen Verbindungsabbruch oder einen Ausfall eures Node erkennen. Das ist aber leider nicht der Fall. Der Bot bekommt seine Informationen vom Node und genauer von der BOS Applikation. Die beiden Meldungen "Connected" und "Lost connection" beziehen sich auf die Verbindung zwischen BOS und LND. Fahrt ihr z.B. euren Node herunter, kann es sein, dass der Node noch die Meldung "Lost connection" absetzt kann, bevor er ganz ausgeschaltet wird. Bei einer Verbindung über Tor schafft er das meistens nicht, weil die Verbindung über das Tor Netzwerk recht langsam aufgebaut wird. So werdet ihr oft keine Meldung bekommen. Nur beim Reboot wird immer ein „Connected to ..“ angezeigt.

Weitere Hinweise 👀

  • Wenn ihr den Raspiblitz neu bootet um die Autostart Funktion zu testen, dann wird es ein paar Minuten dauern bis der Bot sich mit Connected to .. meldet. Habt also etwas Geduld.
  • Den HTTP API Token und den Connection Code gut abspeichert. Damit könnt ihr die Verbindung zu einem späteren Zeitpunkt auch mal wieder herstellen.
  • Mit dem Befehl $ sudo journalctl -f -u bos-telegram erhaltet ihr weitere Informationen zum debuggen.
  • Falls ihr einen neuen Bot erstellt und die alte Verbindung trennen wollt, dann müsst ihr zuvor die Datei "Telegram_bot_api_key" aus dem Verzeichnis "/home/bos/.bos" löschen. Siehe hier!

Quellen und weiterführende Dokumentation 🧵

Erstellt mit Liebe 🧡 Block 733550 / 791338 aktualisiert

– Lightning ⚡ (er)leben –