Launch BTCPay Server via web-interface and deploy Full Bitcoin Node + LND…

… in less than a minute, for less than $10/month

BTCPay Server
6 min readOct 2, 2018

You can deploy a self-hosted BTCPay Server (Full Bitcoin Node + Lightning Network LND) from a cheap, straightforward and customizable web-interface in just a few clicks. This is a joint effort of BTCPay community and LunaNode. You can now print BTCPay faster than fiat. The installation is as easy as installing FIFA19 on your PC.

We could end the announcement now. Head over to the deployment wizard and launch your first BTCPay. No further instructions needed. Just create LunaNode account and copy/paste the API.

However, BitcoinShirt loves drama and announcements, so here’s the full story.

Ever since I began using BTCPay back in February 2018, as a non-techie, I found the installation process a bit intimidating. I’m a quick learner, but the fact that as a merchant I had to use the terminal and command line (even if it’s a simple copy-paste tutorial) was not a good user experience.

From the beginning, BTCPay Server had sort of a 1-click deployment with Microsoft Azure. The Azure VPS is expensive. The UI is cluttered and overwhelming.

I’ve spent a fair amount of time on Reddit trying to explain to merchants why BTCPay matters and the importance of self-sovereignty, privacy and censorship-resistance it introduced. The only argument I couldn’t argue in those fierce discussions on late-night Reddit sessions is that BTCPay was indeed harder to set up and took more time compared to custodial options.

From day one, the entire BTCPay community and developers knew this was a problem which we must solve. Let’s find a way to deploy the self-hosted payment processor easy and cheap!

The journey of finding the cheapest a most straightforward installation method began a few months ago. We researched and tried various options recommended to us on social media. Unfortunately, we always bumped into obstacles. Either the hosting provider was expensive, did not accept Bitcoin, or didn’t have Docker support. The enthusiasm started to fade away that we’ll find a hosting provider that meets all of the requirements.

Luckily, Francis Pouliot suggested LunaNode — a hosting provider that accepts Bitcoin payments, does not have KYC, has reasonable prices and meets all the technical requirements. It sounded like a perfect solution, so Nicolas gave it a try and it worked. He then created the installation article which I later used in my video guide. The process of manually deploying BTCPay on LunaNode, although well-documented on our end, was far from effortless deployments we wanted to have.

We knew there’s more we can do to strip the complexity and bring BTCPay closer to an average Joe. The solution was not on the horizon until one evening RockstarDev created the #lunanode Slack channel.

“I called LunaNode, and one of their guys will join us shortly. Be polite”- he said. I was surprised. It felt a bit corporate. “Should I wear a tie” I wanted to exclaim but decided not to.

A few hours later a guy name Favyen joined the channel. Little did I know at that moment that Favyen is a magician. He, like all of the guys in the Slack channel (except for myself), has some mad skills. To my surprise, the company was very open-minded to our suggestions and ideas.

All of a sudden, Nicolas, RockstarDev and Kukks decided to throw me into the fire and “assigned” me with a task to help Favyen. For someone with no developer background, I was a bit hesitant. Nah. I wasn’t hesitant; I was freaking out. I had no idea what to do, but I wanted BTCPay to be available to the masses badly, so I had to fake it. I acted like this was a walk in the park for me. I drafted a few sketches and we had a really good start.

One of the early UI suggestions

I can’t stress enough how hard Favyen worked on the project. I am thankful how patient he was with me and my lack of server architecture and back-end understanding. Our mission was clear — it has to work out of the box, be super-easy, customizable and cheap. Nicolas, Kukks and RockstarDev helped with few impressive commits and made our life much more comfortable.

During the process, Favyen and I deployed over 40 test servers and tested various implementations, cutting off the unnecessary stuff and ironing the minor bugs along the way. Plenty of servers were hurt and trashed during the trial and error process.

We wanted to leave a bit of space for additional customization. Favyen added the ability to add SSH keys for security (optional) and the ability to select the repository, branch from which you want to install BTCPay.

These features are optional. Newbie has all the recommended settings pre-selected, so he only has to click “Continue” three times and — boom the server is online.

The Deployment Wizard allows anyone to deploy BTCPay Server in less than a minute.

That’s everything you have to do, no more terminal, command lines and reading guides. Of course, for advanced users, there are plenty of ways in which you can deploy BTCPay Server.

Let’s now quickly go through the steps.

Before you begin

Before you begin, make sure to create your LunaNode account and fill it with some credits. They accept Bitcoin. If you want step by step tutorial how to create account and add credits, see this article I wrote.

Log in into your LunaNode, go to API page and create a new API.

Create your account with LunaNode and add some credits to it

Deploying BTCPay Server

Video below walks you through the setup and explains all of the options you can customize.

The interface is so easy and self-explanatory. All of the features are pre-selected. That’s why I don’t think you need the step by step guidance, but just in case you do:

  1. Go to BTCPay Server launcher on LunaNode
  2. Paste your API key and API ID.
  3. Click Continue
  4. Use generated LunaNode domain or use your own (see this guide for using your domain)
  5. Click Continue
  6. Customize BTCPay according to your needs (add SSH key, SSL e-mail, altcoins, Lightning Network implementation, etc.). Note: If you’re using more than two altcoins, go with a better hosting plan.
  7. Launch BTCPay
  8. Wait for 5 minutes for the server to deploy. Be patient.
  9. Go to your domain.

Now you have to wait for BTCPay to sync. The speed of sync depends on the hosting plan you used and the number of coins you’ve added. For the cheapest 8.8$ USD. For BTC + LND it takes around 2–4 days to sync on the M2 plan fully. If you want your node to synchronize faster — select a higher-priced plan.

Making BTCPay easy to install is the first step towards getting more people to use it. We need more tutorials, more people, more translations, more documentation, and ultimately better UI and UX, which can be done only when we’re finished with adding features. And oh boy, the features that are coming, but let’s leave that for another article.

Here is a fun video comparing the number of steps and complexity we stripped with this new web-interface. The old way had to be speed up 15 times.

An Open Invitation to hosting providers

To prevent a single point of failure, I would like to invite other hosting providers to follow LunaNode’s example and provide easy 1-click deployment for BTCPay Server. If you’re a hosting provider, feel free to join us on Slack to see how we can make BTCPay more accessible to end-users.

Once again, I would like to thank LunaNode and Favyen for amazing efforts and accomplishment.