BTC Play Server

Πρώτη δημοσίευση: 2025-12-28

Ήδη από την πρώτη φορά που είχα μάθει για τον BTCPay Server και την αποστολή του, η όλη ιδέα με είχε κερδίσει.

Όπως το έβλεπα και συνεχίζω να το βλέπω, δεν υπάρχει τίποτε καλύτερο από το να πληρώνεσαι σε Bitcoin για προϊόντα και υπηρεσίες που παρέχεις, χωρίς να εξαρτάσαι από ενδιάμεσους.

Διορθώνω τον εαυτό μου: Κάτι καλύτερο, από το να πληρώνεσαι σε Bitcoin για προϊόντα και υπηρεσίες που παρέχεις, χωρίς να εξαρτάσαι από ενδιάμεσους, είναι να πληρώνεσαι σε Monero.

Αλλά όπως και να 'χει θέμα δεν υπάρχει, αφού εκτός από Bitcoin ο BTCPay Server διαχειρίζεται πληρωμές και σε altcoins, του Monero συμπεριλαμβανομένου.

Διορθώνω ξανά τον εαυτό μου: Ειδικά με το Monero θέμα φαίνεται να υπάρχει, τουλάχιστον τη στιγμή που γράφεται το παρόν. Θα εξηγήσω τι εννοώ σε λίγο.

Τον BTCPay Server είχα εγκαταστήσει πειραματικά αρκετές φορές στο παρελθόν: σε VPS, σε Raspberry Pi, ακόμη και σ' ένα Intel-based MacBook Pro. Κάθε φορά όμως έχανα το ενδιαφέρον μου. Είναι που, εδώ και χρόνια, δεν παρέχω κάποιο προϊόν ή κάποια υπηρεσία για το οποίο ή για την οποία θα μπορούσα να πληρώνομαι σε crypto. Μία μέρα που θα βαριέμαι (πάρα) πολύ, θα πάω στο λογιστήριο της τρέχουσας nine-to-five και θα ζητήσω να πληρώνομαι σε Bitcoin.

Άνετα μπορώ να φανταστώ πιθανές αντιδράσεις.

Καμία δεν οδηγεί στο επιθυμητό αποτέλεσμα.

Για λόγους σαν τους παραπάνω, κι επειδή είναι κάπως παράξενο να συντηρείς μια σχετικά βαριά πλατφόρμα προκειμένου να δέχεσαι πληρωμές αποκλειστικά από τον εαυτό σου, ο BTCPay Server ποτέ δεν κατάφερε να μείνει για καιρό στον ψηφιακό μου κόσμο.

Αλλά αυτή τη φορά όλα θα είναι διαφορετικά.

Αλλαγές, βελτιώσεις και ήπιες εξώσεις

Στα τέλη του Οκτωβρίου του 2024 κυκλοφόρησε η έκδοση 2.0.0 του BTCPay Server, με βελτιώσεις στο περιβάλλον καθώς και στην εμπειρία χρήσης της πλατφόρμας. Επιπρόσθετα, εμπεριείχε πλήθος bug fixes και τροποποιήσεων για το backend. Όλες οι σχετικές αλλαγές συνεισέφεραν προς τη δημιουργία μιας στέρεας βάσης για τη μελλοντική ανάπτυξη κι εξέλιξη του BTCPay Server.

Πράγματι, η έκδοση 2.1.0, που κυκλοφόρησε τον Απρίλιο του 2025, κατέστησε το codebase της πλατφόρμας περισσότερο modular. Μια αξιοπρόσεκτη ενέργεια προς αυτή την κατεύθυνση, ήταν η αφαίρεση του κώδικα για την υποστήριξη των Monero και ZCash. Από τότε, όποιος θέλει η ενημερωμένη εγκατάσταση του BTCPay Server του να διαχειρίζεται πληρωμές σε κάποιο από τα δύο αυτά νομίσματα, θα πρέπει να εγκαταστήσει το αντίστοιχο plugin.

Η ιδέα εδώ είναι ότι, πλέον, οι developers του BTCPay Server αφοσιώνονται στη βελτίωση και στην ανάπτυξη της βασικής πλατφόρμας, που αφορά κυρίως στη διαχείριση πληρωμών σε Bitcoin. Όσο για τα plugins, υπεύθυνοι είναι αντίστοιχοι developers και maintainers οι οποίοι δεν εμπλέκονται, κατ' ανάγκη, με το κύριο πρότζεκτ.

