Install SSL/HTTPS certificate

Installing the NGINX reverse proxy with an SSL certificate for Umbrel / BTCPay Server

Prerequisites

  • A fully installed Umbrel node;

  • The BTCPayServer app is enabled;

  • You have a domain name configured for your website.

  • For this manual, I will use the following values for examples;

  • The home IP is 100.100.100.100;

  • The internal IP (of Umbrel) is 10.10.10.10;

  • The domain name is buidlbuidl.com;

  • The desired domain for BTCPay Server is pay.buidlbuidl.com.

Step 1: Pointing the domain name to your home IP address

Navigate to the control panel your domain owner offers. You should edit its DNS zone and add a new record:

DNS zone editor

Step 2: Verifying the DNS change from step 1

You can use this online tool to check if the DNS update has propagated throughout the internet.

Step 3: Adding a port forwarding to your local router

To accept payments and issue an SSL certificate to your domain, your Umbrel should be partially reachable from the internet. Therefore, we need to open up specific ports on your internet router. The specifics depend on the make and model of your internet router.

First, you need to find out what the internal IP address is of your Umbrel node using SSH.

In this case, 10.10.10.10 is the internal IP address.

Next, create two port forwardings in your internet router. The router in this illustration uses a mobile app;

Screenshot of (example) the router management interface

You need the following port forwardings:

  • Name: BTCPay NGINX HTTP IP address: 10.10.10.10 Source port: 80 Destination port: 15080 Protocol: TCP

  • Name: BTCPay NGINX HTTPS IP address: 10.10.10.10 Source port: 443 Destination port: 15443 Protocol: TCP

If you have multiple routers behind eachother (NAT-connection) you will have to open ports on both the routers. Follow the steps below only if this involves your situation.

Step 4: Installing NGINX & Certbot

Before installing, update your package repository list.

Then, install the required components.

The installation will fail; this is expected behavior. It is happening because Umbrel is already claiming port 80. Therefore, we need to change this in the configuration and finish the installation.

Then, finish the installation.

After this, you should see a running NGINX welcome page on http://10.10.10.10:15080/

Step 5: Creating the BTCPay Server configuration for NGINX

Create a new configuration file:

Paste in the following contents:

Save the file (CTRL+O) and exit the editor (CTRL+X).

Then, enable the configuration:

Test the validity of the configuration using:

Then, reload the configuration.

Step 6: Request a new SSL certificate from LetsEncrypt

Request a new certificate from LetsEncrypt.

Note: Make sure to replace [email protected] and pay.buidlbuidl.com with your own email address and domain.

When Certbot asks you about redirecting, choose 1: No redirect.

Step 7: Manually add the HTTP-redirect

Open up the configuration file again:

Then, at the end of the file, add this server block:

Then, validate & reload the configuration:

Your BTCPay Server should now be accessible using SSL at: https://pay.buidlbuidl.com/.

The Pay Button

BTCPay Server will now intelligently use the requesting domain and protocol to generate the example code, and you're off to accepting payments on your website.

Screenshot of the BTCPay Server widget

Last updated

Was this helpful?