Clearnet LNbits Server – Der Layer 3
Wer schon etwas mehr mit Bitcoin und Lightning ⚡ auseinander gesetzt hat, der wird sicherlich auch schon mal auf LNbits gestoßen sein. Während man Bitcoin als das härteste Fundament für digitales Geld bezeichnen kann, ist Lightning die skalierende Transportschicht auf Bitcoin. Da wird das harte Geld auch schnell, effizient und die Weiterentwicklung flexibler. LNbits wiederum baut auf Lightning auf und man kann es als Platform für die nächste Ebene bezeichnen. LNbits selbst ist ein Wallet und Account System, mit einer Finanzierungsquelle im Hintergrund, wie zum Beispiel einen Lightning ⚡ Node oder einem anderen Wallet, wie z.B. dem LNTipBot. LNbits ist alledings nicht nur ein einfaches Wallet, es ist eine ganz Bank, mit Konten, die wiederum mehrere Unterkonten (Wallets) haben können. Aber dann wird es erst richtig spannend, LNbits ist auch ein Plattform für kleine Applikationen die Erweiterungen genannt werden. Das sind kleine Programme die mit den LNbits Wallets interagieren können und darüber hinaus auch über Schnittstellen (APIs) mit anderen Programmen kooperieren können und so Funktionen erfüllen. LNbits wird zu einem Schweizer Messer mit vielen kleine Apps wie elektronischer Schalter, online/offline Kassenterminal , Paywall, Event Tickets, Spenden Verteiler, NFC Karten Wallet, Ecash Mint, u.v.m. Wir bringen das Bitcoin Lightning ⚡ Geld auf die nächste Ebene und können damit das Leistungsvermögen von Bitcoin ⚡ Lightning erst so richtig nutzen. Hier ein paar Beispiele:
Bitcoin – Das Basis Fundament der digitalen Werte
Lightning ⚡ Network – Die Skalierungseben / Technologie der Infrastruktur
LNbits – Wallet und Account System mit Erweiterungen – Die dritte Ebene Plattform
bitcoinSwitch – Ein elektronischer Schalter, durch Lightning ⚡ aktiviert Hardware Wallet – Schnittstelle zu einem ESP32 Hardware Wallet Split Payments – Zahlungseingänge aufteilen auf mehrere Wallets Bolt Cards – NFC Technologie / Zahlen und Empfangen mit einer Chipkarte LNPoS – Ein Bitcoin & Lightning ⚡ Point of Sale (online/offline) Cashu – Ein Mint für Chaumian ecash / Privatsphäre & anonyme Lightning Zahlungen OfflineShop – Erhalte Zahlungen für Produkte offline und ohne ein Gerät Marketplace – Webshop / Marktplatz der die resiliente Infrastruktur von Nostr nutzen kann awesome-lnbits – … und vieles mehr …
"Be your own bank" war gestern, jetzt heißt es "Be a bank for your family and friends" . Aber damit nicht genug, der LNbits Server ist ein Technik Hub für Lightning ⚡ Anwendungen. Anwendungen, die mit dem bestehenden Geldsystem so nicht möglich sind und schon gar nicht ohne Mittelsmann. Aber das ist jetzt vorbeit, mit LNbits als 3. Layer Plattform, habt ihr jetzt die Möglichkeit technischen Fianzdienstleistung selbst und souverän zu kontrollieren. Können wir damit etwa nicht das Potenzial der Zukuft heben? Und dabei sind wir da gerade erst am Anfang. Zukünftige Anwendungen können wir aktuell kaum erahnen, aber sie werden kommen. Wer hätte denn schon gedacht, was mal aus dem Internet wird und was man darauf aufbauen kann? Es wird auf jeden Fall sehr spannend und wer nicht nur dabei sein möchte, sondern auch mit machen, dem zeige ich hier in diesem Tutorial wie es geht.
1. Was erklärt das Tutorial
Ich werde euch hier nicht zeigen wie LNbits funktioniert oder was ihr mit den Erweiterung alles so machen könnt, denn dafür gibt es schon gute Tutorials, wir z.B. die LNbits Wiki Seite oder ein etwas älteres Video von mir an. Nein, hier gehts darum welche Optionen man hat um LNbits zu verwenden. Denn es gibt viele Möglichkeiten, vom Custody Service (die Funds sind unter Gewahrsam eines Anderen), bis hin zum selbstsoveränen eigenen hosten von LNbits. Denn LNbits ist eine Free and Open Source Software (FOSS), was viele Vorteile hat, denn damit wird LNbits freier wachsen als ein proprietäres System und die besten Lösungen werden sich dann durchsetzten. Dieses Tutorial erkärt kurz die Optionen von LNbits unter Custody über verschieden Varianten des Aufbaus, bis hin zu einer speziellen Kombination aus Lightning ⚡ Node und einem VPS (Virtual Private Server), um den Node ins Clearnet (normales Internet, nicht Darknet/Tor) zu bekommen und LNbits getrennt vom Node auf einem Virtual Private Server (VPS) laufen zu lassen. Das Tutorial richtet sich an alle Interessierten und solche die mal LNbits selbst hosten möchten. Es ist sehr technisch und die Umsetzung braucht Zeit und Sorgfalt, aber ihr werdet an die Hand genommen und jeder Schritt ist ausführlich erklärt sein. Ich weiß selber wie schwierig es ist, wenn Teile des Weges fehlen und man nicht weiß wo es weiter geht, also habe ich genau darauf geachte und es hier festgehalten.
2. Der Einstieg in LNbits
Es gibt viele Möglichkeiten LNbits zu nutzen und viele Variante davon wie man einen eigenen LNbits Server zu hosten. Der erst und einfachste Weg, wenn man LNbits nur verwenden möcht, ist sicherlich einen LNbits Custody Service, wie z.B. der freien und kostenlosen Demo Server [legend.lnbits.com][https://legend.lnbits.com/]. Der ist gut geeignet für den Einstieg, um erste Erfahrungen mit LNbits zu sammeln. Aber es ist ein LNbits Server der Custody ist und der experimentell genutzt wird, da man darauf auch Aktualisierungen getestet. Es wird nicht empfohlen den Server als stabile und dauerhafte Instanz anzusehen, es ist ein Demonstrations-Server mit vollem Funktionsumfang, bei dem es aber keine Garantie auf die Funktion oder die Gelder gibt. Wenn ihr etwas verlässlicheres möchtet, dann werdet ihr dazu angehalten, entweder einen Partner zu finden, der euch sein LNbits mitbenutzen lässt, oder besser noch, ihr hostet euren eigenen LNbits Server mit eurer eigenen Finanzierungsquell. Erst dann seit ihr wirklich soverän und ich zeige euch wie.
3. Die Optionen um LNbits zu betreiben
Kommen wir jetzt zum technischen Teil. LNbits selbst ist nur ein Programm mit einer Datenbank, dass die Funktion eines Account Systems für Lightning ⚡ Wallets erfüllt. Das besondere an LNbits sind Erweiterungen, Sie verwenden das LNURL Protokoll (Lightning URL). Man braucht eine Plattform auf der LNbits laufen kann. Das kann zum Beispiel euer Lightning Node zu Hause sein, ein separater PC oder ein Server in der Cloud. Der einfachste Weg LNbits zu nutzen ist sie auf seinem eigene Lightning Node zu aktivieren. Die meinsten Nodes wie Raspiblitz und Umbrel unterstüzten das und haben die Finanzierungsquelle ja schon on Board. Zum testen und für zu Haus ist das auch vollkommen ausreichend, allerdings hat es auch ein paar Nachteile wenn man sein LNbits auch von der großen weiten Welt aus erreichen möchte. Die meißten haben keine fest IP und wenn ihr einen habt dann doxt ihr euren Standord. Das ist nicht so schön, wenn es um eine private Bank geht. Dafür gibt es zwar Lösungen, wie das nutzen eines dynamische DNS-Dienstes, aber meine preferierte Lösung ist das nicht. Es gibt noch viele andere Lösungen wie z.B. Cloudflare als Tunnel Supporter. Aber dann macht ihr euch wieder abhängig von einem Dienstleister und ihr seid wieder zenzierbar.
Und dann gibt da noch viele weiter Varianten wie z.B. ein Reverse Proxy. Da schaltet man zwischen seinen Node und dem Internet eine Server, zu dem sich dann der Node per Clearnet (normales Internet) oder Tor (allg. als Darknet bekannt) mit dem Reverse Proxy Server verbindet und die Anfragen an ihn einfach zum Node weiter leitet. Das ist schon nicht schlecht, aber ich würde den Node und LNbits gerne voneinander trennen, damit ich mein LNbits unabhängig von der Finanzierungsquelle betreiben kann, das gibt dem ganzen etwas mehr Resilienz. Letztendlich gibt viele Möglichkeiten, die alle ihre Vor- und Nachteile haben. Entschieden habe ich mich schließlich für eine Variante, die meiner Meinung nach die wertvollste Lösung ist. Nicht unbedingt die einfachste und billigste, aber eine, welche mir die größtmögliche Kontrolle, Sicherheit, Flexibilität und Skalierbarkeit bietet.
4. Der gewählt Aufbau
Nach langer Suchen und teilweis euch erfolglosen Versuchen, bin ich auf die Github Seite vom TrezorHannes gestoßen. Er hat aus mehrer einzelnen Tutorials, ein großes gebaut. Siehe vps-lnbits. Der Kernpunkt des Tutorial ist ein Virutal Privat Server (VPS) auf dem eine LNbits Instanz ausgeführt wird. Als Finanzierungsquelle wird ein Lightning ⚡ Node verwendet, der auch zu Hause sein kann. Der VPS baut ein Virutal Privat Network (VPN) mit dem Node auf und schleust den gesammten Datenverkehr der Node über den VPS. Der VPS hat eine eigene Clearnet IP-Adresse. Damit ist der Node nicht mehr nur über Tor erreichbar, sondern auch über Clearnet. 🎉 Das alleinge ist schon ein großer Vorteil, denn über Clearnet ist euer Node besser und schneller erreichbar, als nur über Tor. Anonym ist der Node trotzdem, weil man aus dem Internet nur die IP-Adresse des VPS sieht. Die Verbindung zwischen Node / VPS ist einer VPN Verbindung, also verschüsselt und damit anonym und privat. Über den gleichen Tunnel kann jetzt die LNbits Instanz auch mit dem Node kommunizieren und schon haben wir ein sicheres, flexibles und skalierbares System, das wir vollständig selbst kontrollieren können. Der Cloud Service Provider ist nur ein Anbieter von vielen, den kann man schnell wechseln. Die Trennung von Node und LNbits erlaubt uns die Funding Source schnell auszutauschn, falls der Node mal ausfällt, das schafft eine gewisse Flexibiliät. Das System ist auch einfach skalierbar, da ich mir beim Cloud Service Provider einfach etwas Leistung für meinen VPS dazubuchen kann. Und das Sahnhäubchen darauf ist natürlich, dass ich nicht nur LNbits ins Clearnet bringe, sondern gleich den ganze Node. Um genau zu sein, man kann sogar mehrer Nodes über einen VPS anbinden, dass bringt LNbits eine unglaublich hohe Verfügbarkeit, das ich den Node einfach auswechseln kann, falls einer kaputt ist oder gewartet werden muss. Und das man von dem VPS ganz einfach Snapshot oder Backup machen kann, macht das ganz auch unglaublich sicher bzw. resilient. Man kann es um nu wieder herstellen.
5. Vorab Informationen und Hinweise
Natürlich ist das ganz nicht wirklich einfach zusammenzubauen. Man braucht schon etwas Willen um sich mit so vielen Disziplinen gleichzeitig auseinander zu setzten. Die Vorlage vom TrezorHannes ist sehr gut, aber es ist technisch sehr anspruchsvoll zu verstehen. Es kommt viel zusammen. Linux Ubuntu, VPS, VPN-Tunnel, Firewall, Port Weiterleitung, API, Macaroon, Domain Hosting, Webserver, Datenbank und so weiter. Das kann einen ganz schön ins schwitzen bringen und hält viel Stolpersteine bereit, bei denen man erstmal machtlos erscheinen kann. Aber mit ein bisschen Neugier, Willen und der richtigen Richtschnur und ein paar Hinweise, kann man das hinbekommen. Bertolt Brecht sagte mal: "Wer kämpft, kann verlieren, wer nicht kämpft, hat schon verloren." Also, ran an den Speck! Es wird sich lohnen. 🧡
Eine Richtschnur ist etwas an das man sich entlang hangeln um zum Ziel zu kommen. Und genauso ist meine Anleitung aufgebaut. Wenn ihr der Anleitung Schritte für Schritt folgt und ein bisschen aufpasst, dass ihr die Befehle richtig kopiert und ggf. vorher induviduelle Anpassungen vornemt, dann können das auch Tech-Experten. Um den Umfang möglichst klein zu halten, werden ich hier die Technik hinter den Funktion nur grundlegend erklären. Wer genauer verstehen möchte warum und wieso, dem empfehl ich im anhäng in den Referenzen nachzulesen oder sich des Tutorial vom TrezorHannes mal genauer anzuschaun. Diese Anleitung ist eher eine Art Skript,, dass ihr abarbeitet könnt, ohne vorab allzutief in die technischen Details einsteigen zu müssen. Aber eins vorab, es ist sehr umfangreich, teilweise anspruchsvoll und wenn man nicht höllisch aufpasst, kann man viele Fehler machen. Lasst euch Zeit, seid akribisch und gebt nicht auf, dann werdet ihr schon zu Ziel kommen. Und euch kann euch sagen, es ist fantastisch, wenn man das erste mal seine selbst gehostet LNbits Seite aufrufen kann. 🤩
Hier noch zwei Hinweise:
-
Das Tutorial verwenden als Grundlage einen Raspiblitz v1.8.x mit LND Node v0.15.5. Bei einem Umbrel v0.5.x habe ich das auch schon durchgeführt, im Anhang findet ihr eine "Pfad und Befehle" Referenztabelle dazu. Citadel und ein Core Lightning Node sollten bei entsprechender Anpassung auch funktionieren, damit kenn ich mich aber leider zu wenig aus.
-
Wer möchte kann sich gerne noch ein paar allgemeine Tipps zur Verwendung Tutorials anschauen. Im Anhang im ersten Kapitel habe ich etwas dazu geschrieben.
6. Allgmeiner Disclaimer
Es gibt immer ein Risiko, wenn man auf seinem Node zusätzlich Software installiert oder Anpassungen macht. Die Funktion des Node kann unwiederbringlich gestört sein oder schlimmer noch man kann sich Schlupflöcher für Angriffe von Extern öffnen. Auch benötigt LNbits den Admin Macaroon des Nodes, also den Zugang zum Wallet, um Zahlungen zu senden und empfangen. Deshalb besteht das Risiko, dass jemand Zugriff auf euren Node bekommt, in dem er sich über den VPS den Admin Macaroon beschafft oder LNbits manipuliert und den Node leer saugt. Wenn ihr alle Sicherheitsvorkehrungen getroffen habt, ist das Risiko recht klein, aber leider nicht ausgeschlossen. Also überlegt gut, ob ihr euren Node weiter exponieren möchtet, oder ob euch das Risiko nicht zu hoch ist. Auch habe ich diese Anleitung nach besten Wissen und Gewissen geschrieben. Ich habe sie mehrfach getestet und sie funktioniert. Es kann aber immer mal sein, dass ich einen Fehler übersehen habe oder sich bei euch etwas unvorhergesehen einstellt. Bitte seht mir nach, dass ich dafür keine Garantie oder Gewähr übernehmen kann. Wer möchte, kann Teile oder den gesammten Artikel kopieren, ändern und weiter verbreiten, auch unter seinem Name. Ich würde nur darum bitte, in der Referenz auf meine Arbeit zu verweisen.
Jetzt gehts aber auch los! 🚀
7. Der Bau eines Clearnet LNbits Server
Noch ein Hinweis zum technischen Aufau. Das Tutorial verwenden als Grundlage einen Raspiblitz v1.8.x mit LND Node v0.15.5. Bei einem Umbrel v0.5.x habe ich das auch schon durchgeführt, im Anhang findet ihr eine "Pfad und Befehle" Referenztabelle dazu. Citadel und ein Core Lightning Node sollten bei entsprechender Anpassung auch funktionieren, damit kenn ich mich aber leider zu wenig aus. Und wer möchte kann sich gerne noch ein paar allgemeine Tipps zur Verwendung des Tutorials ansehen. Im ersten Kapitel des Anhangs habe ich etwas dazu geschrieben. Aber jetzt wünsche ich viel Spaß und vor allem Erfolg!
7.1 Einrichten eines Virtual Private Server (VPS)
Der erste Punkt ist natürlich das Einrichten eines Virtual Private Servers (VPS). Ihr braucht keinen sehr leistungstarken VPS. Ich empfehle mindesten 1 GB Ram und die Linux-Distribution Ubuntu (LTS) v22.04 als Betriebssystem. Der kostet ungefähr 5 €/Monat und alles andere könnte ihr aufrüsten wenn ihr es braucht. Entweder habt ihr schon einen Anbieter für Managed Server bzw. Cloud Hosting. Der Markt ist voll davon, sucht euch einen aus, er sollte nur Ubuntu v22.04 anbieten, für volle Kompatibilität mit dieser Anleitung. Wenn ihr noch keine Präferenz habt, dann schaut euch ruhig mal digitalocean.com an. Ich bin damit ganz zufrieden. Fairer Preis, technisch einwandfrei und sie haben sehr gute Tutorials. Sie haben auch ein Angebot der uns beiden ein kleinen Bonus bringt. Du bekommst $200 Guthaben für die ersten 60 Tage und kannst alles ausprobieren. Damit kannst du ausreichen herumexperimentieren. Und wenn du am Ball bleibst und sich deinen Rechnungen dann irgendwann mal auf $25 angehäuft haben, dann bekomme ich einmalig die $25 für mein Account gutgeschrieben. Du kannst aber auch eine Alternative wählen.
<p align="center"><a href="https://www.digitalocean.com/?refcode=5c04e57d7a4a&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge"><img src="https://web-platforms.sfo2.digitaloceanspaces.com/WWW/Badge%202.svg" alt="DigitalOcean Referral Badge" /></a>
Die Einrichtung und Installation beschreibe ich am besten anhand ein paar Bilder die ziemlich selbsterklärend sind. Für die ersten Augenblick ist die Oberfläche natürlich etwas gewöhnungsbedürftig, aber man findet sich schnell zurecht. Ihr müsst nur zuerst ein neues Projekt anlegen und dann bei Welcome to DigitalOcean! auf Spin up Droplet klicken um ein Droplet, also euren Virtual Private Server, einzurichten. Alles weitere zeigen die Bilder. Wählt die Region die euch am nächsten kommt Ubuntu, Shared CPU Basic, die Reguläre CPC und bei der Authentifizierungsmethode könnt ihr wählen. Wenn ihr euch mit SSH Keys auskennt, nehmt das, es ist die sicherste, aber nicht unbdingt einfachst Methode. Wenn ihr euch nicht sicher seit, wählt lieber ein sehr starkes Passwort. Das kostenlose Monitoring aktiveren. Es verschafft später eine gute Übersicht über den Zustand des VPS. Dann noch einen Hostname eurer Wahl vergeben und Create Droplet. Das wars, jetzt habt ihr eine Virtual Private Server.
7.2 – VPS – Grundeinstellungen des Virtual Private Server (VPS)
Jetzt gehts los! Als erstes Meldet ihr euch an und führt ein paar grundlegende durch. Ein kleiner Hinweis, da man in diesem Tutorial oft vom VPS und dann wieder auf Node springen muss, haber ich in der Überschrift immer als erstes vermerkt wo die Anpassungen gemacht werden müssen. VPS, Node oder ob es Allgemein ist.
Meldet Euch auf dem VPS mit eurem "root" Nutzer an
ssh root@64.227.120.232
Update und Upgrade durchführen
apt update && apt upgrade -y
-> Wenn ihr mal beim Update gefragt werden, ENTER drücken
UncomplicatedFirewall (UFW) installieren und einrichten
apt install ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22 comment 'OpenSSH'
ufw allow 80 comment 'Standard Webserver'
ufw allow 443 comment 'SSL Webserver'
ufw allow 9735 comment 'Node1'
ufw enable # -> y
ufw status # -> Kontrollieren ob OpenSSH bzw. 22/tcp drin ist!
Fail2ban (Schützt vor Brute-Force-Angriffe)
apt install fail2ban -y # 2x ENTER drücken
systemctl enable fail2ban
systemctl start fail2ban
systemctl status fail2ban
Zur Info, die Standard Einstellung sind:
bantime = 10m ("bantime" is the number of minutes that a host is banned.)
findtime = 10m (A host is banned if it has generated "maxretry" during the last "findtime")
maxretry = 5 ("maxretry" is the number of failures before a host get banned.)
Den neuen Benutzer synonym
anlegen und root-Rechte vergeben
adduser synonym # -> sehr gutes Passwort vergeben, 5x ENTER, y
usermod -aG sudo synonym
Hinweis:
Ihr könnt den Benutzer natürlich anpassen. Er wird in diesem Tutorial aber sehr oft und auch in Pfaden verwendet. Das Anpassen ist dann aber viel Arbeit und führt ggf. zu Fehlerquellen.
Empfehlung: Jetzt ein Snapshot des VPS machen
systemctl poweroff
-> Snapshot erstellen in DigitalOceans unter: Projects/my-project/droplet/Snapshots
-> Wenn der Snapshot erstellt wurde, den Turn on Button
des VPS drücken
-> Damit für habt ihr eine sehr gute Grundlage für einen späteren Neuanfang
Ab jetzt loggt euch nur noch mit eurem neuen Benutzer ein!
ssh synonym@64.227.120.232
Ab jetzt werdet ihr oft den Befehl sudo
verwenden und werdet dann nach dem User Passwort gefragt.
7.3 -VPS – Docker installieren und einrichten
Docker installieren
sudo apt-get install docker.io tmux -y
sudo systemctl start docker.service
sudo systemctl status docker.service
-> Quit -> q
Einen Namen für den Datenvolumencontainer vergeben
export OVPN_DATA="ovpn-data"
-> Weist der Globalen Variable OVPN_DATA
den Inhalt ovpn-data
zu
Um den Name auch nach einen Neustart verfügbar zu machen
nano .bashrc
-> Ans Ende export OVPN_DATA="ovpn-data"
anhängen<br>
-> STRG+x -> y -> Enter zum speichern und schließen des Editors
Docker Container erschaffen
sudo docker volume create --name $OVPN_DATA
Initialisieren des Container
Achtung:
IP anpassen!
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://64.227.120.232
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn ovpn_initpki
Der Container fordert zur Eingabe einer CA Key Passphrase
auf, um den privaten Schlüssel zu schützen, der von der neu generierten Zertifizierungsstelle verwendet wird. Zustätzlich muss noch einen Common Name
(z.B. "myvps") vergeben und anschließend zwei mal mit der CA Key Passphrase
bestätigt werden.
Hinweis:
Der Container enthält die Konfigurationsdateien und Zertifikate. Die Zertifikate haben einen Gültigkeit von 825 Tage.
Starten des OpenVPN-Serverprozess
sudo docker run -v $OVPN_DATA:/etc/openvpn -d -p 1194:1194/udp -p 9735:9735 -p 8080:8080 --cap-add=NET_ADMIN kylemanna/openvpn --restart unless-stopped
Hinweis:
Der Port 8080 ist für die LNbits REST API von Node 1. Wenn ihr zwei Nodes mit einer VPS tunneln wollt, so könnte ihr die Zeile oben mit Port 9736 (LND) und Port 8081 (REST) für einen zweiten Node erweitern.
Generieren eines Client-Zertifikat ohne Passphrase für node1
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full node1 nopass
-> Einmal mit der CA Key Passphrase
bestätigen
Hinweis:
Für einen zweiten Node müsste diese und nachfolgend Zeile nur anpassen und wiederholen werden.
Clientkonfiguration mit eingebetteten Zertifikaten für node1
abrufen
sudo docker run -v $OVPN_DATA:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient node1 > node1.ovpn
Dem VPN Tunnel eine fest IP zuweisen
sudo su
nano /var/lib/docker/volumes/ovpn-data/_data/ccd/node1
-> mit folgendem Inhalt füllen: ifconfig-push 192.168.255.6 192.168.255.5
-> STRG-x -> y -> ENTER
-> Server jetzt am besten einmal neu Starten $ reboot
und neu einloggen.
-> Alternativ nur den Docker Container neu starten: $ docker restart 8c5c4bf6c634 ->Jetzt hat die Node immer die
192.168.255.6und der Server diesen Tunnel die
.5`
Hinweis:
Nach dem ihr auf der Node OpenVPN installiert und eingerichtet habt könnt ihr dort mit dem Befehl $ ip add show tun0
prüfen ob ihr die vergebene IP bekommen habt.
Den Pfad zur node1.ovpn
Datei anzeigen lassen und merken
ls # -> Sollte jetzt die Datei node1.ovpn anzeigen
pwd # -> Zeigt den aktuellen Pfad
Die Container ID anzeigen lassen und merken
sudo docker ps # -> zeigt den Status, die ID des Container und die Ports
Einmal die Docker Shell aufrufen
Achtung:
Vorher die Docker ID anpassen
sudo docker exec -it b7a78bb8b394 sh
Die Netzwerk Adapter des Docker anzeigen lassen
ifconfig
-> Unter eth0
sollte ihr die IP = 172.17.0.2
sehen, das ist die IP des Docker Anschluss
Docker Shell verlassen
exit
Docker Einstellungen einmal kontrollieren
sudo systemctl status docker.service # -> q
7.4 – Node – OpenVPN einrichten
VPNcert Ordner erstellen
cd # -> Zum Stammverzeichnis springen
pwd # -> Zeigt den aktuellen Pfad an
mkdir VPNcert # -> Ein VPNcert Verzeichnis anlegen
Das OpenVPN Zertifikat von dem VPS herunterladen
Achtung:
IP und ggf. die Pfade anpassen
scp synonym@64.227.120.232:/home/synonym/node1.ovpn /home/admin/VPNcert/
-> Ihr müsst den neuen "Fingerprint" einmal bestätigen und dann euer User Passwort eingeben
Schreib- und Leserechte auf den aktuellen Benutzer einschränken
sudo chmod 600 /home/admin/VPNcert/node1.ovpn
OpenVPN installieren und einrichten
Achtung:
Auch hier ggf. den Pfad und Datei Name anpassen
sudo apt-get install openvpn -y
sudo cp -p /home/admin/VPNcert/node1.ovpn /etc/openvpn/CERT.conf
sudo systemctl enable openvpn@CERT
sudo systemctl start openvpn@CERT
sudo systemctl status openvpn@CERT
-> Achtet auf auf folgende Zeilen:
..
net_iface_up: set tun0 up
net_addr_ptp_v4_add: 192.168.255.6 peer 192.168.255.5 dev tun0
..
-> Exit mit q
-> Die IP = 192.168.255.6
ist die vom Tunnel bereit gestellt Client IP für den ersten Node. Wenn ihr einen weiteren Node hinzufügt, kann die z.B. die IP 192.168.255.10 haben.
Hinweis:
Mit dem Befehl $ ip add show tun0
könnt ihr auch nachträglich die IP anzeigen lassen. Bei
Prüfen ob ihr Google über den Tunnel anpingen könnt
ping -c 3 google.com
Abfrage der Journal zur Anzeige der letzten Meldungen
sudo journalctl -u openvpn@CERT -f --since "1 hour ago"
-> STRG+c
7.5 – VPS – Paketregeln für den Docker festlegen
Docker Shell aufrufen
sudo docker ps # -> nochmal die ID anzeigen lassen
sudo docker exec -it 8c5c4bf6c634 sh # -> Shell starten
Info:
Ein alternativer Befehl ist $ sudo docker container ls
. Mit dem leicht erweiterten Befehl $ sudo docker ps -a
könnt ihr auch nicht gestartet Container und deren Status sehen.
Im Docker die Paketregeln für die Firewall festlegen
Achtung:
Denk daran die IP (siehe voriges Kapitel) und die Ports zu prüfen
iptables -A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 9735 -j DNAT --to 192.168.255.6:9735
iptables -A PREROUTING -t nat -i eth0 -p tcp -m tcp --dport 8080 -j DNAT --to 192.168.255.6:8080
iptables -t nat -A POSTROUTING -d 192.168.255.0/24 -o tun0 -j MASQUERADE
Hinweis:
Wenn ihr mehr als nur einen Node über den gleichen VPS laufenlassen möchet, müsst ihr erst für jeden Node eine feste IP vergeben und iptables um die Zeilen erweitern. Ein Beispiel Auszug für z.B. drei Nodes findes ihr im Anhang.
Die Regel dauerhaft speichern
Damit die Packetregeln auch nach dem nächsten Neustart geladen werden, bleiben wir in der Docker Shell und müssen noch die Skript Datei ovpn_env.sh
editieren.
cd /etc/openvpn
vi ovpn_env.sh # -> Editor öffnet
Es wurde jetzt der vi-Editor. Die Bedienung ist etwas ungewöhnlich, aber wenn ihr genau die Schritte befolgt, solltet ihr zum Ziel kommen. Ein Befehlsübersicht findet ihr sonst aber auch hier.
Zur Übung verlasst den Editor mal gleich:
- ESC ->
:q!
-> ENTER -> Exit ohne speichern - Das :q! müsst ihr wirklich so eingeben
Jetzt öffnet den Editor wieder:
vi ovpn_env.sh
- setzte den Cursor zur letzten Linie -> G (=> großes "G" -> Shift+g)
- geht in den Editiermodus -> a (kleines "a")
- eine Zeile umschlagen -> ENTER
- jetzt die drei "iptabels" Zeile von oben hineinkopieren
- ESC -> Editiermodus verlassen
:wq
-> Änderungen speichern und schließen
Wenn ihr fertig seid, verlasst auch die Docker Shell wieder:
exit
7.6 – Node – Die lnd.conf anpassen
Achtung:
Die Datei lnd.conf
ist das Herzstück eures Lightning Node. Wenn ihr da Fehler macht, könnt ihr euren Node lahm legen. Passt also auf was ihr tut und macht vorher ein Backup. Verlasst den Editor lieber mal mit STRG-x -> n -> ENTER
, als das ihr etwas falsches abspeichert.
Backup der LND.conf erstellen
cd /mnt/hdd/lnd/
sudo cp lnd.conf lnd.conf.backup
ls -l # -> Backup Datum prüfen
LND.conf editieren
sudo nano lnd.conf
-> Folgende Zeile überprüfen und ggf. anpassen:
[Application Options]
..
nat=false # -> prüfen und auf "false" stellen
listen=0.0.0.0:9735 # -> prüfen
restlisten=0.0.0.0:8080 # -> prüfen
externalip=111.111.111.111:9735
tlsextraip=172.17.0.2
..
[tor]
..
tor.streamisolation=false
tor.skip-proxy-for-clearnet-targets=true
-> Passt auf das ihr keine Doppelbelegung mit wiedersprüchlichen Werten habt
-> FunFact:
Im Anhang zeige ich euch wie ihr hier den Alias Namen
noch etwas "tunen" könntet. 😉
-> STRG+x -> y -> ENTER
Hinweis:
Wer die Einstellungen etwas genauer verstehen möchte der schaue hier.
Besonderheit: NUR beim Raspiblitz
Das lnd_check.sh
Skript überprüft die lnd.conf und kann beim Start des LND eure Einstellungen überschreiben. Deswegen müsste ihr hier ein paar Zeile auskommentieren, damit das nicht passiert.
-> Ruft in dem Skript die Zeilen ab 184 auf:
sudo nano +184 /home/admin/config.scripts/lnd.check.sh
-> Kommentiert folgende Zeile mit #
aus:
# # enforce PublicIP if (if not running Tor)
# if [ "${runBehindTor}" != "on" ]; then
# setting ${lndConfFile} ${insertLine} "externalip" "${publicIP}:${lndPort}"
# else
# # when running Tor a public ip can make startup problems - so remove
# sed -i '/^externalip=*/d' ${lndConfFile}
# fi
-> Speichern und schließen mit STRG+x -> y -> ENTER
Hinweis:
Etwas weiter oben steht auch # enforce LND port is set correctly
. Falls ihr einen anderen Port als 9735 für LND verwendet, muss diese Zeilen auch deaktivieren bzw. angepasst werden. Das gleiche gilt für den REST API Port 8080, den findet ihr noch einen weiter drüber bei # make sure API ports are set to standard
.
Den LND einmal neu starten
sudo systemctl restart lnd.service
-> Beide Befehle können etwas dauern, habt Geduld
Prüfen ob sich das Zertifikat und der Schlüssel geändert hat
ls -l
-> Datum und Uhrzeit (GTM) der tls.cert
und tls.key
prüfen. Die Dateien müss sich aktualisiert haben, sofern ihr eine Änderung an tlsextraip
oder tlsextradomain
gemacht habt.
Verbindungstest
Testet mal man von euer Node den Google Server erreichen kann:
ip route get 8.8.8.8
-> Ihr sollte 8.8.8.8 via 192.168.255.5 dev tun0 src 192.168.255.6
zurück bekommen
Jetzt nochmal den VPS Docker anpingen:
ping 172.17.0.1
Abbruch mit STRG-c
Wenn alles gut aussieht, dann ist euer Node ab jetzt im Clearnet erreichbar! 🎉
7.7 – Allgemein – Überprüfen der Verbindung
Jetzt zeige ich euch wie ihr durch verschiedene Möglichkeiten überprüfen könnt, ob euer Node auch wirklich im Clearnet erreichbar ist.
Beim Raspiblitz ist es ganz einfach, schaut im Status Screen
Unten hinter der Node ID sollte jetzt die IP-Adresse des VPS anstatt der ".onion" angezeigt werden. Keine Sorge, die Onion Routings funktionieren weiterhin. Wenn die VPS mal ausfällt ist euer Node weiterhin über Tor erreichbar. Die Option wird hier einfach nur nicht angezeigt.
LND Informationen anzeigen lassen
lncli getinfo
-> Unter uris:
seht ihr jetzt beide Verbindungsöglichkeiten eures Node
-> Einmal die Tor Onion und jetzt neue die Clearnet IP Adresse
Überprüfung bei externen Dienste
Durch das Gossip Protocol des Lightning Netzwerk werden eure neuen Verbindungsdaten geteilt. Die Verbreitung der neue Verbindung kann aber ein paar Stunden beanspruchen, je nachdem wie gut euer Node vernetzt ist. Habt also Geduld! Nutzt folgende Dienste und sucht nach eurem Node Alias Namen oder der Node ID.
https://1ml.com/
https://amboss.space/
https://lightningnetwork.plus/
https://lnrouter.app/
Dort solltet ihr als Server Standort z.B. Frankfurt am Main und/oder die IP Adresse eures Virtual Privat Server.
Info:
Eine weitere Möglichkeit zum Testen der Verbindung ist die Nutzung des “Telegram Ping Bot”. Schaut dazu mal im Anhang unter Diverses.
7.8 – Node – LND Zertfikat und Macaroon für LNbits bereitstellen
Das LND Zertifikat zum VPS übertragen
Achtung:
Prüft den Pfade, die IP und den Username
scp /mnt/hdd/lnd/tls.cert synonym@64.227.120.232:/home/synonym
-> Den Transfer mit dem Passwort der VPS bestätigen
Als nächste den Admin Macaroon des LND auslesen
Achtung:
Das ist euer Admin API Key für das LND Wallet, bitte sehr vertraulich behandeln!
xxd -ps -u -C ~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon
Ihr solltet jetzt eine langen Code sehen, den ihr nachher in die Setup Datei ".env" auf eurerem VPS im LNbits Ordner kopiert.
Achtung:
, der Macaroon ist der Schlüssel zu eurem LND und damit zu eurem Funds. Passt gut drauf auf!
Tipp1:
Kopiert euch den HexString in ein temporäres Notepad Fenster und nehmt vorsichtig die Zeilenumbrüche raus. Wenn ihr das nicht tut, kann das Macaroon von LNbits evtl. falsch interpretiert werden und ihr bekommt keine Verbindung zum LND.
Tipp2:
Alternativ könnt ihr auch den ganzen Macaroon zum VPS kopieren und in der .env
Datei einfach nur verlinkt. Bei Umbrel ist das z.B. notwendig.
scp ~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon synonym@64.227.120.232:/home/synonym
7.9 – VPS – LNbits installieren und einrichten
Prüfen ob die SSL Verbindung zum Node steht:
curl https://172.17.0.2:8080 -v --cacert /home/synonym/tls.cert
Wenn alles geklappt hat sollte ihr in der Ausgabe folgende Zeilen finden:
..
subjectAltName: host "172.17.0.2" matched cert's IP address!
..
SSL certificate verify ok.
..
Connection #0 to host 172.17.0.2 left intact
..
LNbits clonen und Voraussetzungen installieren
cd
git clone https://github.com/lnbits/lnbits-legend.git
cd lnbits-legend
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa # -> ENTER
sudo apt-get -y install python3-distutils
curl -sSL https://install.python-poetry.org | python3 -
Wichtig:
Bei der Installation wird euch der "Poetry Pfad" (z.B. /home/synonym/.local/bin
) angezeigt. Und darauf folgt nach "Add" ein ganzer Befehl. Das ist der Pfad für die "Poetry Umgebungsvariablen" und den müsst ihr zum bekanntgeben der globalen Variable auch eimal in das Terminal Fenster kopieren und ENTER drücken.
export PATH="/home/synonym/.local/bin:$PATH"
Die Kennzeichnung als globale Variable dauerhaft verfügbar machen
Dazu einmal die .bashrc
öffnen
nano /home/synonym/.bashrc
Und ganz am Ende folgende Zeile einfügen
export PATH="/home/synonym/.local/bin:$PATH"
-> STRG+x -> y -> ENTER
Poetry in einer virtuelle Umgebung installieren und starten
poetry env use python3.10
poetry install --only main # -> Das kann jetzt etwas dauert
poetry run python build.py
mkdir ~/lnbits-legend/data # Das wird der Ordner für die LNbits Datenbank
Hinweis:
Ich hatte mal einen VPS mit 0,5 GB Ram ausprobiert. Da wurde die Installation mittendrin abgebrochen. Ich empfehle also mindestens 1 GB Ram.
Die LNbits Setup Datei .env
erzeugen und bearbeiten
cd ~/lnbits-legend # -> Das LNbits Verzeichnis aufrufen
ls -la # -> Zeigt euch alle Dateien an
cp .env.example .env # -> Die .env aus dem Example erstellen
nano .env # -> Datei zum editieren öffnen
-> Vorzunehmende Einstellungen in der .env Datei:
..
# Change theme
LNBITS_SITE_TITLE="LNbits🐣" # Optional: Icon siehe Anhang "Alias"
..
# Choose from LN..
LNBITS_BACKEND_WALLET_CLASS=LndRestWallet
..
# LndRestWallet
LND_REST_ENDPOINT=https://172.17.0.2:8080/
LND_REST_CERT=/home/synonym/tls.cert
LND_REST_MACAROON=0201036C6E6...
..
-> Hier müsst ihr wirklich sehr vorsichtig sein, kontrolliert besser alles zwei mal! -> STRG+x -> y -> ENTER
Tipp 1:
Die Ausrufezeichchen ""
hinter den Einträgen LND_REST_CERT=
und LND_REST_MACAROON=
sind zwar in der .env.example
drin, aber die haben bei mir immer Ärger gemacht. Lasst sie also besser weg.
Tipp 2:
Falls ihr noch keine Node habt, oder eure Node mal ausfällt, könnt ihr hier auch schnell mal eine andere Finanzierungsquelle hinterlegen, damit euer LNbits weiter liquide ist. Dazu einfach in der .env
unter LNBITS_BACKEND_WALLET_CLASS
das passende Wallet eintragen. Und etwas weiter unten, den Admin Key und den Endpoint. Beim LightningTipBot (LnTipsWallet
) bekommt ihr den API Key z.B. mit dem Befehl /api
und der Endpoint ist https://ln.tips
.
Ein Testlauf durchführen
Stellt sicher das im ihm Verzeichnis lnbits-legend
seit und dann startet ein LNbits Instanz
poetry run lnbits # Exit -> STRG-c
Wenn euch Backend LndRestWallet connected
und eure Wallet Balance
angezeigt wird, Glückwunsch, habt ihr gewonnen! 🔥
Falls Ihr Retrying connection to backend in 5 seconds...
seht, stimmt etwas mit der Verbindung zu eurem Funding Source (LND Wallet) nicht. Prüft die .env
Konfigurationsdatei und speziell die LND_REST_MACAROON
, LND_REST_CERT
und den LND_REST_ENDPOINT
.
Tipp:
Wenn ihr meint das alles stimmt und es trotzdem nicht geht und ihr den "Macaroon HexString" verwendet habt, dann probiert mal wie oben beschrieben das admin.macaroon
direkt, in dem ihr in der .env nur ein Link auf die Datei setzt. Beim Umbrel hatte ich mal das Problem schon mal, der "Macaroon HexString" wollte partout nicht funktionieren. Erst als ich den Macaroon direkt verwendet hatte wurde die Verbindung herstellt. Wie ihr den admin.macaroon
zu eurem VPS kopiert, das habe ich am Ende des vorherigen Kapitel beschrieben. In der .env
Datei verlinken könnt ihr ihn dann z.B. mit LND_REST_MACAROON=/home/synonym/admin.macaroon
.
Option: Die LNbits Seite temporär anzeigen lassen
Wollt ihr Eure LNbits Webserver schon einmal sehen, müsst ihr jetzt erstmal den Port 9000 temporär freigeben.
sudo ufw allow 9000
Jetzt könnt ihr LNbits eure Standard-Route 0.0.0.0
auf Port 9000
zuweisen:
poetry run lnbits --port 9000 --host 0.0.0.0
Tipp:
Der Befehl funktioniert nur aus dem LNbits Verzeichnis lnbits-legend
Und jetzt öffnet einem Webbrowser und gebt die IP eurer VPS mit dem Port 9000 ein:
64.227.120.232:9000
-> Et volia, euer LNbits! 👀
Die Anfrage IP:Port
wurde auf die Standard-Route 0.0.0.0
des VPS verwiesen. Dort lag die Webseite der LNbits Instanz. Euer Browser hat euch sicherlich gewarnt, dass die Seite nicht sicher sei. Das ist aber normal, da die Seite kein gültiges SSL/TLS-Zertifikat hat. Der Punkt kommt später beim Webserver, nachdem wir eine Domain eingerichtet haben und die dann auf durch einen Domain-Namen-System (DNS) Eintrag auf die IP-Adresse unserer VPS zeigt. Dann können wir für die Verbindung ein Zertifikat für HTTPS (Hyper Text Transfer Protocol Secure) beantragen.
-> Beendet LNbits wieder mit STRG+c
Schließt den temporären Port 9000 wieder und prüft die Einstellung der UFW einmal
sudo ufw deny 9000
sudo ufw status
Empfehlung: OpenSSL Anpassung für die Erweiterung Onchain Wallets
LNbits verwendet in der Erweiterung Onchain Wallets
einen bestimmen Hash Algorithmus (ripemd160). In der hier verwendeten Python Version 3.10 verwendet der Befehl "Hashlib" die Softwarebibliothek Open SSL. Die Bibliothek wurde Nov. 2021 aktualisiert und unterstützt den verwendeten Hash Algorithmus ripemd160 nicht standard mäßig. Es is aber möglich diese Funktion in einer Konfigurationsdatei für OpenSSL wieder zu aktvieren. Das müssen wir jetzt einmal machen, damit wir die Erweiterung Onchain Wallets
auch verwenden könnne. Ruft als erste die Datei openssl.cnf
auf.
sudo nano /usr/lib/ssl/openssl.cnf
Kontrolliert das Vorhandensein und erweitert ggf. folgende Zeilen:
openssl_conf = openssl_init
[openssl_init]
providers = provider_sect
[provider_sect]
default = default_sect
legacy = legacy_sect
[default_sect]
activate = 1
[legacy_sect]
activate = 1
-> STRG+x -> y -> ENTER Weiter Infos zu diesem Problem und der Lösung findet ihr hier.
Hinweis: LNbits Debug Modus aktiveren
Sollte ihr eine Fehler beim Starten von LNbits bekommen, den ihr so nicht lösen könnt, dann könnt ihr mal Debug einschalten. Dazu öffnet die .env Datei und -> setzt DEBUG=true
und dann startet LNbits im Debug Modus.
$ poetry run lnbits --debug
7.10 – VPS – LNbits Autostart einrichten
Den "Poetry Pfad" einmal prüfen
which poetry
-> Wenn ihr den gleichen User verwendet habt: /home/synonym/.local/bin/poetry
Kontrolliert nachfolgend in der lnbits.service
Datei, dass der Pfad passt
Die lnbits.service
Datei erstellen
sudo nano /etc/systemd/system/lnbits.service
Die lnbits.service
befüllen mit
# Systemd unit for lnbits
# /etc/systemd/system/lnbits.service
[Unit]
Description=LNbits
[Service]
# replace with the absolute path of your lnbits installation
WorkingDirectory=/home/synonym/lnbits-legend
ExecStart=/home/synonym/.local/bin/poetry run lnbits --port 5000
User=synonym
Restart=always
TimeoutSec=120
RestartSec=30
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
-> Kontrolliert den Poetry Pfad (ExecStart), User und WorkingDirectory
-> Dann STRG+x -> y -> ENTER
Service starten und prüfen
sudo systemctl enable lnbits.service
sudo systemctl start lnbits.service
sudo systemctl status lnbits.service # -> q
-> Ihr solltet ein active (running)
und ein Backend LndRestWallet connected
als Rückmeldung bekommen
Tipp:
Mit den Befehl $ sudo systemctl restart lnbits.service
könnt ihr LNbits neu starten, falls ihr mal eine Änderung in der LNbits Konfigurationsdatei .env
vorgenommen habt und die übernommen werden soll.
7.11 – Allgemein – Eine Domain für euren LNbits Server
Glückwunsch, dass ihr es bis hier hin geschafft habt, das ist schon mal eine gute Leistung. Ihr habt jetzt einen eigenen Virtual Privat Server mit VPN Tunnel zum Node aufzusetzten, damit euer Node vom Clearnet aus erreichbar ist. Ihr habt auch LNbits über den VPN Tunnel mit euren Lightning Node verbunden, das schon mal klasse! 🤜🤛 Was jetzt aber noch fehlt, ist der Schritt euer LNbits auch aus dem Clearnet erreichbar zu machen und das ist schon wieder eine kleine eigenen Welt, die Welt des Webhosting, der Domains, der Zertifikate und die der Webserver.
Wer schon eine eigene Webdomain hat, der kann für die Domain (oder Subdomain) unter DNS / Nameservers
einen DNS Eintrag Typ A
auf die IP-Adresse des VPS einstellen. Damit werden alle Anfragen an die (Sub)Domain direkt auf den LNbits Server weitergeleitet. Hinweis, evtl. müsst ihr die automatische SSL Zertifizierung für die (Sub)Domain eures Hostanbieter abschalten. Das machen wir nachher selbst.
Wer noch keine eigenen Domain hat, der kann eine kostenlosen Subdomain von z.B. DuckDNS.org bekommen. Das einrichten ist nicht sehr schwer.
- Geht dazu auf die Seite duckdns.org
- Registriert euch mit einer der vielen Möglichkeiten
- Wählt eine subdomain.duckdsn.org
- Stellt die IP-Adresse eurer VPS für die Weiterleitung ein
Ab jetzt werden alle Anfragen die ihr an die Domain schickt automatisch an euren VPS weitergeleitet.
7.12 – VPS – Caddy Webserver enrichten
Caddy ist ein Open-Source-Webserver mit automatischer HTTPS Zertifizierung und beamt das Web Interface deiner LNbits Instanz ins Clearnet. Es kümmert sich wirklich sehr effizient um alles, auch um die Zertifikate und Aktualisierung. Man muss nur den DNS Eintrag der (Sub)Domain auf die IP-Adresse der VPS richtet, das wurde im vorherigen Abschnitt ja beschrieben, den Rest übernimmt Caddy.
Vorab: DNS Eintrag prüfen
Prüft vorher mal ob der DNS Eintrag auch funktioniert und die Webdomain direkt zur IP-Adresse eures VPS weiterleitet wird. Mit DNS Lookup oder whatsmydns.net. Denkt daran das die Aktualisierung mehrer Stunden dauern kann. Und dann installiert Caddy.
Caddy installieren
cd ~
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
Den Caddyfile anlegen
sudo caddy stop
sudo nano /etc/caddy/Caddyfile
Hinweis:
Die Datei ist mit default Werte gefüllt, die könnt ihr löschen
Den Caddyfile jetzt mit diesen Abschnitt füllen und die Domainadresse anpassen
lnbits.ereignishorizont.xyz {
handle /api/v1/payments/sse* {
reverse_proxy 0.0.0.0:5000 {
header_up X-Forwarded-Host lnbits.ereignishorizont.xyz
transport http {
keepalive off
compression off
}
}
}
reverse_proxy 0.0.0.0:5000 {
header_up X-Forwarded-Host lnbits.ereignishorizont.xyz
}
}
-> STRG+x -> y -> ENTER
Hinweis:
Caddy beschafft das Zertifikat in diesem Beispiel nur für die Domain lnbits.ereignishorizont.xyz und nicht für Subdomain www, also z.B. www.lnbits.ereignishorizont.xyz. Das muss man im Hinterkopf behalten.
Caddy Autostart Service hinzufügen
Damit der Caddy Service nach dem nächsten Neustart des VPS auch wieder startet:
Datei caddy.service
anlegen:
sudo nano /etc/systemd/system/caddy.service
Die Datei befülle mit:
# caddy.service
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
Type=notify
User=caddy
Group=caddy
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile --force
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateDevices=yes
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
[Install]
WantedBy=multi-user.target
-> Danach: STRG+x -> y -> ENTER
Service freigeben, starten und prüfen
sudo systemctl enable caddy.service
sudo systemctl start caddy.service
sudo systemctl status caddy.service # -> q
F e r t i g !!! 😄
Euer LNbits Server sollte jetzt unter eurer Webdomain erreichbar sein und hoffentlich auch funktionieren. 🚀
Klappt es noch nicht? Eine Hilfe zur Fehlersuche, der mir bekannten Fehlermöglichkeiten, habe ich im Anhang angehängt.
8. Zusammenfassung
Ihr seid jetzt stolzer und soveräner Eigentümer einer weltweit erreichbaren kleinen privaten Bank mit aufgesetztem Lightning ⚡ Technologie Hub und könnt die Zukunft mitgestalten. 🥂 Wenn man das erste mal seine eigenen LNbits Seite aufrufen kann, ist das ein unglaublich tolles Gefühl. Die Lightning ⚡ Technologie mach uns unabhängig und wir können mit LNbits Menschen die uns nahe stehen eine sichere Umgebung für Finanztechnologie bieten, so das sie keinem Fremdem vertrauen müssen.
"Be a bank for your family and friends"
Bitcoin ⚡ Lightning Netzwerk und die darauf aufbauenden Funktionen werden zweifellos die Welt revolutionieren. Es funktioniert einfach. Sicherlich gibt es noch genügen Probleme die es zu lösen sind und keiner weiß wirklich wo die Reise hingeht, aber es wird vielfältig und quelloffen auf allen Ebenen daran gearbeitet. LNbits zeigt das erstmal wo das ganze hinführen kann, wenn man über den Tellerrand hinweg schaut. Dann sieht man dass Bitcoin ⚡ Lightning nicht als ein abgeschottet Zahlungssystem zu sehen ist, sondern als etwas ganz Neues. Bitcoin ⚡ Lightning ist nativ digital und der ihm innewohnende Wert, in Form von Bitcoin Satoshis, kann unglaublich gut digital verarbeit werden und Prozesse könne einfach automatisiert werden. Wir brauchen nicht einmal mehr einen Mittelsmann und können das beste Geld was wir haben direkt, günstig, schnell und jederzeit einem anderen Menschen, egal wo auf diesen Planeten, zukommen lassen. Das hebt uns auf ein ganz neues Level, das so noch nicht vorstellbar war. Die technischen Revolution startet für uns mit der Veröffentlichung des Whitepaper am 1. November 2008 als Gedanke. Am 3. Januar 2009 ließ Satoshi Nakamoto mit dem Genesis Block das erst mal das Herz von Bitcoin schlagen und jetzt nimmt die Entwicklung auf der zweiten, dritten und vielleicht vierten Ebenen Fahrt auf. Es wird sehr disruptiv sein, aber nicht radikal. Jeder kann mit machen, niemand muss. Vieles wird dadurch einfacher, schneller, günstiger, skalierbarer, globaler, unabhängiger, widerstandsfähiger, flexibler und vieles mehr. Jetzt sind wir auch finanztechnisch im 21. Jahrhundert angekommen.
Mein Dank gilt natürlich wieder Ben Arc der LNbits aus der Taufe gehoben hat. Aber auch all den anderen Entwickler die mitgeholfen haben und stetig daran arbeiten LNbits weiter wachsen zu lassen und wir immer neue Funktionen dazubekommen. Da LNbits ein freies und quelloffenes Projekt ist, kann jeder mithelfen. Sei es um Code zu schreiten, einen Fehler reporten oder vielleicht auch nur etwas Dokumention schreiben, so wie ich.
Insbesondere möchte ich mich natürlich auch nochmal beim TrezorHannes bedanken, der die Grundlage für dieses Turial durch zusammensetzen vieler kleiner Puzzlestücke geschaffen hat. Auch er hatte sein Quellen die wiederum den Gedanken von Free and Open Souce Software leben. Software ist Information, Information ist Wissen und Wissen muss frei sein, damit die Gesellschaft den bestmöglichen Mehrwert für alle daraus schöpfen kann.
Weitere Informationen oder Hilfe bekommt ihr hier:
- Dokumentation: LNbits Wiki
- GitHub: LNbits Github
- Telegram Chat: https://t.me/lnbits
9. Anhang
9.1 Tipps zur Fehlersuche
-
[ ] Prüft das Zertifikat eure Domain: https://www.ssllabs.com/ssltest/
-
[ ] Falls am Zertifikat etwas faul ist, überprüft nochmal euer Caddyfile und ob die Weiterleitung eures DNS Eintrag funktioniert: whatsmydns.net
-
[ ] Wenn ihr beim Start von LNbits per Poetry Befehl im Terminalfenster die Meldung
Retrying connection to backend in 5 seconds...
seht, dann stimmt vermutlich etwas in der .env Datei nicht. Prüft denMacaroon
, dasCert
und denEndpoint
. -
[ ] Wenn ihr die Meldung
HTTP ERROR 502
bekommt, dann ist evtl. eure LNbits Instanz nicht gestartet. Das könnt ihr prüfen, in dem Ihr den Status des lnbits.service abfragt:$ sudo systemctl status lnbits.service
. Dort seht ihr auch, wenn es einen Fehler mit der Verbindung zu eurem Node gibt. Ursache dafür kann ein Fehler in Konfigurationsdatei.env
sein. Prüft welches LNBITS_BACKEND_WALLET ihr eingestellt habt und die dazugehörigen Daten wie z.B. LND_REST_MACAROON, LND_REST_CERT und LND_REST_ENDPOINT. Was auch noch möglich ist, vielleicht stimmt etwas mit eurer PostgreSQL Datenbank oder derLNBITS_DATABASE_URL
Verknüpfung in der.env
nicht. -
[ ] Der Aufruf mit der Subdomain
www.
funktioniert nicht. Dafür müsste man noch etwas extra Arbeit reinstecken. Gebt eure Webadresse also immer ohne daswww
davor ein. -
[ ] Die Meldung
ERR_CONNECTION_REFUSED
kommt wenn euer Caddy Server ausgefallen ist. Überprüft ob der Service gestartet ist:$ sudo systemctl status caddy.service
-
[ ] – [ ] Seht ihr auf der LNbits Seite die Meldung
500
, dann kann die Verbindung zu eurem Node unterbrochen sein. Ist er vielleicht ausgefallen oder hat er aktuell kein Internet Zugang? -
[ ] Wenn ihr auf der LNbits Seite die Fehlermeldung
All connection attempts failed 500
bekommt, dann kann euer Docker für den Tunnel zur Node ausgefallen zu sein. -> Prüft ob die Docker Applicationactive (running)
ist:$ sudo systemctl status docker
-> Pürft ob euer Docker Container auch aktiv ist:$ sudo docker ps -a
-> Falls ihrSTATUS / Exited
seht, dann scheint der Container ausgefallen zu sein. Startet ihn wieder neu:$ sudo docker start < Docker ID >
-> Falls nicht schon geschehen, fügt den Autostart Service hinzugefügt:$ sudo docker update --restart unless-stopped < Docker ID >
-
[ ] Solltet ihr beim Aufrufen der Seite die Meldung
ERR_FAILED
bekommen, dann ist vermutlich euer VPS Droplet down. -
[ ] Wenn ihr in der Extention
Onchain Wallet
die Fehlermeldung400 unspported hash type ripemd160
bekommt, dann liegt das an einem Kompatibilitätsfehler. Eine Lösung findet ihr hier.
9.2 LNbits Update durchführen
LNbits stoppen und Update durchführen
sudo systemctl stop lnbits.service
cd ~/lnbits-legend
git pull
poetry install
LNbits wieder starten
sudo systemctl start lnbits.service
Hinweis:
Wenn ihr es erst testen und und Meldungen anzeigen lassen wollt: $ poetry run lnbits
Sind neue Funktionen hinzugekommen? Dann die .env
Datei einmal prüfen
Mit der neue Version können auch zusätzliche Funktionen gekommen sein, die Änderungen / Anpassung der .env
erforderlich machen können. Dazu solltet ihr bestehende .env
Datei mit der neuen .env.example
vergleichen.
cd ~/lnbits-legend
ls -la
cat .env # -> alte aktive Datei
cat .env.example # -> neue mit ggf. Änderungen
cp .env .env.bak # -> Backup machen
sudo nano .env # -> Änderungen einpflegen
LNbits neu starten mit $ sudo systemctl restart lnbits.service
Möglichkeiten zur Versionsprüfung
Ihr könnt prüfen welche "Version" gerade aktuell ist. Führt dazu den Befehl $ git show
aus. Als Ergebnis bekommt ihr Merge pull request #1234 ..
angezeigt. Das ist die Nummer des letzten Pull Request der verschmolzen wurde. Wenn ihr jetzt auf die GitHub Seite von LNbits geht, dann seht ihr dort welcher PR der letzte Merge war. Daran kann man gut erkennen, wie weit man hinterher hinkt. Raus kommt ihr aus "git show" mit q
.
Hinweis:
Wenn ihr in der .env
Datei der Variable LNBITS_SITE_TITLE="LNbits"
etwas anderes als "LNbits" zugewiesen habt, dann seht ihr auf der LNbits Startseite keine Commit Version
.
Poetry Updaten
Neben der Anwednung LNbits gibt es natürlich auch noch die virtuell Umgebung Poetry in der LNbits läuft. Auch die Software entwickelt sich weiter und kann geupdatet werden.
sudo systemctl stop lnbits.service
cd lnbits-legend
git checkout main && git pull
poetry self update
poetry install
poetry run lnbits # -> STRG+c
sudo systemctl start lnbits.service
sudo systemctl status lnbits.service
9.3 Deinstallationen / Rückbau
Anleitungen zum deinstallieren von Software findet ich fast geanuso wichtig wie die für Installationen. Denn man sich entscheidet die Software nicht zu verwenden oder ein Problem taucht, dann muss es einen Weg geben das Gerät möglichst wieder in den Ursprungszustand zu versetzen, gearde wenn es um ein Lightning Node geht. Daher hier ein paar Hinweise.
OpenVPN vom Node deinstallieren
sudo apt-get remove --purge openvpn
sudo rm -r /etc/openvpn
rm /home/admin/VPNcert/node1.ovpn
Das Backup der lnd.conf wieder herstellen
cd /mnt/hdd/lnd/
sudo cp lnd.conf.backup lnd.conf
Alternative, manuelle wieder herstellen der Einstellung
sudo nano /mnt/hdd/lnd/lnd.conf
Die entsprechenden Zeile ändern (true -> false) oder auskommentieren mit "#"
[Application Options]
..
nat=true # true = dynamische IP (NAT)
# externalip=111.111.111.111:9735 # für OpenVPN
# tlsextraip=111.11.0.2 # für Wireguard
[tor]
..
# tor.streamisolation=false
# tor.skip-proxy-for-clearnet-targets=true
Besonderheit NUR beim Raspiblitz
Das lnd_check.sh
Skript bei Zeile 184 aufrufen
sudo nano +184 /home/admin/config.scripts/lnd.check.sh
Und folgende Zeile wieder auskommentieren
# enforce PublicIP if (if not running Tor)
if [ "${runBehindTor}" != "on" ]; then
setting ${lndConfFile} ${insertLine} "externalip" "${publicIP}:${lndPort}"
else
# when running Tor a public ip can make startup problems - so remove
sed -i '/^externalip=*/d' ${lndConfFile}
fi
Hinweis:
Etwas weiter oben steht auch # enforce LND port is set correctly
. Falls ihr die Zeilen auch auskommtiert habt, weil ihr einen anderen Port als 9735 verwendet habt.
Den Node einmal neu starten
sudo systemctl reboot
Jetzt sollte alles wieder wie vorher funktionieren. Zum Prüfen schaut euch nochmal das Kapitel "7.7 – Allgemein – Überprüfen der Verbindung" an
Rückbau Droplet
Das Droplet (den VPS) könnt ihr einfach auf DigitalOcean "zerstören" (löschen)
9.4 LNbis Option – PostgreSQL Datenbank
Die standard mäßig installiert SQLite Datenbank ist für den Einstieg gut und ausreichend. Möchte man LNbits aber skalieren, sollte man auf die leistungsfähigere PostgreSQL Datenbank umsteigen. Die Daten der SQLite Datenbank können dabei recht einfach in die neu PostgreSQL Datenbank überführt werden.
Voraussetzungen installieren
apt-get update
sudo apt install python3-pip -y
pip install psycopg2-binary
Info:
"pip" ist ein Packprogramm und "Psycopg" ist ein PostgreSQL Datenbank Adapter für Python
PostgreSQL Installation und Einrichtung
sudo apt-get -y install postgresql
sudo -i -u postgres
psql
ALTER USER postgres PASSWORD 'myPassword'; # -> ggf. myPassword anpassen
\q
createdb lnbits
exit
Einstellung in der LNbits Konfigurationsdatei .env
cd ./lnbits-legend
sudo nano .env
-> # LNBITS_DATABASE_URL=..
Eintrag suchen und durch folgende Zeile ersetzten
..
LNBITS_DATABASE_URL="postgres://postgres:myPassword@localhost:5432/lnbits"
..
-> Ggf. myPassword
anpassen. Der User ist heißt postgres
und kann so bleiben
STRG-x -> y -> ENTER
LNbits einmal stoppen, starten und testen
sudo systemctl stop lnbits.service
cd ./lnbits-legend
poetry run lnbits # -> STRG+c
-> Hier sollte jetzt keine Fehlermeldung angezeigt werden und LNbits Seite wieder verfügbar sein
Hinweis:´
LNbits funktioniert jetzt zwar wieder, aber alle Accounts und Wallets sind noch in der alten Datenbank. Deswegen müsst ihr die erst zur neu PostgreSQL Datenbank migrieren.
Die Daten der alten SQLite Datenbank zur neuen PostgreSQL migrieren
poetry run python tools/conv.py
LNbits neu starten und testen
sudo systemctl start lnbits.service
sudo systemctl status lnbits.service
-> Jetzt sollte LNbits wie gewohnt laufen und alle Konten, Wallets und Erweiterungen wieder vorhanden sein.
Info: Status von PostgreSQL anzeigen lassen
sudo systemctl status postgresql.service
9.5 LNbits – Datenbanken Backup & Restore
Einfache Datensicherung einer SQLite Datenbank
Für gelegendlichen Sicherungen, kann man bei SQLite einfach den ganzen Ordner ./lnbits-legend/data
sichern. Dazu in den LNbits Ordner wechseln, dort liegt der Ordner ./data
. Am besten ein sprechenden Name mit Datum mit dem Format "jj/mm/dd" angeben, dann sortieren sich die Backups in der Ansicht besser.
cd ./lnbits-legend
tar cfv data_backup_jjmmdd.tar ./data
Es wurden jetzt in dem Verzeichns ./lnbits-legend/
TAR Archivdateien angelegt. Kontrollieren könnt ihr das mit $ ls -la
.
Wiederherstellung einer SQLite Datenbank
Vor dem entpacken LNbits einmal stoppen. Er entpackt dann win den gleichen Ordner ./data
. Alle Dateien werden überschrieben.
sudo systemctl stop lnbits.service
cd ./lnbits-legend
tar -xvf data_backup_jjmmdd.tar
sudo systemctl start lnbits.service
Einfache Datensicherung einer PostgreSQL Datenbank
Um ein Backup der Datenbank zu machen, müsst ihr euch erst mit dem vergebene User z.B. postgres
anmelden, mit dem ihr die Datenbank lnbits
angelegt habt. Es wird in dem Ordner dann die Datei lnbits_jjmmdd
angelegt.
# LOGIN AS USER POSTGRES
sudo -i -u postgres
# BACKUP LNBITS DATABASE
pg_dump lnbits > lnbits_jjmmdd.sql
# CHECK BACKUP
ls -la
# EXIT USER POSTGRES
exit
Wiederherstellung einer PostgreSQL Datenbank aus einer Datensicherung
Um das Backup wiederherzustellen, müsst ihr ein paar Zwischenschritte machen.
# STOP LNBITS
sudo systemctl stop lnbits.service
# LOGIN AS USER POSTGRES
sudo -i -u postgres
# LOGIN POSTGRES FRONTEND
psql
# SHOW LIST OF DATABASES
\l
# CONNECT FROM LNBITS TO POSTGRES DUMMY DATABASE
\c postgres
# DROP LNBITS DATABASE
DROP DATABASE IF EXISTS lnbits;
# QUIT POSTGRES FRONTEND
\q
# CREATE LNBITS DATABASE FROM TEMPLATE
createdb -T template0 lnbits
# RESTORE LNBITS DATABASE
psql --set ON_ERROR_STOP=on lnbits < lnbits_jjmmdd.sql
# LOGIN POSTGRES FRONTEND
psql
# CONNECT FROM POSTGRES DUMMY TO LNBITS DATABASE
\c lnbits
# QUIT POSTGRES FRONTEND
\q
# EXIT USER POSTGRES
exit
# START LNBITS
sudo systemctl start lnbits.service
9.6 Auto Backup PostgreSQL Database Using a Cron Job
Vorbereitung: md5 Hashfunktion für die Passwortabfrage aktivieren
Für den Cron Job müsst ihr vorher den Message-Digest Algorithm 5 (MD5) als Hashfunktion für die PostgreSQL Passwortabfrage einstellen. Ohne dem bekommt ihr ein Peer authentication failed
wenn ihr bereichsübergreifend (Ubuntu/Unix) etwas schreiben wollt oder das Passwort für euren postgres
wird als Fehlerhaft angezeigt. Dazu müsst ihr in der pg_hba.conf
zwei Zeile editieren und den PostgreSQL Service einmal neu starten. Danach müsst ihr den Passwort Hash erneuern, in dem ihr ein neus Passwort (kann auch das gleiche sein) generiert. Aber vorher einmal die Version von PostgreSQL prüfen und ggf. den Pfad, hier Version 14 = ./14/.
, für eurer Version anpassen.
psql -V
sudo nano /etc/postgresql/14/main/pg_hba.conf
An zwei Stellen peer
gegen md5
tauschen. Hier steht wie es aussehen muss.
..
# Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
..
PostgreSQL einmal neu starten
sudo service postgresql restart
Passwort Hash erneuern
sudo passwd postgres
Test ob das neue Passwort funktioniert
su - postgres
exit
Passwort auf der Root Ebene ändern
sudo su -
\password postgres
\q
Test Login
psql postgres postgres
sudo psql -U postgres -W postgres
Ein Passwort File für den automatischen CronJob anlegen
nano .pgpass
Befülle mit hostname
:port
:database
:username
:password
localhost:5432:lnbits:postgres:myPassword
Es ist notwendig auch die Unix-Dateirechte für .pgpass
festzulegen
chmod 0600 ~/.pgpass
Cron Job einrichten
# LOGIN AS USER POSTGRES
sudo -i -u postgres
# CREATE FOLDER BACKUPS
mkdir backups
# CREATE CRONJOB
crontab -e
Im crontap
Editor beispielhaft folgedende Zeilen anfügen
*/5 * * * * pg_dump -U postgres lnbits > ~/backups/lnbits.bak
0 0 * * * * pg_dump -U postgres lnbits > ~/backups/lnbits_$(date +\%Y\%m\%d).bak
0 */3 * * * pg_dump -U postgres lnbits > ~/backups/lnbits_$(date +\%Y\%m\%d_\%H\%M).bak
Der erste Eintrag ist zum Testen des Cronjobs. Er sichert die Datenbank alle 5 Minuten in die Datei lnbits.bak
Der zweite Eintrag schreibt jeden Tag um 00:00 Uhr die Datenbank in die Datei Namens lnbits_JJJJMMDD.bak
Der dritte Eintrag schreibt die Datenbank alle drei Stunden in die Datei nach dem Format lnbits_JJJJMMDD_HHMM.bak
Zeitintervalle, von links nach rechts bedeuten die Sternchen/Zahlen:
- Minuten , angegeben als Zahl von 0 bis 59.
- Stunden , angegeben als Zahlen von 0 bis 23.
- Tage des Monats , angegeben als Zahlen von 1 bis 31.
- Monate als Zahlen von 1 bis 12 angegeben.
- Wochentage , angegeben als Zahlen von 0 bis 7, wobei Sonntag entweder als 0 oder als 7 dargestellt wird.
Sonstiges: * = Ausführung immer (zu jeder…) und */n = Ausführung aller n
Den Crontab einmal anzeigen: crontab -l
Backups kontrollieren: ls -la backups
oder sudo -i -u postgres ls -la backups
vom Home User
Weiter Infos zu Cron findet ihr hier oder hier .
9.7 Tipps um mehrer Nodes auf einer VPS zu verwalten
Hier gebe ich ein
Die Firewall auf eurem Node prüfen und die Ports einstellen. Beim Raspiblitz im Menü auf Exit
um in das CLI zu kommen.
sudo su # -> Root
ufw status
ufw allow 9736 comment 'VPS Tunnel LND Node3'
ufw allow 8081 comment 'VPS Tunnel REST Node3'
ufw status
exit
menu
Hier könnt ihr prüfen ob die Ports (9735, 9736,..) für den LND Node offen sind. https://www.yougetsignal.com/tools/open-ports/ Das funktioniert nur wenn der LND im Betrieb ist und normal arbeitet. Die REST Ports (8080, 8081,..) könnt ihr damit nicht prüfen.
Beispiel Einstellung LNbits .env
für mehrere Nodes
# LndRestWallet
LND_REST_ENDPOINT=https://172.17.0.2:8082/
LND_REST_CERT=/home/synonym/tls3.cert
LND_REST_MACAROON=/home/synonym/admin3.macaroon
Hier steht die Einstellung auf Node 3. Ohne groß nachzudenken kann man hier auf Node 2 umstellen und dann einmal den LNbits Service neu starten.
sudo systemctl restart lnbits.service
Alternative könnt ihr natürlich auch den LNTXBOT oder LigthningTipBot als Wallet hinterlegen.
9.8 Nützliche Shortcut Beispiele
# Allgemein
ls -la
pwd
systemctl poweroff
systemctl reboot
# Firewall
ufw allow 9735 comment 'Node1'
ufw enable
ufw status
# Docker
sudo systemctl status docker
sudo docker ps -a
sudo docker start 8c5c4bf6c634
sudo docker stop 8c5c4bf6c634
sudo docker exec -it 8c5c4bf6c634 sh
# Kommunikation von dem VPS zum Node prüfen__
curl https://172.17.0.2:8080 -v --cacert /home/synonym/tls.cert
# LND
sudo nano /mnt/hdd/lnd/lnd.conf
sudo systemctl restart lnd.service
sudo systemctl status lnd.service
# OpenVPN
sudo systemctl status openvpn@CERT
sudo journalctl -u openvpn@CERT -f --since "1 hour ago"
# Übertagen
scp root@111.111.111.111:/home/synonym/node1.ovpn /home/admin/VPNcert/
scp /mnt/hdd/lnd/tls.cert synonym@111.111.111.111:/home/synonym
# LNbits
cd ~/lnbits-legend
sudo nano ~/lnbits-legend/.env
sudo systemctl restart lnbits.service
sudo systemctl status lnbits.service
sudo systemctl stop lnbits.service
sudo systemctl start lnbits.service
poetry run lnbits
sudo journalctl -u lnbits -f --since "2 hour ago"
# Verbindungstest und Netzwerk Diagnose/Info
ping -c 3 google.com
ip add show tun0
ifconfig
nslookup google.com
dig google.com
9.9 Referenztabelle für Umbrel Pfade und Befehle
Raspiblitz | Umbrel |
---|---|
ssh admin@192.168.x.x | ssh umbrel@192.168.x.x |
/home/admin/ | /home/umbrel/ |
/mnt/hdd/lnd/ | /home/umbrel/umbrel/app-data/lightning/data/lnd/ |
sudo nano /mnt/hdd/lnd/lnd.conf | sudo nano /home/umbrel/umbrel/app-data/lightning/data/lnd/lnd.conf |
sudo systemctl restart lnd.service | sudo ~/umbrel/scripts/app restart lightning |
lncli getinfo | ~/umbrel/scripts/app compose lightning exec lnd lncli getinfo |
sudo tail -n 30 -f /mnt/hdd/lnd/logs/bitcoin/mainnet/lnd.log | ~/umbrel/scripts/app compose lightning exec lnd lncli getinfo |
/home/admin/VPNcert/ | /home/umbrel/VPNcert/ |
scp root@111.111.111.111:/home/synonym/node1.ovpn /home/admin/VPNcert/ | scp root@111.111.111.111:/home/synonym/node1.ovpn /home/umbrel/VPNcert/ |
sudo chmod 600 /home/admin/VPNcert/node1.ovpn | sudo chmod 600 /home/umbrel/VPNcert/node1.ovpn |
sudo cp -p /home/admin/VPNcert/node1.ovpn /etc/openvpn/CERT.conf | sudo cp -p /home/umbrel/VPNcert/node1.ovpn /etc/openvpn/CERT.conf |
scp /mnt/hdd/lnd/tls.cert synonym@111.111.111.111:/home/synonym | scp /home/umbrel/umbrel/app-data/lightning/data/lnd/tls.cert synonym@111.111.111.111:/home/synonym |
xxd -ps -u -C ~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon | xxd -ps -u -C /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/admin.macaroon |
scp ~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon synonym@111.111.111.111:/home/synonym | scp /home/umbrel/umbrel/app-data/lightning/data/lnd/data/chain/bitcoin/mainnet/admin.macaroon synonym@111.111.111.111:/home/synonym |
9.10 Sonstiges
Hier kommt Sonstiges rein, das von interesse sein könnte, aber nicht wichtig ist.
9.10.1 Node Alias Name
In der lnf.conf könnt ihr eurem Node auch einen Klarnamen (Alias) geben, falls er noch keinen hat. Die erscheint dann bei bestimmten Diensten. Fügt es einfach zu "Application Options" hinzu. Wenn ihr wollt könnte ihr im Node Alias sogar ein Emoji einfügen. Hier findet ihr eine gute Übersicht an Emojis. Die Emojis werden aber nicht von allen Diensten unterstützt und das kann das etwas komisch aussehen.
Beispiel für ein Alias Name:
[Application Options]
..
alias=FunnyName⚡
LNbits personalisieren
-> Vorzunehmende Einstellungen in der .env Datei:
# Change theme
LNBITS_SITE_TITLE="LNbits🐣" # Icon siehe Anhang "Alias Name für den Node"
Mögliche Emojis findet ihr hier.
Hinweis:
Wenn ihr den LNBITS_SITE_TITLE
verändert, zeigt euch LNbits auf der Startseite nicht mehr die letzte Commit version
an!
9.10.2 "Telegram Ping Bot" zum testen der Verbindung
Geht in Telegram auf den LNPingBot:
https://t.me/LNPingBot
Den Bot starten und dann den Befehl /ping eingeben, gefolgt von der Node ID, einem "@", der IP und dem Port für den LND
/ping <Node-ID>@<your-node-ip>:port
Z.B.:
/ping 292f947f27220d327817f0dd3931898661a33a527ecd6242e34af2c4839956bf0@38.242.135.150:24438
Es funktioniert auch für die Tor Verbindung:
/ping <Node-ID>@<tor-node.onion>:port
Hinweis:
Manchmal kann es etwas dauern bis der Bot reagiert, gerade bei Tor anfragen kann es auch schon mal bis zu 1 oder 2 Minuten dauern, habt also Geduld.
9.10.3 Ein privater VPN Tunnel
Die Tunnel Technologie die ihr jetzt kennen gelernt habt, könnt ihr natürlich auch für andere Funktionen verwenden. Z.B. eure eigene VPN Verbindung herstellen. Entweder um von eurem Desktop PC über einen VPS im Internet surfen, so das euer Provider das nicht mit bekommt mit wem ihr euch verbinden und von außen niemand euren echten Standort sieht. Wenn ihr mit eurem Handy unterwegs seid oder in einem öffentlichen WiFi, kann es auch Sinn machen VPN zu verwenden. Niemand muss mitbekommen wo ihr gerade seid oder welche Seiten ihr besucht. Auch könnt ihr im Prinzip über den VPS per zweiten VPN Tunnel sicher auf euer Heim Netz zugreifen. Die Anwendungsmöglichkeiten sind vielfälltig und es gibt mittlerweile viele Clients für Desktop und Mobil Geräte. Siehe openvpn.net.
9.10.4 Anbinden einer Wallet App wie z.B. Zeus
Wenn ihr in der UFW (uncomplicated firewall) des VPS den Port 8080 freischaltet, dann könnt ihr mit ein Lightning Wallet App, wie z.B. Zeus, mit euer Node verbinden. Ihr braucht nur die Daten Host
= Die IP des VPS / LND Port
= 8080 / Macaroon
= den habt ihr in diesem Tutorial aus eurem Node ausgelesen. Bei dem einrichten werdet ihr nach einen Zertifikat gefragt. Das is das Zertifikat für die Verschlüsselung für die Verbindung. Während ihr dieses bei einer Verbindung zu eurem Node im heimischen WLAN / LAN Netz ohne weiteres ignorieren könnt, sollte ihr Kommunikation die unverschlüsselt über das offene Internet geht vermeiden. Ich sollte also entweder einen Zertifikat haben oder einen VPN Tunnel verwenden. Zu einem spätern Zeitpunkt werde ich da mal etwas zu schreiben.
9.10.5 Admin UI
Das Admin UI ist praktisch, da man viele Einstellungen über das Web UI machen kann. Ihr bekommt dafür ein Super User Account, beim ersten Start mit den neuen Einstellungen in der .env
. Den Account müsst ihr euch wie ein Wallet Account abspeichern.
sudo systemctl stop lnbits.service
cd ~/lnbits-legend
sudo nano .env
-> Setze: LNBITS_ADMIN_UI=true
Jetzt Starte LNbits einmal im Terminalfenster
poetry run lnbits
Er zeigt euch jetzt den Super User Account an:
SUCCESS | ✔️ Access super user account at: https://127.0.0.1:5000/wallet?usr=5711d7..
Das /wallet?usr=..
ist dein Super User Account. Du musst ihn einfach nur an deine normale LNbits Web Domain anhängen.
Danach findest du zwischen Wallets
und Extensions
das Admin
/ Manage Server
Hier könnt ihr die Gestalltung der Oberfläche vornehmen, es hat TOPUP um Wallets zu füllen und man kann Zugriffrechte auf Extentions nur für Admins einschränke oder allgemein deaktiviert für alle. Ihr könnt User zu Admins machen oder Allowed User einstellen, wenn ihr den Zugriff beschränken möchtet. Und natürlich auch die klassischen Einstellungen der .env Datei, um z.B. das Funding Source Wallet zu ändern oder ein Charge Fee einzustellen.
Danach nicht vergessen den LNbits Service wieder zu starten
sudo systemctl start lnbits.service
Kleiner Hinweis noch, wenn ihr RESET TO DEFAULTS
setzt, dann wird ein neuer Super User Account angelegt. Der Alte ist dann nicht mehr gültig.
9.10.6 Mehrere Nodes auf einem Virtual Privat Server
Man kann auch mit einer VPS mehrere Node Clearnet Internet Zugänge verwalten. Entweder für die Familien oder Freunde, oder wenn man selbst einen zweite oder gar dritten Node hat. Sollte einer mal ausfallen, kann man LNbits recht einfach auf einen andern Node zeigen lassen damit der Finanzierungsquelle verwendet wird. Um den Rahmen dieses Tutorials nicht zu überstrapazieren habe ich dafür einen extra Seite erstellt. Ihr findet sie hier: https://ereignishorizont.xyz/multiblenode/
9.11 Quellen und weiterführende Dokumenation
Guide VPS-LNbits von TrezorHannes: https://github.com/TrezorHannes/vps-lnbits Guide Docker-OpenVPN von Kyle Manna: https://github.com/kylemanna/docker-openvpn Guide How-to von OpenVPN: https://openvpn.net/community-resources/how-to/ Guide Turn your self hostet.. von MobyCrypt: https://www.mobycrypt.com/turn-your-self-hosted-lightning.. LNbits – GitHub: https://github.com/lnbits/lnbits LNbits – Wiki / Doc.: https://github.com/lnbits/lnbits/wiki LNbits – Telegram Gruppe: https://t.me/lnbits LNbits – Option PostgreSQL database: https://github.com/lnbits/lnbits/blob/main/docs/guide/.. LNbits – SQLite to PostgreSQL migration: https://github.com/lnbits/lnbits/blob/main/docs/guide/.. LNbits – Installation PostgreSQL: https://www.youtube.com/watch?v=hKFWhBKcwlo Caddy.Service GitHub: https://github.com/caddyserver/dist/blob/master/init/caddy.service