Η περίπτωση του Monero

Είχα δοκιμάσει την υποστήριξη Monero από πλευράς BTCPay Server, καιρό πριν ο σχετικός κώδικας γίνει plugin. Ομολογώ ότι υπήρχε κάτι που δεν με είχε ενθουσιάσει. Τώρα που το σκέφτομαι, κανείς άλλος δεν πρέπει να είχε ενθουσιαστεί μ' αυτό το κάτι. Αναφέρομαι στο γεγονός ότι, σε αντίθεση με τη διαχείριση Bitcoin κι άλλων νομισμάτων, όπως το Litecoin ή το Dash, όσον αφορούσε στο Monero είχες ένα μόνο XMR wallet, ακόμη και με περισσότερα από ένα stores.

Όταν δέχεσαι πληρωμές σε Bitcoin, για παράδειγμα, έχεις ένα BTC wallet για το store από το οποίο πουλάς video tutorials, ξεχωριστό BTC wallet για το store από το οποίο πουλάς μεταχειρισμένο hardware, διαφορετικό BTC wallet για το store από το οποίο δέχεσαι tips και donations κ.ο.κ. Με το Monero, όμως, είχες ένα μόνο XMR wallet και μάλιστα ανεξαρτήτως του πλήθους των stores που δέχονταν πληρωμές στο εν λόγω νόμισμα. Η κατάσταση αυτή δεν έχει αλλάξει -- τουλάχιστον έως και σήμερα, το Δεκέμβριο του 2025.

Ως plugin για τον BTCPay Server, το Monero έχει πλέον το δικό του repository. Τη στιγμή που γράφεται το παρόν, υπάρχουν ανοικτά Issues τα οποία, εμένα τουλάχιστον, αποθαρρύνουν από τη χρήση του plugin. Ίσως κάποιος θελήσει να το εγκαταστήσει και να το δοκιμάσει, αν μη τι άλλο για να συνεισφέρει στη βελτίωσή του με bug reports. Αλλά για χρήση σε αληθινό store, το Monero μέσω BTCPay Server μάλλον το βάζεις στον πάγο. Αν μάλιστα δεις ότι το σχετικό CCS για την ανάπτυξη του plugin δείχνει κάπως βαλτωμένο, τότε το βάζεις στον πάγο χωρίς "μάλλον".

Είναι νομίζω προφανές ότι προσπαθώ να περιγράψω απαλά την όλη κατάσταση. Καλύτερα να γίνω περισσότερο σαφής: Από πλευράς BTCPay Server, επί του παρόντος φαίνεται να υφίσταται θέμα με την υποστήριξη του Monero. Ίσως κάτι μου διαφεύγει, καταλαβαίνω όμως ότι όποιος σκοπεύει να χρησιμοποιήσει την πλέον πρόσφατη έκδοση του BTCPay Server (2.3.1) για διαχείριση πληρωμών σε Monero, θα πρέπει ν' αναζητήσει άλλη πλατφόρμα ή μέθοδο.

Ο BTCPay Server σε Raspberry Pi

Στο πλαίσιο του self-hosting, αποφάσισα να εγκαταστήσω τον BTCPay Server σ' ένα Raspberry Pi 4 με 8 gigabyte RAM κι έναν φορητό δίσκο USB χωρητικότητας 1 terabyte. Προσάρμοσα ελαφρώς τις επίσημες οδηγίες για το εν λόγω hardware, κι επέλεξα να έχω pruned node. Αυτή τη στιγμή, που η εγκατάσταση του BTCPay Server είναι έτοιμη και μπορώ να δέχομαι πληρωμές σε Bitcoin, το τοπικό pruned blockchain τοπικά έχει συνολικό μέγεθος περί τα 30 gigabyte (BTCPAYGEN_ADDITIONAL_FRAGMENTS="opt-save-storage-xs").

Η χωρητικότητα του δίσκου USB, λοιπόν, απεδείχθη πολύ περισσότερο από αρκετή για τις ανάγκες μου. Το δε IBD (Initial Block Download), από την άλλη, απεδείχθη αδυσώπητα βαρύ για το Raspberry Pi.

