A while ago I setup a BTCPay Server so that Kea Sigma Delta could accept payments in bitcoin (and others). If you're considering doing the same then this post is for you. Let's have a look at what it's like to set up a server...

In brief: if you only want to accept Bitcoin, then setup is pretty easy. Simply follow the instructions on BTCPay's website. The trouble starts when you want to support other cryptocurrencies (e.g., Litecoin), or use Bitcoin's Lightning Network.

Bitcoin setup is easy because that's the BTCPay core team's focus (the clue is in the name "BTCPay"). They've been gracious enough to have a plugin system for other currencies, but those are written by third-parties. The quality of those plugins (and the support given) varies.

Physical Hardware vs Rented Server (in the Cloud)

I opted to install the server on my own hardware: a Raspberry Pi 4. However, that might not be the best option for you. For starters, buying your own hardware is a large up-front cost. You'll need a big hard drive (1TB+), and want a UPS to keep your server (and internet connection) running at all times. And after that, YOU are responsible for fixing any problems and maintaining the server.

If you really do want to run BTCPay on your own physical hardware, then I recommend using an old x64 laptop/desktop if you have one. X64 is the most supported platform. Docker files for ARM processors  weren't available for Litecoin and Monero installed on the Raspberry Pi 4, so I had to write them myself.

Installing "Altcoins"

As I said earlier, the core BTCPay team are focused on Bitcoin, and other cryptocurrencies such as Litecoin & Monero are written by third-parties. The quality varies, and those who originally wrote the plugin may or may not have stuck around to maintain it. Neither of the two "altcoins" I wanted could install on an ARM64 machine due to the aforementioned missing docker containers. The only reason they were missing, was because nobody had bothered to adapt the x64 docker files to ARM.

The Litecoin plugin is well integrated, except for a more manual process to setup the hardware wallet. Monero was rather more clunky. Its UI is different and confusing, and the setup process is rather messy.

The Bitcoin Lightning Network

Bitcoin is a victim of its own success. Transaction fees have risen as more and more people use Bitcoin. They're now so high that small transactions just don't make sense any more.

Enter the Lightning Network (LN). It allows fast transactions at a fraction of the cost. Perfect for smaller payments. Sounds great, right? Well, it is, if you're buying. LN has become very easy to use for buyers. Install an LN capable wallet, load in money, and you're ready to buy.

Things get complicated if you're selling something. First you need get over the big red warnings that LN is still experimental and you could lose money.** Then you need to choose the LN node software to use. I chose c-lightning mainly because I needed to choose one out of three.

Once you've got the lightning node set up, you need "inbound capacity" in order for someone to pay you. The LN is a network of channels, each with a fixed amount of Bitcoin in them. Those coins can move from one end to the other. So, to accept a payment, you need channels connecting to your node with money at the other end. In fact, there needs to be a set of channels between you and the buyer, all of which can allow cash to flow to you.

Sounds complicated? Brace yourself, because it's going to get worse. To get incoming channels, others need to open channels to your node. How, you may ask? Well, the most likely suggestions are:

  • Buy something from someone else over the LN
  • You connect to my node, and I'll connect back to you for an equal amount. But, only if you put $2000 or more in; anything smaller isn't worth it for me
  • Rent inbound capacity. Pay a fee to an LN node operator, who will agree to open a channel to you, and leave it open for minimum X days
  • Ask a friend with a "well connected" LN to connect to you

With the exception of the last item, all of them require you to put money into the system first. The whole thing feels a bit "money grabby." To be fair, some people have put a lot of money into the LN, and it's understandable that they want to see a return on that investment via transaction fees. Otherwise, they'd be better off investing that money elsewhere (e.g., stocks/bonds). Nevertheless, it does create a barrier to entry. Even if you have the money, you still need to choose "good well connected nodes" to open channels with. This is a far cry from Bitcoin itself, where you can create a new wallet and start receiving payments right away.

I hope that the Lightning Network developers will solve this problem, and make the LN as easy to set up for both buyers and merchants. In the meantime, if you want or need the Bitcoin LN, then you'll just have to suck it up and do the work to get inbound capacity.

Consider waiting until you're making enough sales through regular payment methods (credit card, bank transfer, cash) before setting up the Lightning Network.

Conclusion

BTCPay Server can be easy to setup, if all you want is to accept Bitcoin payments. Altcoin support is of variable quality, and is most easily installed on machines with an x64 CPU. The Bitcoin Lightning Network is essential if you're selling lower cost items, due to Bitcoin's rising fees. However, getting "inbound capacity" so you can receive payments is currently rather complicated and potentially expensive.