Deployment BTCPayServer

Ich plane ein Deployment eines BTCPay-Servers für einen Online-Shop und (später) für einen Point-of-Sale. Dafür gibt es ja unterschiedliche Szenarien zwischen „alles fremdgehostet“, bis hin zur eigene Node mit BTCPay Server.

Was sind eure Erfahrungen diesbezüglich?

Der Thread ist eine Ausgliederung aus diesem Thread mit @kieselbert und @Cryptonator:

1 „Gefällt mir“

Okay, das klingt logisch und erhöt natürlich die Sicherheit. Danke für die Erklärung!

Würde es nicht reichen eine BTCPay-Installation z.B. mit Docker auf einem anderen Server zu haben und auf die Node zuzugreifen? Das ganze müsste doch dann keine vollständige Node mit der ganzen Blockchain sein. Es würde doch reichen, wenn der BTCPay-Server einen Channel zur eigenen Node hat. Aber ich habe mir die Architektur von BTCPay noch nicht so genau angesehen.

So wie ich es bis jetzt verstehe, geht es nicht einfacher ohne einen Trade-off mit der Sicherheit einzugehen. Lightning braucht die Blockdaten und von Pruning wird explizit abgeraten. Man könnte vielleicht den BTCPay-Knoten leichter bauen wenn er auf die Blockdaten einer anderen Node zugreifen darf (NFS freigabe o.Ä.) und nur den Lightning-Anteil lokal abhandelt. Ich wollte aber bewusst ein einfaches vertrauensfreies Setup wie es auch bei zwei völlig fremden Nodes bestehen würde.
Grundsätzlich interessiert mich eine Idee aber schon, wie man Lightning mit geringem Hardwareaufwand an die Kassen bringen kann. Da finde ich eine Node die ein halbes Terabyte an Daten vorhält und wenn sie vom Netz getrennt war erstmal ewig „nachholen“ muss keine gute Lösung.

Mal was anderes zum Deployment:
Hat sich irgendwer mal das Thema SSL näher angeschaut? Da sehe ich aktuell ne Baustelle. Der BTCPayServer den man bei Umbrel als App installiert kann nicht mal HTTPS mit selfsigned Zertifikaten. Die Lösung ist damit in meinen Augen quasi komplett unbrauchbar. Die BTCPayServer-Lösung auf dem Raspiblitz hab ich mir noch nicht angeschaut, die sieht da vielleicht besser aus.
Kurzum bräuchte man aber selbst dann valide Zertifikate z.B. von LetsEncrypt damit der PayServer die Kunden nicht mit Warnmeldungen bombardiert.
Für mich hat dieses ganze Setup gerade ein altes Projekt von mir wiederbelebt, so dass ich nun einen ReverseProxy aufsetze damit solche Services mit validen Zertifikaten versorgt werden, die auch mit meinen Domains übereinstimmen. Alles andere wirkt zum Kunden hin nur unprofessionell.

1 „Gefällt mir“

Verstehe, so ergibt dein Setup mit 2 Nodes wirklich Sinn. Danke fürs Teilen!

Ich wollte ursprünglich den BTCPay-Server auf einem Raspiblitz genau dafür nutzen. Hab irgendwo gelesen, dass das mit Let’s-Encrypt funktioniert.

Haha, das habe ich früher auch gemacht, lang ist’s her. Das hat aber ehrlich gesagt immer nur zur Problemen geführt, weil irgendwas bei den Forwards immer hängenbleibt. Aber vielleicht hab ich es nie richtig gemacht. Ich hätte ja gerne etwas wie https://pay.meinshop.tld oder so. Aber bei einem 1-Node-Setup wäre halt dann der Node schon sehr offen sichtbar im Netz… :fearful:

Raspiblitz grad mal angeschaut, ok da geht https mit selfsigned Zertifikaten (immerhin). LetsEncrypt wird angeboten für DuckDNS und Dynu. Aber will man seine Kunden wirklich von https://meinShop.tld auf meinShop.DuckDNS.org weiterleiten? Klar, das Ziel muss schon eher https://pay.meinshop.tld sein.

Für BTCPay sollte die Config eigentlich überschaubar sein, es wird ja „nur“ eine einzige Seite gezeigt. Klar z.B. ne Nextcloud über den Reverseproxy zu schieben ist eine andere Hausnummer :sweat_smile:

