Die selbstverwaltete Blitz⚡Bank
kommt noch..
1. Voraussetzungen
Zwei Dinge benötigt ihr, eine Domain oder Subdomain und einen Virtual Private Server (VPS). Wenn ihr schon eine Domain habt, könnt ihr recht einfach auf der Webseite eures Hosting Anbieters unter DNS / Nameserver einen neuen DNS-Eintrag mit der Subdomain eintragen und die auf die IP-Adresse des Virtual Private Server verweisen. Wenn ihr noch kein Domain habt, könnt ihr schon für unter 5 Euro pro Jahr eine Domain bekommen bei irgendeinem Hosting Anbieter bekommen. Domain und VPS Anbieter müssen nicht nicht identisch sein. Viele Web Hosting Anbieter bieten auch Virtual Private Server an. Hier habe ich mal die Einrichtung eines VPS bei Digital Ocean erklärt. Ihr könnt aber jeden x-beliebigen verwenden. Der Server benötigt nicht viel: Mindestvoraussetzung ist 1 CPU / 1 GB Ram / 25 GB SSD / 1 GB Transfer). Als Betriebssystem empfehle ich Ubuntu 22.04 LTS, mit der Version habe ich es ausgiebig getestet.
2. Server härten
Ubuntu OS Update / Upgrade durchführen
apt update && apt dist-upgrade -y
Ggf. müsst ihr mal Enter
drücken
ufw (Firewall)
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 enable
ufw status
-> Einmal y + Enter
drücken, um die Firewall zu aktivieren.
sudo journalctl -u lnbits -f --since "2 hour ago"
sudo journalctl -u phoenixd -f --since "2 hour ago"
2. Server härten
Ubuntu OS Update / Upgrade durchführen
apt update && apt dist-upgrade -y
Ggf. müsst ihr mal Enter
drücken
ufw (Firewall)
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 enable
ufw status
-> Einmal y + Enter
drücken, um die Firewall zu aktivieren.
fail2ban (Schutz vor Brute Force Attacken)
apt install fail2ban -y
systemctl enable fail2ban
systemctl start fail2ban
systemctl status fail2ban
-> Zwei mal Enter
bestätigen
swapfile (Virtueller RAM, für Speicherüberlauf)
fallocate -l 6G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
swapon -s
sudo nano /etc/fstab
Folgendes an Ende anhängen, für den Autostart:
/swapfile swap swap defaults 0 0
-> Speichern und schießen mit STRG+X -> Y -> Enter
Swapfile Installation überprüfen:
htop
-> Oben links: Swp[ 0K/6.00G]
-> Mit F10
beenden
Dedizierten Benutzer anlegen
adduser blitzbank
-> Passwort vergeben, Dateneingabe ist optional
usermod -aG sudo blitzbank
sudo nano /etc/ssh/sshd_config
Erweitern mit:
AllowUsers blitzbank
-> STRG+X -> Y -> Enter
systemctl poweroff
Jetzt ist ein guter Zeitpunkt um einen "Snapshot", also ein Backup (Image) eures Virtual Private Servers zu machen. Auf der Webseite eures Hosting Anbieters findet ihr eine Backup Funktion, mit der ihr ein Backup/Snapshot machen könnten. Mit diesem Snapshot könnte ihr später den VPS wiederherstellen. Danach den Server über die gleiche Webseite wieder starten und ab jetzt immer mit dem neuen Benutzer anmelden.
ssh blitzbank@45.157.11.35
3. Phoenix Wallet
Phoenix Installieren
Letzte Version: https://github.com/ACINQ/phoenixd/releases
mkdir phoenixd
cd phoenixd
wget https://github.com/ACINQ/phoenixd/releases/download/v0.4.0/phoenix-0.4.0-linux-x64.zip
unzip -j phoenix-0.4.0-linux-x64.zip
./phoenixd
Ihr werdet jetzt einmal gefragt, ob euch klar ist, dass ihr für das Wallet selbst verantwortlich seid und versteht, dass ihr die 12 Seed Wörter gut sichern müsst. -> I understand
Und als zweites werdet ihr gefragt, ob ihr automatische Liquiditätsmanagement versteht. Zum automatische Liquiditätsmanagement gibt es hier Infos. Grob gesagt, übernimmt Phoenix für euch das ganze Management. Ich könnt sofort die ersten Satoshi empfangen. Allerdings, muss erst eine gewisse Schwelle überschritten werden, dass sie für euch einen Kanal mit 2 Millionen Satoshis eröffnen. Der liegt bei ca. bei 30.000 Sats, dass sind die On-Chain + Service Gebühren. Später dazu mehr. -> I understand
Jetzt noch einmal Enter
zum Start des Phoenix Server drücken, dann seht ihr erste Informationen, wie z.B. eure nodeid:
. Den Prozess mit STRG+C
erstmal wieder beenden.
Den Wallet Seed anzeigen lassen:
cat ~/.phoenix/seed.dat ; echo
Wichtig: Die 12 Wörter gut sichern! Das ist eure Versicherung, mit der ihr das Wallet immer wieder herstellen könnte. Ein Lightning Channel Backup benötigt ihr nicht, dass übernimmt Phoenix, bzw. der ACINQ Server für euch.
Phoenix Autostart Service
sudo nano /etc/systemd/system/phoenixd.service
[Unit]
Description=phoenixd
After=network.target
[Service]
ExecStart=/home/blitzbank/phoenixd/phoenixd
WorkingDirectory=/home/blitzbank/phoenixd
User=blitzbank
Restart=always
TimeoutSec=120
RestartSec=30
[Install]
WantedBy=multi-user.target
sudo systemctl enable phoenixd
sudo systemctl start phoenixd
sudo systemctl status phoenixd
Das Phoenix Wallet läuft ab jetzt im Hintergrund und wird immer automatisch gestartet. 🐦🔥
4. LNbits Server
LNbits Voraussetzungen schaffen
curl -sSL https://install.python-poetry.org | python3 -
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
LNbits installieren
cd ~
git clone https://github.com/lnbits/lnbits.git
cd lnbits
git checkout main
poetry install --only main
cp .env.example .env
poetry run lnbits
Der Server sollte jetzt erfolgreich gestartet sein.
..
SUCCESS | ✔️ Backend VoidWallet connected and with a balance of 0 msat.
..
VoidWallet ist ein Leer Wallet bzw. virtuelles Wallet, dass LNbits immer automatisch einstellt, sobald keine gültige Finanzierungsquelle eingerichtet ist. Den LNbits Server kann man trotzdem bedienen, aber verwenden kann man da Wallet nicht. Transaktionen sind nicht möglich, da kein Lightning Wallet dahinter steckt. Die Einstellung werden wir gleich auf das Phoenix Wallet umstellen, aber zuerst einmal STRG+C
, um den Prozess abzubrechen.
LNbits Autostart Service
sudo nano /etc/systemd/system/lnbits.service
[Unit]
Description=LNbits
[Service]
ExecStartPre=/bin/sleep 2
WorkingDirectory=/home/blitzbank/lnbits
ExecStart=/home/blitzbank/.local/bin/poetry run lnbits
User=blitzbank
Restart=always
TimeoutSec=120
RestartSec=30
Environment=PYTHONUNBUFFERED=1
[Install]
WantedBy=multi-user.target
sudo systemctl enable lnbits
sudo systemctl start lnbits
sudo systemctl status lnbits
-> STRG+C
5. Caddy Webserver
Vorab: Stellt sicher, das ihr bei eurem Domainanbieter die DNS-Adresse (A und AAAA) eurer Subdomain/Domain auf die IP-Adresse eures Virtual Private Servers verweist, damit Anfragen über die Domain zum VPS weitergeleitet werden.
Caddy installieren
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
Im Internet Browser testen mit: http://youripadress
Caddyfile einstellen
sudo nano /etc/caddy/Caddyfile
yourdomain.com {
handle /api/v1/payments/sse* {
reverse_proxy 0.0.0.0:5000 {
header_up X-Forwarded-Host yourdomain.com
transport http {
keepalive off
compression off
}
}
}
reverse_proxy 0.0.0.0:5000 {
header_up X-Forwarded-Host yourdomain.com
}
}
sudo systemctl restart caddy
Nach einer kurzen Verzögerung sollte Caddy alle notwendigen Zertifikaten bekommen haben und ihr könnte den Webserver mit dem Internet Browser prüfen. Einfach yourdomain.com eingeben und euer LNbits-Server sollte euch angezeigt werden. 🎉
6. Einrichtung der Bank
LNbits Super User / Admin UI aktivieren
sudo nano ~/lnbits/.env
Folgende Zeile (ca. Zeile 12) von false
auf true
ändern:
LNBITS_ADMIN_UI=true
-> STRG+X -> Y -> Enter
sudo systemctl restart lnbits
Ruft jetzt euer LNbits Server erneut auf. Ihr sollte den Seitenaufruf yourdomain.com/first_install
sehen. Dort ihr müsste dem Super User einen Username
und Passwort
vergeben.
Danach klickt einmal links oben auf "LNbits wallet" und dann rechts auf "Export to Phone with QR Code". Ihr seht jetzt unter dem QR-Code den Button COPY WALLET URL
. Die URL kopieren und sicher wegspeichern, dass ist euer Zugang zum Super User Account, <u>der alle Administratorrechte hat</u>.
Empfehlung: Logt euch jetzt oben rechts unter "My Account" aus und den Super User, zukünftig nur über ein Inkognito Fenster eures Browsers, wieder ein. Das Wallet und die Erweiterungen des Super Users Accounts am besten nicht nutzen. Der Super User sollte nur zur administrativen Verwaltung verwendet werden.
Phoenix Wallet und LNbits verheiraten
Euer LNbits läuft bereits, hat aber noch das "VoidWallet" hinterlegt, also ein Dummy. Ihr müsst jetzt die Zugangsdaten des Phoenix Wallet in LNbits hinterlegen, damit LNbits Zugriff auf das Wallet hat.
Phoenix Wallet API anzeigen
cat ~/.phoenix/phoenix.conf ; echo
Die Zeichenkette hinter http-password=
ist euer API-Schlüsse den ihr braucht.
Phoenix API-Schlüssel in LNbits hinterlegen
Öffnet den Super User Account und geht auf Server
/ Funding Source
. Klickt auf Void Wallet
und stellt dort Phoenixd
ein. Jetzt PHOENIX_KEY
durch den Phoenix API-Schlüssel ersetzten. Der Endpoint kann so bleiben. Dann auf SAVE
und weiter auf RESTART SERVER
. Wenn ihr keine Fehlermeldung bekommt, habt ihr jetzt dem LNbits Server das Phoenix Wallet als Finanzierungsquelle hinterlegt. 🏆
Prüft das gerne nochmal mit den LNbits-Logdateien:
sudo journalctl -u lnbits -f --since "2 hour ago"
-> SUCCESS | ✔️ Backend PhoenixdWallet connected and with a balance of 0 msat.
-> STRG+C
Finanzieren des Phoenix Wallets
Geht jetzt nochmal zum Super User Account, klickt auf LNbits Wallet und dann auf CREATE INVOICE
. Hier jetzt 100.000 Satoshis eintragen, Memo "funding" und mit CREATE INVOICE
bestätigen. Die Lightning Rechnung jetzt begleichen und schon habt ihr eine "Selbstverwaltete⚡Bank".
Phoenix erledigt jetzt alles weitere für euch im Hintergrund. Sie eröffnen einen 2.000.000 Satoshis Lightning Kanal für dich, der "dual funded" ist. Der Kanal hat dann sowohl Inbound als auch Outbound Liquidität. Das heißt, ihr könnt damit bezahlen (Outbound), aber auch Empfangen (Inbound). Von den 100.000 Satoshis die ihr bezahlt habt, nimmt Phoenix sich ca. 30.000 Satoshis für die Kanal Eröffnungsgebühren (on-chain fee) und eine kleine Gebühre, für den Service, bzw. die Inbound Liquidität.
Euer Guthaben seht ihr jetzt im Super User Account unter Server / Funding
. Die LNbits Balance sollte bei 100k sats liegen und eure Node Balance bei ca. 70k sats . Die 30k sats Differenz, sind die Gebühren.
Möchte ihr den Status des Lightning Channels überprüfen:
~/phoenixd/phoenix-cli listchannels | grep "txId"
-> Die txId
kopieren und im mempool.space anzeigen lassen.
Weiter Infos zu eurer Channel Balance:
~/phoenixd/phoenix-cli getinfo
-> balanceSat
, inboundLiquiditySat
und capacitySat
7. Zusammenfassung
Damit habt ihr jetzt eine eigene Bitcoin Lightning Bank in Selbstverwahrung. Ein vollwertiges Wallet und Account System mit vielen Erweiterungsmöglichkeiten im Frontend und eine selbst verwahrte Finanzierungsquelle im Backend. Eure Möglichkeiten sind jetzt unbegrenzt und ihr benötigt keine Custody-Service mehr.
Im Anhang findet ihr noch ein paar nützliche Informationen, Erweiterungen und Optionen. Aktuelle Informationen über euer System könnt ihr Logdateien entnehmen.
sudo journalctl -u lnbits -f --since "2 hour ago"
sudo journalctl -u phoenixd -f --since "2 hour ago"
8. Anhang
Anerkennung und Referenz
Danke Yvette und Daniel für ihre Arbeit, auf die ich aufbauen konnte. 🧡
Weitere 📚 Quellen:
- Phoenixd docs: phoenix.acinq.co/server/get-started
- LNbits docs: docs.lnbits.org
- LNbits Server: ereignishorizont.xyz/lnbits-server