Βάσανα με το IBD

Για κάθε νόμισμα που υποστηρίζει ο BTCPay Server, δημιουργεί κι ένα τοπικό validating node. Διαφορετικά θα αναγκαζόταν να συνδέεται σε άλλα nodes, επομένως δεν θα μπορούσε να λειτουργεί ως πραγματικά αυτόνομος cryptocurrency processor.

Το IBD, λοιπόν, είναι μια υποχρεωτική διαδικασία για κάθε Bitcoin node, προκειμένου αυτό να 'ναι συγχρονισμένο με το αντίστοιχο δίκτυο. Κατά το IBD κατεβάζουμε πρώτα το genesis block και συνεχίζουμε να κατεβάζουμε blocks έως ότου λάβουμε και το πλέον πρόσφατο block του blockchain (current tip).

Αυτή τη στιγμή, το συνολικό μέγεθος του Bitcoin blockchain είναι γύρω στα 800 gigabyte. Επειδή επέλεξα να έχω pruned node, όλος αυτός ο όγκος δεδομένων δεν είναι αποθηκευμένος στον εξωτερικό δίσκο του Raspberry Pi μου. Αντιθέτως, ανά πάσα στιγμή και λόγω της παραμέτρου opt-save-storage-xs, είναι αποθηκευμένα γύρω στα 30 πιο πρόσφατα gigabyte του Bitcoin blockchain. Σε κάθε περίπτωση, κατά τη διάρκεια του IBD ούτως ή άλλως κατεβαίνει ολόκληρο το blockchain, κι απλά αποθηκεύεται μόνο ένα υποσύνολο πιο πρόσφατων blocks. Αν κάποιος έχει γρήγορη σύνδεση στο ίντερνετ, το να κατεβάσει 800 gigabyte δεν είναι ό,τι πιο τρομακτικό.

Το θέμα με το IBD, είναι ότι εκτός από το downloading έχουμε και το validating -- κι εκεί είναι που hardware σαν το Raspberry Pi αρχίζει να ζορίζεται. Στο επίσημο site του BTCPay Server αναφέρεται ότι για το IBD σ' ένα Raspberry Pi 4, χρειάζονται 40 περίπου ώρες. Πρόκειται για εκτίμηση που κάποτε ίσως ήταν ακριβής, σήμερα ωστόσο δεν έχει καμία σχέση με την πραγματικότητα. Στη δική μου περίπτωση, για παράδειγμα, μετά από δύο εβδομάδες το IBD ήταν περίπου στο 80%, κι από εκεί και μετά η πρόοδος ήταν απίστευτα αργή. (Το IBD αρχικά είναι γρήγορο. Αλλά όσο κατεβάζουμε blocks γίνεται πιο αργό, αφού το validation σε σχέση με όλα τα προηγούμενα blocks διαρκεί ολοένα και περισσότερο.)

Αρχικά υπέθεσα ότι κάτι δεν πάει καλά με το συγκεκριμένο Pi. Όμως με μια αναζήτηση βρήκα ανοικτό issue, στο οποίο χρήστες αναφέρουν υπερβολικά μεγάλους χρόνους για την ολοκλήρωση του IBD σε hardware κλάσης Raspberry Pi και με πρόσφατη έκδοση του Bitcoin daemon.

Κατά πώς φαίνεται, βελτιστοποιήσεις στη βιβλιοθήκη secp256k1 θα μπορούσαν να επιταχύνουν σημαντικά την όλη διαδικασία. Όποιος ενδιαφέρεται για (πάρα πολλές) περισσότερες τεχνικές λεπτομέρειες, υπάρχει σχετικό tracking PR.

Πολύτιμη εικονική βοήθεια

Σε σχετικά σύγχρονο hardware αρχιτεκτονικής x86-64, με τουλάχιστον διπύρηνο επεξεργαστή και μνήμη RAM τουλάχιστον 4 gigabyte, με την προϋπόθεση ότι η σύνδεση στο διαδίκτυο είναι γρήγορη το IBD ολοκληρώνεται σε τρεις το πολύ μέρες. Το ίδιο ισχύει και για τοπική εικονική μηχανή ή για απομακρυσμένο cloud server.