Ein bisschen AJAX wird wohl auch dabei sein, weil er ja permanent pollt, ob die Zahlung schon da ist. Aber du hast sicher recht, das wird schon machbar sein.

Wie planst du das zu realisieren? Mit einem Apache mod_proxy?
Da könnte ich mir (zumindest mal fürs Testen) die 2. Node sparen und dafür nur connects vom Proxy auf den BTCPay server zulassen. Würde zumindest die Sicherheit ein wenig erhöhen.

1 „Gefällt mir“

Mit Traefik und entsprechenden Routern in der dynamic_conf.yml. Ist auch schon fertig, hier mal mit einfachem Slider für einen kleinen Laden. Die HTML mit dem Slider liegt auf dem Webspace ist noch ohne SSL, aber die Weiterleitung auf BTCPay geht dann über https und wird per Traefik auf den BTCPayserver auf einem Raspi (Umbrel) „weitergeproxt“. Ist machbar, fürs BTCPayweblogin sollte man aber 2FA aktivieren.

3 „Gefällt mir“

Hallo liebe Blocktrainer Community!

Auch ich versuche (leider erfolglos) einen eigenen BTCPayServer auf meinem pi 4 einzurichten. Die Installation scheint funktioniert zu haben, jedoch komme ich nicht auf die Webseite um den Admin-Account zu registrieren. Habe diverse IP’s und URL’s versucht (localhost, IP des pi, btcpay.local, etc.). Aber entweder funktioniert es gar nicht, oder ich bekomme die Meldung „503 Service Temporarily Unavailable - nginx“. Ich bin nach der Anleitung auf Introduction | BTCPay Server vorgegangen. Ich habe noch keine Domain/Subdomain und möchte einfach mal lokal draufkommen…

Konfiguration:
BTCPAY_ADDITIONAL_HOSTS=
SHELL=/bin/bash
BTCPAY_ENV_FILE=/root/BTCPayServer/.env
LND_WTCLIENT_SWEEP_FEE=
BTCPAY_SSHAUTHORIZEDKEYS=/datadir/host_authorized_keys
NBITCOIN_NETWORK=mainnet
WOOCOMMERCE_HOST=
PWD=/root/BTCPayServer/btcpayserver-docker
BTCPAY_SSHKEYFILE=/datadir/host_id_rsa
BTCPAY_SSHTRUSTEDFINGERPRINTS=
TOR_RELAY_NICKNAME=
HOME=/root
LIBREPATRON_HOST=
BTCPAY_DOCKER_COMPOSE=/root/BTCPayServer/btcpayserver-docker/Generated/docker-compose.generated.yml
BTCPAY_HOST=btcpay.local
BTCPAY_ANNOUNCEABLE_HOST=
BTCPAY_PROTOCOL=https
LETSENCRYPT_EMAIL=
EPS_XPUB=
REVERSEPROXY_DEFAULT_HOST=none
BTCPAY_ENABLE_SSH=true
BTCPAYGEN_EXCLUDE_FRAGMENTS=
REVERSEPROXY_HTTP_PORT=80
BTCPAYGEN_LIGHTNING=clightning
BTCPAY_BASE_DIRECTORY=/root/BTCPayServer
TOR_RELAY_EMAIL=
BTCTRANSMUTER_HOST=
REVERSEPROXY_HTTPS_PORT=443
BTCPAY_HOST_SSHAUTHORIZEDKEYS=/root/.ssh/authorized_keys
BTCPAY_HOST_SSHKEYFILE=
LIGHTNING_ALIAS=
BTCPAYGEN_ADDITIONAL_FRAGMENTS=opt-save-storage-s
PIHOLE_SERVERIP=
BTCPAY_IMAGE=
BTCPAY_CRYPTOS=btc
BTCPAYGEN_REVERSEPROXY=nginx
BTCPAYGEN_CRYPTO6=
BTCPAYGEN_CRYPTO7=
BTCPAYGEN_CRYPTO4=
BTCPAYGEN_CRYPTO5=
BTCPAYGEN_CRYPTO2=
BTCPAYGEN_CRYPTO3=
BTCPAYGEN_CRYPTO1=btc
BTCPAYGEN_CRYPTO8=
BTCPAYGEN_CRYPTO9=
BTCPAYGEN_OLD_PREGEN=false
_=/usr/bin/env

Danke vielmals im Voraus für jegliche Unterstützung.

Hey, versuche mal IP:3003

Hi Yvette

Danke für den Input. Leider funktioniert auch IP:3003 nicht…