Από τη στιγμή που το Raspberry Pi 4 δεν επρόκειτο να ολοκληρώσει το IBD σύντομα, κι αφού, παρεμπιπτόντως, διαπίστωσα ότι ούτε το Fast sync επέφερε κάποια αισθητή βελτίωση, στράφηκα στο GNOME Boxes.

Σ' ένα mini PC με επεξεργαστή AMD Ryzen 7 (8 cores/16 threads) και με 96 gigabyte RAM, δημιούργησα με το GNOME Boxes μία εικονική μηχανή με 8 πυρήνες και 16 gigabyte RAM. Στη μηχανή εγκατέστησα το Ubuntu Noble Numbat κι αμέσως μετά τον BTCPay Server.

Όπως αναμενόταν, το IBD ολοκληρώθηκε σε 48 περίπου ώρες. Ακολούθησε το shutdown του εικονικού (στο GNOME Boxes VM) και του φυσικού (στο Raspberry Pi 4) BTCPay Server instance, καθώς και η μεταφορά (αντιγραφή) του pruned Bitcoin blockchain από το πρώτο στο δεύτερο. Όταν ξεκίνησα το instance στο Raspberry Pi, λίγα λεπτά αργότερα έτρεχε με το pruned blockchain του πλήρως συγχρονισμένο με το δίκτυο του Bitcoin.

Επιλογές για πρόσβαση από παντού

Μετά την εγκατάσταση του BTCPay Server σε self-hosted περιβάλλον, στο dashboard της πλατφόρμας έχεις πρόσβαση από το τοπικό δίκτυο μ' έναν οποιονδήποτε browser. Μπορείς έτσι να δημιουργείς και να δοκιμάζεις με την άνεσή σου stores, wallets, payment buttons, points of sale κ.λπ.

Βέβαια κάποια στιγμή πιθανώς θα θελήσεις να καταστήσεις την πλατφόρμα προσβάσιμη από το internet. Κι εγώ αυτό ακριβώς θέλω να κάνω. Μόνο που δεν σκοπεύω ούτε ν' ανοίξω ports στον home router μου, ούτε να φανερώνω την εκάστοτε δημόσια διεύθυνση IP που παίρνω από τον ISP. Αν αντί για το Raspberry Pi είχα στραφεί σε κάποιο VPS, τώρα δεν θα με απασχολούσαν τα παραπάνω: πολύ απλά, το BTCPay Server instance θα ήταν πλήρως προσβάσιμο κάτω από ένα subdomain του kolderson.net. Τώρα, όμως, τι επιλογές έχω;

Κατ' αρχάς, κάθε εγκατάσταση του BTCPay Server είναι προσβάσιμη από onion URL (κι αυτό είναι στο αρχείο /var/lib/docker/volumes/generated_tor_servicesdir/_data/BTCPayServer/hostname). Δεν χρειάζεται ν' ανοίξουμε κάποιο port, ούτε να δημιουργήσουμε κάποιον κανόνα port forwarding. Για το άνοιγμα του onion URL, όμως, χρειάζεται ο Tor Browser. Προσωπικά μ' αρέσει αυτή η επιλογή και τη βρίσκω αρκετά cypherpunk κι ωραία γενικώς. Αλλά εντάξει, όταν χρησιμοποιείς τον BTCPay Server επαγγελματικά, τότε σίγουρα δεν είναι ό,τι καλύτερο να δίνεις σε υποψήφιους πελάτες ένα μακρύ και παράξενο URL, και να τους λες ότι μπορούν να το ανοίξουν από τον Tor Browser μόνο.

Η αλήθεια είναι ότι για επαγγελματική χρήση, ο BTCPay Server καλό είναι να βρίσκεται σε VPS. Αν όμως βρισκόσαστε σε διερευνητικό στάδιο, τότε μπορείτε να μείνετε σε self hosted περιβάλλον και να βγάλετε το instance σας στον έξω κόσμο μέσω της τεχνικής του reverse SSH tunneling.

Σχεδιάζετε να εγκαταστήσετε τον BTCPay Server; Ενδιαφερόσαστε μόνο για πειραματισμό ή εξετάζετε και (ημι)επαγγελματικά σενάρια; Χρησιμοποιήστε κάποιο από τα κανάλια επικοινωνίας και πείτε μου. Θα χαρώ να μάθω, περισσότερο κι αν μπορέσω να βοηθήσω σε κάτι.