From 9fc255890acace336fcd6874d5a02c157138fdb8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 12 Oct 2023 12:40:58 +0000 Subject: [PATCH] deploy: 39688c32d49e0ca402570175bd63daefa3823059 --- 404.html | 6 +++--- AdvancedForms/index.html | 4 ++-- Apps/index.html | 4 ++-- BTCPayServer/LocalDevSetup/index.html | 4 ++-- BTCPayServer/Security/index.html | 4 ++-- BTCPayServer/db-migration/index.html | 4 ++-- BTCPayServer/greenfield-authorization/index.html | 4 ++-- BTCPayServer/greenfield-development/index.html | 4 ++-- BTCPayVsOthers/index.html | 4 ++-- ColdCardWallet/index.html | 4 ++-- Community/index.html | 4 ++-- Configurator/index.html | 4 ++-- Contribute/Design/index.html | 4 ++-- Contribute/Dev/index.html | 4 ++-- Contribute/DevCode/index.html | 4 ++-- Contribute/DevTest/index.html | 4 ++-- Contribute/Misc/index.html | 4 ++-- Contribute/Translate/index.html | 4 ++-- Contribute/Write/index.html | 4 ++-- Contribute/WriteBlog/index.html | 4 ++-- Contribute/WriteDocs/index.html | 4 ++-- Contribute/WriteSoftware/index.html | 4 ++-- Contribute/index.html | 4 ++-- CreateStore/index.html | 4 ++-- CreateWallet/index.html | 4 ++-- CustomIntegration/index.html | 4 ++-- Dashboard/index.html | 4 ++-- Deployment/Azure/index.html | 4 ++-- Deployment/AzurePennyPinching/index.html | 4 ++-- Deployment/Clovyr/index.html | 4 ++-- Deployment/DreamlabNetwork/index.html | 4 ++-- Deployment/DynamicDNS/index.html | 4 ++-- Deployment/GoogleCloud/index.html | 4 ++-- Deployment/Hack0/index.html | 4 ++-- Deployment/Hardware/index.html | 4 ++-- Deployment/HardwareAsAService/index.html | 4 ++-- Deployment/LightningInABox/index.html | 4 ++-- Deployment/LunaNode/index.html | 4 ++-- Deployment/ManualDeployment/index.html | 4 ++-- Deployment/ManualDeploymentExtended/index.html | 4 ++-- Deployment/RaspberryPi4/index.html | 4 ++-- Deployment/ReverseProxyToTor/index.html | 4 ++-- Deployment/ReverseSSHtunnel/index.html | 4 ++-- Deployment/ThirdPartyHosting/index.html | 4 ++-- Deployment/index.html | 4 ++-- Deployment/voltagecloud/index.html | 4 ++-- Deployment/webdeployment/index.html | 4 ++-- Development/Altcoins/index.html | 4 ++-- Development/GreenFieldExample-NodeJS/index.html | 4 ++-- Development/GreenFieldExample/index.html | 4 ++-- Development/GreenfieldExample-PHP/index.html | 4 ++-- Development/InvoiceMetadata/index.html | 4 ++-- Development/LocalDev/index.html | 4 ++-- Development/LocalDevelopment/index.html | 4 ++-- Development/Plugins/index.html | 4 ++-- Development/TestnetDemo/index.html | 4 ++-- Development/Theme/index.html | 4 ++-- Development/index.html | 4 ++-- Docker/backup-restore/index.html | 4 ++-- Docker/chatwoot/index.html | 4 ++-- Docker/cloudflare-tunnel/index.html | 4 ++-- Docker/fastsync/index.html | 4 ++-- Docker/fireflyiii/index.html | 4 ++-- Docker/index.html | 6 +++--- Docker/joinmarket/index.html | 4 ++-- Docker/lightning-terminal/index.html | 4 ++-- Docker/ndlc/index.html | 4 ++-- Docker/pihole/index.html | 4 ++-- Docker/tallycoin-connect/index.html | 4 ++-- Drupal/index.html | 4 ++-- ElectrumPersonalServer/index.html | 4 ++-- ElectrumWallet/index.html | 4 ++-- ElectrumX/index.html | 4 ++-- FAQ/Altcoin/index.html | 4 ++-- FAQ/Apps/index.html | 4 ++-- FAQ/Deployment/index.html | 4 ++-- FAQ/General/index.html | 6 +++--- FAQ/Integrations/index.html | 4 ++-- FAQ/LightningNetwork/index.html | 4 ++-- FAQ/ServerSettings/index.html | 4 ++-- FAQ/Stores/index.html | 4 ++-- FAQ/Synchronization/index.html | 4 ++-- FAQ/Wallet/index.html | 4 ++-- FAQ/index.html | 4 ++-- Forms/index.html | 4 ++-- Guide/index.html | 4 ++-- HardwareWalletIntegration/index.html | 4 ++-- Invoices/index.html | 4 ++-- LNDhubAPI/index.html | 4 ++-- LNbank/LNDhub/index.html | 4 ++-- LNbank/Troubleshooting/index.html | 4 ++-- LNbank/index.html | 4 ++-- LedgerWallet/index.html | 4 ++-- LightningNetwork/index.html | 4 ++-- LightningNetwork_PaymentChannels/index.html | 4 ++-- Magento/index.html | 4 ++-- NBXplorer/API/index.html | 4 ++-- NBXplorer/Postgres-Migration/index.html | 4 ++-- NBXplorer/Postgres-Schema/index.html | 4 ++-- NBXplorer/index.html | 4 ++-- Nostr/index.html | 4 ++-- Notifications/index.html | 4 ++-- OpenCart/index.html | 4 ++-- Payjoin/index.html | 4 ++-- PaymentRequests/index.html | 4 ++-- Payouts/index.html | 4 ++-- PodServer/index.html | 4 ++-- PrestaShop/index.html | 4 ++-- PullPayments/index.html | 4 ++-- Refund/index.html | 4 ++-- RegisterAccount/index.html | 4 ++-- Reporting/index.html | 4 ++-- Shopify/index.html | 4 ++-- Shopware/index.html | 4 ++-- Support/index.html | 4 ++-- TicketTailor/index.html | 4 ++-- Transmuter/DCA/index.html | 4 ++-- Transmuter/EmailReceiptsPreset/index.html | 4 ++-- Transmuter/index.html | 4 ++-- Trocador/index.html | 4 ++-- Troubleshooting/index.html | 4 ++-- TryItOut/index.html | 4 ++-- UseCase/index.html | 4 ++-- Vault/HowToVerify/index.html | 4 ++-- VirtueMart/index.html | 4 ++-- Wabisabi/index.html | 4 ++-- Walkthrough/index.html | 4 ++-- Wallet/index.html | 4 ++-- WalletSetup/index.html | 4 ++-- WasabiWallet/index.html | 4 ++-- WhatsNext/index.html | 4 ++-- WooCommerce/index.html | 4 ++-- Zapier/index.html | 4 ++-- assets/js/{110.c8bc34a8.js => 110.3c2e39b6.js} | 2 +- assets/js/{114.e6350514.js => 114.5a5fa1ee.js} | 2 +- assets/js/{115.13d34b8a.js => 115.0846b610.js} | 2 +- assets/js/133.3dce1eef.js | 1 - assets/js/133.55d129fe.js | 1 + assets/js/{19.5033c916.js => 19.31958e97.js} | 2 +- assets/js/{20.dc9f3027.js => 20.b7cc46dc.js} | 2 +- assets/js/{21.48da6b29.js => 21.148cbf1b.js} | 2 +- assets/js/{25.3e0686cc.js => 25.2396ab27.js} | 2 +- assets/js/44.612d82fd.js | 1 - assets/js/44.8f0c4bbf.js | 1 + assets/js/{52.14d9e6bd.js => 52.6c2c5b0d.js} | 2 +- assets/js/{60.9e9ca465.js => 60.ff0b404c.js} | 2 +- assets/js/{67.a079740e.js => 67.892f599e.js} | 2 +- assets/js/{90.65a52573.js => 90.85851442.js} | 2 +- assets/js/{93.df96d58e.js => 93.854fcc6f.js} | 2 +- assets/js/{94.74773ec5.js => 94.c2a6523f.js} | 2 +- assets/js/{95.e112a9a1.js => 95.ab566da2.js} | 2 +- assets/js/{app.1ece7624.js => app.04daa845.js} | 4 ++-- index.html | 6 +++--- sitemap.xml | 2 +- 154 files changed, 291 insertions(+), 291 deletions(-) rename assets/js/{110.c8bc34a8.js => 110.3c2e39b6.js} (99%) rename assets/js/{114.e6350514.js => 114.5a5fa1ee.js} (99%) rename assets/js/{115.13d34b8a.js => 115.0846b610.js} (97%) delete mode 100644 assets/js/133.3dce1eef.js create mode 100644 assets/js/133.55d129fe.js rename assets/js/{19.5033c916.js => 19.31958e97.js} (76%) rename assets/js/{20.dc9f3027.js => 20.b7cc46dc.js} (75%) rename assets/js/{21.48da6b29.js => 21.148cbf1b.js} (90%) rename assets/js/{25.3e0686cc.js => 25.2396ab27.js} (90%) delete mode 100644 assets/js/44.612d82fd.js create mode 100644 assets/js/44.8f0c4bbf.js rename assets/js/{52.14d9e6bd.js => 52.6c2c5b0d.js} (96%) rename assets/js/{60.9e9ca465.js => 60.ff0b404c.js} (91%) rename assets/js/{67.a079740e.js => 67.892f599e.js} (96%) rename assets/js/{90.65a52573.js => 90.85851442.js} (99%) rename assets/js/{93.df96d58e.js => 93.854fcc6f.js} (98%) rename assets/js/{94.74773ec5.js => 94.c2a6523f.js} (99%) rename assets/js/{95.e112a9a1.js => 95.ab566da2.js} (99%) rename assets/js/{app.1ece7624.js => app.04daa845.js} (94%) diff --git a/404.html b/404.html index 14c37e49fd..20f12cfdd1 100644 --- a/404.html +++ b/404.html @@ -9,13 +9,13 @@ - + -

404

There's nothing here.
+ - + diff --git a/AdvancedForms/index.html b/AdvancedForms/index.html index 68b3df8ee1..24868e03ae 100644 --- a/AdvancedForms/index.html +++ b/AdvancedForms/index.html @@ -9,7 +9,7 @@ - + @@ -151,6 +151,6 @@ →

- + diff --git a/Apps/index.html b/Apps/index.html index b728d77b75..3baa869afb 100644 --- a/Apps/index.html +++ b/Apps/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

- + diff --git a/BTCPayServer/LocalDevSetup/index.html b/BTCPayServer/LocalDevSetup/index.html index 3a613ce77e..ef976996fc 100644 --- a/BTCPayServer/LocalDevSetup/index.html +++ b/BTCPayServer/LocalDevSetup/index.html @@ -9,7 +9,7 @@ - + @@ -72,6 +72,6 @@ type=lnd-rest;server=https://127.0.0.1:8084/;macaroonfilepath="local path to admin.macaroon on your computer, without these quotes";allowinsecure=true

Now you can create a lightning invoice on BTCPay Server regtest and make a payment through Polar.

PLEASE NOTE: You may get an exception break in Visual Studio. You must quickly click "Continue" in VS so the invoice is generated. Or, uncheck the box that says, "Break when this exception type is thrown".

# FAQ

# docker-compose up dev failed or tests are not passing, what should I do?

  1. Run docker-compose down --volumes (this will reset your test environment)
  2. Run docker-compose pull (this will ensure you have the latest images)
  3. Run again with docker-compose up dev

# How to run the Altcoin environment?

docker-compose -f docker-compose.altcoins.yml up dev

If you still have issues, try to restart docker.

# How to run the Selenium test with a browser?

Run dotnet user-secrets set RunSeleniumInBrowser true to run tests in browser.

To switch back to headless mode (recommended) you can run dotnet user-secrets remove RunSeleniumInBrowser.

# Session not created: This version of ChromeDriver only supports Chrome version 88

When you run tests for selenium, you may end up with this error. This happen when we update the selenium packages on BTCPay Server while you did not update your chrome version.

If you want to use a older chrome driver on this page (opens new window) then point to it with

dotnet user-secrets set ChromeDriverDirectory "path/to/the/driver/directory"

- + diff --git a/BTCPayServer/Security/index.html b/BTCPayServer/Security/index.html index 8128d9c3a2..663e546e47 100644 --- a/BTCPayServer/Security/index.html +++ b/BTCPayServer/Security/index.html @@ -9,7 +9,7 @@ - + @@ -89,6 +89,6 @@ →

- + diff --git a/BTCPayServer/db-migration/index.html b/BTCPayServer/db-migration/index.html index 51cbf44fa8..e1139c37cb 100644 --- a/BTCPayServer/db-migration/index.html +++ b/BTCPayServer/db-migration/index.html @@ -9,7 +9,7 @@ - + @@ -58,6 +58,6 @@ GitHub (opens new window)

# Migration from SQLite and MySQL to Postgres

# Introduction

This document is intended for BTCPay Server integrators such as Raspiblitz, Umbrel, Embassy OS or anybody running BTCPay Server on SQLite or MySql.

If you are a user of an integrated solution, please contact the integrator directly and provide them with the link to this document.

BTCPay Server has for long time supported three different backends:

  1. Postgres
  2. SQLite
  3. MySql

While most of our users are using the Postgres backend, maintaining supports for all those databases has been very challenging, and Postgres is the only one part of our test suite.

As a result, we regret to inform you that we decided to stop the support of MySql and SQLite.

We understand that dropping support might be painful for users and integrators of our product, and we will do our best to provide a migration path.

Please keep us informed if you experience any issues while migrating on our community chat (opens new window).

# Procedure

In order to successfully migrate, you will need to run BTCPay Server 1.7.8 or newer.

As a reminder there are three settings controlling the choice of backend of BTCPay Server which can be controller by command line, environment variable or configuration settings.

Command line argument Environment variable
--postgres BTCPAY_POSTGRES="..."
--mysql BTCPAY_MYSQL="..."
--sqlitefile BTCPAY_SQLITEFILE="blah.db"

If you are currently using mysql or sqlitefile, and you wish to migrate to postgres, you simply need to add the command line argument --postgres or the environment variable BTCPAY_POSTGRES pointing to a fresh postgres database.

It is strongly advised not to create a database in Postgres before performing the migration with BTCPay Server. This is because BTCPay Server will automatically create the necessary database for you. However, if you must create the database manually, please ensure that the C_TYPE and COLLATE settings are both set to C.

Careful: Do not remove the former mysql or sqlitefile setting, you should have both: the postgres setting and the former sqlite/mysql setting

From 1.7.8, BTCPay Server will interprete this and attempt to copy the data from mysql and sqlite into the new postgres database.

Note that once the migration is complete, the old mysql and sqlite settings will simply be ignored.

If the migration fails, you can revert the postgres setting you added, so the next restart will run on the old unsupported database. You can retry a migration by adding the postgres setting again.

# Known issues

  • The migration script isn't very optimized, and will attempt to load every table in memory. If your sqlite or mysql database is too big, you may experience an Out Of Memory issue. If that happen to you, please contact us.
  • There are no migration for plugin's data.
- + diff --git a/BTCPayServer/greenfield-authorization/index.html b/BTCPayServer/greenfield-authorization/index.html index a2bdecf313..423d7289a8 100644 --- a/BTCPayServer/greenfield-authorization/index.html +++ b/BTCPayServer/greenfield-authorization/index.html @@ -9,7 +9,7 @@ - + @@ -68,6 +68,6 @@ →

- + diff --git a/BTCPayServer/greenfield-development/index.html b/BTCPayServer/greenfield-development/index.html index f6e1d0d522..3dbf61474b 100644 --- a/BTCPayServer/greenfield-development/index.html +++ b/BTCPayServer/greenfield-development/index.html @@ -9,7 +9,7 @@ - + @@ -78,6 +78,6 @@ →

- + diff --git a/BTCPayVsOthers/index.html b/BTCPayVsOthers/index.html index c773125ca4..599480129b 100644 --- a/BTCPayVsOthers/index.html +++ b/BTCPayVsOthers/index.html @@ -9,7 +9,7 @@ - + @@ -69,6 +69,6 @@ →

- + diff --git a/ColdCardWallet/index.html b/ColdCardWallet/index.html index 350498c4b8..fbfd49729b 100644 --- a/ColdCardWallet/index.html +++ b/ColdCardWallet/index.html @@ -9,7 +9,7 @@ - + @@ -58,6 +58,6 @@ GitHub (opens new window)

# Connecting Coldcard Wallet to BTCPay Server

This document shows how to use a Coldcard Wallet with your BTCPay Server.

# Coldcard Wallet Setup

This guide assumes, you have a Coldcard wallet set up. To configure the Coldcard, please see the quick setup guide on manufacturer's website (opens new window).

# Quick Setup

  1. Insert the MicroSD card into the Coldcard wallet.
  2. Go to Advanced > MicroSD Card > Electrum Wallet > Native-Segwit
  3. Insert the MicroSD card back into your PC
  4. In BTCPay Server, Stores > Settings > Setup > Connect an existing wallet > Import wallet file
  5. Choose File > select the wallet file earlier exported from Coldcard.
  6. Click Continue
  7. Confirm the addresses match the ones shown in your BTCPay Server.

The Coldcard is now connected to your BTCPay Server. Payments go directly to Coldcard. The video below shows how to connect your BTCPay store to your Coldcard.

# Spending from BTCPay Server wallet with Coldcard (PSBT)

Once there are some funds in received to your BTCPay Wallet connected to Coldcard, you can spend them by using PSBT (opens new window) (Partially Signed Bitcoin Transactions). This allows completely offline signing of your transactions, without ever having to connect your hardware wallet to the internet.

  1. Wallets > Manage > Send
  2. Fill in destination address and the amount
  3. Click on the Sign with a wallet supporting PSBT button.
  4. You will be redirected to PSBT tab, with pre-filled information, click on the Sign with a wallet supporting PSBT (save as file)
  5. Save the file onto MicroSD card
  6. Insert MicroSD into your Coldcard.
  7. In Coldcard, click on the Ready To Sign
  8. Review the transaction information, and click OK button to sign it.
  9. Transaction will be saved onto MicroSD.
  10. In BTCPay, go to PSBT tab of the wallet and upload the signed PSBT file.
  11. Click Decode
  12. Click Other Actions and select Review
  13. Review your transactions and click Broadcast to broadcast it on the network.

The video below shows how to connect your BTCPay store to your Coldcard.

- + diff --git a/Community/index.html b/Community/index.html index 1470ef069d..c7d5c0c6f8 100644 --- a/Community/index.html +++ b/Community/index.html @@ -9,7 +9,7 @@ - + @@ -62,6 +62,6 @@

- + diff --git a/Configurator/index.html b/Configurator/index.html index 3b65c5e5a4..52242c0822 100644 --- a/Configurator/index.html +++ b/Configurator/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

- + diff --git a/Contribute/Design/index.html b/Contribute/Design/index.html index 6a5b5fed7b..e5bb24e545 100644 --- a/Contribute/Design/index.html +++ b/Contribute/Design/index.html @@ -9,7 +9,7 @@ - + @@ -67,6 +67,6 @@ →

- + diff --git a/Contribute/Dev/index.html b/Contribute/Dev/index.html index ec06cdddda..0d9fde24f7 100644 --- a/Contribute/Dev/index.html +++ b/Contribute/Dev/index.html @@ -9,7 +9,7 @@ - + @@ -58,6 +58,6 @@ GitHub (opens new window)

# Coding BTCPay Server

# Why coding matters

By helping the project grow, become more mature, advanced and elaborate, coders working on BTCPay Server are a central component of the project.

If you have coding skills, be it writing or reviewing code, you can contribute to BTCPay Server.

# Where to start

If you're a developer looking to help, but you're not sure where to begin, check the good first issue label (opens new window), which contains small pieces of work that have been specifically flagged as being friendly to new contributors.

Contributors looking to do something a bit more challenging, before opening a pull request, please create an issue (opens new window) or join our community chat (opens new window) to get early feedback, discuss best ways to tackle the problem and to ensure there is no work duplication.

We are actively looking for developers who can take on and resolve GitHub issues and help with development. If you would like to help us, but need some guidance, the #dev channel on Mattermost (opens new window) is the place to ask questions.

# Setup Developer Environment

If you are interested in getting started as a developer or tester of the software behind BTCPay Server, check out the Setup Developer Environment guide that will walk you step by step through every software used in development with BTCPay such as Git, GitBash, Github, Docker, Visual Studio, Postgres, etc. If you have never coded before and you are looking to learn something new, start here.

# Local BTCPay Development

If you already have a developer environment setup you can start with the BTCPay specific Local Development documentation.

# Local BTCPay Testing

Once you have your development environment tools setup and your local BTCPay Server running, view the Local Testing guide. This shows you how to use BTCPay in regtest mode for use in development and for users who want to test new features before they are released.

# Requirements

Software requirements (ie. IDE) can also be found in local development.

# Videos

BTCPay Server development videos can be found here or on the BTCPayServer YouTube (opens new window) channel.

- + diff --git a/Contribute/DevCode/index.html b/Contribute/DevCode/index.html index fb018b38ce..9ff3e50a42 100644 --- a/Contribute/DevCode/index.html +++ b/Contribute/DevCode/index.html @@ -9,7 +9,7 @@ - + @@ -99,6 +99,6 @@ →

- + diff --git a/Contribute/DevTest/index.html b/Contribute/DevTest/index.html index 33c0e5e020..a4b7cf9102 100644 --- a/Contribute/DevTest/index.html +++ b/Contribute/DevTest/index.html @@ -9,7 +9,7 @@ - + @@ -73,6 +73,6 @@ →

- + diff --git a/Contribute/Misc/index.html b/Contribute/Misc/index.html index 413df65888..c0c5171ca0 100644 --- a/Contribute/Misc/index.html +++ b/Contribute/Misc/index.html @@ -9,7 +9,7 @@ - + @@ -64,6 +64,6 @@

- + diff --git a/Contribute/Translate/index.html b/Contribute/Translate/index.html index 17930fb8e1..f94ea6872a 100644 --- a/Contribute/Translate/index.html +++ b/Contribute/Translate/index.html @@ -9,7 +9,7 @@ - + @@ -77,6 +77,6 @@ →

- + diff --git a/Contribute/Write/index.html b/Contribute/Write/index.html index 6e5c1848f7..dfd93f590e 100644 --- a/Contribute/Write/index.html +++ b/Contribute/Write/index.html @@ -9,7 +9,7 @@ - + @@ -59,6 +59,6 @@ GitHub (opens new window)

# Documenting BTCPay Server

# Why documentation matters

Documentation is essential to give users of all skill levels concise and clear information about the software and how to use it. BTCPay server has many different use cases and as a result many different kinds of users seeking information from the documentation. Writers contributing to BTCPay Server are as important as any other contributor.

If you have technical knowledge in a certain area, want to help document new features or simply get involved in the BTCPay Server project, documentation is a great place to get started with contributing.

If you have writing skills or if you have a fair knowledge of the English language, then you can contribute to BTCPay Server or review the work of other contributors. Writing contributors can help in a number of places.

# BTCPay Documentation

Documentation work needing to be completed can be found in the open issues page (opens new window) on Github. For information on how to start a documentation task, see the documentation guide.

For documentation guidance or discussion of a new documentation idea, join the #documentation channel on Mattermost (opens new window).

# BTCPay Blog

Another great way to contribute is by writing content for the BTCPay blog. To get started on a blog topic, join the #content creation channel on Mattermost (opens new window).

# Requirements

In order to contribute to BTCPay Server as a writer there are some requirements.

Since most of the documentation done in BTCPay Server is submitted and reviewed through Github, you must have a Github account (opens new window). It's also on Github that you can contribute by reviewing the documentation work done by others (pull requests).

Important note: Contributions explained in this documentation are meant to be done in English only. If you wish to contribute in other languages, see Translations.

# Text Editor

It is recommended to have a Rich-Text editor.

Notepad++ (opens new window) is a decent software and easy to use for the newer contributors.

For more advanced users, Visual Studio Code (VS Code) (opens new window) is a good choice. The Markdown All In One extension in VS Code is also recommended, for visual comfort while editing and the ability to preview Markdown changes. This is helpful for the BTCPay documentation which is written primarily in Markdown.

These are only recommended: If you already use other similar software that you're accustomed to, you are free to continue using them.

# Version Control

To be able to manage your contributions (such as forking repositories, creating and working on branches, making pull requests and issues, etc.) it's recommended you have Github Desktop (opens new window). You can see the step by step guide to making a pull request using Github Desktop here.

- + diff --git a/Contribute/WriteBlog/index.html b/Contribute/WriteBlog/index.html index c0280a41ec..fd72baa5b5 100644 --- a/Contribute/WriteBlog/index.html +++ b/Contribute/WriteBlog/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

- + diff --git a/Contribute/WriteDocs/index.html b/Contribute/WriteDocs/index.html index 697b656046..2a2dff4579 100644 --- a/Contribute/WriteDocs/index.html +++ b/Contribute/WriteDocs/index.html @@ -9,7 +9,7 @@ - + @@ -68,6 +68,6 @@ →

- + diff --git a/Contribute/WriteSoftware/index.html b/Contribute/WriteSoftware/index.html index a039b76e4c..7784b405a3 100644 --- a/Contribute/WriteSoftware/index.html +++ b/Contribute/WriteSoftware/index.html @@ -9,7 +9,7 @@ - + @@ -70,6 +70,6 @@ →

- + diff --git a/Contribute/index.html b/Contribute/index.html index a3762ca2f4..a3c6dc4438 100644 --- a/Contribute/index.html +++ b/Contribute/index.html @@ -9,7 +9,7 @@ - + @@ -58,6 +58,6 @@ GitHub (opens new window)

# How to contribute to BTCPay Server?

BTCPay Server is built and maintained entirely by volunteer contributors around the internet.

We welcome, appreciate and encourage new contributions.

Depending on your skills and interest, you can help in a number of ways:

Every contribution is important and if you have any questions, feel free to consult our growing community.

- + diff --git a/CreateStore/index.html b/CreateStore/index.html index 1203b59b2a..2d9260a98c 100644 --- a/CreateStore/index.html +++ b/CreateStore/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

- + diff --git a/CreateWallet/index.html b/CreateWallet/index.html index 416e9c1b74..5300d15f95 100644 --- a/CreateWallet/index.html +++ b/CreateWallet/index.html @@ -9,7 +9,7 @@ - + @@ -67,6 +67,6 @@ →

- + diff --git a/CustomIntegration/index.html b/CustomIntegration/index.html index ef3118db93..ededb82797 100644 --- a/CustomIntegration/index.html +++ b/CustomIntegration/index.html @@ -9,7 +9,7 @@ - + @@ -92,6 +92,6 @@ →

- + diff --git a/Dashboard/index.html b/Dashboard/index.html index c420b34d1d..7d115be169 100644 --- a/Dashboard/index.html +++ b/Dashboard/index.html @@ -9,7 +9,7 @@ - + @@ -69,6 +69,6 @@ →

- + diff --git a/Deployment/Azure/index.html b/Deployment/Azure/index.html index 3dc7b7384f..85a050ba89 100644 --- a/Deployment/Azure/index.html +++ b/Deployment/Azure/index.html @@ -9,7 +9,7 @@ - + @@ -58,6 +58,6 @@ GitHub (opens new window)

# Azure Deployment

This setup is similar to the Docker Deployment, except that the docker-compose is hosted by Microsoft Azure.

# One-click setup

Start by clicking the following button:

Deploy to Azure (opens new window)

You can log into Azure (opens new window) with your Microsoft account.

Final installation steps:

Fill in the remaining options: Azure Resource Config

  • Click 'Purchase' to confirm
  • (Wait for Azure deployment)
  • Type ip into the search bar and select the first option, BTCPayServerPublicIP
  • Copy the hostname for your Azure deployment, under DNS name: Azure BTCPayServerPublicIP
  • Visit it (all major browsers supported)
  • Click 'Register' and create an account - This will be your admin account!
  • At your domain registrar, point your domain at this hostname (read more: How to change your BTCPay Server domain name)
  • Then, visit https://EXAMPLE.eastus.cloudapp.azure.com/server/maintenance
  • Enter your domain name and click 'Confirm'
  • (Wait 1-5 minutes)
  • Done! Visit https://EXAMPLE.MYSITE.com/stores to create your store and begin invoicing.

For advanced users, you can connect via SSH with the information on https://EXAMPLE.MYSITE.com/server/services/ssh, and:

  • Run docker ps and docker logs xxx to view running processes
  • Run btcpay-down.sh and btcpay-up.sh to stop and start the BTCPayServer

Approximate Cost (unpruned, Bitcoin-only, after Azure $200 free trial): 60 USD per month

After all your nodes have synced and you've confirmed everything works, follow this guide to fine-tune for savings; costs should drop to 30 or 40 USD per month.

Learn more: btcpayserver/btcpayserver-azure (opens new window)

- + diff --git a/Deployment/AzurePennyPinching/index.html b/Deployment/AzurePennyPinching/index.html index 6239cb50de..dff28a3dfc 100644 --- a/Deployment/AzurePennyPinching/index.html +++ b/Deployment/AzurePennyPinching/index.html @@ -9,7 +9,7 @@ - + @@ -92,6 +92,6 @@ →

- + diff --git a/Deployment/Clovyr/index.html b/Deployment/Clovyr/index.html index 4b4f5489a0..baf5fe556c 100644 --- a/Deployment/Clovyr/index.html +++ b/Deployment/Clovyr/index.html @@ -9,7 +9,7 @@ - + @@ -71,6 +71,6 @@ →

- + diff --git a/Deployment/DreamlabNetwork/index.html b/Deployment/DreamlabNetwork/index.html index 715e8b198f..286d0d058a 100644 --- a/Deployment/DreamlabNetwork/index.html +++ b/Deployment/DreamlabNetwork/index.html @@ -9,7 +9,7 @@ - + @@ -86,6 +86,6 @@ →

- + diff --git a/Deployment/DynamicDNS/index.html b/Deployment/DynamicDNS/index.html index bb25f412d4..8a4abc3355 100644 --- a/Deployment/DynamicDNS/index.html +++ b/Deployment/DynamicDNS/index.html @@ -9,7 +9,7 @@ - + @@ -71,6 +71,6 @@ →

- + diff --git a/Deployment/GoogleCloud/index.html b/Deployment/GoogleCloud/index.html index 751c54b77e..88ef613921 100644 --- a/Deployment/GoogleCloud/index.html +++ b/Deployment/GoogleCloud/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

- + diff --git a/Deployment/Hack0/index.html b/Deployment/Hack0/index.html index 60cacb5534..6da7b1fc6e 100644 --- a/Deployment/Hack0/index.html +++ b/Deployment/Hack0/index.html @@ -9,7 +9,7 @@ - + @@ -71,6 +71,6 @@ →

- + diff --git a/Deployment/Hardware/index.html b/Deployment/Hardware/index.html index e397ce5759..84b43ce991 100644 --- a/Deployment/Hardware/index.html +++ b/Deployment/Hardware/index.html @@ -9,7 +9,7 @@ - + @@ -58,6 +58,6 @@ GitHub (opens new window)

# Hardware Deployment

Hardware deployment is advised when you want to be in total control of your own infrastructure.

Those are very useful for personal use or for people who wants absolute control over their infrastructure.

The main downside of hardware deployment is that it requires some hardware investment, and higher learning curve. The availability of your server will also probably lower than using a VPS such as LunaNode, as you are more likely to suffer from internet down time or hardware failure.

If you are still not sure whether you need hardware deployment, please see our diagram.

While all hardware deployments are similar to one another, we document step by step the process on three different hardware settings.

You can easily adapt those documentation on the custom hardware you prefer, we support arm32, arm64 and amd64.

Note that those solutions are all based on our docker deployment system.

- + diff --git a/Deployment/HardwareAsAService/index.html b/Deployment/HardwareAsAService/index.html index bdf5f161b8..94b94be4dc 100644 --- a/Deployment/HardwareAsAService/index.html +++ b/Deployment/HardwareAsAService/index.html @@ -9,7 +9,7 @@ - + @@ -70,6 +70,6 @@ →

- + diff --git a/Deployment/LightningInABox/index.html b/Deployment/LightningInABox/index.html index 8d0e2f4ee7..4bbd9a25a9 100644 --- a/Deployment/LightningInABox/index.html +++ b/Deployment/LightningInABox/index.html @@ -9,7 +9,7 @@ - + @@ -87,6 +87,6 @@ →

- + diff --git a/Deployment/LunaNode/index.html b/Deployment/LunaNode/index.html index fb826a7f1c..9cf824e535 100644 --- a/Deployment/LunaNode/index.html +++ b/Deployment/LunaNode/index.html @@ -9,7 +9,7 @@ - + @@ -74,6 +74,6 @@ →

- + diff --git a/Deployment/ManualDeployment/index.html b/Deployment/ManualDeployment/index.html index 18cd97a71a..160ee73c94 100644 --- a/Deployment/ManualDeployment/index.html +++ b/Deployment/ManualDeployment/index.html @@ -9,7 +9,7 @@ - + @@ -112,6 +112,6 @@ →

- + diff --git a/Deployment/ManualDeploymentExtended/index.html b/Deployment/ManualDeploymentExtended/index.html index 3b6122b8a3..a0e456c0c2 100644 --- a/Deployment/ManualDeploymentExtended/index.html +++ b/Deployment/ManualDeploymentExtended/index.html @@ -9,7 +9,7 @@ - + @@ -732,6 +732,6 @@

- + diff --git a/Deployment/RaspberryPi4/index.html b/Deployment/RaspberryPi4/index.html index a1388a5dd1..7c81cc7d1d 100644 --- a/Deployment/RaspberryPi4/index.html +++ b/Deployment/RaspberryPi4/index.html @@ -9,7 +9,7 @@ - + @@ -166,6 +166,6 @@ →

- + diff --git a/Deployment/ReverseProxyToTor/index.html b/Deployment/ReverseProxyToTor/index.html index a35f616bbb..9e35a8e2c8 100644 --- a/Deployment/ReverseProxyToTor/index.html +++ b/Deployment/ReverseProxyToTor/index.html @@ -9,7 +9,7 @@ - + @@ -265,6 +265,6 @@ →

- + diff --git a/Deployment/ReverseSSHtunnel/index.html b/Deployment/ReverseSSHtunnel/index.html index 84c85ac87d..4bc6f5f445 100644 --- a/Deployment/ReverseSSHtunnel/index.html +++ b/Deployment/ReverseSSHtunnel/index.html @@ -9,7 +9,7 @@ - + @@ -109,6 +109,6 @@ →

- + diff --git a/Deployment/ThirdPartyHosting/index.html b/Deployment/ThirdPartyHosting/index.html index d600fe88a9..59e8fbe51f 100644 --- a/Deployment/ThirdPartyHosting/index.html +++ b/Deployment/ThirdPartyHosting/index.html @@ -9,7 +9,7 @@ - + @@ -68,6 +68,6 @@ →

- + diff --git a/Deployment/index.html b/Deployment/index.html index 49126e754c..5e0bd9ec46 100644 --- a/Deployment/index.html +++ b/Deployment/index.html @@ -9,7 +9,7 @@ - + @@ -62,6 +62,6 @@ →

- + diff --git a/Deployment/voltagecloud/index.html b/Deployment/voltagecloud/index.html index e7acf83700..0e6a257b6c 100644 --- a/Deployment/voltagecloud/index.html +++ b/Deployment/voltagecloud/index.html @@ -9,7 +9,7 @@ - + @@ -90,6 +90,6 @@ →

- + diff --git a/Deployment/webdeployment/index.html b/Deployment/webdeployment/index.html index c98d6b4842..26f45052d7 100644 --- a/Deployment/webdeployment/index.html +++ b/Deployment/webdeployment/index.html @@ -9,7 +9,7 @@ - + @@ -74,6 +74,6 @@ Found a deployment that is missing, and do you want it added or notified us? Join the community chat (opens new window) on Mattermost by downloading Mattermost app (opens new window), or on Telegram (opens new window) and tell us about it. You can also create an issue in the BTCPay server Documents on Github (opens new window).

- + diff --git a/Development/Altcoins/index.html b/Development/Altcoins/index.html index 98f43d9d2b..99e8a97d22 100644 --- a/Development/Altcoins/index.html +++ b/Development/Altcoins/index.html @@ -9,7 +9,7 @@ - + @@ -70,6 +70,6 @@ →

- + diff --git a/Development/GreenFieldExample-NodeJS/index.html b/Development/GreenFieldExample-NodeJS/index.html index f6fab9c500..aeb9a8e4a7 100644 --- a/Development/GreenFieldExample-NodeJS/index.html +++ b/Development/GreenFieldExample-NodeJS/index.html @@ -9,7 +9,7 @@ - + @@ -173,6 +173,6 @@ →

- + diff --git a/Development/GreenFieldExample/index.html b/Development/GreenFieldExample/index.html index b791827cec..35215898ce 100644 --- a/Development/GreenFieldExample/index.html +++ b/Development/GreenFieldExample/index.html @@ -9,7 +9,7 @@ - + @@ -112,6 +112,6 @@ →

- + diff --git a/Development/GreenfieldExample-PHP/index.html b/Development/GreenfieldExample-PHP/index.html index 43ceff2738..83137d0bf8 100644 --- a/Development/GreenfieldExample-PHP/index.html +++ b/Development/GreenfieldExample-PHP/index.html @@ -9,7 +9,7 @@ - + @@ -158,6 +158,6 @@ →

- + diff --git a/Development/InvoiceMetadata/index.html b/Development/InvoiceMetadata/index.html index c5d1ca6fd8..7c3524bc56 100644 --- a/Development/InvoiceMetadata/index.html +++ b/Development/InvoiceMetadata/index.html @@ -9,7 +9,7 @@ - + @@ -132,6 +132,6 @@ →

- + diff --git a/Development/LocalDev/index.html b/Development/LocalDev/index.html index 5c7372fbb8..1ac343fb88 100644 --- a/Development/LocalDev/index.html +++ b/Development/LocalDev/index.html @@ -9,7 +9,7 @@ - + @@ -77,6 +77,6 @@ dotnet test -c Altcoins-Debug

# HTTPS support for local development

Some browser security features may require that you use HTTPS to be properly tested.

In this case, use Bitcoin-HTTPS (or Altcoin-HTTPS) launch profile. This will create a self signed certificate for your development purpose.

However, your browser will not trust it, making it difficult to debug.

You can instruct your OS to trust this development time certificate by running:

dotnet dev-certs https --trust
 

# Videos

For more information check out these videos:

and these notes:

- + diff --git a/Development/LocalDevelopment/index.html b/Development/LocalDevelopment/index.html index 5159405ed3..7e3aa6a014 100644 --- a/Development/LocalDevelopment/index.html +++ b/Development/LocalDevelopment/index.html @@ -9,7 +9,7 @@ - + @@ -98,6 +98,6 @@ →

- + diff --git a/Development/Plugins/index.html b/Development/Plugins/index.html index 738363e37d..9188455649 100644 --- a/Development/Plugins/index.html +++ b/Development/Plugins/index.html @@ -9,7 +9,7 @@ - + @@ -236,6 +236,6 @@ →

- + diff --git a/Development/TestnetDemo/index.html b/Development/TestnetDemo/index.html index 566e1b2892..435b6c3c25 100644 --- a/Development/TestnetDemo/index.html +++ b/Development/TestnetDemo/index.html @@ -9,7 +9,7 @@ - + @@ -63,6 +63,6 @@

- + diff --git a/Development/Theme/index.html b/Development/Theme/index.html index 6e1de24182..286691d58c 100644 --- a/Development/Theme/index.html +++ b/Development/Theme/index.html @@ -9,7 +9,7 @@ - + @@ -2436,6 +2436,6 @@ →

- + diff --git a/Development/index.html b/Development/index.html index 80836a2b09..bbcb5b4bd3 100644 --- a/Development/index.html +++ b/Development/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

- + diff --git a/Docker/backup-restore/index.html b/Docker/backup-restore/index.html index d56d20fdf2..a0cd56140b 100644 --- a/Docker/backup-restore/index.html +++ b/Docker/backup-restore/index.html @@ -9,7 +9,7 @@ - + @@ -123,6 +123,6 @@ →

- + diff --git a/Docker/chatwoot/index.html b/Docker/chatwoot/index.html index 8982bf153b..73247e7422 100644 --- a/Docker/chatwoot/index.html +++ b/Docker/chatwoot/index.html @@ -9,7 +9,7 @@ - + @@ -69,6 +69,6 @@
  1. Wait for BTPay to be online and then create the database for chatwoot
docker exec -ti chatwoot sh -c "export DISABLE_DATABASE_ENVIRONMENT_CHECK=1 && bundle exec rails db:reset"
 
  1. Go to chatwoot website at https://chatwoot.xpayserver.com and set up.
- + diff --git a/Docker/cloudflare-tunnel/index.html b/Docker/cloudflare-tunnel/index.html index 623c62fb7b..ca88abd280 100644 --- a/Docker/cloudflare-tunnel/index.html +++ b/Docker/cloudflare-tunnel/index.html @@ -9,7 +9,7 @@ - + @@ -77,6 +77,6 @@ →

- + diff --git a/Docker/fastsync/index.html b/Docker/fastsync/index.html index cff33914f7..7d557758da 100644 --- a/Docker/fastsync/index.html +++ b/Docker/fastsync/index.html @@ -9,7 +9,7 @@ - + @@ -86,6 +86,6 @@ →

- + diff --git a/Docker/fireflyiii/index.html b/Docker/fireflyiii/index.html index 1a2e65d96e..36b1f244fe 100644 --- a/Docker/fireflyiii/index.html +++ b/Docker/fireflyiii/index.html @@ -9,7 +9,7 @@ - + @@ -71,6 +71,6 @@ →

- + diff --git a/Docker/index.html b/Docker/index.html index 4b94dd3786..990c85b850 100644 --- a/Docker/index.html +++ b/Docker/index.html @@ -9,7 +9,7 @@ - + @@ -142,7 +142,7 @@

Or on powershell:

cd docker-compose-generator
 $BTCPAYGEN_DOCKER_IMAGE="btcpayserver/docker-compose-generator:local"
 

Then run ./build.sh or . .\build.ps1. -This will generate your docker-compose in the Generated folder, which you can then run and test.

Note that BTCPayServer developers will not spend excessive time testing your image, so make sure it works.

# Support

Image Version x64 arm32v7 arm64v8 links
btcpayserver/docker-compose-generator latest ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/docker-compose 1.28.6 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/lightning v23.08 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
saubyk/c-lightning-rest 0.10.6 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
shahanafarooqui/rtl 0.14.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/lnd v0.16.4-beta-1 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/bitcoin 25.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/btcpayserver 1.11.6$<BTCPAY_BUILD_CONFIGURATION>? ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/monero 0.18.2.2-4 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
nicolasdorier/nbxplorer 2.3.66 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/letsencrypt-nginx-proxy-companion 1.12.2 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
nginx 1.23.3 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/docker-gen 0.7.8 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/btctransmuter 0.0.59 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/cloudflared 2023.7.3 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/btcpayserver-configurator 0.0.21 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/eps 0.2.2 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/joinmarket 0.9.5 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
nicolasdorier/ndlc-cli 1.0.1 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
pihole/pihole 2023.05.2 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/tor 0.4.7.10 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/woocommerce 3.1.0 ✔️ (opens new window) ️❌ ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/postgres 13.10 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
kamigawabul/btglnd latest ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
kamigawabul/docker-bitcoingold 0.15.2 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
acinq/eclair release-0.7.0 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
chekaz/docker-bitcoinplus 2.7.0 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
dalijolijo/docker-bitcore 0.90.9.10 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
btcpayserver/dash 19.2.0 ✔️ (opens new window) ️❌ ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/dogecoin 1.14.6 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
chekaz/docker-feathercoin 0.16.3 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
groestlcoin/lightning v23.05 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
groestlcoin/groestlcoin-lightning-charge version-0.4.22 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
groestlcoin/groestlcoin-spark version-0.2.16 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
groestlcoin/eclair v0.6.0 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
groestlcoin/lnd v0.10.0-grs ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
btcpayserver/groestlcoin 25.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/elements 22.1.1 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/litecoin 0.21.2.1-2 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
wakiyamap/docker-monacoin 0.20.2 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
redis 6.2.2-buster ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
bluewalletorganization/lndhub v1.4.1 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
jvandrew/btcqbo 0.3.36 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
shesek/bwt 0.2.2-electrum ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
chatwoot/chatwoot v1.7.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
lukechilds/electrumx latest ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
fireflyiii/core latest ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
podcastindexorg/podcasting20-helipad v0.1.10 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
jvandrew/librepatron 0.7.39 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
jvandrew/isso atron.22 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
lightninglabs/lightning-terminal v0.9.2-alpha-path-prefix ✔️ (opens new window) ️❌ ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
mempool/frontend v2.5.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
mempool/backend v2.5.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
mariadb 10.11 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
kukks/nnostr-relay v0.0.17 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
sphinxlightning/sphinx-relay v2.2.9 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
djbooth007/tallycoin_connect v1.8.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
talaia/python-teos latest ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
apotdevin/thunderhub base-v0.13.21 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
lncapital/torq 0.20.3 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
timescale/timescaledb latest-pg14 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
zammad/zammad-docker-compose zammad-postgresql-3.4.0-4 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
memcached 1.5.22-alpine ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
traefik v2.6 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
chekaz/docker-trezarcoin 0.13.0 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
romanornr/docker-viacoin 0.15.2 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)

# FAQ

# How can I modify my environment?

As root, run . btcpay-setup.sh; this will show you the environment variable it is expecting. +This will generate your docker-compose in the Generated folder, which you can then run and test.

Note that BTCPayServer developers will not spend excessive time testing your image, so make sure it works.

# Support

Image Version x64 arm32v7 arm64v8 links
btcpayserver/docker-compose-generator latest ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/docker-compose 1.28.6 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/lightning v23.08 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
saubyk/c-lightning-rest 0.10.6 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
shahanafarooqui/rtl 0.14.1 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/lnd v0.16.4-beta-1 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/bitcoin 25.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/btcpayserver 1.11.6$<BTCPAY_BUILD_CONFIGURATION>? ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/monero 0.18.2.2-4 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
nicolasdorier/nbxplorer 2.3.66 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/letsencrypt-nginx-proxy-companion 1.12.2 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
nginx 1.23.3 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/docker-gen 0.7.8 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/btctransmuter 0.0.59 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/cloudflared 2023.7.3 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/btcpayserver-configurator 0.0.21 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/eps 0.2.2 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/joinmarket 0.9.5 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
nicolasdorier/ndlc-cli 1.0.1 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
pihole/pihole 2023.05.2 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/tor 0.4.7.10 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/woocommerce 3.1.0 ✔️ (opens new window) ️❌ ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/postgres 13.10 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
kamigawabul/btglnd latest ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
kamigawabul/docker-bitcoingold 0.15.2 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
acinq/eclair release-0.7.0 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
chekaz/docker-bitcoinplus 2.7.0 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
dalijolijo/docker-bitcore 0.90.9.10 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
btcpayserver/dash 19.2.0 ✔️ (opens new window) ️❌ ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/dogecoin 1.14.6 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
chekaz/docker-feathercoin 0.16.3 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
groestlcoin/lightning v23.05 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
groestlcoin/groestlcoin-lightning-charge version-0.4.22 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
groestlcoin/groestlcoin-spark version-0.2.16 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
groestlcoin/eclair v0.6.0 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
groestlcoin/lnd v0.10.0-grs ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
btcpayserver/groestlcoin 25.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/elements 22.1.1 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
btcpayserver/litecoin 0.21.2.1-2 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
wakiyamap/docker-monacoin 0.20.2 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
redis 6.2.2-buster ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
bluewalletorganization/lndhub v1.4.1 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
jvandrew/btcqbo 0.3.36 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
shesek/bwt 0.2.2-electrum ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
chatwoot/chatwoot v1.7.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
lukechilds/electrumx latest ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
fireflyiii/core latest ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
podcastindexorg/podcasting20-helipad v0.1.10 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
jvandrew/librepatron 0.7.39 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
jvandrew/isso atron.22 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
lightninglabs/lightning-terminal v0.9.2-alpha-path-prefix ✔️ (opens new window) ️❌ ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
mempool/frontend v2.5.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
mempool/backend v2.5.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
mariadb 10.11 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
kukks/nnostr-relay v0.0.17 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
sphinxlightning/sphinx-relay v2.2.9 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
djbooth007/tallycoin_connect v1.8.0 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
talaia/python-teos latest ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
apotdevin/thunderhub base-v0.13.21 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
lncapital/torq 0.20.3 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
timescale/timescaledb latest-pg14 ✔️ (opens new window) ✔️ (opens new window) ✔️ (opens new window) Github (opens new window) - DockerHub (opens new window)
zammad/zammad-docker-compose zammad-postgresql-3.4.0-4 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
memcached 1.5.22-alpine ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
traefik v2.6 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
chekaz/docker-trezarcoin 0.13.0 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)
romanornr/docker-viacoin 0.15.2 ✔️ (opens new window) ️❌ ️❌ Github (opens new window) - DockerHub (opens new window)

# FAQ

# How can I modify my environment?

As root, run . btcpay-setup.sh; this will show you the environment variable it is expecting. For example, if you support btc and ltc already, and want to add btg:

export BTCPAYGEN_CRYPTO3='btg'
 . btcpay-setup.sh -i
 

# I deployed before btcpay-setup.sh existed (before May 17, 2018), can I migrate to this new system?

Yes, run the following commands to update:

sudo su -
@@ -218,6 +218,6 @@
       
       →
     

- + diff --git a/Docker/joinmarket/index.html b/Docker/joinmarket/index.html index 7184b7830a..e11a5b08d1 100644 --- a/Docker/joinmarket/index.html +++ b/Docker/joinmarket/index.html @@ -9,7 +9,7 @@ - + @@ -108,6 +108,6 @@ →

- + diff --git a/Docker/lightning-terminal/index.html b/Docker/lightning-terminal/index.html index 87f968de77..06c2419953 100644 --- a/Docker/lightning-terminal/index.html +++ b/Docker/lightning-terminal/index.html @@ -9,7 +9,7 @@ - + @@ -75,6 +75,6 @@ →

- + diff --git a/Docker/ndlc/index.html b/Docker/ndlc/index.html index 8eaaea6acf..404e7b4869 100644 --- a/Docker/ndlc/index.html +++ b/Docker/ndlc/index.html @@ -9,7 +9,7 @@ - + @@ -71,6 +71,6 @@ →

- + diff --git a/Docker/pihole/index.html b/Docker/pihole/index.html index 575f776fa4..cd322e1082 100644 --- a/Docker/pihole/index.html +++ b/Docker/pihole/index.html @@ -9,7 +9,7 @@ - + @@ -76,6 +76,6 @@ →

- + diff --git a/Docker/tallycoin-connect/index.html b/Docker/tallycoin-connect/index.html index 254221bb2c..2b804df451 100644 --- a/Docker/tallycoin-connect/index.html +++ b/Docker/tallycoin-connect/index.html @@ -9,7 +9,7 @@ - + @@ -76,6 +76,6 @@ →

- + diff --git a/Drupal/index.html b/Drupal/index.html index ae13dfd733..cd906bfbc8 100644 --- a/Drupal/index.html +++ b/Drupal/index.html @@ -9,7 +9,7 @@ - + @@ -69,6 +69,6 @@ →

- + diff --git a/ElectrumPersonalServer/index.html b/ElectrumPersonalServer/index.html index f5d6efb6e4..75e0a7b6b4 100644 --- a/ElectrumPersonalServer/index.html +++ b/ElectrumPersonalServer/index.html @@ -9,7 +9,7 @@ - + @@ -73,6 +73,6 @@ →

- + diff --git a/ElectrumWallet/index.html b/ElectrumWallet/index.html index 8015700f92..4256781117 100644 --- a/ElectrumWallet/index.html +++ b/ElectrumWallet/index.html @@ -9,7 +9,7 @@ - + @@ -61,6 +61,6 @@

If you are running a version older than Electrum 4, also enter the following command and press 'enter'

wallet.storage.write()
 
ElectrumWallet

Restart your Electrum and verify that the newly set gap limit is correct by entering in the console:

wallet.gap_limit
 

There's no good answer to how much you should set the gap limit to. Most merchants set 100-200. If you're a big merchants with high transaction volume, you can try with even higher gap limit.

For more details about the Gap Limit, check the FAQ.

Electrum and BTCPay Server are now connected. Any payments received to your BTCPay will be visible in Electrum, where you can further spend them.

- + diff --git a/ElectrumX/index.html b/ElectrumX/index.html index d66fb07622..36fc2244d5 100644 --- a/ElectrumX/index.html +++ b/ElectrumX/index.html @@ -9,7 +9,7 @@ - + @@ -75,6 +75,6 @@ →

- + diff --git a/FAQ/Altcoin/index.html b/FAQ/Altcoin/index.html index 40b48d2b0c..cfa6dc709d 100644 --- a/FAQ/Altcoin/index.html +++ b/FAQ/Altcoin/index.html @@ -9,7 +9,7 @@ - + @@ -71,6 +71,6 @@

- + diff --git a/FAQ/Apps/index.html b/FAQ/Apps/index.html index 92dfd2c6a7..7db1b0bf2b 100644 --- a/FAQ/Apps/index.html +++ b/FAQ/Apps/index.html @@ -9,7 +9,7 @@ - + @@ -180,6 +180,6 @@ →

- + diff --git a/FAQ/Deployment/index.html b/FAQ/Deployment/index.html index eaf7fd1947..ca50743f81 100644 --- a/FAQ/Deployment/index.html +++ b/FAQ/Deployment/index.html @@ -9,7 +9,7 @@ - + @@ -286,6 +286,6 @@ →

- + diff --git a/FAQ/General/index.html b/FAQ/General/index.html index 6ea1a9e5b6..acfcb1652f 100644 --- a/FAQ/General/index.html +++ b/FAQ/General/index.html @@ -9,7 +9,7 @@ - + @@ -57,7 +57,7 @@ FAQ GitHub - (opens new window)

# General FAQ

This page contains general questions and answers about BTCPay Server. What it is, how it works, how to install it.

# What is BTCPay Server?

BTCPay Server is a free and open-source cryptocurrency payment processor which allows you to receive payments in Bitcoin (on-chain and via the Lightning Network) and altcoins directly, with no fees, transaction cost or a middleman.

BTCPay is a non-custodial invoicing system which eliminates the involvement of a third-party. Payments with BTCPay go directly to your wallet, which increases the privacy and security. Your private keys are never required to receive payments to your BTCPay Server. There is no address re-use since each invoice uses a new address for receiving payments to your wallet.

# Why should I choose BTCPay over other processors?

The most significant advantage of BTCPay over other processors is that it is entirely free and open-source, non-custodial software, created by the community. While most of the other processors hold your Bitcoins, BTCPay allows you to receive payments P2P, directly to your software or hardware wallet.

BTCPay is a self-hosted software. This means that you are your own payment processor. There are no subscriptions, no transaction fees. There's no third-party involvement which significantly increases the censorship-resistance, privacy, and security for you and your customers. Furthermore, BTCPay enables you to become a processor yourself, so that you can offer different packages and help spread the adoption locally or globally.

With BTCPay, you are your own bank.

# Why is everyone so excited about BTCPay?

The community is excited about BTCPay and often recommends it to merchants or content creators because it offers a direct way for store-owners and charities to receive Bitcoin payments, which significantly improves the privacy of the customers/donors.

BTCPay doesn't compromise on censorship-resistance, which is one of the main features of Bitcoin. Besides that, being free and open-source it gives an excellent opportunity for developers to build things and integrations on top of BTCPay.

# Who can use BTCPay?

BTCPay server is a feature-rich software with plenty of use-cases that can solve problems for different types of users. Merchants, content creators, lightning network users, exchanges, hosting providers and many others can find it useful. See the Use Case page for detailed breakdown of BTCPay use-cases.

BTCPay is licensed under the MIT License (opens new window).

# How to install BTCPay Server?

First take a look at the various deployment options and consider which one best suits your specific needs.

If you still have questions, visit the Deployment FAQ

# Where to find BTCPay video tutorials?

BTCPay Server instructional video guides can be found on the official BTCPay Server YouTube channel:

# Do I need to have an online store to use BTCPay Server?

You can use BTCPay even if you don't have an e-commerce store. You can launch your BTCPay Server and be the payment processor for your friends or local market. Another use-case is to accept donations through the POS (Point of Sale) app or payment buttons which can be copy-pasted as HTML snippets into any website.

If you do not have a store, but want to create one, read How to Create an Online Store & Accept Bitcoin – Step By Step Guide (opens new window) which teaches you how to build a store from scratch and install BTCPay.

# Why can't I just give my Bitcoin address to a buyer?

Re-using an address for receiving payments is a privacy issue. Providing a different address manually to each customer is not an optimal solution. Imagine having to send a unique e-mail to everyone that wants to pay you with cryptocurrency.

BTCPay solves the address re-use issue. It automates the checkout process for the merchant by creating a new invoice with a unique address created from the merchant's wallet, each time a customer pays using BTCPay. If you are using an integration with an e-commerce store, BTCPay Server integrates into your checkout process, and customers can pay you in Bitcoin or altcoins in a few clicks, just like any other traditional payment option.

After a customer makes a payment, the BTCPay Server software notifies your store that the order has been paid/completed. Depending on the e-commerce software you're using, it can also change the order status. All you have to worry about is getting items shipped, leave the invoicing and payment processing to BTCPay.

# How does BTCPay create a new address for each invoice?

BTCPay Server includes an important feature which eliminates the known privacy issue of address re-use. It does this by providing a new address each time an invoice is requested for payment. This is all done automatically and the merchant does not need to keep track of which addresses belong to which wallet, store, etc. BTCPay Server organizes all the payment information in a detailed invoicing system for the merchant.

The way it works is fairly simple. Merchants connect a wallet to each of their stores that they want to receive payments to. The invoices produced for store payments are linked directly to the merchant's connected wallet. The invoice addresses are derived from the xpubkey (opens new window) of the wallet associated with the store. The software only needs your extended public key of a wallet to produce new addresses for each payment. These addresses are monitored by BTCPay Server as they move through the blockchain. The status of the payments to those addresses are detailed in the merchant's invoice page for each store.

# Does BTCPay need my private key?

Private keys are not required for using BTCPay with an existing wallet. The fact that BTCPay Server does not require access to your master private key for on-chain transactions is a huge security advantage. Even if your server gets hacked, your funds from the on-chain transactions are always safe. Securing your on-chain funds comes down to securing your wallet (opens new window). Using an existing wallet with BTCPay Server only requires the public key from your wallet.

It is possible to generate new wallets using BTCPay Server which are hot wallets stored on the server. If you have a lightning node, BTCPay technically has access to the keys (macaroons) of your Lightning funds as well. If these are features that you would like to use, be sure to understand the security implications and the risks associated with these experimental features.

If you're using a Third-Party BTCPay host, you should be familiar with the security concerns associated with private keys.

# Does BTCPay Server support crypto to fiat conversion?

At this time, it is possible to do automated conversions using the BTCPay Server plugin called BTCTransmuter (opens new window). Please note this software is currently in alpha state.

# What if I have a problem paying an invoice?

If you have an issue paying a BTCPay Server invoice, it is likely do to one of the following reasons:

  1. You are trying to pay using a non-segwit wallet and the merchant's invoices use Bech32 format.

This is a fairly common issue but can be confusing to the user who will likely receive wallet errors similar to invalid address when making a payment to an invoice. The solution for this (by the customer) is to use a SegWit compatible wallet (opens new window) which supports sending to Bech32 addresses.

The solution for this (by the merchant) is to modify your extended public key (xPub) you are providing in your BTCPay Server store. To do this, you can append your xPub with -[p2sh] which will automatically modify your invoice addresses to allow both SegWit and non-SegWit wallets to make payments to your addresses. The BTCPay Server wallet will do this by wrapping the xPub's addresses with a Pay to Script Hash (p2sh) which produces more widely accepted addresses. It's important to understand how this can affect your wallet and the payments received before and after implementing this solution in your BTCPay Server store. Modifying your store's xPub will generate an entirely new wallet from the perspective of your BTCPay Server store. Please understand the following before blindly implementing the solution:

  • If you are using a hot wallet generated by your BTCPay Server, modifying the xpub will not create new seed words and your previous hot wallet seed words will no longer be stored on the server. + (opens new window)

    # General FAQ

    This page contains general questions and answers about BTCPay Server. What it is, how it works, how to install it.

    # What is BTCPay Server?

    BTCPay Server is a free and open-source cryptocurrency payment processor which allows you to receive payments in Bitcoin (on-chain and via the Lightning Network) and altcoins directly, with no fees, transaction cost or a middleman.

    BTCPay is a non-custodial invoicing system which eliminates the involvement of a third-party. Payments with BTCPay go directly to your wallet, which increases the privacy and security. Your private keys are never required to receive payments to your BTCPay Server. There is no address re-use since each invoice uses a new address for receiving payments to your wallet.

    # Why should I choose BTCPay over other processors?

    The most significant advantage of BTCPay over other processors is that it is entirely free and open-source, non-custodial software, created by the community. While most of the other processors hold your Bitcoins, BTCPay allows you to receive payments P2P, directly to your software or hardware wallet.

    BTCPay is a self-hosted software. This means that you are your own payment processor. There are no subscriptions, no transaction fees. There's no third-party involvement which significantly increases the censorship-resistance, privacy, and security for you and your customers. Furthermore, BTCPay enables you to become a processor yourself, so that you can offer different packages and help spread the adoption locally or globally.

    With BTCPay, you are your own bank.

    # Why is everyone so excited about BTCPay?

    The community is excited about BTCPay and often recommends it to merchants or content creators because it offers a direct way for store-owners and charities to receive Bitcoin payments, which significantly improves the privacy of the customers/donors.

    BTCPay doesn't compromise on censorship-resistance, which is one of the main features of Bitcoin. Besides that, being free and open-source it gives an excellent opportunity for developers to build things and integrations on top of BTCPay.

    # Who can use BTCPay?

    BTCPay server is a feature-rich software with plenty of use-cases that can solve problems for different types of users. Merchants, content creators, lightning network users, exchanges, hosting providers and many others can find it useful. See the Use Case page for detailed breakdown of BTCPay use-cases.

    BTCPay is licensed under the MIT License (opens new window).

    # How to install BTCPay Server?

    First take a look at the various deployment options and consider which one best suits your specific needs.

    If you still have questions, visit the Deployment FAQ

    # Where to find BTCPay video tutorials?

    BTCPay Server instructional video guides can be found on the official BTCPay Server YouTube channel:

    # Do I need to have an online store to use BTCPay Server?

    You can use BTCPay even if you don't have an e-commerce store. You can launch your BTCPay Server and be the payment processor for your friends or local market. Another use-case is to accept donations through the POS (Point of Sale) app or payment buttons which can be copy-pasted as HTML snippets into any website.

    # Why can't I just give my Bitcoin address to a buyer?

    Re-using an address for receiving payments is a privacy issue. Providing a different address manually to each customer is not an optimal solution. Imagine having to send a unique e-mail to everyone that wants to pay you with cryptocurrency.

    BTCPay solves the address re-use issue. It automates the checkout process for the merchant by creating a new invoice with a unique address created from the merchant's wallet, each time a customer pays using BTCPay. If you are using an integration with an e-commerce store, BTCPay Server integrates into your checkout process, and customers can pay you in Bitcoin or altcoins in a few clicks, just like any other traditional payment option.

    After a customer makes a payment, the BTCPay Server software notifies your store that the order has been paid/completed. Depending on the e-commerce software you're using, it can also change the order status. All you have to worry about is getting items shipped, leave the invoicing and payment processing to BTCPay.

    # How does BTCPay create a new address for each invoice?

    BTCPay Server includes an important feature which eliminates the known privacy issue of address re-use. It does this by providing a new address each time an invoice is requested for payment. This is all done automatically and the merchant does not need to keep track of which addresses belong to which wallet, store, etc. BTCPay Server organizes all the payment information in a detailed invoicing system for the merchant.

    The way it works is fairly simple. Merchants connect a wallet to each of their stores that they want to receive payments to. The invoices produced for store payments are linked directly to the merchant's connected wallet. The invoice addresses are derived from the xpubkey (opens new window) of the wallet associated with the store. The software only needs your extended public key of a wallet to produce new addresses for each payment. These addresses are monitored by BTCPay Server as they move through the blockchain. The status of the payments to those addresses are detailed in the merchant's invoice page for each store.

    # Does BTCPay need my private key?

    Private keys are not required for using BTCPay with an existing wallet. The fact that BTCPay Server does not require access to your master private key for on-chain transactions is a huge security advantage. Even if your server gets hacked, your funds from the on-chain transactions are always safe. Securing your on-chain funds comes down to securing your wallet (opens new window). Using an existing wallet with BTCPay Server only requires the public key from your wallet.

    It is possible to generate new wallets using BTCPay Server which are hot wallets stored on the server. If you have a lightning node, BTCPay technically has access to the keys (macaroons) of your Lightning funds as well. If these are features that you would like to use, be sure to understand the security implications and the risks associated with these experimental features.

    If you're using a Third-Party BTCPay host, you should be familiar with the security concerns associated with private keys.

    # Does BTCPay Server support crypto to fiat conversion?

    At this time, it is possible to do automated conversions using the BTCPay Server plugin called BTCTransmuter (opens new window). Please note this software is currently in alpha state.

    # What if I have a problem paying an invoice?

    If you have an issue paying a BTCPay Server invoice, it is likely do to one of the following reasons:

    1. You are trying to pay using a non-segwit wallet and the merchant's invoices use Bech32 format.

    This is a fairly common issue but can be confusing to the user who will likely receive wallet errors similar to invalid address when making a payment to an invoice. The solution for this (by the customer) is to use a SegWit compatible wallet (opens new window) which supports sending to Bech32 addresses.

    The solution for this (by the merchant) is to modify your extended public key (xPub) you are providing in your BTCPay Server store. To do this, you can append your xPub with -[p2sh] which will automatically modify your invoice addresses to allow both SegWit and non-SegWit wallets to make payments to your addresses. The BTCPay Server wallet will do this by wrapping the xPub's addresses with a Pay to Script Hash (p2sh) which produces more widely accepted addresses. It's important to understand how this can affect your wallet and the payments received before and after implementing this solution in your BTCPay Server store. Modifying your store's xPub will generate an entirely new wallet from the perspective of your BTCPay Server store. Please understand the following before blindly implementing the solution:

    • If you are using a hot wallet generated by your BTCPay Server, modifying the xpub will not create new seed words and your previous hot wallet seed words will no longer be stored on the server.
      • As a result, you will not be able to spend your new funds. Instead, create a new store and a new BTCPay Server hot wallet and select the option Segwit wrapped (Compatible with old wallets) address type, and migrate funds to this new store's wallet.)
    • If you imported your xPub from another wallet (such as a hardware or software wallet) your external wallet will not detect the payments after modifying your xPub.
      • As a result, you will still be able to spend the funds using your BTCPay Server internal wallet using the Hardware Wallet Integration (Vault, recommended) or by signing with seed (not recommended).
    • Older funds and transactions which were previously displayed in your store's wallet will not appear anymore.
      • As a result, you may want to consider creating a second store with the modified xpub, to retain the previous transaction history of your transactions.

    Learn more about xpub formats and how to modify them here. If you do not understand the options listed above, ask for clarification in the community on Mattermost (opens new window).

    1. The invoice receives payment, but it is not paid in full.

    Users may try to pay an invoice from an exchange or other custodial service where part of the payment is deducted as a fee from the payment. A solution is to pay the amount due (provided that the invoice has not expired) or contact the merchant for a refund or a way to pay the remainder of payment due.

    # What if I have a problem with a paid invoice?

    TIP

    To request a refund from a merchant, you must contact the merchant directly! BTCPay Server has no relationship to the merchant you purchased the product or service from.

    BTCPay Server is an open-source self-hosted software stack, not a company. The community and contributors behind BTCPay Server have no control over who uses the software or how they use it. @@ -80,6 +80,6 @@ →

- + diff --git a/FAQ/Integrations/index.html b/FAQ/Integrations/index.html index 3653256d89..8f0e71f00b 100644 --- a/FAQ/Integrations/index.html +++ b/FAQ/Integrations/index.html @@ -9,7 +9,7 @@ - + @@ -116,6 +116,6 @@ →

- + diff --git a/FAQ/LightningNetwork/index.html b/FAQ/LightningNetwork/index.html index a40357142f..f2b43e653b 100644 --- a/FAQ/LightningNetwork/index.html +++ b/FAQ/LightningNetwork/index.html @@ -9,7 +9,7 @@ - + @@ -189,6 +189,6 @@ →

- + diff --git a/FAQ/ServerSettings/index.html b/FAQ/ServerSettings/index.html index 6ee28e10a7..c7fd55fdc0 100644 --- a/FAQ/ServerSettings/index.html +++ b/FAQ/ServerSettings/index.html @@ -9,7 +9,7 @@ - + @@ -122,6 +122,6 @@ →

- + diff --git a/FAQ/Stores/index.html b/FAQ/Stores/index.html index 2f6d367846..38567c618a 100644 --- a/FAQ/Stores/index.html +++ b/FAQ/Stores/index.html @@ -9,7 +9,7 @@ - + @@ -77,6 +77,6 @@ →

- + diff --git a/FAQ/Synchronization/index.html b/FAQ/Synchronization/index.html index 4a752c3698..40d30ef2c2 100644 --- a/FAQ/Synchronization/index.html +++ b/FAQ/Synchronization/index.html @@ -9,7 +9,7 @@ - + @@ -132,6 +132,6 @@ →

- + diff --git a/FAQ/Wallet/index.html b/FAQ/Wallet/index.html index 2144b1679a..fad96fba86 100644 --- a/FAQ/Wallet/index.html +++ b/FAQ/Wallet/index.html @@ -9,7 +9,7 @@ - + @@ -78,6 +78,6 @@ →

- + diff --git a/FAQ/index.html b/FAQ/index.html index 200ac076ce..1fbec43857 100644 --- a/FAQ/index.html +++ b/FAQ/index.html @@ -9,7 +9,7 @@ - + @@ -58,6 +58,6 @@ GitHub (opens new window)

# Frequently Asked Questions and Common Issues

This document contains a Table of contents to all FAQ and common issues.

# General FAQ

General, non-technical questions about BTCPay. What it is, how it works, what are its features, why is it different and who can use it.

# Deployment FAQ

Questions and solutions to BTCPay installation.

# General Deployment FAQ

# Web Deployment FAQ

# Luna Node Web Deployment FAQ

# Manual Deployment FAQ

# Synchronization FAQ

Common questions and issues that may occur during the initial sync of BTCPay.

# Integrations FAQ

Questions about e-commerce and other integrations.

# Integrations General

# WooCommerce FAQ

# Server Settings FAQ

Common problems and questions server admins have.

# Maintenance FAQ

# Theme / Customization FAQ

# Policies FAQ

# Services FAQ

# Files FAQ

# Stores FAQ

Store settings explained.

# Wallet FAQ

Here are some of the questions and problems about wallets in BTCPay.

# Apps FAQ

Frequent questions about the applications in BTCPay.

# Lightning Network FAQ

Lightning Network troubleshooting and common problems.

# Lightning Network General FAQ

# Lightning Network LND FAQ

# Lightning Network Core Lightning (CLN) FAQ

# Altcoins FAQ

- + diff --git a/Forms/index.html b/Forms/index.html index b9fb4280f8..558b1df1dc 100644 --- a/Forms/index.html +++ b/Forms/index.html @@ -9,7 +9,7 @@ - + @@ -89,6 +89,6 @@ IVPN

If you'd like to support the project, please visit the donation page.

- + diff --git a/Guide/index.html b/Guide/index.html index de62ff6272..dd93227210 100644 --- a/Guide/index.html +++ b/Guide/index.html @@ -9,7 +9,7 @@ - + @@ -85,6 +85,6 @@ →

- + diff --git a/HardwareWalletIntegration/index.html b/HardwareWalletIntegration/index.html index ed08c810c7..3960a49f7d 100644 --- a/HardwareWalletIntegration/index.html +++ b/HardwareWalletIntegration/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

- + diff --git a/Invoices/index.html b/Invoices/index.html index 1e35c9fbcf..f3baedf6af 100644 --- a/Invoices/index.html +++ b/Invoices/index.html @@ -9,7 +9,7 @@ - + @@ -68,6 +68,6 @@ →

- + diff --git a/LNDhubAPI/index.html b/LNDhubAPI/index.html index 175cc76ef3..8a78893e9c 100644 --- a/LNDhubAPI/index.html +++ b/LNDhubAPI/index.html @@ -9,7 +9,7 @@ - + @@ -73,6 +73,6 @@ →

- + diff --git a/LNbank/LNDhub/index.html b/LNbank/LNDhub/index.html index bebe114d0a..cf9e71c1e2 100644 --- a/LNbank/LNDhub/index.html +++ b/LNbank/LNDhub/index.html @@ -9,7 +9,7 @@ - + @@ -73,6 +73,6 @@ →

- + diff --git a/LNbank/Troubleshooting/index.html b/LNbank/Troubleshooting/index.html index b97935ca73..c0f9655659 100644 --- a/LNbank/Troubleshooting/index.html +++ b/LNbank/Troubleshooting/index.html @@ -9,7 +9,7 @@ - + @@ -80,6 +80,6 @@ →

- + diff --git a/LNbank/index.html b/LNbank/index.html index d5e46fec18..0cbe15412a 100644 --- a/LNbank/index.html +++ b/LNbank/index.html @@ -9,7 +9,7 @@ - + @@ -63,6 +63,6 @@ LNbank wallets can be seen as layer 3 sub-accounts.
  • All LNbank accounts use the internal Lightning node and share the Node ID of that node.
  • Channels and liquidity are managed by the server admin.
  • # Caveats

    Users rely on the server admin as the custodian, be aware of that trust relationship. When using LNbank on a third-party instance whose owner you don't know, mitigate the risks by following this advise:

    # Features and Compatibility

    # How to activate and use LNbank

    # Server admin

    # User

    # Support this plugin

    Support this plugin (opens new window)
    - + diff --git a/LedgerWallet/index.html b/LedgerWallet/index.html index afb6bce628..1e7d6d739e 100644 --- a/LedgerWallet/index.html +++ b/LedgerWallet/index.html @@ -9,7 +9,7 @@ - + @@ -59,6 +59,6 @@ GitHub (opens new window)

    # Connecting Ledger Wallet to BTCPay Server

    This document shows how to connect Ledger Nano S Wallet to BTCPay Server.

    WARNING

    Direct Ledger Nano S integration is no longer supported. For Bitcoin wallets, you can use your Ledger hardware wallet regularly via the new hardware wallet integration.

    For altcoin wallets, you can spend funds from your external wallet, sign a transaction within the internal wallet with HD Private Key or mnemonic seed or a hot wallet.

    To set up a new altcoin wallet, add the extended public key manually or create a new wallet.

    # Ledger Nano S Wallet Setup

    This guide assumes, you have a Nano S wallet set up. To configure the Nano S, please see the quick setup guide on manufacturer's website (opens new window).

    # Requirements

    1. Bitcoin App installed on the Ledger
    2. Google Chrome or Firefox
    3. For Firefox, U2F needs to be enabled in about:config
    4. No other U2F devices plugged in into your PC (Yubikey, other wallets, etc)

    # Quick Setup

    1. Plug in Ledger Nano S into your PC.
    2. Open the Bitcoin app on your Ledger.
    3. In BTCPay Server, Store > Settings > Wallet > Setup > Derivation Scheme > Import from Hardware Device > Ledger wallet
    4. Select the account which you want to use, in most cases it's the Account 0
    5. Confirm the Export public key on the wallet.
    6. The extended public key will now automatically be added from Ledger to your BTCPay Server Store.
    7. Make sure that the derivation scheme is Enabled
    8. Click Continue
    9. Confirm the address match in BTCPay.

    Your Ledger wallet is now connected to your BTCPay. Payments go directly to Ledger.

    # Manual Setup

    If you have more than 20 accounts in your Ledger you might not be able to find the correct account because the select shows a maximum of 20 entries. In this case you can manually find the extended public key for your wanted account in these steps:

    1. Open the Ledger live app (opens new window)
    2. Accounts -> choose your account
    3. Edit Account on the top right via the tool-icon
    4. In Edit Account -> ADVANCED LOGS
    5. Copy the extended public key string
    6. Paste it manually into the "DerivationScheme" textfield
    7. Continue with Step 7 of the Quick Setup above
    Ledger Account "Advanced Logs" info screenshot

    # Spending from BTCPay Server wallet with Ledger

    Once there are some funds in received to your BTCPay Wallet connected to Ledger, you can spend them by signing a transaction with your hardware wallet. This allows easy interaction of the Ledger wallet with your full node, without leaking information to third-party servers.

    1. Plug in Ledger Nano S into your PC.
    2. Open the Bitcoin app on your Ledger.
    3. In BTCPay, go to Wallets > Manage > Send
    4. Fill in destination address and the amount
    5. Click on the Sign with your Ledger Wallet device.
    6. BTCPay will establish a connection with the Ledger wallet and display transaction information on the wallet screen.
    7. Confirm the transaction on the Ledger.
    8. In Ledger, click on the Ready To Sign
    9. Review your transactions and click Broadcast to broadcast it on the network.

    The video below shows how to connect your BTCPay store to your Ledger and how to use Ledger with the internal BTCPay wallet.

    - + diff --git a/LightningNetwork/index.html b/LightningNetwork/index.html index 5a04fbebc5..d4bbb7faf3 100644 --- a/LightningNetwork/index.html +++ b/LightningNetwork/index.html @@ -9,7 +9,7 @@ - + @@ -109,6 +109,6 @@

    - + diff --git a/LightningNetwork_PaymentChannels/index.html b/LightningNetwork_PaymentChannels/index.html index c6e4a8ec18..d72edb5c88 100644 --- a/LightningNetwork_PaymentChannels/index.html +++ b/LightningNetwork_PaymentChannels/index.html @@ -9,7 +9,7 @@ - + @@ -58,6 +58,6 @@ GitHub (opens new window)

    # Opening and operating payment channels

    Given that the Lightning Network is a relatively new technology under active development, getting your freshly deployed node ready to send and receive payments, still, requires a couple of steps.

    Overview:

    1. The lightning node is deployed, enabled and its on-chain wallet is funded
    2. A peer is identified and the first payment channel is opened
    3. Inbound and outbound liquidity is acquired. The node is now able to send and receive
    4. Liquidity management, an ongoing process to maintain the capacity to send and receive

    Key considerations:

    • Choosing the channel partner. Consider opening the first channel to a well connected peer with robust uptime. This will increase the chances for your payments to be routed and settled.
    • Inbound vs outbound capacity. Outbound capacity allows nodes to send payments whereas inbound capacity allows nodes to receive payments. As a merchant using lightning, having inbound capacity is essential for customers to be able to pay you.
    • Inbound capacity. A node adds inbound capacity by either spending sats from its local balance or having other nodes in the network open channels to it.
    • Liquidity management: maintaining the ability to send and receive is a continous process where a balance between inbound vs outbound capacity has to be maintained across payment channels. This capacity distribution must be adjusted depending upon the use case of the node operator.
    • Lightning Service Providers: LSPs offer paid third-party services that improve the ease of operating a lightning network node. Such services can be used to acquire inbound capacity or to automate the rebalancing process.

    Below a set of good resources for a deeper dive into topics such as:

    - + diff --git a/Magento/index.html b/Magento/index.html index 63dcbc35f1..da05e85a86 100644 --- a/Magento/index.html +++ b/Magento/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

    - + diff --git a/NBXplorer/API/index.html b/NBXplorer/API/index.html index 150a7a634a..82937cd21d 100644 --- a/NBXplorer/API/index.html +++ b/NBXplorer/API/index.html @@ -9,7 +9,7 @@ - + @@ -655,6 +655,6 @@ →

    - + diff --git a/NBXplorer/Postgres-Migration/index.html b/NBXplorer/Postgres-Migration/index.html index 9061d19b23..b7b884064b 100644 --- a/NBXplorer/Postgres-Migration/index.html +++ b/NBXplorer/Postgres-Migration/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

    - + diff --git a/NBXplorer/Postgres-Schema/index.html b/NBXplorer/Postgres-Schema/index.html index bd63044563..82b3c0b017 100644 --- a/NBXplorer/Postgres-Schema/index.html +++ b/NBXplorer/Postgres-Schema/index.html @@ -9,7 +9,7 @@ - + @@ -87,6 +87,6 @@ →

    - + diff --git a/NBXplorer/index.html b/NBXplorer/index.html index e81717a220..ef7924d8c3 100644 --- a/NBXplorer/index.html +++ b/NBXplorer/index.html @@ -9,7 +9,7 @@ - + @@ -108,6 +108,6 @@ →

    - + diff --git a/Nostr/index.html b/Nostr/index.html index 66569da1f3..a6f9cdce2a 100644 --- a/Nostr/index.html +++ b/Nostr/index.html @@ -9,7 +9,7 @@ - + @@ -67,6 +67,6 @@ →

    - + diff --git a/Notifications/index.html b/Notifications/index.html index e6a5212479..702e300514 100644 --- a/Notifications/index.html +++ b/Notifications/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ {Invoice.Status} {Invoice.OrderId}

    Find the source here for possible updates (opens new window)

    Create new Email rule
    - + diff --git a/OpenCart/index.html b/OpenCart/index.html index 90812269fe..909cc1f91a 100644 --- a/OpenCart/index.html +++ b/OpenCart/index.html @@ -9,7 +9,7 @@ - + @@ -88,6 +88,6 @@ →

    - + diff --git a/Payjoin/index.html b/Payjoin/index.html index 83f2a990da..117c536240 100644 --- a/Payjoin/index.html +++ b/Payjoin/index.html @@ -9,7 +9,7 @@ - + @@ -59,6 +59,6 @@ GitHub (opens new window)

    # BTCPay Server Payjoin Guide

    This document explains how to use BTCPay Server's Payjoin feature. For a detailed, technical explanation of how payjoin is implemented, check BIP78 (opens new window)

    You can follow this video to better understand what payjoin is and how to use it.

    # Enabling Payjoin as a merchant

    1. Create a store
    2. Configure a hot wallet for your derivation scheme. Be sure to use either segwit or segwit wrapped as the address type.
    3. Enable Payjoin/P2EP in the "General Settings" and click "Save"

    It's important to note that you will need at least 1 UTXO for payjoin to work.

    Receive PayJoin in BTCPay Server
    Receive PayJoin in BTCPay Server
    Receive PayJoin in BTCPay Server

    # Paying to Payjoin as a user

    The BTCPay Wallet supports Payjoin.

    1. Retrieve the BIP21 payment link from a BTCPay Server invoice which has payjoin enabled by either:
      • Scan the QR code with the camera scanning feature
      • Copy the link from the "Open in wallet" button and paste it in the "Parse BIP21" prompt
    2. The send form should be populated with the payment details. You can check if the invoice supports payjoin by expanding "advanced settings" to see if there is a "Payjoin endpoint" input with a url.
    3. Sign your transaction using either BTCPay Server's hardware wallet support via BTCPay Vault or the hot wallet feature.
    4. Once your original transaction is ready, you will be given the option to either Broadcast (Payjoin) or to Broadcast (Simple). Choose Broadcast (Payjoin).
    5. The payjoin server will propose a new special transaction, if possible. If the payjoin server is unable to do the payjoin, the original transaction is broadcast instead.
    6. If you are using a hardware wallet, you will be asked to sign the payjoin transaction again (the hot wallet feature signs the transaction for you automatically).
    7. Congratulations, you've just helped improve Bitcoin's fungibility and your financial sovereignty!
    Receive PayJoin in BTCPay Server
    Receive PayJoin in BTCPay Server
    Receive PayJoin in BTCPay Server
    Receive PayJoin in BTCPay Server

    # Why did a payjoin not happen?

    There's multiple reasons for this:

    • The store did not have any utxos to contribute towards a payjoin
    • Your wallet does not use the same format as the store's (essential to not raise suspicion to analysis companies)
    • You are not using segwit or p2sh wrapped segwit.
    • The payjoin server is not available

    # Supported wallets

    Please contact and encourage your wallet developers to add support. The more widespread the usage of payjoin, the more broken the heuristics used by blockchain analysis companies become and can effectively trace your financial history. If you are a wallet developer, please contact us if you need help or have feedback.

    - + diff --git a/PaymentRequests/index.html b/PaymentRequests/index.html index 5f6e0efc15..32cb412091 100644 --- a/PaymentRequests/index.html +++ b/PaymentRequests/index.html @@ -9,7 +9,7 @@ - + @@ -93,6 +93,6 @@ →

    - + diff --git a/Payouts/index.html b/Payouts/index.html index f9e2817c17..a22f0a8983 100644 --- a/Payouts/index.html +++ b/Payouts/index.html @@ -9,7 +9,7 @@ - + @@ -81,6 +81,6 @@ →

    - + diff --git a/PodServer/index.html b/PodServer/index.html index a1066679a3..47cab05d15 100644 --- a/PodServer/index.html +++ b/PodServer/index.html @@ -9,7 +9,7 @@ - + @@ -68,6 +68,6 @@ →

    - + diff --git a/PrestaShop/index.html b/PrestaShop/index.html index 97f659b1a3..05eb1cbb21 100644 --- a/PrestaShop/index.html +++ b/PrestaShop/index.html @@ -9,7 +9,7 @@ - + @@ -70,6 +70,6 @@ →

    - + diff --git a/PullPayments/index.html b/PullPayments/index.html index 298a269207..8922ef2bc1 100644 --- a/PullPayments/index.html +++ b/PullPayments/index.html @@ -9,7 +9,7 @@ - + @@ -100,6 +100,6 @@ 6
  • Clicking on the notification brings the sender to a page listing all outstanding payouts 7
  • Check the payout to approve, pay and confirm 8
  • You are then brought to the normal wallet user interface of BTCPay Server
  • WARNING

    Clicking on Confirm selected payouts will use the current exchange rate of your wallet's store settings. The rate is then fixed, even if you don't complete the payment. Payments made at a later time will use this previously confirmed rate.

    # Additional use cases for the Pull Payments feature

    The Pull Payment feature can be used in multiple applications, the first one being Refunds.

    - + diff --git a/Refund/index.html b/Refund/index.html index eda7bff96e..716fbcc2d5 100644 --- a/Refund/index.html +++ b/Refund/index.html @@ -9,7 +9,7 @@ - + @@ -67,6 +67,6 @@ →

    - + diff --git a/RegisterAccount/index.html b/RegisterAccount/index.html index 887bc7bb03..6201c25e1c 100644 --- a/RegisterAccount/index.html +++ b/RegisterAccount/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

    - + diff --git a/Reporting/index.html b/Reporting/index.html index 5774bd79c1..25ca222d9b 100644 --- a/Reporting/index.html +++ b/Reporting/index.html @@ -9,7 +9,7 @@ - + @@ -68,6 +68,6 @@ (opens new window)

    - + diff --git a/Shopify/index.html b/Shopify/index.html index 601c325adf..b33b28f339 100644 --- a/Shopify/index.html +++ b/Shopify/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

    - + diff --git a/Shopware/index.html b/Shopware/index.html index dee15d4e96..84c599df74 100644 --- a/Shopware/index.html +++ b/Shopware/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

    - + diff --git a/Support/index.html b/Support/index.html index 79d0877306..dbb2575d0f 100644 --- a/Support/index.html +++ b/Support/index.html @@ -9,7 +9,7 @@ - + @@ -68,6 +68,6 @@ →

    - + diff --git a/TicketTailor/index.html b/TicketTailor/index.html index c3d37ca354..2a09f802ac 100644 --- a/TicketTailor/index.html +++ b/TicketTailor/index.html @@ -9,7 +9,7 @@ - + @@ -69,6 +69,6 @@ →

    - + diff --git a/Transmuter/DCA/index.html b/Transmuter/DCA/index.html index 75f293bd20..d6a597b188 100644 --- a/Transmuter/DCA/index.html +++ b/Transmuter/DCA/index.html @@ -9,7 +9,7 @@ - + @@ -73,6 +73,6 @@ →

    - + diff --git a/Transmuter/EmailReceiptsPreset/index.html b/Transmuter/EmailReceiptsPreset/index.html index 3807ebec32..a9df9c5a95 100644 --- a/Transmuter/EmailReceiptsPreset/index.html +++ b/Transmuter/EmailReceiptsPreset/index.html @@ -9,7 +9,7 @@ - + @@ -67,6 +67,6 @@ →

    - + diff --git a/Transmuter/index.html b/Transmuter/index.html index ef0ccbb490..dacade909f 100644 --- a/Transmuter/index.html +++ b/Transmuter/index.html @@ -9,7 +9,7 @@ - + @@ -67,6 +67,6 @@ There must be a class implementing BtcTransmuterExtension in this library. This file bootstraps the plugin name and adds all the services to system on startup.

    # Adding a Trigger

    # Adding an Action

    # Adding an External Service

    - + diff --git a/Trocador/index.html b/Trocador/index.html index aad8e99c05..fcde348c98 100644 --- a/Trocador/index.html +++ b/Trocador/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

    - + diff --git a/Troubleshooting/index.html b/Troubleshooting/index.html index 6af1e8b0f3..6589e8eb1f 100644 --- a/Troubleshooting/index.html +++ b/Troubleshooting/index.html @@ -9,7 +9,7 @@ - + @@ -98,6 +98,6 @@ →

    - + diff --git a/TryItOut/index.html b/TryItOut/index.html index 488afb2467..ef7341a893 100644 --- a/TryItOut/index.html +++ b/TryItOut/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

    - + diff --git a/UseCase/index.html b/UseCase/index.html index c44c4bc43f..1b34066572 100644 --- a/UseCase/index.html +++ b/UseCase/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

    - + diff --git a/Vault/HowToVerify/index.html b/Vault/HowToVerify/index.html index 671f31be5f..87dfb5dbb7 100644 --- a/Vault/HowToVerify/index.html +++ b/Vault/HowToVerify/index.html @@ -9,7 +9,7 @@ - + @@ -83,6 +83,6 @@ →

    - + diff --git a/VirtueMart/index.html b/VirtueMart/index.html index 080f55c560..a5fe86d1ad 100644 --- a/VirtueMart/index.html +++ b/VirtueMart/index.html @@ -9,7 +9,7 @@ - + @@ -88,6 +88,6 @@ →

    - + diff --git a/Wabisabi/index.html b/Wabisabi/index.html index 0dd683ade4..48e42a575b 100644 --- a/Wabisabi/index.html +++ b/Wabisabi/index.html @@ -9,7 +9,7 @@ - + @@ -88,6 +88,6 @@ →

    - + diff --git a/Walkthrough/index.html b/Walkthrough/index.html index ad078ec5d2..700743cc18 100644 --- a/Walkthrough/index.html +++ b/Walkthrough/index.html @@ -9,7 +9,7 @@ - + @@ -80,6 +80,6 @@ →

    - + diff --git a/Wallet/index.html b/Wallet/index.html index 61f4abc6e4..8406a6ddd9 100644 --- a/Wallet/index.html +++ b/Wallet/index.html @@ -9,7 +9,7 @@ - + @@ -61,6 +61,6 @@ PSBT is supported in BTCPay Server and can be signed with compatible hardware and software wallets.

    The construction of a fully signed Bitcoin transaction goes through the following steps:

    Check this tutorial on how to sign a PSBT transaction with ColdCard Hardware Wallet, completely offline/air-gapped.

    # Signing with a hardware wallet

    BTCPay Server has built-in hardware wallet support allowing you to use your hardware wallet with BTCPay, without leaking information to third-party apps or servers.

    Check instructions on how to set up and sign with a compatible hardware wallet (opens new window).

    # Signing with a hot wallet

    If you created a new wallet when setting up your store and enabled it as a hot wallet, since version 1.2.0, we've added an option that when a hot wallet is created, it'll automatically use the seed stored on a server to sign.

    DANGER

    Using the hot wallet feature comes with security implications; please be sure to read and understand them over at the Hot Wallet documentation

    # Advanced Settings

    Certain wallet features are available for advanced users. Toggle the Advanced Settings within the Send tab to preview them.

    # Don't create UTXO change

    This option is available in the Advanced mode of the Send page.

    It is a privacy enhancing feature which is useful when you're sending funds to another wallet of yours or to an exchange. It makes sure that no change UTXO is created by rounding up the amount sent.

    By default this feature is disabled, so if your wallet has a UTXO of 1.1 BTC and you input an amount equal to 1.0 BTC, the resulting transaction will have two outputs 0.1 BTC of change, and 1.0 BTC to your destination.

    Blockchain analysis will understand that those 0.1 BTC of change belong to the same entity which controlled 1.1 BTC before, and can track the future purchase you make under the same pattern.

    By enabling this feature, BTCPay Server wallet will round up the amount sent to 1.1 BTC such that no change output is sent back to you.

    Warning: Despite the fact, in this example, that you entered 1.0 in the amount field, the amount that will really be sent to your destination will be 1.1 BTC.

    # RBF (Replace-By-Fee)

    Replace-By-Fee (RBF) is a Bitcoin protocol feature that allows you to replace a previously broadcast transaction (while unconfirmed). This allows randomizing your wallet's transaction fingerprint, or simply for replacing it with a higher fee rate to move the transaction higher in the queue of confirmation (mining) priority. This will effectively replace the original transaction as the higher fee rate will be prioritized and once confirmed, invalidating the original one (double spend).

    Press the Advanced Settings button to view the RBF options:

    RBF Options
    # Coin Selection

    Coin selection is an advanced privacy-enhancing feature that allows you to specifically select coins that you would like to spend when crafting a transaction. For example, paying with coins that are fresh from a coinjoin mix.

    To make the selection easier, coin-selection works natively with the wallet labels feature. This allows you to label any incoming funds for smoother UTXO management and spending.

    Coin Selection
    # Other features
    # Camera QR scan

    Scan option in wallet (camera icon in send screen) lets you use your device’s camera to scan a QR code containing an address or BIP21 payment link. It auto-populates the sending information so that you don’t have to manually copy-paste an address and amount.

    QR Scan
    # Paste BIP21 address

    This option decodes a BIP21 payment link. It's useful when you're trying to pay a Payjoin invoice.

    # Receive

    The Receive tab generates an unused address which can be used to receive payments. The same can be achieved by generating an invoice (Invoices > Create new invoice).

    Wallet Receive

    # Pull Payments

    This feature gives you the ability to create a Pull Payment, so that an outside individual may request to pull funds from your wallet.

    For more information, see Pull Payments.

    # Payouts

    This section lets you manage Pull Payments and gives you the ability to accept or decline payouts requested by outside individuals.

    For more information, see Payouts.

    # Re-scan

    The Rescan relies on Bitcoin Core 0.17.0's scantxoutset to scan the current state of the blockchain (called UTXO Set) for coins belonging to the configured derivation scheme.

    Wallet Rescan

    Wallet re-scan solves two critical problems for BTCPay users:

    1. Gap limit
    2. Importing a previously used wallet

    Gap limit: Most wallets typically have the address gap limit set to 20. This means that if a merchant receives 21 or more consecutive unpaid invoices, those wallets show the incorrect balance and some transactions may not be visible.

    Wallet import: When users add a derivation scheme of a wallet that had transactions in the past (previously used wallet), BTCPay won't be able to show the balance and transactions from the past.

    Wallet rescan progress

    Re-scan is a feature that solves both of these problems. Once the scan is complete, BTCPay Server will show the correct balance, along with the past transactions of the wallet.

    Wallet re-scan requires access to the full node which means that this function is only available for server owners.

    Users who use a third-party host should use a newly generated xpub key and also use an external wallet like Electrum which allows them to increase the gap limit.

    # Settings

    In the top right corner of your wallet you will find the wallet settings. In the wallet settings tab you can adjust certain settings. If you've configured your wallet by creating a new wallet or using an existing wallet via the hardware wallet integration these settings will be pre-configured.

    If you manually added the extended public key from an external wallet, you'd need to adjust AccountKeyPath that you can find in your external wallet, for example m/84'/0'/0' to be able to spend from the BTCPay Wallet.

    In wallet settings you will also find the speed policy for the specific store. There are 2 main settings under Payment, Payment invalid if transaction fails to confirm in ... after invoice creation and Consider the invoice confirmed when the payment transaction.... The latter lets you set the number of confirmations required to be recognized as settled.

    Wallet settings
    - + diff --git a/WalletSetup/index.html b/WalletSetup/index.html index 89ea5e2a4e..57e59571c3 100644 --- a/WalletSetup/index.html +++ b/WalletSetup/index.html @@ -9,7 +9,7 @@ - + @@ -58,6 +58,6 @@ GitHub (opens new window)

    # (3) Wallet Setup

    After account registration and store creation, it's time to configure a wallet in your BTCPay Server, so that you can start receiving payments into it.

    There are two ways to set up a wallet in BTCPay Server:

    There are many options on how set up a wallet with your BTCPay Server. It's up to you to decide what works best for your use-case. Once you configure a wallet, you're all set. The next step, is to start exploring the features.

    Proceed to the next step - What's Next?.

    - + diff --git a/WasabiWallet/index.html b/WasabiWallet/index.html index 5f6c8c74bc..1b67ba1066 100644 --- a/WasabiWallet/index.html +++ b/WasabiWallet/index.html @@ -9,7 +9,7 @@ - + @@ -67,6 +67,6 @@ After the loading is done and the wallet is opened, click on the 3 dots at the top right corner to go to Wallet Info .

    Wasabi Find Wallet Info

    Select and copy the Extended Account Public Key. This is the public key from which BTCPay will derive addresses. This cannot be used to derive private keys and spend the bitcoin.

    Wasabi Extended Account Public Key

    # Setup store wallet

    1. Assuming you created a store and are now in the Dashboard. Click on Set up a wallet
    Connect Wasabi Wallet to BTCPay Server
    1. As you did the above steps in wasabi, Click Connect an existing wallet
    Connect Wasabi Wallet to BTCPay Server
    1. Choose Enter extended public key
    Connect Wasabi Wallet to BTCPay Server
    1. Paste the Extended Account Public Key into derivation scheme field as it is, without adding anything else and click Continue
    Connect Wasabi Wallet to BTCPay Server
    1. Return to the Wasabi Wallet. Click the Receive button and generate a new address.
    Wasabi Receive
    1. Compare the address you see in Wasabi Wallet to addresses shown in BTCPay Server. Find a match, continue.
    Connect Wasabi Wallet to BTCPay Server
    1. When you found a match, your wallet is now connected to the store.
    Connect Wasabi Wallet to BTCPay Server

    # Connecting Wasabi to BTCPay Server Full Node (If you're self-hosting BTCPay)

    After the wallets are connected, it is highly recommended to connect Wasabi Wallet to your full node in BTCPay. The process is easy but can only be done if you self-host BTCPay and are logged in as Admin. Tor has to be enabled in BTCPay (it is enabled by default). This process enhances privacy even further.

    In BTCPay, go Server Settings > Services > Full node P2P > See Information. On the BTCP-P2P page, click on the Show Confidential QR Code. Bellow the QR Code, there's a link See QR Code information by clicking here, so click on the link to reveal your string. Copy the string but remove bitcoin-p2p:// part.

    In Wasabi, go to the Bitcoin tab at Settings and paste the endpoint in Bitcoin P2P Endpoint.

    Restart Wasabi to apply the changes.

    # Configuring the Gap Limit in Wasabi

    At the search bar on top, click on Wallet Folder. Shortly the json file will be shown in a sub-folder. Open that file with a text editor like notepad. Find the line "MinGapLimit": 21, and change it to "MinGapLimit": 100, and save the file.

    There's no good answer to how much you should set the gap limit to. Most merchants set 100-200. If you're a big merchant with high transaction volume, you can try with even a higher gap limit.

    For more details about the Gap Limit, check the FAQ.

    Wasabi Wallet and BTCPay Server are now connected. Any payments received to your BTCPay will be visible in Wasabi, where you can further spend or mix them.

    - + diff --git a/WhatsNext/index.html b/WhatsNext/index.html index 5e5b4759cb..92f72dd222 100644 --- a/WhatsNext/index.html +++ b/WhatsNext/index.html @@ -9,7 +9,7 @@ - + @@ -66,6 +66,6 @@ →

    - + diff --git a/WooCommerce/index.html b/WooCommerce/index.html index 337c3a3fcd..36a93ddfd7 100644 --- a/WooCommerce/index.html +++ b/WooCommerce/index.html @@ -9,7 +9,7 @@ - + @@ -116,6 +116,6 @@ →

    - + diff --git a/Zapier/index.html b/Zapier/index.html index 4e9d23ecf7..4a7a0582d8 100644 --- a/Zapier/index.html +++ b/Zapier/index.html @@ -9,7 +9,7 @@ - + @@ -77,6 +77,6 @@ →

    - + diff --git a/assets/js/110.c8bc34a8.js b/assets/js/110.3c2e39b6.js similarity index 99% rename from assets/js/110.c8bc34a8.js rename to assets/js/110.3c2e39b6.js index f8c350407a..4a164b78bd 100644 --- a/assets/js/110.c8bc34a8.js +++ b/assets/js/110.3c2e39b6.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{729:function(e,t,r){"use strict";r.r(t);var a=r(9),n=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"introduction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),t("p",[e._v("While "),t("RouterLink",{attrs:{to:"/LunaNodeWebDeployment/"}},[e._v("our instructions")]),e._v(" cover how to install BTCPayServer in one click on Azure or Lunanode, BTCPay Server is not limited to those options.")],1),e._v(" "),t("p",[e._v("You will find below information about how you can install BTCPay Server easily in any environment having docker available.")]),e._v(" "),t("h1",{attrs:{id:"architecture"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),t("figure",[t("img",{attrs:{src:"https://github.com/btcpayserver/btcpayserver-doc/raw/master/docs/img/Architecture.png",alt:"Architecture",title:"Architecture"}})]),e._v(" "),t("p",[e._v("As you can see, BTCPay depends on several pieces of infrastructure, mainly:")]),e._v(" "),t("ul",[t("li",[e._v("A lightweight block explorer (NBXplorer),")]),e._v(" "),t("li",[e._v("A database (PostgreSQL),")]),e._v(" "),t("li",[e._v("A full node (eg. Bitcoin Core)")])]),e._v(" "),t("p",[e._v("There can be more dependencies if you support more than just standard Bitcoin transactions, including:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/ElementsProject/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("Core Lightning (CLN)"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/litecoin-project/litecoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("LitecoinD"),t("OutboundLink")],1),e._v(" and other coin daemons")]),e._v(" "),t("li",[e._v("And more...")])]),e._v(" "),t("p",[e._v("Note: The setup process can be time consuming, but is heavily automated to make it a fun and easy experience.")]),e._v(" "),t("p",[e._v("Take a look at how BTCPay works in a video below.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/nr0UNbz3AoQ/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=nr0UNbz3AoQ",title:"YouTube","data-id":"nr0UNbz3AoQ"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/nr0UNbz3AoQ?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("Here is a presentation of the global architecture at Advancing Bitcoin conference.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/Up0dvorzSNM/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=Up0dvorzSNM",title:"BTCPay - Architecture overview","data-id":"Up0dvorzSNM"}},[t("iframe",{attrs:{title:"BTCPay - Architecture overview","data-src":"https://www.youtube-nocookie.com/embed/Up0dvorzSNM?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("h1",{attrs:{id:"full-installation-for-technical-users"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#full-installation-for-technical-users"}},[e._v("#")]),e._v(" Full installation (for technical users)")]),e._v(" "),t("p",[e._v("You can also install BTCPay Server on your own machine or VPS instance.")]),e._v(" "),t("p",[e._v("The officially supported setup is driven by Docker (and Docker-Compose).")]),e._v(" "),t("p",[e._v("First, make sure you have a domain name pointing to your host "),t("code",[e._v("A record")]),e._v(", with ports "),t("code",[e._v("443")]),e._v(" and "),t("code",[e._v("80")]),e._v(" externally accessible. For Lightning Network, port "),t("code",[e._v("9735")]),e._v(" is required ("),t("code",[e._v("9736")]),e._v(" if you use Litecoin Lightning). Otherwise, you will have to set a domain manually by running "),t("code",[e._v("changedomain.sh")]),e._v(".")]),e._v(" "),t("p",[e._v("Let's assume your domain is "),t("code",[e._v("btcpay.EXAMPLE.com")]),e._v(".")]),e._v(" "),t("p",[e._v("The setup below assumes you want to support Bitcoin, Core Lightning (CLN), HTTPS automatically configured by Nginx. It also enables node pruning, which you can "),t("a",{attrs:{href:"#generated-docker-compose"}},[e._v("modify")]),e._v(" or ignore if you have enough disk space for a full node. Finally, your domain is "),t("code",[e._v("btcpay.EXAMPLE.com")]),e._v(" should reflect your actual domain name.")]),e._v(" "),t("p",[t("a",{attrs:{href:"#environment-variables"}},[e._v("Environment variables")]),e._v(" can be tailored to your needs. Some variables require additional storage space.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Login as root")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Create a folder for BTCPay")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" BTCPayServer\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" BTCPayServer\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Clone this repository")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone https://github.com/btcpayserver/btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Run btcpay-setup.sh with the right parameters")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_HOST")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btcpay.EXAMPLE.com"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("NBITCOIN_NETWORK")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"mainnet"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO1")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btc"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"opt-save-storage-s"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_REVERSEPROXY")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"nginx"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_LIGHTNING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"clightning"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_ENABLE_SSH")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("true\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh -i\n\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("exit")]),e._v("\n")])])]),t("p",[t("code",[e._v("btcpay-setup.sh")]),e._v(" will then:")]),e._v(" "),t("ul",[t("li",[e._v("Install Docker")]),e._v(" "),t("li",[e._v("Install Docker-Compose")]),e._v(" "),t("li",[e._v("Make sure BTCPay starts at reboot via upstart or systemd")]),e._v(" "),t("li",[e._v("Setup environment variables to use BTCPay utilities")]),e._v(" "),t("li",[e._v("Add BTCPay utilities in /usr/bin")]),e._v(" "),t("li",[e._v("Start BTCPay Server")])]),e._v(" "),t("p",[e._v("Video below guides you step by step on how to set up BTCPay Server on a VPS with Docker.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/x6hqTFgHqhA/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=x6hqTFgHqhA",title:"YouTube","data-id":"x6hqTFgHqhA"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/x6hqTFgHqhA?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("Check out this video if you're interested in learning more about setting up "),t("a",{attrs:{href:"https://www.youtube.com/playlist?list=PLH4m2oS2ratfaprAFx9E3ZDjwxNKvCk4e",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay with Docker Compose"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("figure",[t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/btcpayserver/",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:"https://img.shields.io/docker/automated/btcpayserver/btcpayserver.svg",alt:"Docker automated build",title:"Docker automated build"}}),t("OutboundLink")],1)]),e._v(" "),t("h1",{attrs:{id:"environment-variables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#environment-variables"}},[e._v("#")]),e._v(" Environment variables")]),e._v(" "),t("p",[t("code",[e._v("btcpay-setup.sh")]),e._v(" will use the following environment variables:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("BTCPAY_HOST")]),e._v(": The hostname of your website (eg. "),t("code",[e._v("btcpay.example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAY_ADDITIONAL_HOSTS")]),e._v(": Optional, specify additional domains to your BTCPayServer with https support if enabled. (eg. example2.com,example3.com)")]),e._v(" "),t("li",[t("code",[e._v("REVERSEPROXY_HTTP_PORT")]),e._v(": The public port the reverse proxy binds to for HTTP traffic (default: 80)")]),e._v(" "),t("li",[t("code",[e._v("REVERSEPROXY_HTTPS_PORT")]),e._v(": The public port the reverse proxy binds to for HTTPS traffic (default: 443)")]),e._v(" "),t("li",[t("code",[e._v("REVERSEPROXY_DEFAULT_HOST")]),e._v(": Optional, if using a reverse proxy nginx, specify which website should be presented if the server is accessed by its IP or by an unrecognized domain name.")]),e._v(" "),t("li",[t("code",[e._v("NOREVERSEPROXY_HTTP_PORT")]),e._v(": Optional, if not using a reverse proxy, specify which port should be opened for HTTP traffic. (default: 80)")]),e._v(" "),t("li",[t("code",[e._v("NBITCOIN_NETWORK")]),e._v(": The type of network to use (eg. "),t("code",[e._v("mainnet")]),e._v(", "),t("code",[e._v("testnet")]),e._v(", or "),t("code",[e._v("regtest")]),e._v(". Default: "),t("code",[e._v("mainnet")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("LIGHTNING_ALIAS")]),e._v(": An alias for your lightning network node, if used")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_CRYPTO1")]),e._v(": First supported crypto currency (eg. "),t("code",[e._v("btc")]),e._v(", "),t("code",[e._v("ltc")]),e._v(". Default: "),t("code",[e._v("btc")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_CRYPTO2")]),e._v(": Second supported crypto currency (eg. "),t("code",[e._v("btc")]),e._v(", "),t("code",[e._v("ltc")]),e._v(". Default: "),t("code",[e._v("(empty)")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_CRYPTON")]),e._v(": N'th supported crypto currency where N is 9 at maximum. (eg. "),t("code",[e._v("btc")]),e._v(", "),t("code",[e._v("ltc")]),e._v(". Default: "),t("code",[e._v("(empty)")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_REVERSEPROXY")]),e._v(": Specify reverse proxy to use; NGinx has HTTPS support. (eg. "),t("code",[e._v("nginx")]),e._v(", "),t("code",[e._v("traefik")]),e._v(", "),t("code",[e._v("(empty)")]),e._v(". Default: "),t("code",[e._v("nginx")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_LIGHTNING")]),e._v(": Lightning network implementation to use (eg. "),t("code",[e._v("clightning")]),e._v(", "),t("code",[e._v("lnd")]),e._v(", Default: "),t("code",[e._v("(empty)")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_SUBNAME")]),e._v(": The subname of the generated docker-compose file, where the full name is "),t("code",[e._v("Generated/docker-compose.SUBNAME.yml")]),e._v(" (Default: "),t("code",[e._v("generated")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(": Semicolon-separated list of additional fragments you want to use (eg. "),t("code",[e._v("opt-save-storage")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("LETSENCRYPT_EMAIL")]),e._v(": An email will be sent to this address if certificate expires and fails to renew automatically (eg. "),t("code",[e._v("me@example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("ACME_CA_URI")]),e._v(": The API endpoint to ask for HTTPS certificate (Default: "),t("code",[e._v("production")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAY_ENABLE_SSH")]),e._v(": Optional, gives BTCPay Server SSH access to the host by allowing it to edit authorized_keys of the host, it can be used for managing the authorized_keys or updating BTCPay Server directly through the website. (Default: false)")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_DOCKER_IMAGE")]),e._v(": Optional, Specify which generator image to use if you have customized the C# generator. Set to "),t("code",[e._v("btcpayserver/docker-compose-generator:local")]),e._v(" to build the generator locally at runtime.")]),e._v(" "),t("li",[t("code",[e._v("BTCPAY_IMAGE")]),e._v(": Optional, Specify which btcpayserver image to use if you have a customized btcpayserver.")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_EXCLUDE_FRAGMENTS")]),e._v(": Semicolon-separated list of fragments you want to forcefully exclude (eg. "),t("code",[e._v("litecoin-clightning")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("TOR_RELAY_NICKNAME")]),e._v(": If tor relay is activated with opt-add-tor-relay, the relay nickname")]),e._v(" "),t("li",[t("code",[e._v("TOR_RELAY_EMAIL")]),e._v(": If tor relay is activated with opt-add-tor-relay, the email for Tor to contact you regarding your relay")])]),e._v(" "),t("p",[e._v("Additionally, there are specific environment variables for some addons:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("LIBREPATRON_HOST")]),e._v(": If libre patron is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-librepatron.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-librepatron"),t("OutboundLink")],1),e._v(", the hostname of your libre patron website (eg. "),t("code",[e._v("librepatron.example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("ZAMMAD_HOST")]),e._v(": If zammad is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-zammad.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-zammad"),t("OutboundLink")],1),e._v(", the hostname of your zammad website (eg. "),t("code",[e._v("zammad.example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("WOOCOMMERCE_HOST")]),e._v(": If woocommerce is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-woocommerce.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-woocommerce"),t("OutboundLink")],1),e._v(", the hostname of your woocommerce website (eg. "),t("code",[e._v("store.example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("EPS_XPUB")]),e._v(": If Electrum Personal Server (EPS) is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-electrum-ps.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-electrum-ps"),t("OutboundLink")],1),e._v(", you must set the Extended Public Key (XPUB, YPUB or ZPUB) of the wallet you want to use, before first run of the EPS server. If you accidently start EPS without this, it will not work properly as the model of EPS is to monitor only specified wallets.")]),e._v(" "),t("li",[e._v("If Bitcoin Wallet Tracker is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-bwt.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-bwt"),t("OutboundLink")],1),e._v(", you can use "),t("code",[e._v("BWT_XPUB")]),e._v("/"),t("code",[e._v("BWT_XPUB_*")]),e._v(" (to set your XPUB/YPUB/ZPUB), "),t("code",[e._v("BWT_DESCRIPTOR")]),e._v("/"),t("code",[e._v("BWT_DESCRIPTOR_*")]),e._v(" (for script descriptors), "),t("code",[e._v("BWT_RESCAN_SINCE")]),e._v(" (set to the wallet creation date in YYYY-MM-DD to speed up the rescan), "),t("code",[e._v("BWT_BITCOIND_WALLET")]),e._v(" and "),t("code",[e._v("BWT_GAP_LIMIT")]),e._v(".")]),e._v(" "),t("li",[t("code",[e._v("LND_WTCLIENT_SWEEP_FEE")]),e._v(": If LND watchtower is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-wtclient.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-wtclient"),t("OutboundLink")],1),e._v(", you can use "),t("code",[e._v("LND_WTCLIENT_SWEEP_FEE")]),e._v(" to change the sweep fee used in constructing the justice transaction (default is 10 sat/byte)")]),e._v(" "),t("li",[t("code",[e._v("FIREFLY_HOST")]),e._v(": If fireflyiii is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-fireflyiii.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-fireflyiii"),t("OutboundLink")],1),e._v(", the hostname of your fireflyiii website (eg. "),t("code",[e._v("firefly.example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("CLOUDFLARE_TUNNEL_TOKEN")]),e._v(": Used to expose your instance to clearnet with a Cloudflare Argo Tunnel (if cloudflare tunnel is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-cloudflared.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-cloudflared"),t("OutboundLink")],1),e._v(", for setup instructions "),t("RouterLink",{attrs:{to:"/Docker/cloudflare-tunnel/"}},[e._v("see documentation")]),e._v(")")],1)]),e._v(" "),t("h1",{attrs:{id:"tooling"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tooling"}},[e._v("#")]),e._v(" Tooling")]),e._v(" "),t("p",[e._v("A wide variety of useful scripts are available once BTCPay is installed:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("bitcoin-cli.sh")]),e._v(": Access your Bitcoin node instance (for RPC)")]),e._v(" "),t("li",[t("code",[e._v("bitcoin-lightning-cli.sh")]),e._v(": Access your CLN node instance (for RPC)")]),e._v(" "),t("li",[t("code",[e._v("changedomain.sh")]),e._v(": Change the domain of your BTCPayServer (remember to disable 2FA/U2F first, as you risk being unable to log in to your account)")]),e._v(" "),t("li",[t("code",[e._v("btcpay-update.sh")]),e._v(": Update BTCPayServer to the latest version")]),e._v(" "),t("li",[t("code",[e._v("btcpay-up.sh")]),e._v(": Run "),t("code",[e._v("docker-compose up")])]),e._v(" "),t("li",[t("code",[e._v("btcpay-down.sh")]),e._v(": Run "),t("code",[e._v("docker-compose down")])]),e._v(" "),t("li",[t("code",[e._v("btcpay-setup.sh")]),e._v(": Change the settings of your server")]),e._v(" "),t("li",[t("code",[e._v("btcpay-clean.sh")]),e._v(": Purge any unused docker images")]),e._v(" "),t("li",[t("code",[e._v(". ./btcpay-setup.sh")]),e._v(": Information about additional parameters")]),e._v(" "),t("li",[t("code",[e._v(". ./btcpay-setup.sh -i")]),e._v(": Set up your BTCPayServer")]),e._v(" "),t("li",[t("code",[e._v("btcpay-restart.sh")]),e._v(": Restart your BTCPayServer")])]),e._v(" "),t("h1",{attrs:{id:"under-the-hood"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#under-the-hood"}},[e._v("#")]),e._v(" Under the hood")]),e._v(" "),t("h2",{attrs:{id:"generated-docker-compose"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#generated-docker-compose"}},[e._v("#")]),e._v(" Generated docker-compose")]),e._v(" "),t("p",[e._v("When you run "),t("code",[e._v("btcpay-setup.sh")]),e._v(", your environment variables are used by "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/build.sh",target:"_blank",rel:"noopener noreferrer"}},[e._v("build.sh"),t("OutboundLink")],1),e._v(" (or "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/build.ps1",target:"_blank",rel:"noopener noreferrer"}},[e._v("build.ps1"),t("OutboundLink")],1),e._v(") to generate a docker-compose adapted for your needs. For the full list of options, see: "),t("a",{attrs:{href:"#environment-variables"}},[e._v("Environment variables")])]),e._v(" "),t("p",[e._v("By default, the generated file is "),t("code",[e._v("Generated/docker-compose.generated.yml")]),e._v(", constructed from the relevant "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments",target:"_blank",rel:"noopener noreferrer"}},[e._v("Docker fragments"),t("OutboundLink")],1),e._v(" for your setup.")]),e._v(" "),t("p",[e._v("Available "),t("code",[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(" currently are:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-storage.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-storage"),t("OutboundLink")],1),e._v(" will keep around 1 year of blocks (prune BTC for 100 GB)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-storage-s.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-storage-s"),t("OutboundLink")],1),e._v(" will keep around 6 months of blocks (prune BTC for 50 GB)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-storage-xs.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-storage-xs"),t("OutboundLink")],1),e._v(" will keep around 3 months of blocks (prune BTC for 25 GB)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-storage-xxs.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-storage-xxs"),t("OutboundLink")],1),e._v(" will keep around 2 weeks of blocks (prune BTC for 5 GB) (lightning not supported)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-autocompact",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-autocompact"),t("OutboundLink")],1),e._v(" will activate auto compacting of LND database.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-autopilot.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-autopilot"),t("OutboundLink")],1),e._v(" will activate auto pilot on LND. (5 channels, 60% of allocation)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-keysend.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-keysend"),t("OutboundLink")],1),e._v(" will activate keysend on LND.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-wtclient.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-wtclient"),t("OutboundLink")],1),e._v(" will activate the watchtower client on LND. "),t("code",[e._v("LND_WTCLIENT_SWEEP_FEE")]),e._v(" can be used to override the default 10 sat/byte justice transaction fee")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-watchtower.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-watchtower"),t("OutboundLink")],1),e._v(" will activate the LND watchtower RPC")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-memory.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-memory"),t("OutboundLink")],1),e._v(" will decrease the default dbcache at the expense of longer synchronization time. (Useful if your machine is less than 2GB)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-more-memory.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-more-memory"),t("OutboundLink")],1),e._v(" will increase the default dbcache to make synchronization faster (Useful if your machine is has around 4GB)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-btcqbo.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-btcqbo"),t("OutboundLink")],1),e._v(" will allow you to create an invoice on Quickbooks which include a way for your customer to pay on BTCPay Server (More information on this "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/btcqbo/",target:"_blank",rel:"noopener noreferrer"}},[e._v("github repository"),t("OutboundLink")],1),e._v(", this add-on is maintained by "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr",target:"_blank",rel:"noopener noreferrer"}},[e._v("JeffVandrewJr"),t("OutboundLink")],1),e._v(", see more on "),t("a",{attrs:{href:"https://www.youtube.com/watch?v=srgwL9ozg6c",target:"_blank",rel:"noopener noreferrer"}},[e._v("this video"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-librepatron.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-librepatron"),t("OutboundLink")],1),e._v(", for a self-hosted Patreon alternative backed by BTCPay (More information on this "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron",target:"_blank",rel:"noopener noreferrer"}},[e._v("github repository"),t("OutboundLink")],1),e._v(", this add-on is maintained by "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr",target:"_blank",rel:"noopener noreferrer"}},[e._v("JeffVandrewJr"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-woocommerce.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-woocommerce"),t("OutboundLink")],1),e._v(", for a self-hosted woocommerce with BTCPay Server plugin pre installed.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-tor.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-tor"),t("OutboundLink")],1),e._v(", for exposing BTCPayServer, Woocommerce, your lightning nodes as hidden services and accept onion peers for your full node. Warning: This options is for working around NAT and firewall problems as well as to help protect your customer's privacy. This will not protect your privacy against a targeted attack against you.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-btctransmuter.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-btctransmuter"),t("OutboundLink")],1),e._v(", for a self-hosted IFTTT style service for crypto services such as fiat settlement. (More information on this "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcTransmuter/",target:"_blank",rel:"noopener noreferrer"}},[e._v("github repository"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-txindex.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-txindex"),t("OutboundLink")],1),e._v(", to enable txindex=1 in bitcoin.conf if you require txindexing for Bisq, DOJO, etc.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-expose-unsafe.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-expose-unsafe"),t("OutboundLink")],1),e._v(", to unsafely expose bitcoind P2P port 8333 if you require P2P for Bisq, DOJO, Esplora, etc. WARNING: ONLY USE ON TRUSTED LAN OR WITH FIREWALL RULES WHITELISTING SPECIFIC HOSTS")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-tor-relay.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-tor-relay"),t("OutboundLink")],1),e._v(", for a non-exit tor relay. Make sure to have port 9001 accessible externally. "),t("a",{attrs:{href:"https://community.torproject.org/relay/community-resources/eff-tor-legal-faq",target:"_blank",rel:"noopener noreferrer"}},[e._v("Please read the legal implications of running a tor relay"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://trac.torproject.org/projects/tor/wiki/TorRelayGuide#RelayRequirements",target:"_blank",rel:"noopener noreferrer"}},[e._v("what resources are used to operate the relay"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-electrumx.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-electrumx"),t("OutboundLink")],1),e._v(", to integrate a full ElectrumX server (from official source) with BTCPay, using the BTCPay server's full bitcoin node for complete privacy when using your own Electrum wallet. You can also open port 50002 up to the internet on your router etc, to be part of the ElectrumX network, helping other Electrum wallet users to get connected. The bitcoin option "),t("code",[e._v("-txindex")]),e._v(" is mandatory for ElectrumX, and this fragment will enable it on your BTCPay server automatically - No need to use the fragment opt-txindex.yml.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-electrum-ps.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-electrum-ps"),t("OutboundLink")],1),e._v(", to integrate Electrum Personal Server (EPS) with BTCPay (EPS is a single-user alternative to the ElectrumX Server option above). EPS will also use the BTCPay server's full bitcoin node for complete privacy when using your own Electrum wallet, for your own personal use (i.e. other users cannot use your server to verify transactions). Also, the bitcoin option "),t("code",[e._v("-txindex")]),e._v(" is NOT mandatory for EPS, and it will run on a pruned node (unlike ElectrumX). You will need to add your XPUB/YPUB/ZPUB as environment variable "),t("code",[e._v("EPS_XPUB")]),e._v(" before enabling EPS for the first time (see above section on environment variables, and see "),t("RouterLink",{attrs:{to:"/ElectrumPersonalServer/"}},[e._v("full documentation")]),e._v(" for details).")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-bwt.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-electrum-bwt"),t("OutboundLink")],1),e._v(", to integrate the "),t("a",{attrs:{href:"https://github.com/bwt-dev/bwt",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bitcoin Wallet Tracker"),t("OutboundLink")],1),e._v(" Electrum server, which uses a personal wallet index model similar to that of EPS. You will need to set "),t("code",[e._v("BWT_XPUB")]),e._v(" with your XPUB/YPUB/ZPUB (see environment variables section). The server will only be available locally and through an onion service.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-configurator.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-configurator"),t("OutboundLink")],1),e._v(", to integrate the "),t("a",{attrs:{href:"https://install.btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Server Configurator"),t("OutboundLink")],1),e._v(" to manage your BTCPay deployment through a UI, and to allow new deployments elsewhere easily.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-pihole.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-pihole"),t("OutboundLink")],1),e._v(" ("),t("RouterLink",{attrs:{to:"/Docker/pihole/"}},[e._v("See the documentation")]),e._v(")")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-bluewallet-lndhub.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-bluewallet-lndhub"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/BlueWallet/LndHub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bluewallet LNDHub"),t("OutboundLink")],1),e._v(" - Use non-custodial LND Lightning directly from your Bluewallet, and freely let others open accounts on your node. Fragment maintained by "),t("a",{attrs:{href:"https://github.com/maltokyo",target:"_blank",rel:"noopener noreferrer"}},[e._v("maltokyo"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-ndlc.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-ndlc"),t("OutboundLink")],1),e._v(" ("),t("RouterLink",{attrs:{to:"/Docker/ndlc/"}},[e._v("See the documentation")]),e._v(")")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-lightning-terminal.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-lightning-terminal"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/lightninglabs/lightning-terminal",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lightning Terminal/LiT"),t("OutboundLink")],1),e._v(". Maintained by "),t("a",{attrs:{href:"https://github.com/dennisreimann",target:"_blank",rel:"noopener noreferrer"}},[e._v("dennisreimann"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-mempool.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-mempool"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/mempool/mempool",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mempool"),t("OutboundLink")],1),e._v(". Maintained by "),t("a",{attrs:{href:"https://github.com/dennisreimann",target:"_blank",rel:"noopener noreferrer"}},[e._v("dennisreimann"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-sphinxrelay.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-sphinxrelay"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/stakwork/sphinx-relay",target:"_blank",rel:"noopener noreferrer"}},[e._v("Sphinx Relay"),t("OutboundLink")],1),e._v(". Maintained by "),t("a",{attrs:{href:"https://github.com/dennisreimann",target:"_blank",rel:"noopener noreferrer"}},[e._v("dennisreimann"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-tallycoin-connect.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-tallycoin-connect"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/djbooth007/tallycoin_connect",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tallycoin Connect"),t("OutboundLink")],1),e._v(". Maintained by "),t("a",{attrs:{href:"https://github.com/dennisreimann",target:"_blank",rel:"noopener noreferrer"}},[e._v("dennisreimann"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-thunderhub.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-thunderhub"),t("OutboundLink")],1),e._v(" for a LND Lightning Node Manager in your Browser. Maintained by "),t("a",{attrs:{href:"https://github.com/apotdevin",target:"_blank",rel:"noopener noreferrer"}},[e._v("apotdevin"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-teos.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-teos"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/talaia-labs/python-teos",target:"_blank",rel:"noopener noreferrer"}},[e._v("The Eye Of Satoshi"),t("OutboundLink")],1),e._v(", a BOLT13 Lightning Watchtower. Use port 9814 on your server or Tor to connect.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-chatwoot.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-chatwoot"),t("OutboundLink")],1),e._v(" for open source chat support system. ("),t("RouterLink",{attrs:{to:"/Docker/chatwoot/"}},[e._v("See the documentation")]),e._v(")")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-zammad.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-zammad"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://zammad.com/features",target:"_blank",rel:"noopener noreferrer"}},[e._v("Zammad"),t("OutboundLink")],1),e._v(", a web based open source helpdesk/customer support system with many features to manage customer communication via several channels like telephone, facebook, twitter, chat and e-mails")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-monero-expose.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-monero-expose"),t("OutboundLink")],1),e._v(" to expose monero node's RPC port at 127.0.0.1:18081 to connect your own wallet. Use f.e. ssh port forwarding to forward to your own computer.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-fireflyiii.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-fireflyiii"),t("OutboundLink")],1),e._v(" ("),t("RouterLink",{attrs:{to:"/Docker/fireflyiii/"}},[e._v("See the documentation")]),e._v(")")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-joinmarket.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-joinmarket"),t("OutboundLink")],1),e._v(" ("),t("RouterLink",{attrs:{to:"/Docker/joinmarket/"}},[e._v("See the documentation")]),e._v(")")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-helipad.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-helipad"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/Podcastindex-org/helipad",target:"_blank",rel:"noopener noreferrer"}},[e._v("Podcastindex.org Helipad"),t("OutboundLink")],1),e._v(". Requires LND.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-nostr-relay.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-nostr-relay"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/kukks/Nnostr",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nostr Relay"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-cloudflared.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-cloudflared"),t("OutboundLink")],1),e._v(" to expose your local server on clearnet painlessly ("),t("RouterLink",{attrs:{to:"/Docker/cloudflare-tunnel/"}},[e._v("see documentation")]),e._v(").")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-torq.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-torq"),t("OutboundLink")],1),e._v(" to install "),t("a",{attrs:{href:"https://github.com/lncapital/torq",target:"_blank",rel:"noopener noreferrer"}},[e._v("Torq"),t("OutboundLink")],1),e._v(" node management application. Requires LND.")])]),e._v(" "),t("p",[e._v("You can also create your own "),t("a",{attrs:{href:"#how-can-i-customize-the-generated-docker-compose-file"}},[e._v("custom fragments")]),e._v(".")]),e._v(" "),t("p",[e._v("If you want to add an option to "),t("code",[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(" and re-configure your install:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(';opt-lnd-autopilot"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" btcpay-setup.sh -i\n")])])]),t("p",[e._v("For example, if you want "),t("code",[e._v("btc")]),e._v(" and "),t("code",[e._v("ltc")]),e._v(" support with "),t("code",[e._v("nginx")]),e._v(" and "),t("code",[e._v("clightning")]),e._v(" inside "),t("code",[e._v("Generated/docker-compose.custom.yml")]),e._v(":")]),e._v(" "),t("p",[e._v("Note: The first run might take a while, but following runs are instantaneous.")]),e._v(" "),t("p",[e._v("On Windows (run in "),t("a",{attrs:{href:"https://docs.microsoft.com/en-us/powershell/scripting/windows-powershell/starting-windows-powershell",target:"_blank",rel:"noopener noreferrer"}},[e._v("powershell"),t("OutboundLink")],1),e._v("):")]),e._v(" "),t("div",{staticClass:"language-powershell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-powershell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("Invoke-Command")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_CRYPTO1")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btc"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_CRYPTO2")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"ltc"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_REVERSEPROXY")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"nginx"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_LIGHTNING")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"clightning"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_SUBNAME")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"custom"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("\\build"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("ps1\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("p",[e._v("On Linux:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO1")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btc"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"ltc"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_REVERSEPROXY")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"nginx"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_LIGHTNING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"clightning"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_SUBNAME")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"custom"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n./build.sh\n")])])]),t("p",[e._v("Next, you will need to configure the runtime environment variables for "),t("code",[e._v("Generated/docker-compose.custom.yml")]),e._v(":")]),e._v(" "),t("ul",[t("li",[e._v("If you are using NGinx, "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/Production/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("read this"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[e._v("If you are not using NGinx, "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/Production-NoReverseProxy/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("read this instead"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"again-what-does-btcpay-setupsh-do"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#again-what-does-btcpay-setupsh-do"}},[e._v("#")]),e._v(" Again, what does "),t("code",[e._v("btcpay-setup.sh")]),e._v(" do?")]),e._v(" "),t("p",[t("code",[e._v("btcpay-setup.sh")]),e._v(" is a utility which does the following:")]),e._v(" "),t("ol",[t("li",[e._v("Makes sure docker and docker-compose are installed on your system")]),e._v(" "),t("li",[e._v("Generates a docker-compose via "),t("code",[e._v("./build.sh")])]),e._v(" "),t("li",[e._v("Sets up an "),t("a",{attrs:{href:"https://docs.docker.com/compose/env-file/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Environment File"),t("OutboundLink")],1),e._v(" to configure your docker-compose")]),e._v(" "),t("li",[e._v("Sets up environment variables so the tools described in "),t("a",{attrs:{href:"#tooling"}},[e._v("Tooling")]),e._v(" can work")]),e._v(" "),t("li",[e._v("Adds symlinks of those tools into "),t("code",[e._v("/usr/bin")])]),e._v(" "),t("li",[e._v("Makes sure BTCPay restarts on reboot via upstart or systemd")]),e._v(" "),t("li",[e._v("Starts BTCPay via docker-compose")])]),e._v(" "),t("h2",{attrs:{id:"overview-of-files-generated-by-btcpay-setupsh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview-of-files-generated-by-btcpay-setupsh"}},[e._v("#")]),e._v(" Overview of files generated by "),t("code",[e._v("btcpay-setup.sh")])]),e._v(" "),t("p",[t("code",[e._v("/etc/profile.d/btcpay-env.sh")]),e._v(" ensures that your environment variables are correctly setup when you login, so you can use the tools:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_OLD_PREGEN")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"false"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO1")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btc"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO3")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO4")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO5")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO6")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO7")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO8")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO9")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_LIGHTNING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"clightning"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_REVERSEPROXY")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"nginx"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_DOCKER_COMPOSE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"/var/lib/waagent/custom-script/download/0/btcpayserver-docker/Production/docker-compose.generated.yml"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_BASE_DIRECTORY")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"/var/lib/waagent/custom-script/download/0"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_ENV_FILE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"/var/lib/waagent/custom-script/download/0/.env"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_HOST_SSHKEYFILE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"/root/.ssh/id_rsa_btcpay"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("if")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("cat")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_ENV_FILE")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&>")]),e._v(" /dev/null"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("then")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("grep")]),e._v(" -v "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v("'^#'")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_ENV_FILE")]),e._v('"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("xargs")]),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("fi")]),e._v("\n")])])]),t("p",[t("code",[e._v("/etc/systemd/system/btcpayserver.service")]),e._v(" ensures that you can control btcpay via "),t("code",[e._v("systemctl")]),e._v(", and that BTCPayServer starts on reboot:")]),e._v(" "),t("div",{staticClass:"language-ini extra-class"},[t("pre",{pre:!0,attrs:{class:"language-ini"}},[t("code",[t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("Unit")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("Description")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("BTCPayServer service")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("After")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("docker.service network-online.target")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("Requires")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("docker.service network-online.target")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("Service")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("oneshot")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("RemainAfterExit")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("yes")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("ExecStart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd \"$BTCPAY_BASE_DIRECTORY/btcpayserver-docker\" && . helpers.sh && btcpay_up'")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("ExecStop")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd \"$BTCPAY_BASE_DIRECTORY/btcpayserver-docker\" && . helpers.sh && btcpay_down'")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("ExecReload")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd \"$BTCPAY_BASE_DIRECTORY/btcpayserver-docker\" && . helpers.sh && btcpay_restart'")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("Install")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("WantedBy")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("multi-user.target")]),e._v("\n")])])]),t("p",[t("code",[e._v(".env")]),e._v(" ("),t("code",[e._v("$BTCPAY_ENV_FILE")]),e._v(") contains environment variables passed to the containers managed by your docker-compose:")]),e._v(" "),t("div",{staticClass:"language-ini extra-class"},[t("pre",{pre:!0,attrs:{class:"language-ini"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("BTCPAY_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("btcpay.EXAMPLE.com")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("ACME_CA_URI")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("production")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("NBITCOIN_NETWORK")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("mainnet")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("LETSENCRYPT_EMAIL")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("me@EXAMPLE.com")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("BTCPAY_SSHTRUSTEDFINGERPRINTS")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("SHA256:eSCD7NtQ/Q6IBl2iRB9caAQ3lDZd8s8iUL6SdeNnhpA")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("BTCPAY_SSHKEYFILE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("/datadir/id_rsa")]),e._v("\n")])])]),t("h1",{attrs:{id:"how-can-i-add-an-altcoin-to-btcpayserver"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-add-an-altcoin-to-btcpayserver"}},[e._v("#")]),e._v(" How can I add an altcoin to BTCPayServer?")]),e._v(" "),t("ol",[t("li",[e._v("Add support for your crypto to "),t("a",{attrs:{href:"https://github.com/MetacoSA/NBitcoin/tree/master/NBitcoin.Altcoins",target:"_blank",rel:"noopener noreferrer"}},[e._v("NBitcoin"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://github.com/dgarage/NBXplorer",target:"_blank",rel:"noopener noreferrer"}},[e._v("NBxplorer"),t("OutboundLink")],1),e._v(", and "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPayServer"),t("OutboundLink")],1),e._v(". (Use examples from other coins)")]),e._v(" "),t("li",[e._v("Create your own docker image ("),t("a",{attrs:{href:"https://hub.docker.com/r/nicolasdorier/docker-bitcoin/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Example for BTC"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("Create a docker-compose fragment ("),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/bitcoin.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("Example for BTC"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("Add your "),t("code",[e._v("CryptoDefinition")]),e._v(" ("),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/src/CryptoDefinition.cs",target:"_blank",rel:"noopener noreferrer"}},[e._v("Example for BTC"),t("OutboundLink")],1),e._v(")")])]),e._v(" "),t("p",[t("code",[e._v("build.sh")]),e._v(" is using a pre-built image of the "),t("code",[e._v("docker-compose generator")]),e._v(" on "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/docker-compose-generator/",target:"_blank",rel:"noopener noreferrer"}},[e._v("docker hub"),t("OutboundLink")],1),e._v(".\nIf you modify the code source of "),t("code",[e._v("docker-compose generator")]),e._v(" (for example, the "),t("code",[e._v("CryptoDefinition")]),e._v(" "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/src/CryptoDefinition.cs",target:"_blank",rel:"noopener noreferrer"}},[e._v("Example for BTC"),t("OutboundLink")],1),e._v("), you need to configure "),t("code",[e._v("build.sh")]),e._v(" to use your own image by setting the environment variable "),t("code",[e._v("BTCPAYGEN_DOCKER_IMAGE")]),e._v(" to "),t("code",[e._v("btcpayserver/docker-compose-generator:local")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" docker-compose-generator\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_DOCKER_IMAGE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btcpayserver/docker-compose-generator:local"')]),e._v("\n")])])]),t("p",[e._v("Or on powershell:")]),e._v(" "),t("div",{staticClass:"language-powershell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-powershell"}},[t("code",[e._v("cd docker-compose-generator\n"),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_DOCKER_IMAGE")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btcpayserver/docker-compose-generator:local"')]),e._v("\n")])])]),t("p",[e._v("Then run "),t("code",[e._v("./build.sh")]),e._v(" or "),t("code",[e._v(". .\\build.ps1")]),e._v(".\nThis will generate your docker-compose in the "),t("code",[e._v("Generated")]),e._v(" folder, which you can then run and test.")]),e._v(" "),t("p",[e._v("Note that BTCPayServer developers will not spend excessive time testing your image, so make sure it works.")]),e._v(" "),t("h1",{attrs:{id:"support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#support"}},[e._v("#")]),e._v(" Support")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Image")]),e._v(" "),t("th",[e._v("Version")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("x64")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("arm32v7")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("arm64v8")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("links")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[e._v("btcpayserver/docker-compose-generator")]),e._v(" "),t("td",[e._v("latest")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-docker/dcg-latest/docker-compose-generator/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-docker/dcg-latest/docker-compose-generator/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-docker/dcg-latest/docker-compose-generator/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/docker-compose-generator",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/docker-compose")]),e._v(" "),t("td",[e._v("1.28.6")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/docker-compose/1.28.6/docker-compose/1.28.6/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/docker-compose/1.28.6/docker-compose/1.28.6/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/docker-compose/1.28.6/docker-compose/1.28.6/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/docker-compose",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/lightning")]),e._v(" "),t("td",[e._v("v23.08")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lightning/basedon-v23.08/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lightning/basedon-v23.08/contrib/docker/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lightning/basedon-v23.08/contrib/docker/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("saubyk/c-lightning-rest")]),e._v(" "),t("td",[e._v("0.10.6")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/c-lightning-REST/v0.10.6/amd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/c-lightning-REST/v0.10.6/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/c-lightning-REST/v0.10.6/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Ride-The-Lightning/c-lightning-REST",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/saubyk/c-lightning-rest",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("shahanafarooqui/rtl")]),e._v(" "),t("td",[e._v("0.14.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/RTL/v0.14.0/dockerfiles/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/RTL/v0.14.0/dockerfiles/Dockerfile.arm32v7",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/RTL/v0.14.0/dockerfiles/Dockerfile.arm64v8",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Ride-The-Lightning/RTL",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/shahanafarooqui/rtl",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/lnd")]),e._v(" "),t("td",[e._v("v0.16.4-beta-1")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lnd/basedon-v0.16.4-beta-1/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lnd/basedon-v0.16.4-beta-1/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lnd/basedon-v0.16.4-beta-1/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/bitcoin")]),e._v(" "),t("td",[e._v("25.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Bitcoin/25.0/Bitcoin/25.0/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Bitcoin/25.0/Bitcoin/25.0/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Bitcoin/25.0/Bitcoin/25.0/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/bitcoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/btcpayserver")]),e._v(" "),t("td",[e._v("1.11.6$?")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver/v1.11.6/amd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver/v1.11.6/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver/v1.11.6/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/monero")]),e._v(" "),t("td",[e._v("0.18.2.2-4")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Monero/0.18.2.2-4/Monero/0.18.2.2/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Monero/0.18.2.2-4/Monero/0.18.2.2/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Monero/0.18.2.2-4/Monero/0.18.2.2/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/monero",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("nicolasdorier/nbxplorer")]),e._v(" "),t("td",[e._v("2.3.66")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/nbxplorer/v2.3.66/Dockerfile.linuxamd64",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/nbxplorer/v2.3.66/Dockerfile.linuxarm32v7",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/nbxplorer/v2.3.66/Dockerfile.linuxarm64v8",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/dgarage/nbxplorer",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/nicolasdorier/nbxplorer",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/letsencrypt-nginx-proxy-companion")]),e._v(" "),t("td",[e._v("1.12.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion/v1.12.2/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion/v1.12.2/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion/v1.12.2/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/letsencrypt-nginx-proxy-companion",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("nginx")]),e._v(" "),t("td",[e._v("1.23.3")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/nginxinc/docker-nginx/1.23.2/stable/debian/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/nginxinc/docker-nginx/1.23.2/stable/debian/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/nginxinc/docker-nginx/1.23.2/stable/debian/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/nginxinc/docker-nginx",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/_/nginx",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/docker-gen")]),e._v(" "),t("td",[e._v("0.7.8")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-gen/v0.7.8/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-gen/v0.7.8/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-gen/v0.7.8/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/docker-gen",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/docker-gen",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/btctransmuter")]),e._v(" "),t("td",[e._v("0.0.59")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btctransmuter/v0.0.59/Dockerfiles/amd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btctransmuter/v0.0.59/Dockerfiles/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btctransmuter/v0.0.59/Dockerfiles/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/btctransmuter",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/btctransmuter",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/cloudflared")]),e._v(" "),t("td",[e._v("2023.7.3")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Cloudflared/2023.7.3/Cloudflared/2023.7.3/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Cloudflared/2023.7.3/Cloudflared/2023.7.3/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Cloudflared/2023.7.3/Cloudflared/2023.7.3/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/cloudflared",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/btcpayserver-configurator")]),e._v(" "),t("td",[e._v("0.0.21")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-configurator/v0.0.21/Dockerfiles/amd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-configurator/v0.0.21/Dockerfiles/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-configurator/v0.0.21/Dockerfiles/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-configurator",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/btcpayserver-configurator",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/eps")]),e._v(" "),t("td",[e._v("0.2.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/EPS/0.2.2/EPS/0.2.2/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/EPS/0.2.2/EPS/0.2.2/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/EPS/0.2.2/EPS/0.2.2/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/eps",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/joinmarket")]),e._v(" "),t("td",[e._v("0.9.5")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/JoinMarket/0.9.5/JoinMarket/0.9.5/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/JoinMarket/0.9.5/JoinMarket/0.9.5/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/JoinMarket/0.9.5/JoinMarket/0.9.5/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/joinmarket",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("nicolasdorier/ndlc-cli")]),e._v(" "),t("td",[e._v("1.0.1")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/ndlc/releases/1.0.1/amd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/ndlc/releases/1.0.1/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/ndlc/releases/1.0.1/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/dgarage/ndlc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/nicolasdorier/ndlc-cli",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("pihole/pihole")]),e._v(" "),t("td",[e._v("2023.05.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/pi-hole/docker-pi-hole/2023.05.2/src/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/pi-hole/docker-pi-hole/2023.05.2/src/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/pi-hole/docker-pi-hole/2023.05.2/src/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/pi-hole/docker-pi-hole",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/pihole/pihole",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/tor")]),e._v(" "),t("td",[e._v("0.4.7.10")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Tor/0.4.7.10/Tor/0.4.7.10/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Tor/0.4.7.10/Tor/0.4.7.10/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Tor/0.4.7.10/Tor/0.4.7.10/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/tor",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/woocommerce")]),e._v(" "),t("td",[e._v("3.1.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/WooCommerce/3.1.0/WooCommerce/3.1.0/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/WooCommerce/3.1.0/WooCommerce/3.1.0/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/woocommerce",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/postgres")]),e._v(" "),t("td",[e._v("13.10")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Postgres/13.10/Postgres/13.10/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Postgres/13.10/Postgres/13.10/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Postgres/13.10/Postgres/13.10/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/postgres",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("kamigawabul/btglnd")]),e._v(" "),t("td",[e._v("latest")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/vutov/lnd/master/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/vutov/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/kamigawabul/btglnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("kamigawabul/docker-bitcoingold")]),e._v(" "),t("td",[e._v("0.15.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Vutov/docker-bitcoin/master/bitcoingold/0.15.2/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Vutov/docker-bitcoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/kamigawabul/docker-bitcoingold",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("acinq/eclair")]),e._v(" "),t("td",[e._v("release-0.7.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/ACINQ/eclair/v0.7.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/ACINQ/eclair",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/acinq/eclair",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("chekaz/docker-bitcoinplus")]),e._v(" "),t("td",[e._v("2.7.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/ChekaZ/docker/master/bitcoinplus/2.7.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/ChekaZ/docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/chekaz/docker-bitcoinplus",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("dalijolijo/docker-bitcore")]),e._v(" "),t("td",[e._v("0.90.9.10")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dalijolijo/btcpayserver-docker-bitcore/master/docker-bitcored/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/dalijolijo/btcpayserver-docker-bitcore",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/dalijolijo/docker-bitcore",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/dash")]),e._v(" "),t("td",[e._v("19.2.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Dash/19.2.0/Dash/19.2.0/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Dash/19.2.0/Dash/19.2.0/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/dash",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/dogecoin")]),e._v(" "),t("td",[e._v("1.14.6")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Dogecoin/1.14.6/Dogecoin/1.14.6/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/dogecoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("chekaz/docker-feathercoin")]),e._v(" "),t("td",[e._v("0.16.3")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/ChekaZ/docker/master/feathercoin/0.16.3/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/ChekaZ/docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/chekaz/docker-feathercoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("groestlcoin/lightning")]),e._v(" "),t("td",[e._v("v23.05")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Groestlcoin/lightning/v23.05/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Groestlcoin/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/groestlcoin/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("groestlcoin/groestlcoin-lightning-charge")]),e._v(" "),t("td",[e._v("version-0.4.22")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Groestlcoin/groestlcoin-lightning-charge/v0.4.22/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Groestlcoin/groestlcoin-lightning-charge",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/groestlcoin/groestlcoin-lightning-charge",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("groestlcoin/groestlcoin-spark")]),e._v(" "),t("td",[e._v("version-0.2.16")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Groestlcoin/groestlcoin-spark/v0.2.16/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Groestlcoin/groestlcoin-spark",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/groestlcoin/groestlcoin-spark",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("groestlcoin/eclair")]),e._v(" "),t("td",[e._v("v0.6.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Groestlcoin/eclair/v0.6.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Groestlcoin/eclair",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/groestlcoin/eclair",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("groestlcoin/lnd")]),e._v(" "),t("td",[e._v("v0.10.0-grs")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Groestlcoin/lnd/v0.10.0-grs/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Groestlcoin/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/groestlcoin/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/groestlcoin")]),e._v(" "),t("td",[e._v("25.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Groestlcoin/25.0/Groestlcoin/25.0/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Groestlcoin/25.0/Groestlcoin/25.0/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Groestlcoin/25.0/Groestlcoin/25.0/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/groestlcoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/elements")]),e._v(" "),t("td",[e._v("22.1.1")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Elements/22.1.1/Elements/22.1.1/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Elements/22.1.1/Elements/22.1.1/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Elements/22.1.1/Elements/22.1.1/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/elements",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/litecoin")]),e._v(" "),t("td",[e._v("0.21.2.1-2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Litecoin/0.21.2.1-2/Litecoin/0.21.2.1/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Litecoin/0.21.2.1-2/Litecoin/0.21.2.1/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Litecoin/0.21.2.1-2/Litecoin/0.21.2.1/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/litecoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("wakiyamap/docker-monacoin")]),e._v(" "),t("td",[e._v("0.20.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/wakiyamap/docker-bitcoin/master/monacoin/0.20.2/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/wakiyamap/docker-bitcoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/wakiyamap/docker-monacoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("redis")]),e._v(" "),t("td",[e._v("6.2.2-buster")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/docker-library/redis/f1a8498333ae3ab340b5b39fbac1d7e1dc0d628c/5.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/docker-library/redis",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/_/redis",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("bluewalletorganization/lndhub")]),e._v(" "),t("td",[e._v("v1.4.1")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/BlueWallet/LndHub/v1.4.1/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/BlueWallet/LndHub/v1.4.1/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/BlueWallet/LndHub/v1.4.1/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/BlueWallet/LndHub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/bluewalletorganization/lndhub",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("jvandrew/btcqbo")]),e._v(" "),t("td",[e._v("0.3.36")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/JeffVandrewJr/btcqbo/v0.3.36/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/JeffVandrewJr/btcqbo",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/jvandrew/btcqbo",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("shesek/bwt")]),e._v(" "),t("td",[e._v("0.2.2-electrum")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/bwt-dev/bwt/v0.2.2/docker/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/bwt-dev/bwt/v0.2.2/docker/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/bwt-dev/bwt/v0.2.2/docker/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/bwt-dev/bwt",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/shesek/bwt",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("chatwoot/chatwoot")]),e._v(" "),t("td",[e._v("v1.7.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/chatwoot/chatwoot/v1.7.0/docker/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/chatwoot/chatwoot/v1.7.0/docker/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/chatwoot/chatwoot/v1.7.0/docker/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/chatwoot/chatwoot",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/chatwoot/chatwoot",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("lukechilds/electrumx")]),e._v(" "),t("td",[e._v("latest")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lukechilds/docker-electrumx/master/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/lukechilds/docker-electrumx",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/lukechilds/electrumx",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("fireflyiii/core")]),e._v(" "),t("td",[e._v("latest")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://dev.azure.com/Firefly-III/66fb773b-063e-42d7-b6a5-e7729a22e8b3/_apis/git/repositories/e9c3dcf8-4533-4ef1-83cc-75527cab3377/items?path=%2FDockerfile&versionDescriptor%5BversionOptions%5D=0&versionDescriptor%5BversionType%5D=0&versionDescriptor%5Bversion%5D=main&resolveLfs=true&%24format=octetStream&api-version=5.0&download=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://dev.azure.com/Firefly-III/66fb773b-063e-42d7-b6a5-e7729a22e8b3/_apis/git/repositories/e9c3dcf8-4533-4ef1-83cc-75527cab3377/items?path=%2FDockerfile&versionDescriptor%5BversionOptions%5D=0&versionDescriptor%5BversionType%5D=0&versionDescriptor%5Bversion%5D=main&resolveLfs=true&%24format=octetStream&api-version=5.0&download=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://dev.azure.com/Firefly-III/66fb773b-063e-42d7-b6a5-e7729a22e8b3/_apis/git/repositories/e9c3dcf8-4533-4ef1-83cc-75527cab3377/items?path=%2FDockerfile&versionDescriptor%5BversionOptions%5D=0&versionDescriptor%5BversionType%5D=0&versionDescriptor%5Bversion%5D=main&resolveLfs=true&%24format=octetStream&api-version=5.0&download=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://dev.azure.com/Firefly-III/_git/MainImage",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/fireflyiii/core",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("podcastindexorg/podcasting20-helipad")]),e._v(" "),t("td",[e._v("v0.1.10")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Podcastindex-org/helipad/v0.1.10/umbrel/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Podcastindex-org/helipad/v0.1.10/umbrel/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Podcastindex-org/helipad/v0.1.10/umbrel/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Podcastindex-org/helipad",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/podcastindexorg/podcasting20-helipad",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("jvandrew/librepatron")]),e._v(" "),t("td",[e._v("0.7.39")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/JeffVandrewJr/patron/v0.7.39/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/jvandrew/librepatron",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("jvandrew/isso")]),e._v(" "),t("td",[e._v("atron.22")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/JeffVandrewJr/isso/patron.22/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/JeffVandrewJr/isso",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/jvandrew/isso",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("lightninglabs/lightning-terminal")]),e._v(" "),t("td",[e._v("v0.9.2-alpha-path-prefix")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lightninglabs/lightning-terminal/v0.9.2-alpha/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lightninglabs/lightning-terminal/v0.9.2-alpha/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/lightninglabs/lightning-terminal",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/lightninglabs/lightning-terminal",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("mempool/frontend")]),e._v(" "),t("td",[e._v("v2.5.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/frontend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/frontend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/frontend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/mempool/mempool",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/mempool/frontend",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("mempool/backend")]),e._v(" "),t("td",[e._v("v2.5.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/backend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/backend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/backend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/mempool/mempool",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/mempool/backend",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("mariadb")]),e._v(" "),t("td",[e._v("10.11")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/docker-library/mariadb/master/10.11/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/docker-library/mariadb",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/_/mariadb",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("kukks/nnostr-relay")]),e._v(" "),t("td",[e._v("v0.0.17")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/kukks/nnostr/Relay/v0.0.17/Relay/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/kukks/nnostr/Relay/v0.0.17/Relay/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/kukks/nnostr/Relay/v0.0.17/Relay/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/kukks/nnostr",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/kukks/nnostr-relay",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("sphinxlightning/sphinx-relay")]),e._v(" "),t("td",[e._v("v2.2.9")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/stakwork/sphinx-relay/v2.2.9/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/stakwork/sphinx-relay/v2.2.9/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/stakwork/sphinx-relay/v2.2.9/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/stakwork/sphinx-relay",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/sphinxlightning/sphinx-relay",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("djbooth007/tallycoin_connect")]),e._v(" "),t("td",[e._v("v1.8.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/djbooth007/tallycoin_connect/v1.8.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/djbooth007/tallycoin_connect/v1.8.0/Dockerfile.arm32v7",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/djbooth007/tallycoin_connect/v1.8.0/Dockerfile.arm64v8",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/djbooth007/tallycoin_connect",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/djbooth007/tallycoin_connect",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("talaia/python-teos")]),e._v(" "),t("td",[e._v("latest")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/talaia-labs/python-teos/master/docker/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/talaia-labs/python-teos/master/docker/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/talaia-labs/python-teos/master/docker/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/talaia-labs/python-teos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/talaia/python-teos",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("apotdevin/thunderhub")]),e._v(" "),t("td",[e._v("base-v0.13.21")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/apotdevin/thunderhub/v0.13.21/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/apotdevin/thunderhub/v0.13.21/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/apotdevin/thunderhub/v0.13.21/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/apotdevin/thunderhub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/apotdevin/thunderhub",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("lncapital/torq")]),e._v(" "),t("td",[e._v("0.20.3")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lncapital/torq/master/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lncapital/torq/master/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lncapital/torq/master/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/lncapital/torq",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/lncapital/torq",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("timescale/timescaledb")]),e._v(" "),t("td",[e._v("latest-pg14")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/timescale/timescaledb-docker/main/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/timescale/timescaledb-docker/main/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/timescale/timescaledb-docker/main/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/timescale/timescaledb-docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/timescale/timescaledb",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("zammad/zammad-docker-compose")]),e._v(" "),t("td",[e._v("zammad-postgresql-3.4.0-4")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/zammad/zammad-docker-compose/ff20084ce2829486076e9781fe27407ca6cc09bb/containers/zammad-postgresql/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/zammad/zammad-docker-compose",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/zammad/zammad-docker-compose",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("memcached")]),e._v(" "),t("td",[e._v("1.5.22-alpine")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/docker-library/memcached/master/alpine/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/docker-library/memcached",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/_/memcached",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("traefik")]),e._v(" "),t("td",[e._v("v2.6")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/containous/traefik-library-image/master/scratch/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/containous/traefik-library-image",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/_/traefik",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("chekaz/docker-trezarcoin")]),e._v(" "),t("td",[e._v("0.13.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/ChekaZ/docker/master/trezarcoin/1.2.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/ChekaZ/docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/chekaz/docker-trezarcoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("romanornr/docker-viacoin")]),e._v(" "),t("td",[e._v("0.15.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/viacoin/docker-viacoin/master/viacoin/0.15.2/docker-viacoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/viacoin/docker-viacoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/romanornr/docker-viacoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])])])]),e._v(" "),t("h1",{attrs:{id:"faq"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[e._v("#")]),e._v(" FAQ")]),e._v(" "),t("h2",{attrs:{id:"how-can-i-modify-my-environment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-modify-my-environment"}},[e._v("#")]),e._v(" How can I modify my environment?")]),e._v(" "),t("p",[e._v("As root, run "),t("code",[e._v(". btcpay-setup.sh")]),e._v("; this will show you the environment variable it is expecting.\nFor example, if you support "),t("code",[e._v("btc")]),e._v(" and "),t("code",[e._v("ltc")]),e._v(" already, and want to add "),t("code",[e._v("btg")]),e._v(":")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO3")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v("'btg'")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" btcpay-setup.sh -i\n")])])]),t("h2",{attrs:{id:"i-deployed-before-btcpay-setupsh-existed-before-may-17-2018-can-i-migrate-to-this-new-system"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#i-deployed-before-btcpay-setupsh-existed-before-may-17-2018-can-i-migrate-to-this-new-system"}},[e._v("#")]),e._v(" I deployed before "),t("code",[e._v("btcpay-setup.sh")]),e._v(" existed (before May 17, 2018), can I migrate to this new system?")]),e._v(" "),t("p",[e._v("Yes, run the following commands to update:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$DOWNLOAD_ROOT")]),e._v("/btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" checkout master\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" pull\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" checkout 9acb5d8067cb5c46f59858137feb699b41ac9f19\nbtcpay-update.sh\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh -i\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" checkout master\nbtcpay-update.sh\n\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("exit")]),e._v("\n")])])]),t("h2",{attrs:{id:"im-getting-an-error-on-windows-cannot-create-container-for-service-docker-mount-denied"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#im-getting-an-error-on-windows-cannot-create-container-for-service-docker-mount-denied"}},[e._v("#")]),e._v(" I'm getting an error on Windows: "),t("code",[e._v("Cannot create container for service docker: Mount denied")]),e._v("?")]),e._v(" "),t("p",[e._v("If you see this error:")]),e._v(" "),t("p",[t("code",[e._v("Cannot create container for service docker: b'Mount denied:\\nThe source path \"\\\\\\\\var\\\\\\\\run\\\\\\\\docker.sock:/var/run/docker.sock\"\\nis not a valid Windows path'")]),e._v(".")]),e._v(" "),t("p",[e._v("Run this in "),t("a",{attrs:{href:"https://docs.microsoft.com/en-us/powershell/scripting/windows-powershell/starting-windows-powershell",target:"_blank",rel:"noopener noreferrer"}},[e._v("powershell"),t("OutboundLink")],1),e._v(":")]),e._v(" "),t("div",{staticClass:"language-powershell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-powershell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$Env")]),e._v(":COMPOSE_CONVERT_WINDOWS_PATHS=1\n")])])]),t("p",[e._v("Then, run "),t("code",[e._v("docker-compose -f EXAMPLE.yml up")]),e._v(".")]),e._v(" "),t("p",[e._v("This bug comes from Docker for Windows and is "),t("a",{attrs:{href:"https://github.com/docker/for-win/issues/1829",target:"_blank",rel:"noopener noreferrer"}},[e._v("tracked on Github"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"how-i-can-prune-my-nodes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-i-can-prune-my-nodes"}},[e._v("#")]),e._v(" How I can prune my node(s)?")]),e._v(" "),t("p",[e._v("This will prune your Bitcoin full node to a maximum of 100GB (of blocks):")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"opt-save-storage"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh -i\n")])])]),t("p",[e._v("Other options are "),t("a",{attrs:{href:"#generated-docker-compose"}},[e._v("documented here")]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"how-can-i-customize-the-generated-docker-compose-file"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-customize-the-generated-docker-compose-file"}},[e._v("#")]),e._v(" How can I customize the generated docker-compose file?")]),e._v(" "),t("p",[e._v("In some instances, you might want to customize your environment in more detail. While you could modify "),t("code",[e._v("Generated/docker-compose.generated.yml")]),e._v(" manually, your changes would be overwritten the next time you run "),t("code",[e._v("btcpay-update.sh")]),e._v(".")]),e._v(" "),t("p",[e._v("Luckily, you can leverage "),t("code",[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(" for this!")]),e._v(" "),t("p",[e._v("Let's enable "),t("strong",[e._v("pruning to 60 GB")]),e._v(", for example:")]),e._v(" "),t("p",[e._v("First, copy "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-storage.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-storage"),t("OutboundLink")],1),e._v(" into the "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments",target:"_blank",rel:"noopener noreferrer"}},[e._v("the docker fragment folder"),t("OutboundLink")],1),e._v(" as "),t("code",[e._v("opt-save-storage.custom.yml")]),e._v(". "),t("strong",[e._v("Important:")]),e._v(" the file must end with "),t("code",[e._v(".custom.yml")]),e._v(", or there will be git conflicts whenever you run "),t("code",[e._v("btcpay-update.sh")]),e._v(".")]),e._v(" "),t("p",[e._v("Modify the new "),t("code",[e._v("opt-save-storage.custom.yml")]),e._v(" file to your taste:")]),e._v(" "),t("div",{staticClass:"language-diff extra-class"},[t("pre",{pre:!0,attrs:{class:"language-diff"}},[t("code",[e._v('@@ -14,8 +14,7 @@ version: "3"\n'),t("span",{pre:!0,attrs:{class:"token unchanged"}},[t("span",{pre:!0,attrs:{class:"token prefix unchanged"}},[e._v(" ")]),t("span",{pre:!0,attrs:{class:"token line"}},[e._v("services:\n")]),t("span",{pre:!0,attrs:{class:"token prefix unchanged"}},[e._v(" ")]),t("span",{pre:!0,attrs:{class:"token line"}},[e._v(" bitcoind:\n")]),t("span",{pre:!0,attrs:{class:"token prefix unchanged"}},[e._v(" ")]),t("span",{pre:!0,attrs:{class:"token line"}},[e._v(" environment:\n")])]),t("span",{pre:!0,attrs:{class:"token deleted-sign deleted"}},[t("span",{pre:!0,attrs:{class:"token prefix deleted"}},[e._v("-")]),t("span",{pre:!0,attrs:{class:"token line"}},[e._v(" BITCOIN_EXTRA_ARGS: prune=100000\n")])]),t("span",{pre:!0,attrs:{class:"token inserted-sign inserted"}},[t("span",{pre:!0,attrs:{class:"token prefix inserted"}},[e._v("+")]),t("span",{pre:!0,attrs:{class:"token line"}},[e._v(" BITCOIN_EXTRA_ARGS: prune=60000\n")])])])])]),t("p",[e._v("Then set it up:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(';opt-save-storage.custom"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh -i\n")])])]),t("h2",{attrs:{id:"can-i-run-btcpay-server-on-ports-other-than-80-and-443"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#can-i-run-btcpay-server-on-ports-other-than-80-and-443"}},[e._v("#")]),e._v(" Can I run BTCPay Server on ports other than 80 and 443?")]),e._v(" "),t("p",[e._v("You can change the ports for HTTP and HTTPS by setting the environment variables "),t("code",[e._v("REVERSEPROXY_HTTP_PORT")]),e._v(" and "),t("code",[e._v("REVERSEPROXY_HTTPS_PORT")]),e._v(". This is handy when ports 80 and 443 are already in use on your host, or you want to offload SSL termination with an existing web proxy.")]),e._v(" "),t("p",[e._v("When you set "),t("code",[e._v("REVERSEPROXY_HTTP_PORT")]),e._v(" to another value than 80, the built-in Let's Encrypt certificate will not work, as Let's Encrypt will try to validate your SSL certificate request by connecting from the internet to your domain on port 80. This validation request should be able to reach BTCPay Server in order to receive the certificate.")]),e._v(" "),t("p",[e._v("If you need to run on a different port, it's best to terminate SSL using another web proxy and forward your traffic.")]),e._v(" "),t("h2",{attrs:{id:"can-i-offload-https-termination"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#can-i-offload-https-termination"}},[e._v("#")]),e._v(" Can I offload HTTPS termination?")]),e._v(" "),t("p",[e._v("Yes. Please "),t("RouterLink",{attrs:{to:"/FAQ/FAQ-Deployment/#can-i-use-an-existing-nginx-server-as-a-reverse-proxy-with-ssl-termination"}},[e._v("see the documentation")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"how-can-i-back-up-my-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-back-up-my-btcpay-server"}},[e._v("#")]),e._v(" How can I back up my BTCPay Server?")]),e._v(" "),t("p",[e._v("See the "),t("RouterLink",{attrs:{to:"/Docker/backup-restore/"}},[e._v("Backup & Restore")]),e._v(" guide in our documentation.")],1),e._v(" "),t("details",[t("summary",[e._v("For backwards compatibility: Click here for the description of the old backup.sh process")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Please consider switching to the "),t("RouterLink",{attrs:{to:"/Docker/backup-restore/"}},[e._v("new Backup & Restore process")]),e._v(", because the "),t("code",[e._v("backup.sh")]),e._v(" will not be maintained anymore.")],1)]),e._v(" "),t("p",[e._v("We provide a backup script that dumps the database and saves the important files:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_BASE_DIRECTORY")]),e._v('/btcpayserver-docker"')]),e._v("\n./backup.sh\n")])])]),t("p",[e._v("This will save the backup locally as "),t("code",[e._v("/var/lib/docker/volumes/backup_datadir/_data/backup.tar.gz")]),e._v(".\nThese are the options to customize the backup name and location:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("BACKUP_TIMESTAMP=true")]),e._v(" saves the backup with datetime as part of the file name, so that backups do not get overwritten.")]),e._v(" "),t("li",[t("code",[e._v("BACKUP_PROVIDER=SCP")]),e._v(" saves the backup remotely, requires additional "),t("code",[e._v("SCP_TARGET")]),e._v(" environment variable (see below).")]),e._v(" "),t("li",[t("code",[e._v("BACKUP_PROVIDER=Dropbox")]),e._v(" saves the backup to Dropbox, requires additional "),t("code",[e._v("DROPBOX_TOKEN")]),e._v(" environment variable (see below).")])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_BASE_DIRECTORY")]),e._v('/btcpayserver-docker"')]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Backup with custom file name and timestamp:")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BACKUP_TIMESTAMP")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("true ./backup.sh\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Backup via SCP:")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BACKUP_PROVIDER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("SCP "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("SCP_TARGET")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("myhost:backups/btcpay ./backup.sh\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Backup to Dropbox:")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BACKUP_PROVIDER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("Dropbox "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("DROPBOX_TOKEN")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("myDropboxToken ./backup.sh\n")])])]),t("p",[e._v("You can also choose to only dump the database.\nThis option does not need to stop and restart the docker-containers:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_BASE_DIRECTORY")]),e._v('/btcpayserver-docker"')]),e._v("\n./backup.sh --only-db\n")])])])]),e._v(" "),t("h2",{attrs:{id:"how-can-i-connect-to-the-database"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-connect-to-the-database"}},[e._v("#")]),e._v(" How can I connect to the database?")]),e._v(" "),t("p",[e._v("On the server you can open a database session by connecting via "),t("code",[e._v("psql")]),e._v(" as the postgres user:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("exec")]),e._v(" -ti "),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("ps")]),e._v(" -a -q -f "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"name=postgres_1"')]),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(" psql -U postgres\n")])])]),t("p",[e._v("Then, inside "),t("code",[e._v("psql")]),e._v(" you can select a database and interact with the tables:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# list databases")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("l\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# connect to database")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("c btcpayservermainnet\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# list tables")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("dt\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# list users")]),e._v("\nSELECT "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Id"')]),e._v(", "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Email"')]),e._v(" FROM "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"AspNetUsers"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# end session")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("q\n")])])]),t("p",[e._v("The main BTCPay Server database tables are part of the "),t("code",[e._v("public")]),e._v(" schema.\nPlugins have their own schema, named after the plugin.")]),e._v(" "),t("p",[e._v("By default, only the tables of the "),t("code",[e._v("public")]),e._v(" schema are shown.\nIf you want to also see and select the plugin tables, you need to extend the search path:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# list plugin schemas")]),e._v("\nSELECT * FROM pg_catalog.pg_namespace WHERE nspname LIKE "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v("'BTCPayServer.%'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# extend search path")]),e._v("\nSET search_path TO "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"BTCPayServer.Plugins.MyPlugin"')]),e._v(", public"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# table list now also shows the MyPlugin tables")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("dt\n")])])]),t("h2",{attrs:{id:"how-do-i-upgrade-my-btcpay-server-docker"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-do-i-upgrade-my-btcpay-server-docker"}},[e._v("#")]),e._v(" How do I upgrade my BTCPay Server docker?")]),e._v(" "),t("p",[e._v("Run the script "),t("code",[e._v("./btcpay-update.sh")]),e._v(" and patiently wait for your server to be upgraded.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[110],{729:function(e,t,r){"use strict";r.r(t);var a=r(9),n=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"introduction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),t("p",[e._v("While "),t("RouterLink",{attrs:{to:"/LunaNodeWebDeployment/"}},[e._v("our instructions")]),e._v(" cover how to install BTCPayServer in one click on Azure or Lunanode, BTCPay Server is not limited to those options.")],1),e._v(" "),t("p",[e._v("You will find below information about how you can install BTCPay Server easily in any environment having docker available.")]),e._v(" "),t("h1",{attrs:{id:"architecture"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#architecture"}},[e._v("#")]),e._v(" Architecture")]),e._v(" "),t("figure",[t("img",{attrs:{src:"https://github.com/btcpayserver/btcpayserver-doc/raw/master/docs/img/Architecture.png",alt:"Architecture",title:"Architecture"}})]),e._v(" "),t("p",[e._v("As you can see, BTCPay depends on several pieces of infrastructure, mainly:")]),e._v(" "),t("ul",[t("li",[e._v("A lightweight block explorer (NBXplorer),")]),e._v(" "),t("li",[e._v("A database (PostgreSQL),")]),e._v(" "),t("li",[e._v("A full node (eg. Bitcoin Core)")])]),e._v(" "),t("p",[e._v("There can be more dependencies if you support more than just standard Bitcoin transactions, including:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/ElementsProject/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("Core Lightning (CLN)"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/litecoin-project/litecoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("LitecoinD"),t("OutboundLink")],1),e._v(" and other coin daemons")]),e._v(" "),t("li",[e._v("And more...")])]),e._v(" "),t("p",[e._v("Note: The setup process can be time consuming, but is heavily automated to make it a fun and easy experience.")]),e._v(" "),t("p",[e._v("Take a look at how BTCPay works in a video below.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/nr0UNbz3AoQ/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=nr0UNbz3AoQ",title:"YouTube","data-id":"nr0UNbz3AoQ"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/nr0UNbz3AoQ?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("Here is a presentation of the global architecture at Advancing Bitcoin conference.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/Up0dvorzSNM/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=Up0dvorzSNM",title:"BTCPay - Architecture overview","data-id":"Up0dvorzSNM"}},[t("iframe",{attrs:{title:"BTCPay - Architecture overview","data-src":"https://www.youtube-nocookie.com/embed/Up0dvorzSNM?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("h1",{attrs:{id:"full-installation-for-technical-users"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#full-installation-for-technical-users"}},[e._v("#")]),e._v(" Full installation (for technical users)")]),e._v(" "),t("p",[e._v("You can also install BTCPay Server on your own machine or VPS instance.")]),e._v(" "),t("p",[e._v("The officially supported setup is driven by Docker (and Docker-Compose).")]),e._v(" "),t("p",[e._v("First, make sure you have a domain name pointing to your host "),t("code",[e._v("A record")]),e._v(", with ports "),t("code",[e._v("443")]),e._v(" and "),t("code",[e._v("80")]),e._v(" externally accessible. For Lightning Network, port "),t("code",[e._v("9735")]),e._v(" is required ("),t("code",[e._v("9736")]),e._v(" if you use Litecoin Lightning). Otherwise, you will have to set a domain manually by running "),t("code",[e._v("changedomain.sh")]),e._v(".")]),e._v(" "),t("p",[e._v("Let's assume your domain is "),t("code",[e._v("btcpay.EXAMPLE.com")]),e._v(".")]),e._v(" "),t("p",[e._v("The setup below assumes you want to support Bitcoin, Core Lightning (CLN), HTTPS automatically configured by Nginx. It also enables node pruning, which you can "),t("a",{attrs:{href:"#generated-docker-compose"}},[e._v("modify")]),e._v(" or ignore if you have enough disk space for a full node. Finally, your domain is "),t("code",[e._v("btcpay.EXAMPLE.com")]),e._v(" should reflect your actual domain name.")]),e._v(" "),t("p",[t("a",{attrs:{href:"#environment-variables"}},[e._v("Environment variables")]),e._v(" can be tailored to your needs. Some variables require additional storage space.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Login as root")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Create a folder for BTCPay")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("mkdir")]),e._v(" BTCPayServer\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" BTCPayServer\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Clone this repository")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" clone https://github.com/btcpayserver/btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Run btcpay-setup.sh with the right parameters")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_HOST")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btcpay.EXAMPLE.com"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("NBITCOIN_NETWORK")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"mainnet"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO1")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btc"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"opt-save-storage-s"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_REVERSEPROXY")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"nginx"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_LIGHTNING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"clightning"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_ENABLE_SSH")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("true\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh -i\n\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("exit")]),e._v("\n")])])]),t("p",[t("code",[e._v("btcpay-setup.sh")]),e._v(" will then:")]),e._v(" "),t("ul",[t("li",[e._v("Install Docker")]),e._v(" "),t("li",[e._v("Install Docker-Compose")]),e._v(" "),t("li",[e._v("Make sure BTCPay starts at reboot via upstart or systemd")]),e._v(" "),t("li",[e._v("Setup environment variables to use BTCPay utilities")]),e._v(" "),t("li",[e._v("Add BTCPay utilities in /usr/bin")]),e._v(" "),t("li",[e._v("Start BTCPay Server")])]),e._v(" "),t("p",[e._v("Video below guides you step by step on how to set up BTCPay Server on a VPS with Docker.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/x6hqTFgHqhA/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=x6hqTFgHqhA",title:"YouTube","data-id":"x6hqTFgHqhA"}},[t("iframe",{attrs:{title:"YouTube","data-src":"https://www.youtube-nocookie.com/embed/x6hqTFgHqhA?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("Check out this video if you're interested in learning more about setting up "),t("a",{attrs:{href:"https://www.youtube.com/playlist?list=PLH4m2oS2ratfaprAFx9E3ZDjwxNKvCk4e",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay with Docker Compose"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("figure",[t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/btcpayserver/",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:"https://img.shields.io/docker/automated/btcpayserver/btcpayserver.svg",alt:"Docker automated build",title:"Docker automated build"}}),t("OutboundLink")],1)]),e._v(" "),t("h1",{attrs:{id:"environment-variables"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#environment-variables"}},[e._v("#")]),e._v(" Environment variables")]),e._v(" "),t("p",[t("code",[e._v("btcpay-setup.sh")]),e._v(" will use the following environment variables:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("BTCPAY_HOST")]),e._v(": The hostname of your website (eg. "),t("code",[e._v("btcpay.example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAY_ADDITIONAL_HOSTS")]),e._v(": Optional, specify additional domains to your BTCPayServer with https support if enabled. (eg. example2.com,example3.com)")]),e._v(" "),t("li",[t("code",[e._v("REVERSEPROXY_HTTP_PORT")]),e._v(": The public port the reverse proxy binds to for HTTP traffic (default: 80)")]),e._v(" "),t("li",[t("code",[e._v("REVERSEPROXY_HTTPS_PORT")]),e._v(": The public port the reverse proxy binds to for HTTPS traffic (default: 443)")]),e._v(" "),t("li",[t("code",[e._v("REVERSEPROXY_DEFAULT_HOST")]),e._v(": Optional, if using a reverse proxy nginx, specify which website should be presented if the server is accessed by its IP or by an unrecognized domain name.")]),e._v(" "),t("li",[t("code",[e._v("NOREVERSEPROXY_HTTP_PORT")]),e._v(": Optional, if not using a reverse proxy, specify which port should be opened for HTTP traffic. (default: 80)")]),e._v(" "),t("li",[t("code",[e._v("NBITCOIN_NETWORK")]),e._v(": The type of network to use (eg. "),t("code",[e._v("mainnet")]),e._v(", "),t("code",[e._v("testnet")]),e._v(", or "),t("code",[e._v("regtest")]),e._v(". Default: "),t("code",[e._v("mainnet")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("LIGHTNING_ALIAS")]),e._v(": An alias for your lightning network node, if used")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_CRYPTO1")]),e._v(": First supported crypto currency (eg. "),t("code",[e._v("btc")]),e._v(", "),t("code",[e._v("ltc")]),e._v(". Default: "),t("code",[e._v("btc")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_CRYPTO2")]),e._v(": Second supported crypto currency (eg. "),t("code",[e._v("btc")]),e._v(", "),t("code",[e._v("ltc")]),e._v(". Default: "),t("code",[e._v("(empty)")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_CRYPTON")]),e._v(": N'th supported crypto currency where N is 9 at maximum. (eg. "),t("code",[e._v("btc")]),e._v(", "),t("code",[e._v("ltc")]),e._v(". Default: "),t("code",[e._v("(empty)")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_REVERSEPROXY")]),e._v(": Specify reverse proxy to use; NGinx has HTTPS support. (eg. "),t("code",[e._v("nginx")]),e._v(", "),t("code",[e._v("traefik")]),e._v(", "),t("code",[e._v("(empty)")]),e._v(". Default: "),t("code",[e._v("nginx")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_LIGHTNING")]),e._v(": Lightning network implementation to use (eg. "),t("code",[e._v("clightning")]),e._v(", "),t("code",[e._v("lnd")]),e._v(", Default: "),t("code",[e._v("(empty)")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_SUBNAME")]),e._v(": The subname of the generated docker-compose file, where the full name is "),t("code",[e._v("Generated/docker-compose.SUBNAME.yml")]),e._v(" (Default: "),t("code",[e._v("generated")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(": Semicolon-separated list of additional fragments you want to use (eg. "),t("code",[e._v("opt-save-storage")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("LETSENCRYPT_EMAIL")]),e._v(": An email will be sent to this address if certificate expires and fails to renew automatically (eg. "),t("code",[e._v("me@example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("ACME_CA_URI")]),e._v(": The API endpoint to ask for HTTPS certificate (Default: "),t("code",[e._v("production")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("BTCPAY_ENABLE_SSH")]),e._v(": Optional, gives BTCPay Server SSH access to the host by allowing it to edit authorized_keys of the host, it can be used for managing the authorized_keys or updating BTCPay Server directly through the website. (Default: false)")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_DOCKER_IMAGE")]),e._v(": Optional, Specify which generator image to use if you have customized the C# generator. Set to "),t("code",[e._v("btcpayserver/docker-compose-generator:local")]),e._v(" to build the generator locally at runtime.")]),e._v(" "),t("li",[t("code",[e._v("BTCPAY_IMAGE")]),e._v(": Optional, Specify which btcpayserver image to use if you have a customized btcpayserver.")]),e._v(" "),t("li",[t("code",[e._v("BTCPAYGEN_EXCLUDE_FRAGMENTS")]),e._v(": Semicolon-separated list of fragments you want to forcefully exclude (eg. "),t("code",[e._v("litecoin-clightning")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("TOR_RELAY_NICKNAME")]),e._v(": If tor relay is activated with opt-add-tor-relay, the relay nickname")]),e._v(" "),t("li",[t("code",[e._v("TOR_RELAY_EMAIL")]),e._v(": If tor relay is activated with opt-add-tor-relay, the email for Tor to contact you regarding your relay")])]),e._v(" "),t("p",[e._v("Additionally, there are specific environment variables for some addons:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("LIBREPATRON_HOST")]),e._v(": If libre patron is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-librepatron.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-librepatron"),t("OutboundLink")],1),e._v(", the hostname of your libre patron website (eg. "),t("code",[e._v("librepatron.example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("ZAMMAD_HOST")]),e._v(": If zammad is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-zammad.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-zammad"),t("OutboundLink")],1),e._v(", the hostname of your zammad website (eg. "),t("code",[e._v("zammad.example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("WOOCOMMERCE_HOST")]),e._v(": If woocommerce is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-woocommerce.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-woocommerce"),t("OutboundLink")],1),e._v(", the hostname of your woocommerce website (eg. "),t("code",[e._v("store.example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("EPS_XPUB")]),e._v(": If Electrum Personal Server (EPS) is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-electrum-ps.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-electrum-ps"),t("OutboundLink")],1),e._v(", you must set the Extended Public Key (XPUB, YPUB or ZPUB) of the wallet you want to use, before first run of the EPS server. If you accidently start EPS without this, it will not work properly as the model of EPS is to monitor only specified wallets.")]),e._v(" "),t("li",[e._v("If Bitcoin Wallet Tracker is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-bwt.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-bwt"),t("OutboundLink")],1),e._v(", you can use "),t("code",[e._v("BWT_XPUB")]),e._v("/"),t("code",[e._v("BWT_XPUB_*")]),e._v(" (to set your XPUB/YPUB/ZPUB), "),t("code",[e._v("BWT_DESCRIPTOR")]),e._v("/"),t("code",[e._v("BWT_DESCRIPTOR_*")]),e._v(" (for script descriptors), "),t("code",[e._v("BWT_RESCAN_SINCE")]),e._v(" (set to the wallet creation date in YYYY-MM-DD to speed up the rescan), "),t("code",[e._v("BWT_BITCOIND_WALLET")]),e._v(" and "),t("code",[e._v("BWT_GAP_LIMIT")]),e._v(".")]),e._v(" "),t("li",[t("code",[e._v("LND_WTCLIENT_SWEEP_FEE")]),e._v(": If LND watchtower is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-wtclient.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-wtclient"),t("OutboundLink")],1),e._v(", you can use "),t("code",[e._v("LND_WTCLIENT_SWEEP_FEE")]),e._v(" to change the sweep fee used in constructing the justice transaction (default is 10 sat/byte)")]),e._v(" "),t("li",[t("code",[e._v("FIREFLY_HOST")]),e._v(": If fireflyiii is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-fireflyiii.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-fireflyiii"),t("OutboundLink")],1),e._v(", the hostname of your fireflyiii website (eg. "),t("code",[e._v("firefly.example.com")]),e._v(")")]),e._v(" "),t("li",[t("code",[e._v("CLOUDFLARE_TUNNEL_TOKEN")]),e._v(": Used to expose your instance to clearnet with a Cloudflare Argo Tunnel (if cloudflare tunnel is activated with "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-cloudflared.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-cloudflared"),t("OutboundLink")],1),e._v(", for setup instructions "),t("RouterLink",{attrs:{to:"/Docker/cloudflare-tunnel/"}},[e._v("see documentation")]),e._v(")")],1)]),e._v(" "),t("h1",{attrs:{id:"tooling"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#tooling"}},[e._v("#")]),e._v(" Tooling")]),e._v(" "),t("p",[e._v("A wide variety of useful scripts are available once BTCPay is installed:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("bitcoin-cli.sh")]),e._v(": Access your Bitcoin node instance (for RPC)")]),e._v(" "),t("li",[t("code",[e._v("bitcoin-lightning-cli.sh")]),e._v(": Access your CLN node instance (for RPC)")]),e._v(" "),t("li",[t("code",[e._v("changedomain.sh")]),e._v(": Change the domain of your BTCPayServer (remember to disable 2FA/U2F first, as you risk being unable to log in to your account)")]),e._v(" "),t("li",[t("code",[e._v("btcpay-update.sh")]),e._v(": Update BTCPayServer to the latest version")]),e._v(" "),t("li",[t("code",[e._v("btcpay-up.sh")]),e._v(": Run "),t("code",[e._v("docker-compose up")])]),e._v(" "),t("li",[t("code",[e._v("btcpay-down.sh")]),e._v(": Run "),t("code",[e._v("docker-compose down")])]),e._v(" "),t("li",[t("code",[e._v("btcpay-setup.sh")]),e._v(": Change the settings of your server")]),e._v(" "),t("li",[t("code",[e._v("btcpay-clean.sh")]),e._v(": Purge any unused docker images")]),e._v(" "),t("li",[t("code",[e._v(". ./btcpay-setup.sh")]),e._v(": Information about additional parameters")]),e._v(" "),t("li",[t("code",[e._v(". ./btcpay-setup.sh -i")]),e._v(": Set up your BTCPayServer")]),e._v(" "),t("li",[t("code",[e._v("btcpay-restart.sh")]),e._v(": Restart your BTCPayServer")])]),e._v(" "),t("h1",{attrs:{id:"under-the-hood"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#under-the-hood"}},[e._v("#")]),e._v(" Under the hood")]),e._v(" "),t("h2",{attrs:{id:"generated-docker-compose"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#generated-docker-compose"}},[e._v("#")]),e._v(" Generated docker-compose")]),e._v(" "),t("p",[e._v("When you run "),t("code",[e._v("btcpay-setup.sh")]),e._v(", your environment variables are used by "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/build.sh",target:"_blank",rel:"noopener noreferrer"}},[e._v("build.sh"),t("OutboundLink")],1),e._v(" (or "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/build.ps1",target:"_blank",rel:"noopener noreferrer"}},[e._v("build.ps1"),t("OutboundLink")],1),e._v(") to generate a docker-compose adapted for your needs. For the full list of options, see: "),t("a",{attrs:{href:"#environment-variables"}},[e._v("Environment variables")])]),e._v(" "),t("p",[e._v("By default, the generated file is "),t("code",[e._v("Generated/docker-compose.generated.yml")]),e._v(", constructed from the relevant "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments",target:"_blank",rel:"noopener noreferrer"}},[e._v("Docker fragments"),t("OutboundLink")],1),e._v(" for your setup.")]),e._v(" "),t("p",[e._v("Available "),t("code",[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(" currently are:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-storage.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-storage"),t("OutboundLink")],1),e._v(" will keep around 1 year of blocks (prune BTC for 100 GB)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-storage-s.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-storage-s"),t("OutboundLink")],1),e._v(" will keep around 6 months of blocks (prune BTC for 50 GB)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-storage-xs.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-storage-xs"),t("OutboundLink")],1),e._v(" will keep around 3 months of blocks (prune BTC for 25 GB)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-storage-xxs.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-storage-xxs"),t("OutboundLink")],1),e._v(" will keep around 2 weeks of blocks (prune BTC for 5 GB) (lightning not supported)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-autocompact",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-autocompact"),t("OutboundLink")],1),e._v(" will activate auto compacting of LND database.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-autopilot.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-autopilot"),t("OutboundLink")],1),e._v(" will activate auto pilot on LND. (5 channels, 60% of allocation)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-keysend.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-keysend"),t("OutboundLink")],1),e._v(" will activate keysend on LND.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-wtclient.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-wtclient"),t("OutboundLink")],1),e._v(" will activate the watchtower client on LND. "),t("code",[e._v("LND_WTCLIENT_SWEEP_FEE")]),e._v(" can be used to override the default 10 sat/byte justice transaction fee")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-lnd-watchtower.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-lnd-watchtower"),t("OutboundLink")],1),e._v(" will activate the LND watchtower RPC")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-memory.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-memory"),t("OutboundLink")],1),e._v(" will decrease the default dbcache at the expense of longer synchronization time. (Useful if your machine is less than 2GB)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-more-memory.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-more-memory"),t("OutboundLink")],1),e._v(" will increase the default dbcache to make synchronization faster (Useful if your machine is has around 4GB)")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-btcqbo.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-btcqbo"),t("OutboundLink")],1),e._v(" will allow you to create an invoice on Quickbooks which include a way for your customer to pay on BTCPay Server (More information on this "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/btcqbo/",target:"_blank",rel:"noopener noreferrer"}},[e._v("github repository"),t("OutboundLink")],1),e._v(", this add-on is maintained by "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr",target:"_blank",rel:"noopener noreferrer"}},[e._v("JeffVandrewJr"),t("OutboundLink")],1),e._v(", see more on "),t("a",{attrs:{href:"https://www.youtube.com/watch?v=srgwL9ozg6c",target:"_blank",rel:"noopener noreferrer"}},[e._v("this video"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-librepatron.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-librepatron"),t("OutboundLink")],1),e._v(", for a self-hosted Patreon alternative backed by BTCPay (More information on this "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron",target:"_blank",rel:"noopener noreferrer"}},[e._v("github repository"),t("OutboundLink")],1),e._v(", this add-on is maintained by "),t("a",{attrs:{href:"https://github.com/JeffVandrewJr",target:"_blank",rel:"noopener noreferrer"}},[e._v("JeffVandrewJr"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-woocommerce.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-woocommerce"),t("OutboundLink")],1),e._v(", for a self-hosted woocommerce with BTCPay Server plugin pre installed.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-tor.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-tor"),t("OutboundLink")],1),e._v(", for exposing BTCPayServer, Woocommerce, your lightning nodes as hidden services and accept onion peers for your full node. Warning: This options is for working around NAT and firewall problems as well as to help protect your customer's privacy. This will not protect your privacy against a targeted attack against you.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-btctransmuter.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-btctransmuter"),t("OutboundLink")],1),e._v(", for a self-hosted IFTTT style service for crypto services such as fiat settlement. (More information on this "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcTransmuter/",target:"_blank",rel:"noopener noreferrer"}},[e._v("github repository"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-txindex.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-txindex"),t("OutboundLink")],1),e._v(", to enable txindex=1 in bitcoin.conf if you require txindexing for Bisq, DOJO, etc.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-expose-unsafe.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-expose-unsafe"),t("OutboundLink")],1),e._v(", to unsafely expose bitcoind P2P port 8333 if you require P2P for Bisq, DOJO, Esplora, etc. WARNING: ONLY USE ON TRUSTED LAN OR WITH FIREWALL RULES WHITELISTING SPECIFIC HOSTS")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-tor-relay.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-tor-relay"),t("OutboundLink")],1),e._v(", for a non-exit tor relay. Make sure to have port 9001 accessible externally. "),t("a",{attrs:{href:"https://community.torproject.org/relay/community-resources/eff-tor-legal-faq",target:"_blank",rel:"noopener noreferrer"}},[e._v("Please read the legal implications of running a tor relay"),t("OutboundLink")],1),e._v(" and "),t("a",{attrs:{href:"https://trac.torproject.org/projects/tor/wiki/TorRelayGuide#RelayRequirements",target:"_blank",rel:"noopener noreferrer"}},[e._v("what resources are used to operate the relay"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-electrumx.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-electrumx"),t("OutboundLink")],1),e._v(", to integrate a full ElectrumX server (from official source) with BTCPay, using the BTCPay server's full bitcoin node for complete privacy when using your own Electrum wallet. You can also open port 50002 up to the internet on your router etc, to be part of the ElectrumX network, helping other Electrum wallet users to get connected. The bitcoin option "),t("code",[e._v("-txindex")]),e._v(" is mandatory for ElectrumX, and this fragment will enable it on your BTCPay server automatically - No need to use the fragment opt-txindex.yml.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-electrum-ps.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-electrum-ps"),t("OutboundLink")],1),e._v(", to integrate Electrum Personal Server (EPS) with BTCPay (EPS is a single-user alternative to the ElectrumX Server option above). EPS will also use the BTCPay server's full bitcoin node for complete privacy when using your own Electrum wallet, for your own personal use (i.e. other users cannot use your server to verify transactions). Also, the bitcoin option "),t("code",[e._v("-txindex")]),e._v(" is NOT mandatory for EPS, and it will run on a pruned node (unlike ElectrumX). You will need to add your XPUB/YPUB/ZPUB as environment variable "),t("code",[e._v("EPS_XPUB")]),e._v(" before enabling EPS for the first time (see above section on environment variables, and see "),t("RouterLink",{attrs:{to:"/ElectrumPersonalServer/"}},[e._v("full documentation")]),e._v(" for details).")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-bwt.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-electrum-bwt"),t("OutboundLink")],1),e._v(", to integrate the "),t("a",{attrs:{href:"https://github.com/bwt-dev/bwt",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bitcoin Wallet Tracker"),t("OutboundLink")],1),e._v(" Electrum server, which uses a personal wallet index model similar to that of EPS. You will need to set "),t("code",[e._v("BWT_XPUB")]),e._v(" with your XPUB/YPUB/ZPUB (see environment variables section). The server will only be available locally and through an onion service.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-configurator.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-configurator"),t("OutboundLink")],1),e._v(", to integrate the "),t("a",{attrs:{href:"https://install.btcpayserver.org",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay Server Configurator"),t("OutboundLink")],1),e._v(" to manage your BTCPay deployment through a UI, and to allow new deployments elsewhere easily.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-pihole.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-pihole"),t("OutboundLink")],1),e._v(" ("),t("RouterLink",{attrs:{to:"/Docker/pihole/"}},[e._v("See the documentation")]),e._v(")")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-bluewallet-lndhub.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-bluewallet-lndhub"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/BlueWallet/LndHub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Bluewallet LNDHub"),t("OutboundLink")],1),e._v(" - Use non-custodial LND Lightning directly from your Bluewallet, and freely let others open accounts on your node. Fragment maintained by "),t("a",{attrs:{href:"https://github.com/maltokyo",target:"_blank",rel:"noopener noreferrer"}},[e._v("maltokyo"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-ndlc.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-ndlc"),t("OutboundLink")],1),e._v(" ("),t("RouterLink",{attrs:{to:"/Docker/ndlc/"}},[e._v("See the documentation")]),e._v(")")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-lightning-terminal.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-lightning-terminal"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/lightninglabs/lightning-terminal",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lightning Terminal/LiT"),t("OutboundLink")],1),e._v(". Maintained by "),t("a",{attrs:{href:"https://github.com/dennisreimann",target:"_blank",rel:"noopener noreferrer"}},[e._v("dennisreimann"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-mempool.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-mempool"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/mempool/mempool",target:"_blank",rel:"noopener noreferrer"}},[e._v("Mempool"),t("OutboundLink")],1),e._v(". Maintained by "),t("a",{attrs:{href:"https://github.com/dennisreimann",target:"_blank",rel:"noopener noreferrer"}},[e._v("dennisreimann"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-sphinxrelay.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-sphinxrelay"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/stakwork/sphinx-relay",target:"_blank",rel:"noopener noreferrer"}},[e._v("Sphinx Relay"),t("OutboundLink")],1),e._v(". Maintained by "),t("a",{attrs:{href:"https://github.com/dennisreimann",target:"_blank",rel:"noopener noreferrer"}},[e._v("dennisreimann"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-tallycoin-connect.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-tallycoin-connect"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/djbooth007/tallycoin_connect",target:"_blank",rel:"noopener noreferrer"}},[e._v("Tallycoin Connect"),t("OutboundLink")],1),e._v(". Maintained by "),t("a",{attrs:{href:"https://github.com/dennisreimann",target:"_blank",rel:"noopener noreferrer"}},[e._v("dennisreimann"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-thunderhub.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-thunderhub"),t("OutboundLink")],1),e._v(" for a LND Lightning Node Manager in your Browser. Maintained by "),t("a",{attrs:{href:"https://github.com/apotdevin",target:"_blank",rel:"noopener noreferrer"}},[e._v("apotdevin"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-teos.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-teos"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/talaia-labs/python-teos",target:"_blank",rel:"noopener noreferrer"}},[e._v("The Eye Of Satoshi"),t("OutboundLink")],1),e._v(", a BOLT13 Lightning Watchtower. Use port 9814 on your server or Tor to connect.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-chatwoot.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-chatwoot"),t("OutboundLink")],1),e._v(" for open source chat support system. ("),t("RouterLink",{attrs:{to:"/Docker/chatwoot/"}},[e._v("See the documentation")]),e._v(")")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-zammad.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-zammad"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://zammad.com/features",target:"_blank",rel:"noopener noreferrer"}},[e._v("Zammad"),t("OutboundLink")],1),e._v(", a web based open source helpdesk/customer support system with many features to manage customer communication via several channels like telephone, facebook, twitter, chat and e-mails")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-monero-expose.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-monero-expose"),t("OutboundLink")],1),e._v(" to expose monero node's RPC port at 127.0.0.1:18081 to connect your own wallet. Use f.e. ssh port forwarding to forward to your own computer.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-fireflyiii.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-fireflyiii"),t("OutboundLink")],1),e._v(" ("),t("RouterLink",{attrs:{to:"/Docker/fireflyiii/"}},[e._v("See the documentation")]),e._v(")")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-joinmarket.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-joinmarket"),t("OutboundLink")],1),e._v(" ("),t("RouterLink",{attrs:{to:"/Docker/joinmarket/"}},[e._v("See the documentation")]),e._v(")")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-helipad.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-helipad"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/Podcastindex-org/helipad",target:"_blank",rel:"noopener noreferrer"}},[e._v("Podcastindex.org Helipad"),t("OutboundLink")],1),e._v(". Requires LND.")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-nostr-relay.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-nostr-relay"),t("OutboundLink")],1),e._v(" for "),t("a",{attrs:{href:"https://github.com/kukks/Nnostr",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nostr Relay"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-cloudflared.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-cloudflared"),t("OutboundLink")],1),e._v(" to expose your local server on clearnet painlessly ("),t("RouterLink",{attrs:{to:"/Docker/cloudflare-tunnel/"}},[e._v("see documentation")]),e._v(").")],1),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-add-torq.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-add-torq"),t("OutboundLink")],1),e._v(" to install "),t("a",{attrs:{href:"https://github.com/lncapital/torq",target:"_blank",rel:"noopener noreferrer"}},[e._v("Torq"),t("OutboundLink")],1),e._v(" node management application. Requires LND.")])]),e._v(" "),t("p",[e._v("You can also create your own "),t("a",{attrs:{href:"#how-can-i-customize-the-generated-docker-compose-file"}},[e._v("custom fragments")]),e._v(".")]),e._v(" "),t("p",[e._v("If you want to add an option to "),t("code",[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(" and re-configure your install:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(';opt-lnd-autopilot"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" btcpay-setup.sh -i\n")])])]),t("p",[e._v("For example, if you want "),t("code",[e._v("btc")]),e._v(" and "),t("code",[e._v("ltc")]),e._v(" support with "),t("code",[e._v("nginx")]),e._v(" and "),t("code",[e._v("clightning")]),e._v(" inside "),t("code",[e._v("Generated/docker-compose.custom.yml")]),e._v(":")]),e._v(" "),t("p",[e._v("Note: The first run might take a while, but following runs are instantaneous.")]),e._v(" "),t("p",[e._v("On Windows (run in "),t("a",{attrs:{href:"https://docs.microsoft.com/en-us/powershell/scripting/windows-powershell/starting-windows-powershell",target:"_blank",rel:"noopener noreferrer"}},[e._v("powershell"),t("OutboundLink")],1),e._v("):")]),e._v(" "),t("div",{staticClass:"language-powershell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-powershell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("Invoke-Command")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("{")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_CRYPTO1")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btc"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_CRYPTO2")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"ltc"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_REVERSEPROXY")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"nginx"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_LIGHTNING")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"clightning"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_SUBNAME")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"custom"')]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("\\build"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(".")]),e._v("ps1\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("}")]),e._v("\n")])])]),t("p",[e._v("On Linux:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO1")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btc"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"ltc"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_REVERSEPROXY")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"nginx"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_LIGHTNING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"clightning"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_SUBNAME")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"custom"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("\n./build.sh\n")])])]),t("p",[e._v("Next, you will need to configure the runtime environment variables for "),t("code",[e._v("Generated/docker-compose.custom.yml")]),e._v(":")]),e._v(" "),t("ul",[t("li",[e._v("If you are using NGinx, "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/Production/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("read this"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[e._v("If you are not using NGinx, "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/Production-NoReverseProxy/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("read this instead"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("h2",{attrs:{id:"again-what-does-btcpay-setupsh-do"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#again-what-does-btcpay-setupsh-do"}},[e._v("#")]),e._v(" Again, what does "),t("code",[e._v("btcpay-setup.sh")]),e._v(" do?")]),e._v(" "),t("p",[t("code",[e._v("btcpay-setup.sh")]),e._v(" is a utility which does the following:")]),e._v(" "),t("ol",[t("li",[e._v("Makes sure docker and docker-compose are installed on your system")]),e._v(" "),t("li",[e._v("Generates a docker-compose via "),t("code",[e._v("./build.sh")])]),e._v(" "),t("li",[e._v("Sets up an "),t("a",{attrs:{href:"https://docs.docker.com/compose/env-file/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Environment File"),t("OutboundLink")],1),e._v(" to configure your docker-compose")]),e._v(" "),t("li",[e._v("Sets up environment variables so the tools described in "),t("a",{attrs:{href:"#tooling"}},[e._v("Tooling")]),e._v(" can work")]),e._v(" "),t("li",[e._v("Adds symlinks of those tools into "),t("code",[e._v("/usr/bin")])]),e._v(" "),t("li",[e._v("Makes sure BTCPay restarts on reboot via upstart or systemd")]),e._v(" "),t("li",[e._v("Starts BTCPay via docker-compose")])]),e._v(" "),t("h2",{attrs:{id:"overview-of-files-generated-by-btcpay-setupsh"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#overview-of-files-generated-by-btcpay-setupsh"}},[e._v("#")]),e._v(" Overview of files generated by "),t("code",[e._v("btcpay-setup.sh")])]),e._v(" "),t("p",[t("code",[e._v("/etc/profile.d/btcpay-env.sh")]),e._v(" ensures that your environment variables are correctly setup when you login, so you can use the tools:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_OLD_PREGEN")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"false"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO1")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btc"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO2")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO3")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO4")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO5")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO6")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO7")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO8")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO9")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_LIGHTNING")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"clightning"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_REVERSEPROXY")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"nginx"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('""')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_DOCKER_COMPOSE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"/var/lib/waagent/custom-script/download/0/btcpayserver-docker/Production/docker-compose.generated.yml"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_BASE_DIRECTORY")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"/var/lib/waagent/custom-script/download/0"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_ENV_FILE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"/var/lib/waagent/custom-script/download/0/.env"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_HOST_SSHKEYFILE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"/root/.ssh/id_rsa_btcpay"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("if")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("cat")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_ENV_FILE")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("&>")]),e._v(" /dev/null"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("then")]),e._v("\n "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("grep")]),e._v(" -v "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v("'^#'")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_ENV_FILE")]),e._v('"')]),e._v(" "),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("|")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("xargs")]),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token keyword"}},[e._v("fi")]),e._v("\n")])])]),t("p",[t("code",[e._v("/etc/systemd/system/btcpayserver.service")]),e._v(" ensures that you can control btcpay via "),t("code",[e._v("systemctl")]),e._v(", and that BTCPayServer starts on reboot:")]),e._v(" "),t("div",{staticClass:"language-ini extra-class"},[t("pre",{pre:!0,attrs:{class:"language-ini"}},[t("code",[t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("Unit")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("Description")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("BTCPayServer service")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("After")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("docker.service network-online.target")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("Requires")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("docker.service network-online.target")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("Service")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("Type")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("oneshot")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("RemainAfterExit")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("yes")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("ExecStart")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd \"$BTCPAY_BASE_DIRECTORY/btcpayserver-docker\" && . helpers.sh && btcpay_up'")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("ExecStop")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd \"$BTCPAY_BASE_DIRECTORY/btcpayserver-docker\" && . helpers.sh && btcpay_down'")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("ExecReload")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("/bin/bash -c '. /etc/profile.d/btcpay-env.sh && cd \"$BTCPAY_BASE_DIRECTORY/btcpayserver-docker\" && . helpers.sh && btcpay_restart'")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token section"}},[t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("[")]),t("span",{pre:!0,attrs:{class:"token section-name selector"}},[e._v("Install")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("]")])]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("WantedBy")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("multi-user.target")]),e._v("\n")])])]),t("p",[t("code",[e._v(".env")]),e._v(" ("),t("code",[e._v("$BTCPAY_ENV_FILE")]),e._v(") contains environment variables passed to the containers managed by your docker-compose:")]),e._v(" "),t("div",{staticClass:"language-ini extra-class"},[t("pre",{pre:!0,attrs:{class:"language-ini"}},[t("code",[t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("BTCPAY_HOST")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("btcpay.EXAMPLE.com")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("ACME_CA_URI")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("production")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("NBITCOIN_NETWORK")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("mainnet")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("LETSENCRYPT_EMAIL")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("me@EXAMPLE.com")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("BTCPAY_SSHTRUSTEDFINGERPRINTS")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("SHA256:eSCD7NtQ/Q6IBl2iRB9caAQ3lDZd8s8iUL6SdeNnhpA")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token key attr-name"}},[e._v("BTCPAY_SSHKEYFILE")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token value attr-value"}},[e._v("/datadir/id_rsa")]),e._v("\n")])])]),t("h1",{attrs:{id:"how-can-i-add-an-altcoin-to-btcpayserver"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-add-an-altcoin-to-btcpayserver"}},[e._v("#")]),e._v(" How can I add an altcoin to BTCPayServer?")]),e._v(" "),t("ol",[t("li",[e._v("Add support for your crypto to "),t("a",{attrs:{href:"https://github.com/MetacoSA/NBitcoin/tree/master/NBitcoin.Altcoins",target:"_blank",rel:"noopener noreferrer"}},[e._v("NBitcoin"),t("OutboundLink")],1),e._v(", "),t("a",{attrs:{href:"https://github.com/dgarage/NBXplorer",target:"_blank",rel:"noopener noreferrer"}},[e._v("NBxplorer"),t("OutboundLink")],1),e._v(", and "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPayServer"),t("OutboundLink")],1),e._v(". (Use examples from other coins)")]),e._v(" "),t("li",[e._v("Create your own docker image ("),t("a",{attrs:{href:"https://hub.docker.com/r/nicolasdorier/docker-bitcoin/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Example for BTC"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("Create a docker-compose fragment ("),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/bitcoin.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("Example for BTC"),t("OutboundLink")],1),e._v(")")]),e._v(" "),t("li",[e._v("Add your "),t("code",[e._v("CryptoDefinition")]),e._v(" ("),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/src/CryptoDefinition.cs",target:"_blank",rel:"noopener noreferrer"}},[e._v("Example for BTC"),t("OutboundLink")],1),e._v(")")])]),e._v(" "),t("p",[t("code",[e._v("build.sh")]),e._v(" is using a pre-built image of the "),t("code",[e._v("docker-compose generator")]),e._v(" on "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/docker-compose-generator/",target:"_blank",rel:"noopener noreferrer"}},[e._v("docker hub"),t("OutboundLink")],1),e._v(".\nIf you modify the code source of "),t("code",[e._v("docker-compose generator")]),e._v(" (for example, the "),t("code",[e._v("CryptoDefinition")]),e._v(" "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/src/CryptoDefinition.cs",target:"_blank",rel:"noopener noreferrer"}},[e._v("Example for BTC"),t("OutboundLink")],1),e._v("), you need to configure "),t("code",[e._v("build.sh")]),e._v(" to use your own image by setting the environment variable "),t("code",[e._v("BTCPAYGEN_DOCKER_IMAGE")]),e._v(" to "),t("code",[e._v("btcpayserver/docker-compose-generator:local")]),e._v(".")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" docker-compose-generator\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_DOCKER_IMAGE")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btcpayserver/docker-compose-generator:local"')]),e._v("\n")])])]),t("p",[e._v("Or on powershell:")]),e._v(" "),t("div",{staticClass:"language-powershell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-powershell"}},[t("code",[e._v("cd docker-compose-generator\n"),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_DOCKER_IMAGE")]),e._v("="),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"btcpayserver/docker-compose-generator:local"')]),e._v("\n")])])]),t("p",[e._v("Then run "),t("code",[e._v("./build.sh")]),e._v(" or "),t("code",[e._v(". .\\build.ps1")]),e._v(".\nThis will generate your docker-compose in the "),t("code",[e._v("Generated")]),e._v(" folder, which you can then run and test.")]),e._v(" "),t("p",[e._v("Note that BTCPayServer developers will not spend excessive time testing your image, so make sure it works.")]),e._v(" "),t("h1",{attrs:{id:"support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#support"}},[e._v("#")]),e._v(" Support")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Image")]),e._v(" "),t("th",[e._v("Version")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("x64")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("arm32v7")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("arm64v8")]),e._v(" "),t("th",{staticStyle:{"text-align":"center"}},[e._v("links")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[e._v("btcpayserver/docker-compose-generator")]),e._v(" "),t("td",[e._v("latest")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-docker/dcg-latest/docker-compose-generator/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-docker/dcg-latest/docker-compose-generator/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-docker/dcg-latest/docker-compose-generator/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/docker-compose-generator",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/docker-compose")]),e._v(" "),t("td",[e._v("1.28.6")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/docker-compose/1.28.6/docker-compose/1.28.6/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/docker-compose/1.28.6/docker-compose/1.28.6/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/docker-compose/1.28.6/docker-compose/1.28.6/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/docker-compose",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/lightning")]),e._v(" "),t("td",[e._v("v23.08")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lightning/basedon-v23.08/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lightning/basedon-v23.08/contrib/docker/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lightning/basedon-v23.08/contrib/docker/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("saubyk/c-lightning-rest")]),e._v(" "),t("td",[e._v("0.10.6")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/c-lightning-REST/v0.10.6/amd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/c-lightning-REST/v0.10.6/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/c-lightning-REST/v0.10.6/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Ride-The-Lightning/c-lightning-REST",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/saubyk/c-lightning-rest",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("shahanafarooqui/rtl")]),e._v(" "),t("td",[e._v("0.14.1")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/RTL/v0.14.1/dockerfiles/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/RTL/v0.14.1/dockerfiles/Dockerfile.arm32v7",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Ride-The-Lightning/RTL/v0.14.1/dockerfiles/Dockerfile.arm64v8",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Ride-The-Lightning/RTL",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/shahanafarooqui/rtl",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/lnd")]),e._v(" "),t("td",[e._v("v0.16.4-beta-1")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lnd/basedon-v0.16.4-beta-1/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lnd/basedon-v0.16.4-beta-1/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/lnd/basedon-v0.16.4-beta-1/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/bitcoin")]),e._v(" "),t("td",[e._v("25.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Bitcoin/25.0/Bitcoin/25.0/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Bitcoin/25.0/Bitcoin/25.0/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Bitcoin/25.0/Bitcoin/25.0/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/bitcoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/btcpayserver")]),e._v(" "),t("td",[e._v("1.11.6$?")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver/v1.11.6/amd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver/v1.11.6/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver/v1.11.6/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/monero")]),e._v(" "),t("td",[e._v("0.18.2.2-4")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Monero/0.18.2.2-4/Monero/0.18.2.2/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Monero/0.18.2.2-4/Monero/0.18.2.2/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Monero/0.18.2.2-4/Monero/0.18.2.2/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/monero",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("nicolasdorier/nbxplorer")]),e._v(" "),t("td",[e._v("2.3.66")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/nbxplorer/v2.3.66/Dockerfile.linuxamd64",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/nbxplorer/v2.3.66/Dockerfile.linuxarm32v7",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/nbxplorer/v2.3.66/Dockerfile.linuxarm64v8",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/dgarage/nbxplorer",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/nicolasdorier/nbxplorer",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/letsencrypt-nginx-proxy-companion")]),e._v(" "),t("td",[e._v("1.12.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion/v1.12.2/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion/v1.12.2/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion/v1.12.2/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/docker-letsencrypt-nginx-proxy-companion",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/letsencrypt-nginx-proxy-companion",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("nginx")]),e._v(" "),t("td",[e._v("1.23.3")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/nginxinc/docker-nginx/1.23.2/stable/debian/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/nginxinc/docker-nginx/1.23.2/stable/debian/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/nginxinc/docker-nginx/1.23.2/stable/debian/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/nginxinc/docker-nginx",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/_/nginx",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/docker-gen")]),e._v(" "),t("td",[e._v("0.7.8")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-gen/v0.7.8/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-gen/v0.7.8/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/docker-gen/v0.7.8/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/docker-gen",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/docker-gen",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/btctransmuter")]),e._v(" "),t("td",[e._v("0.0.59")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btctransmuter/v0.0.59/Dockerfiles/amd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btctransmuter/v0.0.59/Dockerfiles/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btctransmuter/v0.0.59/Dockerfiles/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/btctransmuter",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/btctransmuter",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/cloudflared")]),e._v(" "),t("td",[e._v("2023.7.3")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Cloudflared/2023.7.3/Cloudflared/2023.7.3/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Cloudflared/2023.7.3/Cloudflared/2023.7.3/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Cloudflared/2023.7.3/Cloudflared/2023.7.3/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/cloudflared",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/btcpayserver-configurator")]),e._v(" "),t("td",[e._v("0.0.21")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-configurator/v0.0.21/Dockerfiles/amd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-configurator/v0.0.21/Dockerfiles/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/btcpayserver-configurator/v0.0.21/Dockerfiles/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-configurator",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/btcpayserver-configurator",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/eps")]),e._v(" "),t("td",[e._v("0.2.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/EPS/0.2.2/EPS/0.2.2/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/EPS/0.2.2/EPS/0.2.2/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/EPS/0.2.2/EPS/0.2.2/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/eps",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/joinmarket")]),e._v(" "),t("td",[e._v("0.9.5")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/JoinMarket/0.9.5/JoinMarket/0.9.5/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/JoinMarket/0.9.5/JoinMarket/0.9.5/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/JoinMarket/0.9.5/JoinMarket/0.9.5/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/joinmarket",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("nicolasdorier/ndlc-cli")]),e._v(" "),t("td",[e._v("1.0.1")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/ndlc/releases/1.0.1/amd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/ndlc/releases/1.0.1/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dgarage/ndlc/releases/1.0.1/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/dgarage/ndlc",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/nicolasdorier/ndlc-cli",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("pihole/pihole")]),e._v(" "),t("td",[e._v("2023.05.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/pi-hole/docker-pi-hole/2023.05.2/src/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/pi-hole/docker-pi-hole/2023.05.2/src/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/pi-hole/docker-pi-hole/2023.05.2/src/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/pi-hole/docker-pi-hole",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/pihole/pihole",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/tor")]),e._v(" "),t("td",[e._v("0.4.7.10")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Tor/0.4.7.10/Tor/0.4.7.10/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Tor/0.4.7.10/Tor/0.4.7.10/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Tor/0.4.7.10/Tor/0.4.7.10/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/tor",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/woocommerce")]),e._v(" "),t("td",[e._v("3.1.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/WooCommerce/3.1.0/WooCommerce/3.1.0/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/WooCommerce/3.1.0/WooCommerce/3.1.0/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/woocommerce",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/postgres")]),e._v(" "),t("td",[e._v("13.10")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Postgres/13.10/Postgres/13.10/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Postgres/13.10/Postgres/13.10/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Postgres/13.10/Postgres/13.10/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/postgres",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("kamigawabul/btglnd")]),e._v(" "),t("td",[e._v("latest")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/vutov/lnd/master/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/vutov/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/kamigawabul/btglnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("kamigawabul/docker-bitcoingold")]),e._v(" "),t("td",[e._v("0.15.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Vutov/docker-bitcoin/master/bitcoingold/0.15.2/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Vutov/docker-bitcoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/kamigawabul/docker-bitcoingold",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("acinq/eclair")]),e._v(" "),t("td",[e._v("release-0.7.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/ACINQ/eclair/v0.7.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/ACINQ/eclair",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/acinq/eclair",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("chekaz/docker-bitcoinplus")]),e._v(" "),t("td",[e._v("2.7.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/ChekaZ/docker/master/bitcoinplus/2.7.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/ChekaZ/docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/chekaz/docker-bitcoinplus",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("dalijolijo/docker-bitcore")]),e._v(" "),t("td",[e._v("0.90.9.10")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/dalijolijo/btcpayserver-docker-bitcore/master/docker-bitcored/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/dalijolijo/btcpayserver-docker-bitcore",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/dalijolijo/docker-bitcore",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/dash")]),e._v(" "),t("td",[e._v("19.2.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Dash/19.2.0/Dash/19.2.0/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Dash/19.2.0/Dash/19.2.0/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/dash",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/dogecoin")]),e._v(" "),t("td",[e._v("1.14.6")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Dogecoin/1.14.6/Dogecoin/1.14.6/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/dogecoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("chekaz/docker-feathercoin")]),e._v(" "),t("td",[e._v("0.16.3")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/ChekaZ/docker/master/feathercoin/0.16.3/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/ChekaZ/docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/chekaz/docker-feathercoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("groestlcoin/lightning")]),e._v(" "),t("td",[e._v("v23.05")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Groestlcoin/lightning/v23.05/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Groestlcoin/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/groestlcoin/lightning",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("groestlcoin/groestlcoin-lightning-charge")]),e._v(" "),t("td",[e._v("version-0.4.22")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Groestlcoin/groestlcoin-lightning-charge/v0.4.22/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Groestlcoin/groestlcoin-lightning-charge",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/groestlcoin/groestlcoin-lightning-charge",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("groestlcoin/groestlcoin-spark")]),e._v(" "),t("td",[e._v("version-0.2.16")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Groestlcoin/groestlcoin-spark/v0.2.16/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Groestlcoin/groestlcoin-spark",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/groestlcoin/groestlcoin-spark",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("groestlcoin/eclair")]),e._v(" "),t("td",[e._v("v0.6.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Groestlcoin/eclair/v0.6.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Groestlcoin/eclair",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/groestlcoin/eclair",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("groestlcoin/lnd")]),e._v(" "),t("td",[e._v("v0.10.0-grs")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Groestlcoin/lnd/v0.10.0-grs/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Groestlcoin/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/groestlcoin/lnd",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/groestlcoin")]),e._v(" "),t("td",[e._v("25.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Groestlcoin/25.0/Groestlcoin/25.0/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Groestlcoin/25.0/Groestlcoin/25.0/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Groestlcoin/25.0/Groestlcoin/25.0/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/groestlcoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/elements")]),e._v(" "),t("td",[e._v("22.1.1")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Elements/22.1.1/Elements/22.1.1/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Elements/22.1.1/Elements/22.1.1/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Elements/22.1.1/Elements/22.1.1/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/elements",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("btcpayserver/litecoin")]),e._v(" "),t("td",[e._v("0.21.2.1-2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Litecoin/0.21.2.1-2/Litecoin/0.21.2.1/linuxamd64.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Litecoin/0.21.2.1-2/Litecoin/0.21.2.1/linuxarm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/btcpayserver/dockerfile-deps/Litecoin/0.21.2.1-2/Litecoin/0.21.2.1/linuxarm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/btcpayserver/dockerfile-deps",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/btcpayserver/litecoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("wakiyamap/docker-monacoin")]),e._v(" "),t("td",[e._v("0.20.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/wakiyamap/docker-bitcoin/master/monacoin/0.20.2/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/wakiyamap/docker-bitcoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/wakiyamap/docker-monacoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("redis")]),e._v(" "),t("td",[e._v("6.2.2-buster")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/docker-library/redis/f1a8498333ae3ab340b5b39fbac1d7e1dc0d628c/5.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/docker-library/redis",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/_/redis",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("bluewalletorganization/lndhub")]),e._v(" "),t("td",[e._v("v1.4.1")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/BlueWallet/LndHub/v1.4.1/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/BlueWallet/LndHub/v1.4.1/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/BlueWallet/LndHub/v1.4.1/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/BlueWallet/LndHub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/bluewalletorganization/lndhub",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("jvandrew/btcqbo")]),e._v(" "),t("td",[e._v("0.3.36")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/JeffVandrewJr/btcqbo/v0.3.36/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/JeffVandrewJr/btcqbo",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/jvandrew/btcqbo",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("shesek/bwt")]),e._v(" "),t("td",[e._v("0.2.2-electrum")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/bwt-dev/bwt/v0.2.2/docker/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/bwt-dev/bwt/v0.2.2/docker/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/bwt-dev/bwt/v0.2.2/docker/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/bwt-dev/bwt",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/shesek/bwt",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("chatwoot/chatwoot")]),e._v(" "),t("td",[e._v("v1.7.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/chatwoot/chatwoot/v1.7.0/docker/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/chatwoot/chatwoot/v1.7.0/docker/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/chatwoot/chatwoot/v1.7.0/docker/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/chatwoot/chatwoot",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/chatwoot/chatwoot",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("lukechilds/electrumx")]),e._v(" "),t("td",[e._v("latest")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lukechilds/docker-electrumx/master/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/lukechilds/docker-electrumx",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/lukechilds/electrumx",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("fireflyiii/core")]),e._v(" "),t("td",[e._v("latest")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://dev.azure.com/Firefly-III/66fb773b-063e-42d7-b6a5-e7729a22e8b3/_apis/git/repositories/e9c3dcf8-4533-4ef1-83cc-75527cab3377/items?path=%2FDockerfile&versionDescriptor%5BversionOptions%5D=0&versionDescriptor%5BversionType%5D=0&versionDescriptor%5Bversion%5D=main&resolveLfs=true&%24format=octetStream&api-version=5.0&download=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://dev.azure.com/Firefly-III/66fb773b-063e-42d7-b6a5-e7729a22e8b3/_apis/git/repositories/e9c3dcf8-4533-4ef1-83cc-75527cab3377/items?path=%2FDockerfile&versionDescriptor%5BversionOptions%5D=0&versionDescriptor%5BversionType%5D=0&versionDescriptor%5Bversion%5D=main&resolveLfs=true&%24format=octetStream&api-version=5.0&download=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://dev.azure.com/Firefly-III/66fb773b-063e-42d7-b6a5-e7729a22e8b3/_apis/git/repositories/e9c3dcf8-4533-4ef1-83cc-75527cab3377/items?path=%2FDockerfile&versionDescriptor%5BversionOptions%5D=0&versionDescriptor%5BversionType%5D=0&versionDescriptor%5Bversion%5D=main&resolveLfs=true&%24format=octetStream&api-version=5.0&download=true",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://dev.azure.com/Firefly-III/_git/MainImage",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/fireflyiii/core",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("podcastindexorg/podcasting20-helipad")]),e._v(" "),t("td",[e._v("v0.1.10")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Podcastindex-org/helipad/v0.1.10/umbrel/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Podcastindex-org/helipad/v0.1.10/umbrel/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/Podcastindex-org/helipad/v0.1.10/umbrel/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/Podcastindex-org/helipad",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/podcastindexorg/podcasting20-helipad",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("jvandrew/librepatron")]),e._v(" "),t("td",[e._v("0.7.39")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/JeffVandrewJr/patron/v0.7.39/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/JeffVandrewJr/patron",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/jvandrew/librepatron",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("jvandrew/isso")]),e._v(" "),t("td",[e._v("atron.22")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/JeffVandrewJr/isso/patron.22/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/JeffVandrewJr/isso",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/jvandrew/isso",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("lightninglabs/lightning-terminal")]),e._v(" "),t("td",[e._v("v0.9.2-alpha-path-prefix")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lightninglabs/lightning-terminal/v0.9.2-alpha/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lightninglabs/lightning-terminal/v0.9.2-alpha/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/lightninglabs/lightning-terminal",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/lightninglabs/lightning-terminal",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("mempool/frontend")]),e._v(" "),t("td",[e._v("v2.5.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/frontend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/frontend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/frontend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/mempool/mempool",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/mempool/frontend",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("mempool/backend")]),e._v(" "),t("td",[e._v("v2.5.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/backend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/backend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/mempool/mempool/v2.5.0/docker/backend/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/mempool/mempool",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/mempool/backend",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("mariadb")]),e._v(" "),t("td",[e._v("10.11")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/docker-library/mariadb/master/10.11/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/docker-library/mariadb",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/_/mariadb",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("kukks/nnostr-relay")]),e._v(" "),t("td",[e._v("v0.0.17")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/kukks/nnostr/Relay/v0.0.17/Relay/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/kukks/nnostr/Relay/v0.0.17/Relay/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/kukks/nnostr/Relay/v0.0.17/Relay/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/kukks/nnostr",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/kukks/nnostr-relay",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("sphinxlightning/sphinx-relay")]),e._v(" "),t("td",[e._v("v2.2.9")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/stakwork/sphinx-relay/v2.2.9/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/stakwork/sphinx-relay/v2.2.9/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/stakwork/sphinx-relay/v2.2.9/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/stakwork/sphinx-relay",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/sphinxlightning/sphinx-relay",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("djbooth007/tallycoin_connect")]),e._v(" "),t("td",[e._v("v1.8.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/djbooth007/tallycoin_connect/v1.8.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/djbooth007/tallycoin_connect/v1.8.0/Dockerfile.arm32v7",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/djbooth007/tallycoin_connect/v1.8.0/Dockerfile.arm64v8",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/djbooth007/tallycoin_connect",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/djbooth007/tallycoin_connect",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("talaia/python-teos")]),e._v(" "),t("td",[e._v("latest")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/talaia-labs/python-teos/master/docker/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/talaia-labs/python-teos/master/docker/arm32v7.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/talaia-labs/python-teos/master/docker/arm64v8.Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/talaia-labs/python-teos",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/talaia/python-teos",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("apotdevin/thunderhub")]),e._v(" "),t("td",[e._v("base-v0.13.21")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/apotdevin/thunderhub/v0.13.21/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/apotdevin/thunderhub/v0.13.21/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/apotdevin/thunderhub/v0.13.21/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/apotdevin/thunderhub",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/apotdevin/thunderhub",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("lncapital/torq")]),e._v(" "),t("td",[e._v("0.20.3")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lncapital/torq/master/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lncapital/torq/master/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/lncapital/torq/master/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/lncapital/torq",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/lncapital/torq",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("timescale/timescaledb")]),e._v(" "),t("td",[e._v("latest-pg14")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/timescale/timescaledb-docker/main/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/timescale/timescaledb-docker/main/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/timescale/timescaledb-docker/main/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/timescale/timescaledb-docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/timescale/timescaledb",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("zammad/zammad-docker-compose")]),e._v(" "),t("td",[e._v("zammad-postgresql-3.4.0-4")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/zammad/zammad-docker-compose/ff20084ce2829486076e9781fe27407ca6cc09bb/containers/zammad-postgresql/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/zammad/zammad-docker-compose",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/zammad/zammad-docker-compose",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("memcached")]),e._v(" "),t("td",[e._v("1.5.22-alpine")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/docker-library/memcached/master/alpine/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/docker-library/memcached",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/_/memcached",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("traefik")]),e._v(" "),t("td",[e._v("v2.6")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/containous/traefik-library-image/master/scratch/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/containous/traefik-library-image",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/_/traefik",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("chekaz/docker-trezarcoin")]),e._v(" "),t("td",[e._v("0.13.0")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/ChekaZ/docker/master/trezarcoin/1.2.0/Dockerfile",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/ChekaZ/docker",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/chekaz/docker-trezarcoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])]),e._v(" "),t("tr",[t("td",[e._v("romanornr/docker-viacoin")]),e._v(" "),t("td",[e._v("0.15.2")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://raw.githubusercontent.com/viacoin/docker-viacoin/master/viacoin/0.15.2/docker-viacoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("✔️"),t("OutboundLink")],1)]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[e._v("️❌")]),e._v(" "),t("td",{staticStyle:{"text-align":"center"}},[t("a",{attrs:{href:"https://github.com/viacoin/docker-viacoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("Github"),t("OutboundLink")],1),e._v(" - "),t("a",{attrs:{href:"https://hub.docker.com/r/romanornr/docker-viacoin",target:"_blank",rel:"noopener noreferrer"}},[e._v("DockerHub"),t("OutboundLink")],1)])])])]),e._v(" "),t("h1",{attrs:{id:"faq"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#faq"}},[e._v("#")]),e._v(" FAQ")]),e._v(" "),t("h2",{attrs:{id:"how-can-i-modify-my-environment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-modify-my-environment"}},[e._v("#")]),e._v(" How can I modify my environment?")]),e._v(" "),t("p",[e._v("As root, run "),t("code",[e._v(". btcpay-setup.sh")]),e._v("; this will show you the environment variable it is expecting.\nFor example, if you support "),t("code",[e._v("btc")]),e._v(" and "),t("code",[e._v("ltc")]),e._v(" already, and want to add "),t("code",[e._v("btg")]),e._v(":")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_CRYPTO3")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v("'btg'")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" btcpay-setup.sh -i\n")])])]),t("h2",{attrs:{id:"i-deployed-before-btcpay-setupsh-existed-before-may-17-2018-can-i-migrate-to-this-new-system"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#i-deployed-before-btcpay-setupsh-existed-before-may-17-2018-can-i-migrate-to-this-new-system"}},[e._v("#")]),e._v(" I deployed before "),t("code",[e._v("btcpay-setup.sh")]),e._v(" existed (before May 17, 2018), can I migrate to this new system?")]),e._v(" "),t("p",[e._v("Yes, run the following commands to update:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$DOWNLOAD_ROOT")]),e._v("/btcpayserver-docker\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" checkout master\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" pull\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" checkout 9acb5d8067cb5c46f59858137feb699b41ac9f19\nbtcpay-update.sh\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh -i\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("git")]),e._v(" checkout master\nbtcpay-update.sh\n\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("exit")]),e._v("\n")])])]),t("h2",{attrs:{id:"im-getting-an-error-on-windows-cannot-create-container-for-service-docker-mount-denied"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#im-getting-an-error-on-windows-cannot-create-container-for-service-docker-mount-denied"}},[e._v("#")]),e._v(" I'm getting an error on Windows: "),t("code",[e._v("Cannot create container for service docker: Mount denied")]),e._v("?")]),e._v(" "),t("p",[e._v("If you see this error:")]),e._v(" "),t("p",[t("code",[e._v("Cannot create container for service docker: b'Mount denied:\\nThe source path \"\\\\\\\\var\\\\\\\\run\\\\\\\\docker.sock:/var/run/docker.sock\"\\nis not a valid Windows path'")]),e._v(".")]),e._v(" "),t("p",[e._v("Run this in "),t("a",{attrs:{href:"https://docs.microsoft.com/en-us/powershell/scripting/windows-powershell/starting-windows-powershell",target:"_blank",rel:"noopener noreferrer"}},[e._v("powershell"),t("OutboundLink")],1),e._v(":")]),e._v(" "),t("div",{staticClass:"language-powershell extra-class"},[t("pre",{pre:!0,attrs:{class:"language-powershell"}},[t("code",[t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$Env")]),e._v(":COMPOSE_CONVERT_WINDOWS_PATHS=1\n")])])]),t("p",[e._v("Then, run "),t("code",[e._v("docker-compose -f EXAMPLE.yml up")]),e._v(".")]),e._v(" "),t("p",[e._v("This bug comes from Docker for Windows and is "),t("a",{attrs:{href:"https://github.com/docker/for-win/issues/1829",target:"_blank",rel:"noopener noreferrer"}},[e._v("tracked on Github"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"how-i-can-prune-my-nodes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-i-can-prune-my-nodes"}},[e._v("#")]),e._v(" How I can prune my node(s)?")]),e._v(" "),t("p",[e._v("This will prune your Bitcoin full node to a maximum of 100GB (of blocks):")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"opt-save-storage"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh -i\n")])])]),t("p",[e._v("Other options are "),t("a",{attrs:{href:"#generated-docker-compose"}},[e._v("documented here")]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"how-can-i-customize-the-generated-docker-compose-file"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-customize-the-generated-docker-compose-file"}},[e._v("#")]),e._v(" How can I customize the generated docker-compose file?")]),e._v(" "),t("p",[e._v("In some instances, you might want to customize your environment in more detail. While you could modify "),t("code",[e._v("Generated/docker-compose.generated.yml")]),e._v(" manually, your changes would be overwritten the next time you run "),t("code",[e._v("btcpay-update.sh")]),e._v(".")]),e._v(" "),t("p",[e._v("Luckily, you can leverage "),t("code",[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(" for this!")]),e._v(" "),t("p",[e._v("Let's enable "),t("strong",[e._v("pruning to 60 GB")]),e._v(", for example:")]),e._v(" "),t("p",[e._v("First, copy "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments/opt-save-storage.yml",target:"_blank",rel:"noopener noreferrer"}},[e._v("opt-save-storage"),t("OutboundLink")],1),e._v(" into the "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-docker/blob/master/docker-compose-generator/docker-fragments",target:"_blank",rel:"noopener noreferrer"}},[e._v("the docker fragment folder"),t("OutboundLink")],1),e._v(" as "),t("code",[e._v("opt-save-storage.custom.yml")]),e._v(". "),t("strong",[e._v("Important:")]),e._v(" the file must end with "),t("code",[e._v(".custom.yml")]),e._v(", or there will be git conflicts whenever you run "),t("code",[e._v("btcpay-update.sh")]),e._v(".")]),e._v(" "),t("p",[e._v("Modify the new "),t("code",[e._v("opt-save-storage.custom.yml")]),e._v(" file to your taste:")]),e._v(" "),t("div",{staticClass:"language-diff extra-class"},[t("pre",{pre:!0,attrs:{class:"language-diff"}},[t("code",[e._v('@@ -14,8 +14,7 @@ version: "3"\n'),t("span",{pre:!0,attrs:{class:"token unchanged"}},[t("span",{pre:!0,attrs:{class:"token prefix unchanged"}},[e._v(" ")]),t("span",{pre:!0,attrs:{class:"token line"}},[e._v("services:\n")]),t("span",{pre:!0,attrs:{class:"token prefix unchanged"}},[e._v(" ")]),t("span",{pre:!0,attrs:{class:"token line"}},[e._v(" bitcoind:\n")]),t("span",{pre:!0,attrs:{class:"token prefix unchanged"}},[e._v(" ")]),t("span",{pre:!0,attrs:{class:"token line"}},[e._v(" environment:\n")])]),t("span",{pre:!0,attrs:{class:"token deleted-sign deleted"}},[t("span",{pre:!0,attrs:{class:"token prefix deleted"}},[e._v("-")]),t("span",{pre:!0,attrs:{class:"token line"}},[e._v(" BITCOIN_EXTRA_ARGS: prune=100000\n")])]),t("span",{pre:!0,attrs:{class:"token inserted-sign inserted"}},[t("span",{pre:!0,attrs:{class:"token prefix inserted"}},[e._v("+")]),t("span",{pre:!0,attrs:{class:"token line"}},[e._v(" BITCOIN_EXTRA_ARGS: prune=60000\n")])])])])]),t("p",[e._v("Then set it up:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e._v(';opt-save-storage.custom"')]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" ./btcpay-setup.sh -i\n")])])]),t("h2",{attrs:{id:"can-i-run-btcpay-server-on-ports-other-than-80-and-443"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#can-i-run-btcpay-server-on-ports-other-than-80-and-443"}},[e._v("#")]),e._v(" Can I run BTCPay Server on ports other than 80 and 443?")]),e._v(" "),t("p",[e._v("You can change the ports for HTTP and HTTPS by setting the environment variables "),t("code",[e._v("REVERSEPROXY_HTTP_PORT")]),e._v(" and "),t("code",[e._v("REVERSEPROXY_HTTPS_PORT")]),e._v(". This is handy when ports 80 and 443 are already in use on your host, or you want to offload SSL termination with an existing web proxy.")]),e._v(" "),t("p",[e._v("When you set "),t("code",[e._v("REVERSEPROXY_HTTP_PORT")]),e._v(" to another value than 80, the built-in Let's Encrypt certificate will not work, as Let's Encrypt will try to validate your SSL certificate request by connecting from the internet to your domain on port 80. This validation request should be able to reach BTCPay Server in order to receive the certificate.")]),e._v(" "),t("p",[e._v("If you need to run on a different port, it's best to terminate SSL using another web proxy and forward your traffic.")]),e._v(" "),t("h2",{attrs:{id:"can-i-offload-https-termination"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#can-i-offload-https-termination"}},[e._v("#")]),e._v(" Can I offload HTTPS termination?")]),e._v(" "),t("p",[e._v("Yes. Please "),t("RouterLink",{attrs:{to:"/FAQ/FAQ-Deployment/#can-i-use-an-existing-nginx-server-as-a-reverse-proxy-with-ssl-termination"}},[e._v("see the documentation")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"how-can-i-back-up-my-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-back-up-my-btcpay-server"}},[e._v("#")]),e._v(" How can I back up my BTCPay Server?")]),e._v(" "),t("p",[e._v("See the "),t("RouterLink",{attrs:{to:"/Docker/backup-restore/"}},[e._v("Backup & Restore")]),e._v(" guide in our documentation.")],1),e._v(" "),t("details",[t("summary",[e._v("For backwards compatibility: Click here for the description of the old backup.sh process")]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Please consider switching to the "),t("RouterLink",{attrs:{to:"/Docker/backup-restore/"}},[e._v("new Backup & Restore process")]),e._v(", because the "),t("code",[e._v("backup.sh")]),e._v(" will not be maintained anymore.")],1)]),e._v(" "),t("p",[e._v("We provide a backup script that dumps the database and saves the important files:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_BASE_DIRECTORY")]),e._v('/btcpayserver-docker"')]),e._v("\n./backup.sh\n")])])]),t("p",[e._v("This will save the backup locally as "),t("code",[e._v("/var/lib/docker/volumes/backup_datadir/_data/backup.tar.gz")]),e._v(".\nThese are the options to customize the backup name and location:")]),e._v(" "),t("ul",[t("li",[t("code",[e._v("BACKUP_TIMESTAMP=true")]),e._v(" saves the backup with datetime as part of the file name, so that backups do not get overwritten.")]),e._v(" "),t("li",[t("code",[e._v("BACKUP_PROVIDER=SCP")]),e._v(" saves the backup remotely, requires additional "),t("code",[e._v("SCP_TARGET")]),e._v(" environment variable (see below).")]),e._v(" "),t("li",[t("code",[e._v("BACKUP_PROVIDER=Dropbox")]),e._v(" saves the backup to Dropbox, requires additional "),t("code",[e._v("DROPBOX_TOKEN")]),e._v(" environment variable (see below).")])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_BASE_DIRECTORY")]),e._v('/btcpayserver-docker"')]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Backup with custom file name and timestamp:")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BACKUP_TIMESTAMP")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("true ./backup.sh\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Backup via SCP:")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BACKUP_PROVIDER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("SCP "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("SCP_TARGET")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("myhost:backups/btcpay ./backup.sh\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# Backup to Dropbox:")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BACKUP_PROVIDER")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("Dropbox "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("DROPBOX_TOKEN")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("myDropboxToken ./backup.sh\n")])])]),t("p",[e._v("You can also choose to only dump the database.\nThis option does not need to stop and restart the docker-containers:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_BASE_DIRECTORY")]),e._v('/btcpayserver-docker"')]),e._v("\n./backup.sh --only-db\n")])])])]),e._v(" "),t("h2",{attrs:{id:"how-can-i-connect-to-the-database"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-connect-to-the-database"}},[e._v("#")]),e._v(" How can I connect to the database?")]),e._v(" "),t("p",[e._v("On the server you can open a database session by connecting via "),t("code",[e._v("psql")]),e._v(" as the postgres user:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("exec")]),e._v(" -ti "),t("span",{pre:!0,attrs:{class:"token variable"}},[t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$(")]),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("ps")]),e._v(" -a -q -f "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"name=postgres_1"')]),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v(")")])]),e._v(" psql -U postgres\n")])])]),t("p",[e._v("Then, inside "),t("code",[e._v("psql")]),e._v(" you can select a database and interact with the tables:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# list databases")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("l\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# connect to database")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("c btcpayservermainnet\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# list tables")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("dt\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# list users")]),e._v("\nSELECT "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Id"')]),e._v(", "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"Email"')]),e._v(" FROM "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"AspNetUsers"')]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# end session")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("q\n")])])]),t("p",[e._v("The main BTCPay Server database tables are part of the "),t("code",[e._v("public")]),e._v(" schema.\nPlugins have their own schema, named after the plugin.")]),e._v(" "),t("p",[e._v("By default, only the tables of the "),t("code",[e._v("public")]),e._v(" schema are shown.\nIf you want to also see and select the plugin tables, you need to extend the search path:")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# list plugin schemas")]),e._v("\nSELECT * FROM pg_catalog.pg_namespace WHERE nspname LIKE "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v("'BTCPayServer.%'")]),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# extend search path")]),e._v("\nSET search_path TO "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"BTCPayServer.Plugins.MyPlugin"')]),e._v(", public"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v(";")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token comment"}},[e._v("# table list now also shows the MyPlugin tables")]),e._v("\n"),t("span",{pre:!0,attrs:{class:"token punctuation"}},[e._v("\\")]),e._v("dt\n")])])]),t("h2",{attrs:{id:"how-do-i-upgrade-my-btcpay-server-docker"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-do-i-upgrade-my-btcpay-server-docker"}},[e._v("#")]),e._v(" How do I upgrade my BTCPay Server docker?")]),e._v(" "),t("p",[e._v("Run the script "),t("code",[e._v("./btcpay-update.sh")]),e._v(" and patiently wait for your server to be upgraded.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/114.e6350514.js b/assets/js/114.5a5fa1ee.js similarity index 99% rename from assets/js/114.e6350514.js rename to assets/js/114.5a5fa1ee.js index 52737e4864..c675adb6f0 100644 --- a/assets/js/114.e6350514.js +++ b/assets/js/114.5a5fa1ee.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{736:function(a,e,t){"use strict";t.r(e);var s=t(9),r=Object(s.a)({},(function(){var a=this,e=a._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"joinmarket-support"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#joinmarket-support"}},[a._v("#")]),a._v(" Joinmarket support")]),a._v(" "),e("p",[a._v("JoinMarket is software to create a special kind of bitcoin transaction called a CoinJoin transaction. Its aim is to improve the confidentiality and privacy of bitcoin transactions.")]),a._v(" "),e("p",[a._v("You will be able to use your bitcoin to help other protect their privacy, while earning a yield for this service.")]),a._v(" "),e("p",[a._v("See "),e("a",{attrs:{href:"https://github.com/JoinMarket-Org/JoinMarket-Docs/blob/master/High-level-design.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("the documentation of the joinmarket project"),e("OutboundLink")],1),a._v(" for more details.")]),a._v(" "),e("p",[a._v("This is a very advanced functionality, and there is no easy way to recover if something goes wrong.")]),a._v(" "),e("p",[a._v("For hardcore bitcoiners only.")]),a._v(" "),e("h2",{attrs:{id:"how-to-use"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#how-to-use"}},[a._v("#")]),a._v(" How to use")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),a._v(';opt-add-joinmarket"')]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v(".")]),a._v(" btcpay-setup.sh -i\n")])])]),e("p",[a._v("Then you need to setup your default joinmarket wallet:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("jm.sh wallet-tool-generate\njm.sh set-wallet "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("wallet_file_name"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("password"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),e("p",[a._v("Once done, you will need to send some money to the joinmarket wallet:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("jm.sh wallet-tool\n")])])]),e("h2",{attrs:{id:"how-to-change-joinmarket-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#how-to-change-joinmarket-configuration"}},[a._v("#")]),a._v(" How to change joinmarket configuration?")]),a._v(" "),e("p",[a._v("Connect to your container, and edit your configuration:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("jm.sh "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("bash")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("vim")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$CONFIG")]),a._v("\n")])])]),e("h2",{attrs:{id:"managing-your-wallet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#managing-your-wallet"}},[a._v("#")]),a._v(" Managing your wallet")]),a._v(" "),e("p",[a._v("By running "),e("code",[a._v("jm.sh")]),a._v(" without parameter, you will get a bunch of command that you can run such as:")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("Usage:\n------\n\nTooling to setup your joinmarket yield generator\n\n wallet-tool: Run wallet-tools.py on the wallet\n wallet-tool-generate: Generate a new wallet\n set-wallet: Set the wallet that the yield generator need to use\n bash: Open an interactive bash session in the joinmarket container\n receive-payjoin: Receive a payjoin payment\n sendpayment: Send a payjoin through coinjoin (password needed)\n\nExample:\n * jm.sh wallet-tool-generate\n * jm.sh set-wallet wallet.jmdat mypassword\n * jm.sh wallet-tool\n * jm.sh receive-payjoin \n * jm.sh sendpayment
    \n * jm.sh wallet-tool history\n * jm.sh bash\n")])])]),e("p",[a._v("Note "),e("code",[a._v("jm.sh")]),a._v(" commands are wrapper around joinmarket scripts. Those are just convenience command, you can always directly connect to the container via "),e("code",[a._v("jm.sh bash")]),a._v(" and achieve the same result with the joinmarket python scripts.")]),a._v(" "),e("h2",{attrs:{id:"getting-command-prompt-into-the-container"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-command-prompt-into-the-container"}},[a._v("#")]),a._v(" Getting command prompt into the container")]),a._v(" "),e("p",[a._v("You can connect to the container and have direct access to joinmarket scripts such as:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("jm.sh "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("bash")]),a._v("\nsendpayment.py wallet.jmdat "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("..")]),a._v(".\n")])])]),e("h2",{attrs:{id:"managing-the-services-such-as-yield-generators"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#managing-the-services-such-as-yield-generators"}},[a._v("#")]),a._v(" Managing the services such as yield generators")]),a._v(" "),e("p",[a._v("First connect to the container's bash")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("jm.sh "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("bash")]),a._v("\n")])])]),e("p",[a._v("You can list available services to run:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl status\n")])])]),e("p",[a._v("Which might show you")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("root"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" supervisorctl status\nob-watcher STOPPED Not started\nyg-privacyenhanced STOPPED Not started\nyield-generator-basic STOPPED Not started\n")])])]),e("p",[a._v("You can start a yield generator with:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl start yg-privacyenhanced\n")])])]),e("p",[a._v("*** Note that services will NOT be restarted automatically if the container restart. ***")]),a._v(" "),e("p",[a._v("If you want to automatically restart the service when the container restart,")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("vim")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$AUTO_START")]),a._v("\n")])])]),e("p",[a._v("Then remove the comment "),e("code",[a._v("#")]),a._v(" in front of the service name you want to automatically restart.")]),a._v(" "),e("h2",{attrs:{id:"ob-watcher"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ob-watcher"}},[a._v("#")]),a._v(" OB-Watcher")]),a._v(" "),e("p",[a._v("The "),e("code",[a._v("ob-watcher")]),a._v(" service allows you to "),e("a",{attrs:{href:"https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/orderbook.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("see an order book"),e("OutboundLink")],1),a._v(".")]),a._v(" "),e("p",[a._v("You can activate it:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl start ob-watcher\n")])])]),e("p",[a._v("Then you can browse it by browsing "),e("code",[a._v("https://.com/obwatch/")])]),a._v(" "),e("h2",{attrs:{id:"troubleshooting"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[a._v("#")]),a._v(" Troubleshooting")]),a._v(" "),e("h3",{attrs:{id:"error-failed-to-load-wallet-you-need-to-remove-the-lock-file"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#error-failed-to-load-wallet-you-need-to-remove-the-lock-file"}},[a._v("#")]),a._v(" Error: Failed to load wallet, you need to remove the lock file")]),a._v(" "),e("p",[a._v("You might sometimes get the following error when running a python script for joinmarket:")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("Failed to load wallet, error message: RetryableStorageError('File is currently in use (locked by pid 12822). If this is a leftover from a crashed instance you need to remove the lock file `/root/.joinmarket/wallets/.wallet.jmdat.lock` manually.')\n")])])]),e("p",[a._v("This is because a service using the wallet is running, so you need to shut it down before running the command.")]),a._v(" "),e("p",[a._v("Check which service is running:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl status\n")])])]),e("p",[a._v("And stop it")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl stop yg-privacyenhanced\n")])])]),e("h3",{attrs:{id:"read-the-logs-of-services"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#read-the-logs-of-services"}},[a._v("#")]),a._v(" Read the logs of services")]),a._v(" "),e("p",[a._v("You can use the "),e("code",[a._v("supervisorctl tail")]),a._v(" command:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("tail")]),a._v(" yg-privacyenhanced\n")])])]),e("p",[a._v("You can also check the logs in the "),e("code",[a._v("$DATADIR/logs")]),a._v(" folder.")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[114],{735:function(a,e,t){"use strict";t.r(e);var s=t(9),r=Object(s.a)({},(function(){var a=this,e=a._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"joinmarket-support"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#joinmarket-support"}},[a._v("#")]),a._v(" Joinmarket support")]),a._v(" "),e("p",[a._v("JoinMarket is software to create a special kind of bitcoin transaction called a CoinJoin transaction. Its aim is to improve the confidentiality and privacy of bitcoin transactions.")]),a._v(" "),e("p",[a._v("You will be able to use your bitcoin to help other protect their privacy, while earning a yield for this service.")]),a._v(" "),e("p",[a._v("See "),e("a",{attrs:{href:"https://github.com/JoinMarket-Org/JoinMarket-Docs/blob/master/High-level-design.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("the documentation of the joinmarket project"),e("OutboundLink")],1),a._v(" for more details.")]),a._v(" "),e("p",[a._v("This is a very advanced functionality, and there is no easy way to recover if something goes wrong.")]),a._v(" "),e("p",[a._v("For hardcore bitcoiners only.")]),a._v(" "),e("h2",{attrs:{id:"how-to-use"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#how-to-use"}},[a._v("#")]),a._v(" How to use")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token assign-left variable"}},[a._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("=")]),e("span",{pre:!0,attrs:{class:"token string"}},[a._v('"'),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),a._v(';opt-add-joinmarket"')]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token builtin class-name"}},[a._v(".")]),a._v(" btcpay-setup.sh -i\n")])])]),e("p",[a._v("Then you need to setup your default joinmarket wallet:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("jm.sh wallet-tool-generate\njm.sh set-wallet "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("wallet_file_name"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("<")]),a._v("password"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v("\n")])])]),e("p",[a._v("Once done, you will need to send some money to the joinmarket wallet:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("jm.sh wallet-tool\n")])])]),e("h2",{attrs:{id:"how-to-change-joinmarket-configuration"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#how-to-change-joinmarket-configuration"}},[a._v("#")]),a._v(" How to change joinmarket configuration?")]),a._v(" "),e("p",[a._v("Connect to your container, and edit your configuration:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("jm.sh "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("bash")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("vim")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$CONFIG")]),a._v("\n")])])]),e("h2",{attrs:{id:"managing-your-wallet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#managing-your-wallet"}},[a._v("#")]),a._v(" Managing your wallet")]),a._v(" "),e("p",[a._v("By running "),e("code",[a._v("jm.sh")]),a._v(" without parameter, you will get a bunch of command that you can run such as:")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("Usage:\n------\n\nTooling to setup your joinmarket yield generator\n\n wallet-tool: Run wallet-tools.py on the wallet\n wallet-tool-generate: Generate a new wallet\n set-wallet: Set the wallet that the yield generator need to use\n bash: Open an interactive bash session in the joinmarket container\n receive-payjoin: Receive a payjoin payment\n sendpayment: Send a payjoin through coinjoin (password needed)\n\nExample:\n * jm.sh wallet-tool-generate\n * jm.sh set-wallet wallet.jmdat mypassword\n * jm.sh wallet-tool\n * jm.sh receive-payjoin \n * jm.sh sendpayment
    \n * jm.sh wallet-tool history\n * jm.sh bash\n")])])]),e("p",[a._v("Note "),e("code",[a._v("jm.sh")]),a._v(" commands are wrapper around joinmarket scripts. Those are just convenience command, you can always directly connect to the container via "),e("code",[a._v("jm.sh bash")]),a._v(" and achieve the same result with the joinmarket python scripts.")]),a._v(" "),e("h2",{attrs:{id:"getting-command-prompt-into-the-container"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#getting-command-prompt-into-the-container"}},[a._v("#")]),a._v(" Getting command prompt into the container")]),a._v(" "),e("p",[a._v("You can connect to the container and have direct access to joinmarket scripts such as:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("jm.sh "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("bash")]),a._v("\nsendpayment.py wallet.jmdat "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("..")]),a._v(".\n")])])]),e("h2",{attrs:{id:"managing-the-services-such-as-yield-generators"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#managing-the-services-such-as-yield-generators"}},[a._v("#")]),a._v(" Managing the services such as yield generators")]),a._v(" "),e("p",[a._v("First connect to the container's bash")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("jm.sh "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("bash")]),a._v("\n")])])]),e("p",[a._v("You can list available services to run:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl status\n")])])]),e("p",[a._v("Which might show you")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("root"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v(">")]),a._v(" supervisorctl status\nob-watcher STOPPED Not started\nyg-privacyenhanced STOPPED Not started\nyield-generator-basic STOPPED Not started\n")])])]),e("p",[a._v("You can start a yield generator with:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl start yg-privacyenhanced\n")])])]),e("p",[a._v("*** Note that services will NOT be restarted automatically if the container restart. ***")]),a._v(" "),e("p",[a._v("If you want to automatically restart the service when the container restart,")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("vim")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$AUTO_START")]),a._v("\n")])])]),e("p",[a._v("Then remove the comment "),e("code",[a._v("#")]),a._v(" in front of the service name you want to automatically restart.")]),a._v(" "),e("h2",{attrs:{id:"ob-watcher"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#ob-watcher"}},[a._v("#")]),a._v(" OB-Watcher")]),a._v(" "),e("p",[a._v("The "),e("code",[a._v("ob-watcher")]),a._v(" service allows you to "),e("a",{attrs:{href:"https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/orderbook.md",target:"_blank",rel:"noopener noreferrer"}},[a._v("see an order book"),e("OutboundLink")],1),a._v(".")]),a._v(" "),e("p",[a._v("You can activate it:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl start ob-watcher\n")])])]),e("p",[a._v("Then you can browse it by browsing "),e("code",[a._v("https://.com/obwatch/")])]),a._v(" "),e("h2",{attrs:{id:"troubleshooting"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[a._v("#")]),a._v(" Troubleshooting")]),a._v(" "),e("h3",{attrs:{id:"error-failed-to-load-wallet-you-need-to-remove-the-lock-file"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#error-failed-to-load-wallet-you-need-to-remove-the-lock-file"}},[a._v("#")]),a._v(" Error: Failed to load wallet, you need to remove the lock file")]),a._v(" "),e("p",[a._v("You might sometimes get the following error when running a python script for joinmarket:")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("Failed to load wallet, error message: RetryableStorageError('File is currently in use (locked by pid 12822). If this is a leftover from a crashed instance you need to remove the lock file `/root/.joinmarket/wallets/.wallet.jmdat.lock` manually.')\n")])])]),e("p",[a._v("This is because a service using the wallet is running, so you need to shut it down before running the command.")]),a._v(" "),e("p",[a._v("Check which service is running:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl status\n")])])]),e("p",[a._v("And stop it")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl stop yg-privacyenhanced\n")])])]),e("h3",{attrs:{id:"read-the-logs-of-services"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#read-the-logs-of-services"}},[a._v("#")]),a._v(" Read the logs of services")]),a._v(" "),e("p",[a._v("You can use the "),e("code",[a._v("supervisorctl tail")]),a._v(" command:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("supervisorctl "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("tail")]),a._v(" yg-privacyenhanced\n")])])]),e("p",[a._v("You can also check the logs in the "),e("code",[a._v("$DATADIR/logs")]),a._v(" folder.")])])}),[],!1,null,null,null);e.default=r.exports}}]); \ No newline at end of file diff --git a/assets/js/115.13d34b8a.js b/assets/js/115.0846b610.js similarity index 97% rename from assets/js/115.13d34b8a.js rename to assets/js/115.0846b610.js index 9f46e585a7..a7bf8f7829 100644 --- a/assets/js/115.13d34b8a.js +++ b/assets/js/115.0846b610.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{735:function(t,a,s){"use strict";s.r(a);var e=s(9),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"lightning-terminal-lit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lightning-terminal-lit"}},[t._v("#")]),t._v(" Lightning Terminal (LiT)")]),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/lightninglabs/lightning-terminal",target:"_blank",rel:"noopener noreferrer"}},[t._v("Lightning Terminal"),a("OutboundLink")],1),t._v(" (LiT) is a browser-based interface for managing channel liquidity.\nIt integrates the Lightning Labs services Loop, Poold and Faraday all in one and offers a web UI to manage them.\nLND required.")]),t._v(" "),a("h2",{attrs:{id:"installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation"}},[t._v("#")]),t._v(" Installation")]),t._v(" "),a("p",[t._v("To install the Lightning Terminal service, you need to set a password for the login.")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set password")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("LIT_PASSWD")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"sUpErSeCuRe"')]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Add fragment and run setup")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),a("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t._v(';opt-add-lightning-terminal"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" btcpay-setup.sh -i\n")])])]),a("p",[t._v("Afterwards you should see Lightning Terminal appear as a service on the Server Settings > Services page in BTCPay Server.")]),t._v(" "),a("h2",{attrs:{id:"troubleshooting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[t._v("#")]),t._v(" Troubleshooting")]),t._v(" "),a("p",[t._v("To see the logs of the Lightning Terminal service, you can run this command:")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("docker")]),t._v(" logs -f generated_lnd_lit_1\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[115],{736:function(t,a,s){"use strict";s.r(a);var e=s(9),n=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"lightning-terminal-lit"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#lightning-terminal-lit"}},[t._v("#")]),t._v(" Lightning Terminal (LiT)")]),t._v(" "),a("p",[a("a",{attrs:{href:"https://github.com/lightninglabs/lightning-terminal",target:"_blank",rel:"noopener noreferrer"}},[t._v("Lightning Terminal"),a("OutboundLink")],1),t._v(" (LiT) is a browser-based interface for managing channel liquidity.\nIt integrates the Lightning Labs services Loop, Poold and Faraday all in one and offers a web UI to manage them.\nLND required.")]),t._v(" "),a("h2",{attrs:{id:"installation"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#installation"}},[t._v("#")]),t._v(" Installation")]),t._v(" "),a("p",[t._v("To install the Lightning Terminal service, you need to set a password for the login.")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Set password")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("LIT_PASSWD")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"sUpErSeCuRe"')]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("# Add fragment and run setup")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v("export")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[t._v("BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v('"'),a("span",{pre:!0,attrs:{class:"token variable"}},[t._v("$BTCPAYGEN_ADDITIONAL_FRAGMENTS")]),t._v(';opt-add-lightning-terminal"')]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[t._v(".")]),t._v(" btcpay-setup.sh -i\n")])])]),a("p",[t._v("Afterwards you should see Lightning Terminal appear as a service on the Server Settings > Services page in BTCPay Server.")]),t._v(" "),a("h2",{attrs:{id:"troubleshooting"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#troubleshooting"}},[t._v("#")]),t._v(" Troubleshooting")]),t._v(" "),a("p",[t._v("To see the logs of the Lightning Terminal service, you can run this command:")]),t._v(" "),a("div",{staticClass:"language-bash extra-class"},[a("pre",{pre:!0,attrs:{class:"language-bash"}},[a("code",[a("span",{pre:!0,attrs:{class:"token function"}},[t._v("docker")]),t._v(" logs -f generated_lnd_lit_1\n")])])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/133.3dce1eef.js b/assets/js/133.3dce1eef.js deleted file mode 100644 index 461a49882d..0000000000 --- a/assets/js/133.3dce1eef.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{804:function(t,a,r){"use strict";r.r(a);var e=r(9),h=Object(e.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("div",{staticClass:"topics"},[a("h3",[t._v("Explore by topic")]),t._v(" "),a("ul",[a("li",[a("a",{attrs:{href:"/Guide/"}},[t._v("What is BTCPay Server")])]),t._v(" "),a("li",[a("a",{attrs:{href:"/UseCase/"}},[t._v("Why BTCPay Server")])]),t._v(" "),a("li",[a("a",{attrs:{href:"/TryItOut/"}},[t._v("How to deploy BTCPay Server")])]),t._v(" "),a("li",[a("a",{attrs:{href:"/WalletSetup/"}},[t._v("Wallet Setup")])]),t._v(" "),a("li",[a("a",{attrs:{href:"/LightningNetwork/"}},[t._v("Lightning Network")])]),t._v(" "),a("li",[a("a",{attrs:{href:"/Apps/#point-of-sale-app/"}},[t._v("How to setup POS ")])]),t._v(" "),a("li",[a("a",{attrs:{href:"/Development/GreenFieldExample/"}},[t._v("Greenfield API")])]),t._v(" "),a("li",[a("a",{attrs:{href:"/FAQ/"}},[t._v("Frequently Asked Questions"),a("br"),t._v("and Common Issues")])]),t._v(" "),a("li",[a("a",{attrs:{href:"/Contribute/"}},[t._v("How to contribute to BTCPay Server")])])])]),t._v(" "),a("svg",{attrs:{width:"0",height:"0",xmlns:"http://www.w3.org/2000/svg"}},[a("defs",[a("linearGradient",{attrs:{id:"spiral-gradient",x1:"81.36",y1:"311.35",x2:"541.35",y2:"311.35",gradientUnits:"userSpaceOnUse"}},[a("stop",{attrs:{offset:".18","stop-color":"#00f"}}),a("stop",{attrs:{offset:"1","stop-color":"#f0f"}})],1),t._v(" "),a("radialGradient",{attrs:{id:"acinq-a",cx:"47.833",cy:"51.834",r:"56.832"}},[a("stop",{attrs:{offset:"0","stop-color":"#fff"}}),a("stop",{attrs:{offset:"1","stop-color":"#fff","stop-opacity":"0"}})],1)],1),t._v(" "),a("symbol",{attrs:{id:"supporter-spiral",viewBox:"0 0 629 629"}},[a("path",{attrs:{d:"M326.4 572.09C201.2 572.09 141 503 112.48 445c-28.22-57.53-30.59-114.56-30.79-122.69-4.85-77 41-231.78 249.58-271.2a28.05 28.05 0 0 1 10.41 55.13c-213.12 40.28-204.44 206-204 213 0 .53.06 1.06.07 1.6.15 7.9 5.1 195.16 188.65 195.16 68.34 0 116.6-29.4 143.6-87.37 24.48-52.74 19.29-112.45-13.52-155.83-22.89-30.27-52.46-45-90.38-45-34.46 0-63.47 9.88-86.21 29.37A91.5 91.5 0 0 0 248 322.3c-1.41 25.4 7.14 49.36 24.07 67.49C287.27 406 305 413.9 326.4 413.9c27.46 0 45.52-9 53.66-26.81 8.38-18.3 3.61-38.93-.19-43.33-9.11-10-18.69-13.68-22.48-13-2.53.43-5.78 4.61-8.48 10.92a28 28 0 0 1-51.58-22c14.28-33.44 37.94-42 50.76-44.2 24.78-4.18 52.17 7.3 73.34 30.65s25.51 68.55 10.15 103.22C421.54 432 394.52 470 326.4 470c-36.72 0-69.67-14.49-95.29-41.92-27.47-29.4-41.34-68.08-39.11-108.89a149.1 149.1 0 0 1 51.31-104.6c33.19-28.45 74.48-42.87 122.71-42.87 55.12 0 101.85 23.25 135.12 67.23 45.36 60 52.9 141.71 19.66 213.3-25.35 54.67-79.68 119.84-194.4 119.84Z",fill:"url(#spiral-gradient)"}})]),t._v(" "),a("symbol",{attrs:{id:"supporter-bailliegifford",viewBox:"0 0 252.875 70.249"}},[a("path",{staticStyle:{fill:"var(--btcpay-body-text)","fill-opacity":"1",stroke:"var(--btcpay-body-text)","stroke-opacity":"1"},attrs:{d:"M366.764 291.907h4.554l-5.046 12.789h-4.553zM377.541 302.546h4.675l-.849 2.15h-9.229l5.046-12.789h4.554zM389.988 302.546h4.676l-.849 2.15h-9.229l5.045-12.789h4.554zM403.079 291.907h4.554l-5.046 12.789h-4.553zM418.795 302.487l-.871 2.209h-9.471l5.046-12.789h9.397l-.871 2.209h-4.844l-1.139 2.887h4.457l-.826 2.093h-4.457l-1.338 3.391zM445.115 294.349a6.207 6.207 0 0 0-2.213-.407c-3.344 0-4.898 3.391-5.35 4.535-.682 1.725-1.15 3.469.277 4.147.49.232 1.135.252 1.402.252l1.186-3.004h-1.648l.795-2.015h5.766l-2.4 6.084c-1.66.523-3.16.95-5.268.95-4.748 0-6.602-2.732-5.109-6.511 1.566-3.973 5.77-6.647 10.566-6.647 1.842 0 2.971.33 3.777.62l-1.781 1.996zM453.309 291.907h4.554l-5.045 12.789h-4.554zM458.684 304.696l5.045-12.789h9.398l-.871 2.209h-4.844l-1.269 3.217h4.457l-.871 2.209h-4.458l-2.033 5.154zM472.639 304.696l5.047-12.789h9.398l-.871 2.209h-4.846l-1.269 3.217h4.459l-.873 2.209h-4.457l-2.034 5.154z",transform:"translate(-293.5 -262.775)"}}),a("path",{staticStyle:{fill:"var(--btcpay-body-text)","fill-opacity":"1","fill-rule":"evenodd",stroke:"var(--btcpay-body-text)","stroke-opacity":"1"},attrs:{d:"M335.139 302.643c.557 0 1.187 0 1.747-.252.576-.232 1.106-.717 1.489-1.686.336-.854.189-1.279-.211-1.492-.376-.213-1.006-.213-1.612-.213h-.63l-1.438 3.643h.655zm2.154-5.523c.46 0 .993 0 1.521-.232.496-.213.986-.659 1.33-1.531.283-.717.162-1.085-.181-1.259-.319-.175-.852-.175-1.409-.175h-.63l-1.262 3.198h.631v-.001zm2.832-5.213c1.187 0 2.578.097 3.531.504.954.407 1.47 1.124.966 2.403-.727 1.841-2.749 2.732-4.501 3.12.502.077 1.378.252 2.05.698.647.445 1.06 1.182.578 2.403-.443 1.124-1.742 2.636-4.352 3.294-.995.252-2.107.368-4.481.368h-4.651l5.045-12.79h5.815zM350.689 300.201h2.833l.017-3.605-2.85 3.605zm6.664-8.294.792 12.79h-4.651l-.017-2.597h-4.288l-2.066 2.597h-3.149l10.714-12.79h2.665zM492.998 302.875c.922 0 2.209-.504 3.793-4.515 1.451-3.682 1.238-4.612-.047-4.612-1.283 0-2.363.775-3.955 4.806-1.07 2.713-1.316 4.321.209 4.321zm4.59-11.143c3.561 0 6.08 1.841 4.299 6.356-1.482 3.759-4.936 6.802-9.707 6.802-4.555 0-5.779-2.791-4.295-6.55 1.65-4.185 5.635-6.608 9.703-6.608zM512.328 293.922l-1.469 3.721h.484c1.502 0 2.234-.445 2.793-1.86.582-1.473.25-1.86-1.324-1.86h-.484v-.001zm1.254-2.015c2.398 0 3.312.078 4.168.426.814.33 1.785 1.124 1.166 2.694-.58 1.473-2.047 2.732-4.277 3.353l1.916 6.317h-4.893l-.965-5.29h-.533l-2.088 5.29h-4.408l5.047-12.79h4.867zM528.418 293.961l-3.424 8.682h.387c1.115 0 2.955.368 4.906-4.573 1.619-4.108.264-4.108-1.385-4.108h-.484v-.001zm.811-2.054c2.254 0 4.336 0 5.549 1.163 1.461 1.396.748 3.818.334 4.864-.727 1.841-2.406 4.748-6.227 6.143-1.24.446-2.498.62-5.09.62h-4.166l5.047-12.79h4.553z","clip-rule":"evenodd",transform:"translate(-293.5 -262.775)"}}),a("path",{staticStyle:{fill:"var(--btcpay-body-text)","fill-opacity":"1",stroke:"var(--btcpay-body-text)","stroke-opacity":"1"},attrs:{d:"M294 297.4c0-19.399 57.138-35.125 127.624-35.125 62.064 0 113.781 12.192 125.251 28.35-13.078-12.792-58.92-22.238-113.465-22.238-64.731 0-117.206 13.303-117.206 29.714 0 16.411 52.474 29.715 117.206 29.715 47.799 0 88.914-7.254 107.154-17.656-18.555 13.09-64.812 22.364-118.941 22.364C351.138 332.524 294 316.799 294 297.4z",transform:"translate(-293.5 -262.775)"}})]),t._v(" "),a("symbol",{attrs:{id:"supporter-coincards",viewBox:"0 0 64 32"}},[a("g",{attrs:{fill:"none"}},[a("path",{attrs:{d:"M32.7 5.9c-.2-1-1.3-1.7-2.3-1.4L7.7 9.9c-1 .2-1.7 1.3-1.4 2.3l3.1 12.9c.2 1 1.3 1.7 2.3 1.4l22.7-5.4c1-.2 1.7-1.3 1.4-2.3L32.7 5.9Z",fill:"#EF8022"}}),a("path",{attrs:{d:"M12.6 30.3c-.2.2-.5.3-.7.3l.8.5c.9.6 2.1.4 2.7-.5l3.1-4.4-5.9 4.1ZM2.3 19.5l-1 1.4c-.6.9-.4 2.1.5 2.7L8.1 28l-5.8-8.5ZM12.9 8.1l7.2-5-2.7-1.9c-.9-.6-2.1-.4-2.7.5l-5 7.2 3.2-.8Z",fill:"#F9F185"}}),a("path",{attrs:{d:"M9.7 29.4c.6.9 1.8 1.1 2.7.5l6.7-4.6-7.4 1.8c-1.3.3-2.6-.5-2.9-1.8L6 13.5l-3.3 2.3c-.9.6-1.1 1.8-.5 2.7l7.5 10.9Zm4.5-21.6L25.9 5l-1.3-2c-.6-.9-1.8-1.1-2.7-.5l-7.7 5.3Z",fill:"#FFC214"}}),a("path",{attrs:{d:"M11.9 24.8c-.7 0-1.4-.5-1.7-1.1l-1.5-3.2 1.1 4.6c.2.6.7 1.1 1.4 1.1h.3l17-4.1-16.2 2.7h-.4Z",fill:"#FFC214"}}),a("path",{attrs:{d:"M16 17.5s-1.1 1.2-2.5 1.2c-1.7 0-2.6-1.4-2.6-2.8 0-1.3.9-2.7 2.6-2.7 1.3 0 2.3 1 2.3 1l1.1-1.7s-.6-.7-1.9-1.1v-1.2h-1.1v1h-.6v-1h-1.1v1.1c-2.2.5-3.7 2.4-3.7 4.7 0 2.4 1.5 4.2 3.7 4.7v1.2h1.1v-1h.6V22H15v-1.3c1.4-.4 2.1-1.3 2.1-1.3L16 17.5ZM21 13.7c2.1 0 3.8 1.4 3.8 3.6 0 2.1-1.7 3.5-3.8 3.5-2.1 0-3.8-1.4-3.8-3.5s1.7-3.6 3.8-3.6Zm0 5.2c.8 0 1.5-.6 1.5-1.6s-.7-1.7-1.5-1.7-1.5.6-1.5 1.7c0 1 .7 1.6 1.5 1.6Zm4.3-5h2.3v6.7h-2.3v-6.7Zm0-2.6h2.2v1.8h-2.2v-1.8Zm3.2 2.6h2.2v1c.3-.5 1-1.2 2.1-1.2 1.4 0 2.4.6 2.4 2.5v4.4h-2.3v-4c0-.6-.2-.9-.7-.9-.7 0-1.1.4-1.3 1-.1.3-.1.6-.1.9v3h-2.3v-6.7Z",fill:"#FFF"}}),a("path",{attrs:{d:"M39.3 13.9c1.7 0 2.5 1 2.5 1l-.6.9s-.7-.8-1.8-.8c-1.3 0-2.3 1-2.3 2.4 0 1.3 1 2.4 2.3 2.4 1.2 0 2-.9 2-.9l.5.9s-.9 1.1-2.6 1.1c-2.1 0-3.5-1.5-3.5-3.5-.1-2 1.4-3.5 3.5-3.5Zm6.8 2.6h.3v-.1c0-1.1-.6-1.5-1.5-1.5-1 0-1.8.6-1.8.6l-.5-.9s1-.8 2.5-.8c1.7 0 2.6.9 2.6 2.6v4.2h-1.2v-1.1s-.5 1.3-2.1 1.3c-1.1 0-2.3-.7-2.3-2 0-2.2 2.9-2.3 4-2.3Zm-1.4 3.3c1.1 0 1.8-1.1 1.8-2.1v-.2h-.3c-1 0-2.7.1-2.7 1.3-.1.5.3 1 1.2 1Zm3.8-5.8h1.2v1.7c.3-1 1.1-1.7 2.1-1.7h.3v1.3h-.4c-.8 0-1.6.6-1.9 1.6-.1.4-.2.8-.2 1.2v2.7h-1.3V14h.2Zm6.8-.1c1.5 0 2 1 2 1v-3.5h1.3v9.2h-1.2v-1s-.5 1.2-2.2 1.2c-1.8 0-2.9-1.4-2.9-3.5s1.3-3.4 3-3.4Zm.2 5.8c1 0 1.9-.7 1.9-2.4 0-1.2-.6-2.4-1.9-2.4-1 0-1.9.9-1.9 2.4s.8 2.4 1.9 2.4Zm4.2-.8s.7.8 1.9.8c.5 0 1.1-.3 1.1-.8 0-1.2-3.4-1-3.4-3.1 0-1.2 1.1-1.9 2.4-1.9 1.5 0 2.1.7 2.1.7l-.5 1s-.6-.6-1.6-.6c-.5 0-1.1.2-1.1.8 0 1.2 3.4.9 3.4 3.1 0 1.1-.9 1.9-2.4 1.9-1.6 0-2.5-1-2.5-1l.6-.9Z",fill:"#EF8022"}})])]),t._v(" "),a("symbol",{attrs:{id:"supporter-acinq",viewBox:"0 0 103 107"}},[a("circle",{attrs:{fill:"url(#acinq-a)",cx:"47.833",cy:"51.833",r:"56.832"}}),a("g",[a("g",{attrs:{fill:"none","stroke-width":"6","stroke-linejoin":"round"}},[a("path",{attrs:{stroke:"#47BF94",d:"M4.493 79.67c-6.778-11.574 21.882-35.135 41.646-39.636 16.598-3.78 55.176 4.066 53.752 17.433"}}),a("path",{attrs:{stroke:"#359F7E",d:"M10.125 18.133c8.624-9.988 41.797 13.701 51.001 30.018 9.723 17.237 12.87 55.271-1.103 55.351"}}),a("path",{attrs:{stroke:"#49DAAA",d:"M69.826 4.107c12.025 5.964 3.838 38.632-11.184 57.28C47.846 74.79 11.659 91.904 4.493 79.67"}}),a("path",{attrs:{stroke:"#49DAAA",d:"M99.891 57.467C98.471 70.799 62.529 72.9 43.83 64.781c-17.92-7.783-42.47-36.5-33.706-46.648"}}),a("path",{attrs:{stroke:"#AAF0D3",d:"M60.023 103.502c-14.291.08-24.609-29.721-23.918-51.916.758-24.377 20.678-53.948 33.721-47.479"}})])])]),t._v(" "),a("symbol",{attrs:{id:"supporter-lunanode",viewBox:"0 0 194.219 193.977"}},[a("path",{staticStyle:{fill:"#004581","fill-opacity":"1","fill-rule":"evenodd",stroke:"none"},attrs:{d:"M3185.89 2995.8c-1.77 21.49-2.76 43.2-2.76 65.16 0 411.03 319.09 747.36 723.13 774.95l-618.54-641.7c-54.62-56.68-88.55-126.08-101.83-198.41M3960 2284.09c-270.37 0-508.4 138.15-647.57 347.65l23.25-22.42c76.82-74.06 176.93-109.95 276.2-108.13 99 1.77 197.53 41.2 271.5 117.59l-177.95 171.52c-26.66-27.31-62.22-41.38-98.02-42.14-36.12-.65-72.43 12.41-100.16 39.15l-37.98 36.6c-27.69 26.66-42.04 62.45-42.7 98.57-.65 36.07 12.36 72.48 39.11 100.21l745.68 773.56c305.71-104.45 525.52-394.17 525.52-735.29 0-29.89-1.73-59.34-5.04-88.32-19.44 54.57-51.41 105.56-95.79 148.35l-37.93 36.58c-76.86 74.07-176.93 110.05-276.16 108.18-99.32-1.77-198.13-41.38-272.19-118.25l-290.74-301.59 177.95-171.53 290.74 301.61c26.71 27.73 62.64 42.04 98.72 42.74 36.12.69 72.38-12.35 100.16-39.1l37.89-36.59c27.69-26.66 42.09-62.45 42.74-98.58.61-36.03-12.4-72.48-39.1-100.21l-440.73-457.23c-22.23-1.9-44.69-2.93-67.4-2.93",transform:"matrix(.125 0 0 -.125 -397.891 479.489)"}}),a("path",{staticStyle:{fill:"#3384b9","fill-opacity":"1","fill-rule":"evenodd",stroke:"none"},attrs:{d:"M4376.22 2292.8h360.66v433.41c-17.35-55.88-47.59-108.64-90.81-153.48l-269.85-279.93",transform:"matrix(.125 0 0 -.125 -397.891 479.489)"}})]),t._v(" "),a("symbol",{attrs:{id:"supporter-walletofsatoshi",viewBox:"0 0 313.1 76.32"}},[a("path",{attrs:{d:"M110.47 44.8H121c.84 0 1.22-.64.9-1.48l-17.6-42A2 2 0 0 0 102.22 0H87.63a2 2 0 0 0-2 1.34L66 48.11c-.32.84.06 1.48.83 1.48h13.7a1.42 1.42 0 0 1 1.32 1.93l-9.7 24.8 30.55-32.63A1 1 0 0 0 102 42H84.73a1.42 1.42 0 0 1-1.32-2l5.06-12.91 6.86-17.47 6.78 17.51h-7.54a1.42 1.42 0 0 0-1.32.9l-2.83 7.22a1.42 1.42 0 0 0 1.32 1.93H105a1.42 1.42 0 0 1 1.33.91l2.08 5.36a1.92 1.92 0 0 0 2.06 1.35Zm62.65 0h37.42a1.3 1.3 0 0 0 1.46-1.41V35.9a1.3 1.3 0 0 0-1.47-1.41h-26V1.41A1.35 1.35 0 0 0 183 0h-9.92a1.3 1.3 0 0 0-1.47 1.41v42a1.3 1.3 0 0 0 1.51 1.39Zm45.36 0h42a1.3 1.3 0 0 0 1.52-1.41V35.9a1.31 1.31 0 0 0-1.47-1.41h-30.59v-7.36h25.59a1.33 1.33 0 0 0 1.48-1.4v-7a1.33 1.33 0 0 0-1.48-1.41h-25.59v-7h30.59A1.3 1.3 0 0 0 262 8.89V1.41A1.3 1.3 0 0 0 260.53 0h-42A1.3 1.3 0 0 0 217 1.41v42a1.3 1.3 0 0 0 1.48 1.39ZM71.79 0H61.61a1.71 1.71 0 0 0-1.85 1.41L52.08 34.3 44.91 1.41A1.65 1.65 0 0 0 43.12 0H30.38a1.71 1.71 0 0 0-1.85 1.41L21.36 34.3 13.68 1.41A1.65 1.65 0 0 0 11.89 0H1.14C.24 0-.14.51.05 1.41l10.88 42a1.68 1.68 0 0 0 1.79 1.41H28.4a1.65 1.65 0 0 0 1.79-1.41l6.27-28.31 6.34 28.29a1.65 1.65 0 0 0 1.79 1.41H60.2a1.66 1.66 0 0 0 1.8-1.41l10.87-42C73.07.51 72.68 0 71.79 0Zm239.84 0h-43.52a1.3 1.3 0 0 0-1.47 1.41v7.48a1.3 1.3 0 0 0 1.47 1.41h15.29v33.09a1.3 1.3 0 0 0 1.48 1.41h10a1.33 1.33 0 0 0 1.47-1.41V10.3h15.3a1.3 1.3 0 0 0 1.47-1.41V1.41A1.3 1.3 0 0 0 311.63 0ZM127.76 44.8h37.42a1.3 1.3 0 0 0 1.47-1.41V35.9a1.3 1.3 0 0 0-1.47-1.41h-26V1.41a1.35 1.35 0 0 0-1.5-1.41h-9.92a1.3 1.3 0 0 0-1.47 1.41v42a1.3 1.3 0 0 0 1.47 1.39Zm-3.84 9.6h-11.53c-3.13 0-4.53 1.31-4.53 4.36v10.37c0 3.05 1.4 4.36 4.53 4.36h11.53c3.16 0 4.51-1.31 4.51-4.36V58.76c0-3.05-1.35-4.36-4.51-4.36Zm-1 12.95c0 1.48-.29 1.75-2.07 1.75h-5.51c-1.76 0-2.08-.27-2.08-1.75v-6.81c0-1.47.32-1.75 2.08-1.75h5.51c1.78 0 2.07.28 2.07 1.75Zm51.87-5.59h-8.75c-.89 0-1.16-.27-1.16-.95v-1.06c0-.68.27-1 1.16-1h6.7c.65 0 .89.28.89.85v.16a.55.55 0 0 0 .62.6h4a.55.55 0 0 0 .62-.6v-1.08c0-3.21-1.11-4.28-4.4-4.28H164c-3.19 0-4.51 1.31-4.51 4.36v2.84c0 3.06 1.32 4.36 4.51 4.36h8.74c.9 0 1.17.28 1.17 1v1.23c0 .68-.27.95-1.17.95h-7.34c-.62 0-.86-.27-.86-.85v-.16a.56.56 0 0 0-.62-.6h-4a.55.55 0 0 0-.62.6v1.12c0 3.22 1.08 4.28 4.4 4.28h11.2c3.19 0 4.51-1.31 4.51-4.36v-3c-.06-3.1-1.41-4.41-4.57-4.41Zm85.43 0h-8.75c-.89 0-1.16-.27-1.16-.95v-1.06c0-.68.27-1 1.16-1h6.7c.64 0 .89.28.89.85v.16a.55.55 0 0 0 .62.6h4a.55.55 0 0 0 .62-.6v-1.08c0-3.21-1.11-4.28-4.4-4.28h-10.48c-3.19 0-4.51 1.31-4.51 4.36v2.84c0 3.06 1.32 4.36 4.51 4.36h8.74c.89 0 1.16.28 1.16 1v1.23c0 .68-.27.95-1.16.95h-7.34c-.62 0-.86-.27-.86-.85v-.16a.57.57 0 0 0-.62-.6h-4.05a.55.55 0 0 0-.62.6v1.12c0 3.22 1.08 4.28 4.4 4.28h11.2c3.18 0 4.51-1.31 4.51-4.36v-3c0-3.1-1.33-4.41-4.51-4.41Zm26.65-7.36h-4.21a.56.56 0 0 0-.63.6v6.66h-9.2V55a.57.57 0 0 0-.65-.6H268a.55.55 0 0 0-.62.6v17.89a.55.55 0 0 0 .62.6h4.18a.57.57 0 0 0 .65-.6v-6.84h9.2v6.84a.56.56 0 0 0 .63.6h4.21a.55.55 0 0 0 .62-.6V55a.55.55 0 0 0-.57-.6Zm-137.62 0h-17.07a.55.55 0 0 0-.62.6v17.89a.55.55 0 0 0 .62.6h4.19a.58.58 0 0 0 .65-.6v-6.52h10.15a.57.57 0 0 0 .64-.6v-3.19a.57.57 0 0 0-.64-.6H137v-3.19h12.3a.55.55 0 0 0 .62-.6V55a.55.55 0 0 0-.62-.6Zm146.47 0h-4.18a.55.55 0 0 0-.62.6v17.89a.55.55 0 0 0 .62.6h4.18a.57.57 0 0 0 .65-.6V55a.57.57 0 0 0-.6-.6Zm-100.28.6a.83.83 0 0 0-.86-.57h-6.16a.83.83 0 0 0-.89.57l-7.42 17.89c-.14.36 0 .63.38.63h4.45a.8.8 0 0 0 .86-.57l1-2.68h9.1l1 2.68a.8.8 0 0 0 .87.57h4.69c.33 0 .49-.27.35-.63Zm-7 11 2.89-7.52 2.92 7.52Zm30.9-11.6H201a.55.55 0 0 0-.62.6v3.19a.55.55 0 0 0 .62.6h6.45v14.1a.55.55 0 0 0 .62.6h4.21a.56.56 0 0 0 .62-.6v-14.1h6.46a.55.55 0 0 0 .62-.6V55a.55.55 0 0 0-.64-.6Zm18.46 0h-11.52c-3.13 0-4.54 1.31-4.54 4.36v10.37c0 3.05 1.41 4.36 4.54 4.36h11.52c3.16 0 4.51-1.31 4.51-4.36V58.76c0-3.05-1.31-4.36-4.51-4.36Zm-.94 12.95c0 1.48-.3 1.75-2.08 1.75h-5.51c-1.75 0-2.07-.27-2.07-1.75v-6.81c0-1.47.32-1.75 2.07-1.75h5.51c1.78 0 2.08.28 2.08 1.75Z",fill:"#fad228",stroke:"#1e2127","stroke-width":"2"}})]),t._v(" "),a("symbol",{attrs:{id:"supporter-nomics",viewBox:"0 0 600 600"}},[a("path",{attrs:{d:"M273.56 133A136.81 136.81 0 0 0 0 136.86v326.28a136.8 136.8 0 0 0 233.57 96.75L326.44 467A136.81 136.81 0 0 0 600 463.14V136.86a136.8 136.8 0 0 0-233.57-96.75L273.56 133",fill:"#a0f"}}),a("ellipse",{attrs:{cx:"302.18",cy:"300.04",rx:"136.81",ry:"136.86",fill:"#fff"}})]),t._v(" "),a("symbol",{attrs:{id:"supporter-ivpn",viewBox:"0 0 84 29"}},[a("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M6.75 0h6.03c.07 0 .15.03.2.1.04.05.06.13.05.2L8.6 27.43a.26.26 0 0 1-.24.22l-6.63.38H1.7a.25.25 0 0 1-.19-.08.26.26 0 0 1-.06-.22L5.2 5.05C5.12 1.67 1 .85.49.73-.06.59 0 0 0 0h6.75Zm32.32.12a.25.25 0 0 0-.22-.12h-6.5c-.1 0-.18.05-.23.14l-8.98 17.4L20.08.2a.25.25 0 0 0-.24-.21h-6.55a.25.25 0 0 0-.2.1.26.26 0 0 0-.05.2l4.85 26.05a.25.25 0 0 0 .26.2l7.57-.43c.08 0 .16-.06.2-.14L39.08.38a.26.26 0 0 0-.01-.26Zm20.27 5.5a6.8 6.8 0 0 0-.53-2.08c-.27-.6-.61-1.1-1.01-1.5-.4-.41-.8-.75-1.23-1A8.23 8.23 0 0 0 52.9 0H40.47a.25.25 0 0 0-.25.2l-4.01 24.6c-.01.07.01.14.06.2.05.05.11.08.18.08h.02l6.25-.36c.11 0 .2-.1.22-.21l.75-4.63h6.08c1.39-.09 2.7-.43 3.89-1.03a9.75 9.75 0 0 0 2.99-2.46 9.9 9.9 0 0 0 2-4.76l.56-3.3c.17-1.02.21-1.93.13-2.71Zm-7.21 5.87a2.53 2.53 0 0 1-1.1 1.66c-.27.18-.64.27-1.1.27H44.7l1.1-7h5.3c.45 0 .78.09.97.27.22.2.38.41.47.65.1.27.13.6.1.95l-.52 3.2ZM83.75 0h-6.32c-.12 0-.23.1-.25.22l-2.25 14.34L70.04.17a.25.25 0 0 0-.23-.17H63.5c-.12 0-.23.1-.25.22l-3.86 24.56c-.01.07.01.16.06.22.05.05.12.08.19.08l6.43-.39c.12 0 .21-.1.23-.22l1.62-10.36 3.4 10.08c.04.1.14.17.25.17l8.58-.52c.11 0 .2-.1.23-.22L84 .3a.27.27 0 0 0-.06-.22.24.24 0 0 0-.19-.09Z",fill:"#F34"}})]),t._v(" "),a("symbol",{attrs:{id:"supporter-strike",viewBox:"0 0 155 120"}},[a("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M7.06565 43.2477C1.90963 41.2685 -0.665684 35.4843 1.31353 30.3283C3.29274 25.1722 9.07699 22.5969 14.233 24.5761L51.4526 38.8634C51.4937 38.8798 51.535 38.896 51.5765 38.9119L70.2481 46.0792C75.4041 48.0584 81.1883 45.4831 83.1675 40.3271C85.1468 35.1711 82.5714 29.3868 77.4154 27.4076L77.4132 27.4068C77.4139 27.4064 77.4145 27.406 77.4151 27.4056L58.7436 20.2383C53.5876 18.2591 51.0123 12.4749 52.9915 7.31885C54.9707 2.16283 60.755 -0.412485 65.911 1.56673L120.828 22.6473C120.959 22.6977 121.089 22.7506 121.217 22.8059C121.453 22.8928 121.69 22.9815 121.926 23.0721C147.706 32.9681 160.583 61.8894 150.686 87.6695C140.79 113.45 111.869 126.326 86.089 116.43C85.5927 116.24 85.1011 116.042 84.6144 115.838C84.3783 115.766 84.1431 115.686 83.9091 115.596L30.0742 94.9308C24.9182 92.9516 22.3428 87.1673 24.3221 82.0113C26.3013 76.8553 32.0855 74.2799 37.2415 76.2592L55.9106 83.4256C55.9103 83.4242 55.9099 83.4229 55.9095 83.4215L55.9133 83.423C61.0694 85.4022 66.8536 82.8269 68.8328 77.6709C70.812 72.5148 68.2367 66.7306 63.0807 64.7514L54.6786 61.5261C54.6787 61.5257 54.6788 61.5252 54.6789 61.5247L7.06565 43.2477Z"}})]),t._v(" "),a("symbol",{attrs:{id:"supporter-hrf",viewBox:"0 0 3000 987.6"}},[a("path",{attrs:{d:"M1137.09 103.9v773.45h-51.44V515.96h-953.6v361.38H80.62V103.9h51.44v361.2h953.6V103.9h51.43zm-102.77 0h-51.44v258.19H234.94V103.9H183.5v309.05h850.82V103.9zm-696.29 0h-50.87v205.84h50.87V103.9zm593.05 0h-51.44v205.84h51.44V103.9zM183.5 877.34h51.44V619.16h747.94v258.19h51.44V567.72H183.5v309.62zm695.72 0h51.44V670.93h-51.44v206.41zm-592.47 0h51.44V670.93h-51.44v206.41z",fill:"#e12991"}}),a("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{d:"M1422.94 103.88V331.3h-44.51v-94.22h-92.2v94.22h-44.83V103.88h44.83v90.32h92.2v-90.32h44.51zM1605.81 168.85V331.3h-41.91v-18.19c-9.75 14.62-26.64 22.74-48.41 22.74-34.44 0-61.4-24.04-61.4-67.25v-99.74H1496v94.54c0 22.1 13.32 33.47 32.16 33.47 20.47 0 35.74-12.02 35.74-40.29v-87.72h41.91zM1885.19 231.23V331.3h-41.91v-97.14c0-19.17-9.75-30.86-27.29-30.86-18.52 0-30.22 12.35-30.22 36.71v91.29h-41.91v-97.14c0-19.17-9.75-30.86-27.29-30.86-17.87 0-30.54 12.35-30.54 36.71v91.29h-41.91V168.85h41.91v17.22c9.1-13.64 24.37-21.77 45.16-21.77 20.14 0 35.09 8.45 44.18 23.39 10.07-14.62 26.32-23.39 48.41-23.39 37.04.01 61.41 26.32 61.41 66.93zM2086.24 168.85V331.3h-41.91v-19.17c-11.7 14.62-29.24 23.72-52.96 23.72-43.21 0-78.95-37.36-78.95-85.77s35.74-85.77 78.95-85.77c23.72 0 41.26 9.1 52.96 23.72v-19.17h41.91zm-41.91 81.23c0-27.29-19.17-45.81-45.16-45.81-25.66 0-44.83 18.52-44.83 45.81 0 27.29 19.17 45.81 44.83 45.81 25.99 0 45.16-18.52 45.16-45.81zM2275.93 231.56v99.74h-41.91v-94.54c0-22.09-13.32-33.46-32.16-33.46-20.47 0-35.74 12.02-35.74 40.29v87.72h-41.91V168.85h41.91v18.19c9.75-14.62 26.64-22.74 48.41-22.74 34.44.01 61.4 24.05 61.4 67.26zM1316.47 525.36h-30.25v78.95h-44.83V376.89h94.84c41.91 0 75.7 33.79 75.7 75.37 0 28.59-17.87 54.26-43.86 66.28l50.36 85.77h-48.41l-53.55-78.95zm-30.25-39.31h50c16.89 0 30.86-14.95 30.86-33.79s-13.97-33.46-30.86-33.46h-50v67.25zM1437.88 396.71c0-13.97 15.57-25.99 29.54-25.99 14.29 0 22.12 12.02 22.12 25.99s-11.7 25.67-25.99 25.67c-13.97 0-25.67-11.7-25.67-25.67zm4.88 45.16h41.91v162.45h-41.91V441.87zM1681.86 441.87v154.65c0 53.28-41.91 77.33-84.8 77.33-34.77 0-62.7-13.32-77-39.64l35.74-20.47c6.82 12.67 17.54 22.74 42.56 22.74 26.31 0 42.56-14.29 42.56-39.96v-17.54c-11.37 15.27-28.92 24.69-51.98 24.69-46.14 0-80.9-37.36-80.9-83.17 0-45.48 34.76-83.17 80.9-83.17 23.07 0 40.61 9.42 51.98 24.69v-20.14h40.94zm-40.94 78.62c0-25.67-19.17-44.18-45.49-44.18-26.31 0-45.48 18.52-45.48 44.18 0 25.99 19.17 44.51 45.48 44.51 26.32 0 45.49-18.52 45.49-44.51zM1871.55 504.57v99.74h-41.91v-94.54c0-22.09-13.32-33.46-32.16-33.46-20.47 0-35.74 12.02-35.74 40.29v87.72h-41.91V376.89h41.91v83.17c9.75-14.62 26.64-22.74 48.41-22.74 34.44 0 61.4 24.04 61.4 67.25zM1963.46 482.15v67.58c0 17.54 12.67 17.87 36.71 16.57v38.01c-58.81 6.5-78.62-10.72-78.62-54.58v-67.58h-28.27v-40.29h28.27v-32.81l41.91-12.67v45.48h36.71v40.29h-36.71zM2148.63 556.88c0 35.09-30.54 51.98-65.31 51.98-32.49 0-56.53-13.64-68.22-38.66l36.39-20.47c4.55 13.32 15.6 21.12 31.84 21.12 13.32 0 22.42-4.55 22.42-13.97 0-23.72-83.82-10.72-83.82-67.9 0-33.14 28.27-51.66 61.73-51.66 26.32 0 49.06 12.02 61.73 34.44l-35.74 19.49c-4.88-10.4-13.97-16.57-25.99-16.57-10.4 0-18.84 4.55-18.84 13.32-.01 24.04 83.81 9.1 83.81 68.88zM1286.22 692.79v53.93h96.11v42.89h-96.11v87.72h-44.83V649.9h143.54v42.88h-98.71zM1400.82 796.1c0-48.41 38.01-85.77 85.77-85.77s86.1 37.36 86.1 85.77-38.34 85.77-86.1 85.77c-47.76 0-85.77-37.36-85.77-85.77zm129.96 0c0-26.31-19.17-44.83-44.19-44.83-24.69 0-43.86 18.52-43.86 44.83 0 26.32 19.17 44.83 43.86 44.83 25.02.01 44.19-18.51 44.19-44.83zM1744.84 714.88v162.45h-41.91v-18.19c-9.75 14.62-26.64 22.74-48.41 22.74-34.44 0-61.4-24.04-61.4-67.25v-99.74h41.91v94.54c0 22.1 13.32 33.47 32.16 33.47 20.47 0 35.74-12.02 35.74-40.29v-87.72h41.91zM1934.86 777.58v99.74h-41.91v-94.54c0-22.09-13.32-33.46-32.16-33.46-20.47 0-35.74 12.02-35.74 40.29v87.72h-41.91V714.88h41.91v18.19c9.75-14.62 26.64-22.74 48.41-22.74 34.44 0 61.4 24.04 61.4 67.25zM2135.61 649.9v227.42h-41.91v-19.17c-11.7 14.95-28.92 23.72-52.63 23.72-43.54 0-79.27-37.36-79.27-85.77s35.74-85.77 79.27-85.77c23.72 0 40.94 8.77 52.63 23.72V649.9h41.91zm-41.91 146.2c0-27.29-19.17-45.81-44.84-45.81-25.99 0-45.16 18.52-45.16 45.81 0 27.29 19.17 45.81 45.16 45.81 25.67.01 44.84-18.51 44.84-45.81zM2337.35 714.88v162.45h-41.91v-19.17c-11.7 14.62-29.24 23.72-52.96 23.72-43.21 0-78.95-37.36-78.95-85.77s35.74-85.77 78.95-85.77c23.72 0 41.26 9.1 52.96 23.72v-19.17h41.91zm-41.91 81.22c0-27.29-19.17-45.81-45.16-45.81-25.66 0-44.83 18.52-44.83 45.81 0 27.29 19.17 45.81 44.83 45.81 25.99.01 45.16-18.51 45.16-45.81zM2433.46 755.17v67.58c0 17.54 12.67 17.87 36.71 16.57v38.01c-58.81 6.5-78.62-10.72-78.62-54.58v-67.58h-28.26v-40.29h28.26v-32.81l41.91-12.67v45.48h36.71v40.29h-36.71zM2494.84 669.72c0-13.97 11.7-25.99 25.67-25.99 14.29 0 25.99 12.02 25.99 25.99s-11.7 25.66-25.99 25.66c-13.97.01-25.67-11.69-25.67-25.66zm4.87 45.16h41.91v162.45h-41.91V714.88zM2565 796.1c0-48.41 38.01-85.77 85.77-85.77s86.1 37.36 86.1 85.77-38.34 85.77-86.1 85.77c-47.76 0-85.77-37.36-85.77-85.77zm129.96 0c0-26.31-19.17-44.83-44.19-44.83-24.69 0-43.86 18.52-43.86 44.83 0 26.32 19.17 44.83 43.86 44.83 25.02.01 44.19-18.51 44.19-44.83zM2911.62 777.58v99.74h-41.91v-94.54c0-22.09-13.32-33.46-32.16-33.46-20.47 0-35.74 12.02-35.74 40.29v87.72h-41.91V714.88h41.91v18.19c9.75-14.62 26.64-22.74 48.41-22.74 34.44 0 61.4 24.04 61.4 67.25z"}})]),t._v(" "),a("symbol",{attrs:{id:"supporter-esc",viewBox:"0 0 74.222 74.044"}},[a("g",{staticStyle:{fill:"var(--btcpay-body-text)"}},[a("path",{staticStyle:{"stroke-width":"1.91694"},attrs:{d:"M625.227 7403.82c-287.542-92.014-494.572-337.383-538.662-640.26-21.087-157.19-21.087-5869.689 0-6026.878 46.007-308.628 260.704-557.832 555.914-646.01C736.41 63.833 1046.955 60 3769.018 60s3032.608 3.834 3126.539 30.671c295.21 88.18 509.907 337.383 555.914 646.01 21.086 157.19 21.086 5869.69 0 6026.879-46.007 308.628-260.705 557.83-555.914 646.01-93.93 26.838-404.476 30.672-3134.207 28.755-2842.83 0-3036.442-1.917-3136.123-34.505zm6208.987-299.044c120.768-42.173 187.861-97.764 251.12-207.03l57.509-99.681V702.177l-57.509-99.681c-63.259-109.266-130.352-164.858-251.12-207.03-120.767-44.09-6009.625-44.09-6130.393 0-120.767 42.172-187.86 97.764-251.12 207.03l-57.508 99.68v6095.889l57.509 99.68c61.342 105.433 130.352 164.858 243.452 207.031 113.1 40.256 6021.127 42.173 6138.06 0z",transform:"matrix(.0098 0 0 .0098 .182 .285)"}}),a("path",{staticStyle:{"stroke-width":"1.91694"},attrs:{d:"M1934.5 4967.381c-272.206-55.591-492.654-249.203-582.75-511.824-32.59-97.764-36.423-162.94-36.423-705.436 0-542.496 3.834-607.672 36.422-705.436 74.761-216.615 241.535-391.057 456.233-475.403 103.515-42.173 139.937-44.09 529.077-46.007h419.811l46.007 53.675c59.425 69.01 59.425 136.103-1.917 195.528-46.007 47.924-49.84 47.924-398.725 47.924-433.23 0-513.741 19.17-646.01 151.439-113.1 113.1-134.186 180.193-134.186 425.562v185.944l59.425 11.501c32.588 5.751 291.376 11.502 575.084 11.502h513.741l38.339 49.84c51.758 65.177 51.758 122.685 0 187.861l-38.339 49.84h-513.741c-283.708 0-542.496 5.752-577.001 11.502l-61.342 13.419 5.75 224.283c7.668 207.03 11.502 230.033 61.343 302.877 69.01 107.35 185.943 187.86 302.877 212.781 51.758 11.502 247.286 21.087 431.313 21.087 329.715 0 335.465 0 381.472 47.923 61.342 59.425 61.342 126.519 1.917 195.529l-46.007 53.674-371.887 3.834c-203.196 1.917-406.393-5.75-450.482-13.419zM3677.004 2553.947c-208.947 55.59-368.053 189.777-461.984 389.14-42.172 92.013-49.84 134.186-49.84 279.874 0 157.19 5.75 185.943 63.259 300.96 70.927 143.771 184.027 254.954 325.88 323.964 67.094 32.588 145.689 46.007 312.463 57.508 251.12 17.253 289.459 28.755 379.555 105.432 228.117 191.695 147.605 565.5-139.937 649.845-70.927 21.086-197.445 28.754-481.153 28.754-379.555 0-387.223 0-427.48 44.09-57.507 61.342-55.59 147.605 7.669 207.03 49.84 46.007 49.84 46.007 492.655 46.007 412.143-1.917 452.4-3.834 550.163-44.09 153.356-61.342 293.293-191.694 368.054-345.05 57.508-115.017 63.26-143.771 63.26-300.96 0-157.19-5.752-185.944-63.26-300.961-69.01-143.771-184.027-254.954-325.88-323.964-69.011-32.588-141.855-46.007-312.463-57.508-164.857-11.502-243.452-24.92-300.96-53.675-237.702-120.767-283.709-415.977-93.931-611.506 97.764-101.598 195.529-118.85 638.343-118.85h389.14l38.339-49.84c59.425-74.762 51.758-147.606-19.17-207.031l-59.425-49.84-394.89 1.916c-279.875 0-427.48 9.585-498.407 28.755zM5630.372 4965.465c-299.043-57.509-546.33-297.127-613.423-594.254-26.837-109.266-26.837-1132.915 0-1242.18 69.01-302.878 314.38-538.663 621.091-594.254 174.442-32.588 745.692-26.837 812.785 7.668 84.346 42.173 107.35 153.356 47.924 230.033-26.837 36.422-57.509 38.34-435.147 47.924-392.974 9.585-410.226 13.419-504.157 61.342-113.1 59.426-193.611 157.19-230.033 279.874-38.34 124.602-38.34 1054.32 0 1178.922 36.422 120.768 122.684 226.2 235.784 281.791 88.18 46.007 111.183 47.924 484.987 53.675 368.054 5.75 394.891 9.584 437.064 47.923 23.003 21.087 42.173 61.343 42.173 92.014 0 153.355-49.84 170.608-473.486 168.691-187.86-1.917-379.555-9.585-425.562-19.17z",transform:"matrix(.0098 0 0 .0098 .182 .285)"}})])]),t._v(" "),a("symbol",{attrs:{id:"supporter-opensats",viewBox:"0 0 5220 720"}},[a("path",{attrs:{d:"M0 435.197L229.609 291.597V288.121L0 144.259V29.0508L334.901 245.894V333.824L0 550.798V435.197Z",fill:"#FF3300"}}),a("path",{attrs:{d:"M486.969 623.844H902.627V719.643H486.969V623.844Z",fill:"#FF3300"}}),a("path",{attrs:{d:"M993.879 291.2C993.879 106.422 1084.61 0 1214.37 0C1344.13 0 1434.86 106.422 1434.86 291.2C1434.86 479.061 1344.13 587.581 1214.37 587.581C1084.61 587.581 993.879 479.061 993.879 291.2ZM1345.12 291.2C1345.12 155.01 1293.16 75.9967 1214.37 75.9967C1135.58 75.9967 1083.62 155.01 1083.62 291.2C1083.62 430.473 1135.58 511.584 1214.37 511.584C1293.16 511.584 1344.85 430.473 1344.85 291.2H1345.12Z",fill:"#FF3300"}}),a("path",{attrs:{d:"M1593.29 154.29H1663.81L1670.37 205.37H1673.13C1711.31 169.634 1764.71 144.258 1814.44 144.258C1925.96 144.258 1988.02 228.713 1988.02 359.855C1988.02 504.111 1897.95 587.911 1797.77 587.911C1759.13 587.911 1713.54 568.829 1677.39 535.454H1675.29L1679.43 612.237V749.936H1593.29V154.29ZM1899.65 359.855C1899.65 271.269 1867.44 215.599 1791.21 215.599C1756.57 215.599 1717.93 232.713 1679.69 272.121V472.112C1714.79 503.914 1754.61 515.455 1781.57 515.455C1848.75 515.717 1899.65 459.851 1899.65 359.855Z",fill:"#FF3300"}}),a("path",{attrs:{d:"M2118.96 365.035C2118.96 227.336 2222.75 143.93 2335.98 143.93C2460.16 143.93 2530.82 225.434 2530.82 343.527C2530.67 359.209 2529.35 374.858 2526.88 390.345H2178.73V327.2H2473.22L2454.52 348.249C2454.52 256.449 2410.17 210.55 2338.47 210.55C2264.41 210.55 2203.66 265.17 2203.66 364.904C2203.66 468.833 2268.8 520.044 2359.79 520.044C2407.09 520.044 2445.08 505.75 2483.39 482.8L2513.56 537.29C2464.7 569.886 2407.32 587.378 2348.57 587.582C2220.39 587.582 2118.96 505.947 2118.96 365.035Z",fill:"#FF3300"}}),a("path",{attrs:{d:"M2658.41 154.29H2729.07L2735.63 221.697H2739.04C2781.55 178.289 2829.83 144.258 2895.17 144.258C2994.1 144.258 3039.17 205.042 3039.17 315.201V577.026H2952.9V326.152C2952.9 252.319 2928.11 218.222 2865.39 218.222C2819.47 218.222 2788.31 240.844 2744.68 285.563V577.026H2658.41V154.29Z",fill:"#FF3300"}}),a("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{d:"M3208.36 504.308L3259.46 444.376C3303 486.486 3360.93 510.468 3421.5 511.455C3493.27 511.455 3533.03 478.669 3533.03 432.77C3533.03 377.362 3491.63 361.953 3435.41 338.217L3355.57 303.333C3297.64 280.514 3234.21 238.614 3234.21 155.143C3234.21 66.8186 3313.65 0.001814 3425.64 0.001814C3492.01 -0.442962 3555.93 25.0654 3603.75 71.0807L3558.87 126.554C3521.22 93.051 3472.3 74.9951 3421.9 75.9985C3362.2 75.9985 3322.11 103.604 3322.11 150.028C3322.11 199.206 3371.05 217.173 3420.98 236.516L3497.93 270.416C3569.04 298.087 3622.18 339.528 3622.18 422.344C3622.18 513.356 3545.36 587.583 3416.78 587.583C3339.11 587.998 3264.34 558.123 3208.36 504.308V504.308Z"}}),a("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{d:"M3762.96 465.557C3762.96 370.741 3849.04 324.055 4062.7 308.186C4059.62 255.73 4031.54 213.896 3956.3 213.896C3905.13 213.896 3854.68 237.304 3813.28 261.5L3780.48 203.994C3827.98 174.684 3898.57 144.062 3971.78 144.062C4088.42 144.062 4148.91 210.945 4148.91 322.678V577.027H4077.73L4070.84 522.144H4068.08C4022.82 557.553 3963.97 587.715 3906.04 587.715C3825.16 587.584 3762.96 540.045 3762.96 465.557ZM4062.7 462.278V363.266C3896.79 375.134 3847.26 408.576 3847.26 459C3847.26 501.489 3885.38 519.063 3930.65 519.063C3975.91 519.063 4018.88 497.883 4062.7 462.278Z"}}),a("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{d:"M4388.81 409.884V222.941H4272.17V158.813L4392.16 154.289L4403.44 20.2617H4475.02V154.289H4674.64V222.941H4475.02V410.146C4475.02 482.864 4500.73 518.076 4577.29 518.076C4610.27 517.981 4642.96 511.847 4673.73 499.979L4691.24 562.992C4648.39 578.951 4603.07 587.274 4557.35 587.581C4430.86 587.581 4388.81 516.043 4388.81 409.884Z"}}),a("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{d:"M4818.71 521.815L4857.09 466.014C4909.9 502.948 4972.98 522.353 5037.43 521.487C5102.31 521.487 5133.34 495.259 5133.34 463.85C5133.34 433.95 5115.76 415 5009.22 393.034C4897.7 369.887 4845.21 331.2 4845.21 267.203C4845.21 196.518 4908.85 143.93 5025.95 143.93C5093.26 143.93 5157.55 170.158 5199.93 198.878L5159.45 252.646C5117.79 224.668 5068.79 209.592 5018.6 209.304C4955.62 209.304 4931.28 234.155 4931.28 263.138C4931.28 295.923 4965.07 309.037 5048.12 326.938C5185.89 357.101 5220.33 392.509 5220.33 458.736C5220.33 529.487 5151.71 587.582 5026.8 587.582C4952.47 586.641 4880.07 563.76 4818.71 521.815V521.815Z"}})])]),t._v(" "),a("div",{staticClass:"supporters"},[a("h3",[t._v("Our Supporters")]),t._v(" "),a("p",[t._v("\n The BTCPay Server Project is proudly supported by these entities through the\n "),a("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("BTCPay Server Foundation")]),t._v(".\n ")]),t._v(" "),a("div",{staticClass:"logos"},[a("a",{attrs:{href:"https://spiral.xyz",target:"_blank",rel:"noopener noreferrer"}},[a("svg",{staticStyle:{padding:"5px"},attrs:{role:"img",width:"100",height:"100"}},[a("use",{attrs:{href:"#supporter-spiral"}})]),t._v("\n Spiral\n ")]),t._v(" "),a("a",{attrs:{href:"https://opensats.org",target:"_blank",rel:"noopener noreferrer"}},[a("svg",{attrs:{role:"img",width:"120",height:"100"}},[a("use",{attrs:{href:"#supporter-opensats"}})]),t._v("\n OpenSats\n ")]),t._v(" "),a("a",{attrs:{href:"https://www.bailliegifford.com",target:"_blank",rel:"noopener noreferrer"}},[a("svg",{attrs:{role:"img",width:"110",height:"100"}},[a("use",{attrs:{href:"#supporter-bailliegifford"}})]),t._v("\n Baillie Gifford\n ")]),t._v(" "),a("a",{attrs:{href:"https://strike.me",target:"_blank",rel:"noopener noreferrer"}},[a("svg",{attrs:{role:"img",width:"55",height:"50"}},[a("use",{attrs:{href:"#supporter-strike"}})]),t._v("\n Strike\n ")]),t._v(" "),a("a",{attrs:{href:"https://hrf.org",target:"_blank",rel:"noopener noreferrer"}},[a("svg",{attrs:{role:"img",width:"110",height:"50"}},[a("use",{attrs:{href:"#supporter-hrf"}})]),t._v("\n HRF\n ")]),t._v(" "),a("a",{attrs:{href:"https://escapetoelsalvador.org/",target:"_blank",rel:"noopener noreferrer"}},[a("svg",{attrs:{role:"img",width:"100",height:"90"}},[a("use",{attrs:{href:"#supporter-esc"}})]),t._v("\n ESC\n ")]),t._v(" "),a("a",{attrs:{href:"https://www.lunanode.com/",target:"_blank",rel:"noopener noreferrer"}},[a("svg",{attrs:{role:"img",width:"100",height:"100"}},[a("use",{attrs:{href:"#supporter-lunanode"}})]),t._v("\n LunaNode\n ")]),t._v(" "),a("a",{attrs:{href:"https://walletofsatoshi.com/",target:"_blank",rel:"noopener noreferrer"}},[a("svg",{attrs:{role:"img",width:"100",height:"100"}},[a("use",{attrs:{href:"#supporter-walletofsatoshi"}})]),t._v("\n Wallet of Satoshi\n ")]),t._v(" "),a("a",{attrs:{href:"https://coincards.com/",target:"_blank",rel:"noopener noreferrer"}},[a("svg",{attrs:{role:"img",width:"130",height:"100"}},[a("use",{attrs:{href:"#supporter-coincards"}})]),t._v("\n Coincards\n ")]),t._v(" "),a("a",{attrs:{href:"https://www.ivpn.net/",target:"_blank",rel:"noopener noreferrer"}},[a("svg",{attrs:{role:"img",width:"100",height:"100"}},[a("use",{attrs:{href:"#supporter-ivpn"}})]),t._v("\n IVPN\n ")])]),t._v(" "),a("p",[t._v("If you'd like to support the project, please visit the "),a("a",{attrs:{href:"https://btcpayserver.org/donate/"}},[t._v("donation page")]),t._v(".")])])])}),[],!1,null,null,null);a.default=h.exports}}]); \ No newline at end of file diff --git a/assets/js/133.55d129fe.js b/assets/js/133.55d129fe.js new file mode 100644 index 0000000000..12bd8e88e3 --- /dev/null +++ b/assets/js/133.55d129fe.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[133],{805:function(t,r,a){"use strict";a.r(r);var e=a(9),l=Object(e.a)({},(function(){var t=this,r=t._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("div",{staticClass:"topics"},[r("h3",[t._v("Explore by topic")]),t._v(" "),r("ul",[r("li",[r("RouterLink",{attrs:{to:"/Guide/"}},[t._v("What is BTCPay Server")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/UseCase/"}},[t._v("Why BTCPay Server")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/TryItOut/"}},[t._v("How to deploy BTCPay Server")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/WalletSetup/"}},[t._v("Wallet Setup")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/LightningNetwork/"}},[t._v("Lightning Network")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/Apps/#point-of-sale-app"}},[t._v("How to setup POS")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/Development/GreenFieldExample/"}},[t._v("Greenfield API")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/FAQ/"}},[t._v("Frequently Asked Questions"),r("br"),t._v("and Common Issues")])],1),t._v(" "),r("li",[r("RouterLink",{attrs:{to:"/Contribute/"}},[t._v("How to contribute to BTCPay Server")])],1)])]),t._v(" "),r("svg",{attrs:{width:"0",height:"0",xmlns:"http://www.w3.org/2000/svg"}},[r("defs",[r("linearGradient",{attrs:{id:"spiral-gradient",x1:"81.36",y1:"311.35",x2:"541.35",y2:"311.35",gradientUnits:"userSpaceOnUse"}},[r("stop",{attrs:{offset:".18","stop-color":"#00f"}}),r("stop",{attrs:{offset:"1","stop-color":"#f0f"}})],1),t._v(" "),r("radialGradient",{attrs:{id:"acinq-a",cx:"47.833",cy:"51.834",r:"56.832"}},[r("stop",{attrs:{offset:"0","stop-color":"#fff"}}),r("stop",{attrs:{offset:"1","stop-color":"#fff","stop-opacity":"0"}})],1)],1),t._v(" "),r("symbol",{attrs:{id:"supporter-spiral",viewBox:"0 0 629 629"}},[r("path",{attrs:{d:"M326.4 572.09C201.2 572.09 141 503 112.48 445c-28.22-57.53-30.59-114.56-30.79-122.69-4.85-77 41-231.78 249.58-271.2a28.05 28.05 0 0 1 10.41 55.13c-213.12 40.28-204.44 206-204 213 0 .53.06 1.06.07 1.6.15 7.9 5.1 195.16 188.65 195.16 68.34 0 116.6-29.4 143.6-87.37 24.48-52.74 19.29-112.45-13.52-155.83-22.89-30.27-52.46-45-90.38-45-34.46 0-63.47 9.88-86.21 29.37A91.5 91.5 0 0 0 248 322.3c-1.41 25.4 7.14 49.36 24.07 67.49C287.27 406 305 413.9 326.4 413.9c27.46 0 45.52-9 53.66-26.81 8.38-18.3 3.61-38.93-.19-43.33-9.11-10-18.69-13.68-22.48-13-2.53.43-5.78 4.61-8.48 10.92a28 28 0 0 1-51.58-22c14.28-33.44 37.94-42 50.76-44.2 24.78-4.18 52.17 7.3 73.34 30.65s25.51 68.55 10.15 103.22C421.54 432 394.52 470 326.4 470c-36.72 0-69.67-14.49-95.29-41.92-27.47-29.4-41.34-68.08-39.11-108.89a149.1 149.1 0 0 1 51.31-104.6c33.19-28.45 74.48-42.87 122.71-42.87 55.12 0 101.85 23.25 135.12 67.23 45.36 60 52.9 141.71 19.66 213.3-25.35 54.67-79.68 119.84-194.4 119.84Z",fill:"url(#spiral-gradient)"}})]),t._v(" "),r("symbol",{attrs:{id:"supporter-bailliegifford",viewBox:"0 0 252.875 70.249"}},[r("path",{staticStyle:{fill:"var(--btcpay-body-text)","fill-opacity":"1",stroke:"var(--btcpay-body-text)","stroke-opacity":"1"},attrs:{d:"M366.764 291.907h4.554l-5.046 12.789h-4.553zM377.541 302.546h4.675l-.849 2.15h-9.229l5.046-12.789h4.554zM389.988 302.546h4.676l-.849 2.15h-9.229l5.045-12.789h4.554zM403.079 291.907h4.554l-5.046 12.789h-4.553zM418.795 302.487l-.871 2.209h-9.471l5.046-12.789h9.397l-.871 2.209h-4.844l-1.139 2.887h4.457l-.826 2.093h-4.457l-1.338 3.391zM445.115 294.349a6.207 6.207 0 0 0-2.213-.407c-3.344 0-4.898 3.391-5.35 4.535-.682 1.725-1.15 3.469.277 4.147.49.232 1.135.252 1.402.252l1.186-3.004h-1.648l.795-2.015h5.766l-2.4 6.084c-1.66.523-3.16.95-5.268.95-4.748 0-6.602-2.732-5.109-6.511 1.566-3.973 5.77-6.647 10.566-6.647 1.842 0 2.971.33 3.777.62l-1.781 1.996zM453.309 291.907h4.554l-5.045 12.789h-4.554zM458.684 304.696l5.045-12.789h9.398l-.871 2.209h-4.844l-1.269 3.217h4.457l-.871 2.209h-4.458l-2.033 5.154zM472.639 304.696l5.047-12.789h9.398l-.871 2.209h-4.846l-1.269 3.217h4.459l-.873 2.209h-4.457l-2.034 5.154z",transform:"translate(-293.5 -262.775)"}}),r("path",{staticStyle:{fill:"var(--btcpay-body-text)","fill-opacity":"1","fill-rule":"evenodd",stroke:"var(--btcpay-body-text)","stroke-opacity":"1"},attrs:{d:"M335.139 302.643c.557 0 1.187 0 1.747-.252.576-.232 1.106-.717 1.489-1.686.336-.854.189-1.279-.211-1.492-.376-.213-1.006-.213-1.612-.213h-.63l-1.438 3.643h.655zm2.154-5.523c.46 0 .993 0 1.521-.232.496-.213.986-.659 1.33-1.531.283-.717.162-1.085-.181-1.259-.319-.175-.852-.175-1.409-.175h-.63l-1.262 3.198h.631v-.001zm2.832-5.213c1.187 0 2.578.097 3.531.504.954.407 1.47 1.124.966 2.403-.727 1.841-2.749 2.732-4.501 3.12.502.077 1.378.252 2.05.698.647.445 1.06 1.182.578 2.403-.443 1.124-1.742 2.636-4.352 3.294-.995.252-2.107.368-4.481.368h-4.651l5.045-12.79h5.815zM350.689 300.201h2.833l.017-3.605-2.85 3.605zm6.664-8.294.792 12.79h-4.651l-.017-2.597h-4.288l-2.066 2.597h-3.149l10.714-12.79h2.665zM492.998 302.875c.922 0 2.209-.504 3.793-4.515 1.451-3.682 1.238-4.612-.047-4.612-1.283 0-2.363.775-3.955 4.806-1.07 2.713-1.316 4.321.209 4.321zm4.59-11.143c3.561 0 6.08 1.841 4.299 6.356-1.482 3.759-4.936 6.802-9.707 6.802-4.555 0-5.779-2.791-4.295-6.55 1.65-4.185 5.635-6.608 9.703-6.608zM512.328 293.922l-1.469 3.721h.484c1.502 0 2.234-.445 2.793-1.86.582-1.473.25-1.86-1.324-1.86h-.484v-.001zm1.254-2.015c2.398 0 3.312.078 4.168.426.814.33 1.785 1.124 1.166 2.694-.58 1.473-2.047 2.732-4.277 3.353l1.916 6.317h-4.893l-.965-5.29h-.533l-2.088 5.29h-4.408l5.047-12.79h4.867zM528.418 293.961l-3.424 8.682h.387c1.115 0 2.955.368 4.906-4.573 1.619-4.108.264-4.108-1.385-4.108h-.484v-.001zm.811-2.054c2.254 0 4.336 0 5.549 1.163 1.461 1.396.748 3.818.334 4.864-.727 1.841-2.406 4.748-6.227 6.143-1.24.446-2.498.62-5.09.62h-4.166l5.047-12.79h4.553z","clip-rule":"evenodd",transform:"translate(-293.5 -262.775)"}}),r("path",{staticStyle:{fill:"var(--btcpay-body-text)","fill-opacity":"1",stroke:"var(--btcpay-body-text)","stroke-opacity":"1"},attrs:{d:"M294 297.4c0-19.399 57.138-35.125 127.624-35.125 62.064 0 113.781 12.192 125.251 28.35-13.078-12.792-58.92-22.238-113.465-22.238-64.731 0-117.206 13.303-117.206 29.714 0 16.411 52.474 29.715 117.206 29.715 47.799 0 88.914-7.254 107.154-17.656-18.555 13.09-64.812 22.364-118.941 22.364C351.138 332.524 294 316.799 294 297.4z",transform:"translate(-293.5 -262.775)"}})]),t._v(" "),r("symbol",{attrs:{id:"supporter-coincards",viewBox:"0 0 64 32"}},[r("g",{attrs:{fill:"none"}},[r("path",{attrs:{d:"M32.7 5.9c-.2-1-1.3-1.7-2.3-1.4L7.7 9.9c-1 .2-1.7 1.3-1.4 2.3l3.1 12.9c.2 1 1.3 1.7 2.3 1.4l22.7-5.4c1-.2 1.7-1.3 1.4-2.3L32.7 5.9Z",fill:"#EF8022"}}),r("path",{attrs:{d:"M12.6 30.3c-.2.2-.5.3-.7.3l.8.5c.9.6 2.1.4 2.7-.5l3.1-4.4-5.9 4.1ZM2.3 19.5l-1 1.4c-.6.9-.4 2.1.5 2.7L8.1 28l-5.8-8.5ZM12.9 8.1l7.2-5-2.7-1.9c-.9-.6-2.1-.4-2.7.5l-5 7.2 3.2-.8Z",fill:"#F9F185"}}),r("path",{attrs:{d:"M9.7 29.4c.6.9 1.8 1.1 2.7.5l6.7-4.6-7.4 1.8c-1.3.3-2.6-.5-2.9-1.8L6 13.5l-3.3 2.3c-.9.6-1.1 1.8-.5 2.7l7.5 10.9Zm4.5-21.6L25.9 5l-1.3-2c-.6-.9-1.8-1.1-2.7-.5l-7.7 5.3Z",fill:"#FFC214"}}),r("path",{attrs:{d:"M11.9 24.8c-.7 0-1.4-.5-1.7-1.1l-1.5-3.2 1.1 4.6c.2.6.7 1.1 1.4 1.1h.3l17-4.1-16.2 2.7h-.4Z",fill:"#FFC214"}}),r("path",{attrs:{d:"M16 17.5s-1.1 1.2-2.5 1.2c-1.7 0-2.6-1.4-2.6-2.8 0-1.3.9-2.7 2.6-2.7 1.3 0 2.3 1 2.3 1l1.1-1.7s-.6-.7-1.9-1.1v-1.2h-1.1v1h-.6v-1h-1.1v1.1c-2.2.5-3.7 2.4-3.7 4.7 0 2.4 1.5 4.2 3.7 4.7v1.2h1.1v-1h.6V22H15v-1.3c1.4-.4 2.1-1.3 2.1-1.3L16 17.5ZM21 13.7c2.1 0 3.8 1.4 3.8 3.6 0 2.1-1.7 3.5-3.8 3.5-2.1 0-3.8-1.4-3.8-3.5s1.7-3.6 3.8-3.6Zm0 5.2c.8 0 1.5-.6 1.5-1.6s-.7-1.7-1.5-1.7-1.5.6-1.5 1.7c0 1 .7 1.6 1.5 1.6Zm4.3-5h2.3v6.7h-2.3v-6.7Zm0-2.6h2.2v1.8h-2.2v-1.8Zm3.2 2.6h2.2v1c.3-.5 1-1.2 2.1-1.2 1.4 0 2.4.6 2.4 2.5v4.4h-2.3v-4c0-.6-.2-.9-.7-.9-.7 0-1.1.4-1.3 1-.1.3-.1.6-.1.9v3h-2.3v-6.7Z",fill:"#FFF"}}),r("path",{attrs:{d:"M39.3 13.9c1.7 0 2.5 1 2.5 1l-.6.9s-.7-.8-1.8-.8c-1.3 0-2.3 1-2.3 2.4 0 1.3 1 2.4 2.3 2.4 1.2 0 2-.9 2-.9l.5.9s-.9 1.1-2.6 1.1c-2.1 0-3.5-1.5-3.5-3.5-.1-2 1.4-3.5 3.5-3.5Zm6.8 2.6h.3v-.1c0-1.1-.6-1.5-1.5-1.5-1 0-1.8.6-1.8.6l-.5-.9s1-.8 2.5-.8c1.7 0 2.6.9 2.6 2.6v4.2h-1.2v-1.1s-.5 1.3-2.1 1.3c-1.1 0-2.3-.7-2.3-2 0-2.2 2.9-2.3 4-2.3Zm-1.4 3.3c1.1 0 1.8-1.1 1.8-2.1v-.2h-.3c-1 0-2.7.1-2.7 1.3-.1.5.3 1 1.2 1Zm3.8-5.8h1.2v1.7c.3-1 1.1-1.7 2.1-1.7h.3v1.3h-.4c-.8 0-1.6.6-1.9 1.6-.1.4-.2.8-.2 1.2v2.7h-1.3V14h.2Zm6.8-.1c1.5 0 2 1 2 1v-3.5h1.3v9.2h-1.2v-1s-.5 1.2-2.2 1.2c-1.8 0-2.9-1.4-2.9-3.5s1.3-3.4 3-3.4Zm.2 5.8c1 0 1.9-.7 1.9-2.4 0-1.2-.6-2.4-1.9-2.4-1 0-1.9.9-1.9 2.4s.8 2.4 1.9 2.4Zm4.2-.8s.7.8 1.9.8c.5 0 1.1-.3 1.1-.8 0-1.2-3.4-1-3.4-3.1 0-1.2 1.1-1.9 2.4-1.9 1.5 0 2.1.7 2.1.7l-.5 1s-.6-.6-1.6-.6c-.5 0-1.1.2-1.1.8 0 1.2 3.4.9 3.4 3.1 0 1.1-.9 1.9-2.4 1.9-1.6 0-2.5-1-2.5-1l.6-.9Z",fill:"#EF8022"}})])]),t._v(" "),r("symbol",{attrs:{id:"supporter-acinq",viewBox:"0 0 103 107"}},[r("circle",{attrs:{fill:"url(#acinq-a)",cx:"47.833",cy:"51.833",r:"56.832"}}),r("g",[r("g",{attrs:{fill:"none","stroke-width":"6","stroke-linejoin":"round"}},[r("path",{attrs:{stroke:"#47BF94",d:"M4.493 79.67c-6.778-11.574 21.882-35.135 41.646-39.636 16.598-3.78 55.176 4.066 53.752 17.433"}}),r("path",{attrs:{stroke:"#359F7E",d:"M10.125 18.133c8.624-9.988 41.797 13.701 51.001 30.018 9.723 17.237 12.87 55.271-1.103 55.351"}}),r("path",{attrs:{stroke:"#49DAAA",d:"M69.826 4.107c12.025 5.964 3.838 38.632-11.184 57.28C47.846 74.79 11.659 91.904 4.493 79.67"}}),r("path",{attrs:{stroke:"#49DAAA",d:"M99.891 57.467C98.471 70.799 62.529 72.9 43.83 64.781c-17.92-7.783-42.47-36.5-33.706-46.648"}}),r("path",{attrs:{stroke:"#AAF0D3",d:"M60.023 103.502c-14.291.08-24.609-29.721-23.918-51.916.758-24.377 20.678-53.948 33.721-47.479"}})])])]),t._v(" "),r("symbol",{attrs:{id:"supporter-lunanode",viewBox:"0 0 194.219 193.977"}},[r("path",{staticStyle:{fill:"#004581","fill-opacity":"1","fill-rule":"evenodd",stroke:"none"},attrs:{d:"M3185.89 2995.8c-1.77 21.49-2.76 43.2-2.76 65.16 0 411.03 319.09 747.36 723.13 774.95l-618.54-641.7c-54.62-56.68-88.55-126.08-101.83-198.41M3960 2284.09c-270.37 0-508.4 138.15-647.57 347.65l23.25-22.42c76.82-74.06 176.93-109.95 276.2-108.13 99 1.77 197.53 41.2 271.5 117.59l-177.95 171.52c-26.66-27.31-62.22-41.38-98.02-42.14-36.12-.65-72.43 12.41-100.16 39.15l-37.98 36.6c-27.69 26.66-42.04 62.45-42.7 98.57-.65 36.07 12.36 72.48 39.11 100.21l745.68 773.56c305.71-104.45 525.52-394.17 525.52-735.29 0-29.89-1.73-59.34-5.04-88.32-19.44 54.57-51.41 105.56-95.79 148.35l-37.93 36.58c-76.86 74.07-176.93 110.05-276.16 108.18-99.32-1.77-198.13-41.38-272.19-118.25l-290.74-301.59 177.95-171.53 290.74 301.61c26.71 27.73 62.64 42.04 98.72 42.74 36.12.69 72.38-12.35 100.16-39.1l37.89-36.59c27.69-26.66 42.09-62.45 42.74-98.58.61-36.03-12.4-72.48-39.1-100.21l-440.73-457.23c-22.23-1.9-44.69-2.93-67.4-2.93",transform:"matrix(.125 0 0 -.125 -397.891 479.489)"}}),r("path",{staticStyle:{fill:"#3384b9","fill-opacity":"1","fill-rule":"evenodd",stroke:"none"},attrs:{d:"M4376.22 2292.8h360.66v433.41c-17.35-55.88-47.59-108.64-90.81-153.48l-269.85-279.93",transform:"matrix(.125 0 0 -.125 -397.891 479.489)"}})]),t._v(" "),r("symbol",{attrs:{id:"supporter-walletofsatoshi",viewBox:"0 0 313.1 76.32"}},[r("path",{attrs:{d:"M110.47 44.8H121c.84 0 1.22-.64.9-1.48l-17.6-42A2 2 0 0 0 102.22 0H87.63a2 2 0 0 0-2 1.34L66 48.11c-.32.84.06 1.48.83 1.48h13.7a1.42 1.42 0 0 1 1.32 1.93l-9.7 24.8 30.55-32.63A1 1 0 0 0 102 42H84.73a1.42 1.42 0 0 1-1.32-2l5.06-12.91 6.86-17.47 6.78 17.51h-7.54a1.42 1.42 0 0 0-1.32.9l-2.83 7.22a1.42 1.42 0 0 0 1.32 1.93H105a1.42 1.42 0 0 1 1.33.91l2.08 5.36a1.92 1.92 0 0 0 2.06 1.35Zm62.65 0h37.42a1.3 1.3 0 0 0 1.46-1.41V35.9a1.3 1.3 0 0 0-1.47-1.41h-26V1.41A1.35 1.35 0 0 0 183 0h-9.92a1.3 1.3 0 0 0-1.47 1.41v42a1.3 1.3 0 0 0 1.51 1.39Zm45.36 0h42a1.3 1.3 0 0 0 1.52-1.41V35.9a1.31 1.31 0 0 0-1.47-1.41h-30.59v-7.36h25.59a1.33 1.33 0 0 0 1.48-1.4v-7a1.33 1.33 0 0 0-1.48-1.41h-25.59v-7h30.59A1.3 1.3 0 0 0 262 8.89V1.41A1.3 1.3 0 0 0 260.53 0h-42A1.3 1.3 0 0 0 217 1.41v42a1.3 1.3 0 0 0 1.48 1.39ZM71.79 0H61.61a1.71 1.71 0 0 0-1.85 1.41L52.08 34.3 44.91 1.41A1.65 1.65 0 0 0 43.12 0H30.38a1.71 1.71 0 0 0-1.85 1.41L21.36 34.3 13.68 1.41A1.65 1.65 0 0 0 11.89 0H1.14C.24 0-.14.51.05 1.41l10.88 42a1.68 1.68 0 0 0 1.79 1.41H28.4a1.65 1.65 0 0 0 1.79-1.41l6.27-28.31 6.34 28.29a1.65 1.65 0 0 0 1.79 1.41H60.2a1.66 1.66 0 0 0 1.8-1.41l10.87-42C73.07.51 72.68 0 71.79 0Zm239.84 0h-43.52a1.3 1.3 0 0 0-1.47 1.41v7.48a1.3 1.3 0 0 0 1.47 1.41h15.29v33.09a1.3 1.3 0 0 0 1.48 1.41h10a1.33 1.33 0 0 0 1.47-1.41V10.3h15.3a1.3 1.3 0 0 0 1.47-1.41V1.41A1.3 1.3 0 0 0 311.63 0ZM127.76 44.8h37.42a1.3 1.3 0 0 0 1.47-1.41V35.9a1.3 1.3 0 0 0-1.47-1.41h-26V1.41a1.35 1.35 0 0 0-1.5-1.41h-9.92a1.3 1.3 0 0 0-1.47 1.41v42a1.3 1.3 0 0 0 1.47 1.39Zm-3.84 9.6h-11.53c-3.13 0-4.53 1.31-4.53 4.36v10.37c0 3.05 1.4 4.36 4.53 4.36h11.53c3.16 0 4.51-1.31 4.51-4.36V58.76c0-3.05-1.35-4.36-4.51-4.36Zm-1 12.95c0 1.48-.29 1.75-2.07 1.75h-5.51c-1.76 0-2.08-.27-2.08-1.75v-6.81c0-1.47.32-1.75 2.08-1.75h5.51c1.78 0 2.07.28 2.07 1.75Zm51.87-5.59h-8.75c-.89 0-1.16-.27-1.16-.95v-1.06c0-.68.27-1 1.16-1h6.7c.65 0 .89.28.89.85v.16a.55.55 0 0 0 .62.6h4a.55.55 0 0 0 .62-.6v-1.08c0-3.21-1.11-4.28-4.4-4.28H164c-3.19 0-4.51 1.31-4.51 4.36v2.84c0 3.06 1.32 4.36 4.51 4.36h8.74c.9 0 1.17.28 1.17 1v1.23c0 .68-.27.95-1.17.95h-7.34c-.62 0-.86-.27-.86-.85v-.16a.56.56 0 0 0-.62-.6h-4a.55.55 0 0 0-.62.6v1.12c0 3.22 1.08 4.28 4.4 4.28h11.2c3.19 0 4.51-1.31 4.51-4.36v-3c-.06-3.1-1.41-4.41-4.57-4.41Zm85.43 0h-8.75c-.89 0-1.16-.27-1.16-.95v-1.06c0-.68.27-1 1.16-1h6.7c.64 0 .89.28.89.85v.16a.55.55 0 0 0 .62.6h4a.55.55 0 0 0 .62-.6v-1.08c0-3.21-1.11-4.28-4.4-4.28h-10.48c-3.19 0-4.51 1.31-4.51 4.36v2.84c0 3.06 1.32 4.36 4.51 4.36h8.74c.89 0 1.16.28 1.16 1v1.23c0 .68-.27.95-1.16.95h-7.34c-.62 0-.86-.27-.86-.85v-.16a.57.57 0 0 0-.62-.6h-4.05a.55.55 0 0 0-.62.6v1.12c0 3.22 1.08 4.28 4.4 4.28h11.2c3.18 0 4.51-1.31 4.51-4.36v-3c0-3.1-1.33-4.41-4.51-4.41Zm26.65-7.36h-4.21a.56.56 0 0 0-.63.6v6.66h-9.2V55a.57.57 0 0 0-.65-.6H268a.55.55 0 0 0-.62.6v17.89a.55.55 0 0 0 .62.6h4.18a.57.57 0 0 0 .65-.6v-6.84h9.2v6.84a.56.56 0 0 0 .63.6h4.21a.55.55 0 0 0 .62-.6V55a.55.55 0 0 0-.57-.6Zm-137.62 0h-17.07a.55.55 0 0 0-.62.6v17.89a.55.55 0 0 0 .62.6h4.19a.58.58 0 0 0 .65-.6v-6.52h10.15a.57.57 0 0 0 .64-.6v-3.19a.57.57 0 0 0-.64-.6H137v-3.19h12.3a.55.55 0 0 0 .62-.6V55a.55.55 0 0 0-.62-.6Zm146.47 0h-4.18a.55.55 0 0 0-.62.6v17.89a.55.55 0 0 0 .62.6h4.18a.57.57 0 0 0 .65-.6V55a.57.57 0 0 0-.6-.6Zm-100.28.6a.83.83 0 0 0-.86-.57h-6.16a.83.83 0 0 0-.89.57l-7.42 17.89c-.14.36 0 .63.38.63h4.45a.8.8 0 0 0 .86-.57l1-2.68h9.1l1 2.68a.8.8 0 0 0 .87.57h4.69c.33 0 .49-.27.35-.63Zm-7 11 2.89-7.52 2.92 7.52Zm30.9-11.6H201a.55.55 0 0 0-.62.6v3.19a.55.55 0 0 0 .62.6h6.45v14.1a.55.55 0 0 0 .62.6h4.21a.56.56 0 0 0 .62-.6v-14.1h6.46a.55.55 0 0 0 .62-.6V55a.55.55 0 0 0-.64-.6Zm18.46 0h-11.52c-3.13 0-4.54 1.31-4.54 4.36v10.37c0 3.05 1.41 4.36 4.54 4.36h11.52c3.16 0 4.51-1.31 4.51-4.36V58.76c0-3.05-1.31-4.36-4.51-4.36Zm-.94 12.95c0 1.48-.3 1.75-2.08 1.75h-5.51c-1.75 0-2.07-.27-2.07-1.75v-6.81c0-1.47.32-1.75 2.07-1.75h5.51c1.78 0 2.08.28 2.08 1.75Z",fill:"#fad228",stroke:"#1e2127","stroke-width":"2"}})]),t._v(" "),r("symbol",{attrs:{id:"supporter-nomics",viewBox:"0 0 600 600"}},[r("path",{attrs:{d:"M273.56 133A136.81 136.81 0 0 0 0 136.86v326.28a136.8 136.8 0 0 0 233.57 96.75L326.44 467A136.81 136.81 0 0 0 600 463.14V136.86a136.8 136.8 0 0 0-233.57-96.75L273.56 133",fill:"#a0f"}}),r("ellipse",{attrs:{cx:"302.18",cy:"300.04",rx:"136.81",ry:"136.86",fill:"#fff"}})]),t._v(" "),r("symbol",{attrs:{id:"supporter-ivpn",viewBox:"0 0 84 29"}},[r("path",{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M6.75 0h6.03c.07 0 .15.03.2.1.04.05.06.13.05.2L8.6 27.43a.26.26 0 0 1-.24.22l-6.63.38H1.7a.25.25 0 0 1-.19-.08.26.26 0 0 1-.06-.22L5.2 5.05C5.12 1.67 1 .85.49.73-.06.59 0 0 0 0h6.75Zm32.32.12a.25.25 0 0 0-.22-.12h-6.5c-.1 0-.18.05-.23.14l-8.98 17.4L20.08.2a.25.25 0 0 0-.24-.21h-6.55a.25.25 0 0 0-.2.1.26.26 0 0 0-.05.2l4.85 26.05a.25.25 0 0 0 .26.2l7.57-.43c.08 0 .16-.06.2-.14L39.08.38a.26.26 0 0 0-.01-.26Zm20.27 5.5a6.8 6.8 0 0 0-.53-2.08c-.27-.6-.61-1.1-1.01-1.5-.4-.41-.8-.75-1.23-1A8.23 8.23 0 0 0 52.9 0H40.47a.25.25 0 0 0-.25.2l-4.01 24.6c-.01.07.01.14.06.2.05.05.11.08.18.08h.02l6.25-.36c.11 0 .2-.1.22-.21l.75-4.63h6.08c1.39-.09 2.7-.43 3.89-1.03a9.75 9.75 0 0 0 2.99-2.46 9.9 9.9 0 0 0 2-4.76l.56-3.3c.17-1.02.21-1.93.13-2.71Zm-7.21 5.87a2.53 2.53 0 0 1-1.1 1.66c-.27.18-.64.27-1.1.27H44.7l1.1-7h5.3c.45 0 .78.09.97.27.22.2.38.41.47.65.1.27.13.6.1.95l-.52 3.2ZM83.75 0h-6.32c-.12 0-.23.1-.25.22l-2.25 14.34L70.04.17a.25.25 0 0 0-.23-.17H63.5c-.12 0-.23.1-.25.22l-3.86 24.56c-.01.07.01.16.06.22.05.05.12.08.19.08l6.43-.39c.12 0 .21-.1.23-.22l1.62-10.36 3.4 10.08c.04.1.14.17.25.17l8.58-.52c.11 0 .2-.1.23-.22L84 .3a.27.27 0 0 0-.06-.22.24.24 0 0 0-.19-.09Z",fill:"#F34"}})]),t._v(" "),r("symbol",{attrs:{id:"supporter-strike",viewBox:"0 0 155 120"}},[r("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M7.06565 43.2477C1.90963 41.2685 -0.665684 35.4843 1.31353 30.3283C3.29274 25.1722 9.07699 22.5969 14.233 24.5761L51.4526 38.8634C51.4937 38.8798 51.535 38.896 51.5765 38.9119L70.2481 46.0792C75.4041 48.0584 81.1883 45.4831 83.1675 40.3271C85.1468 35.1711 82.5714 29.3868 77.4154 27.4076L77.4132 27.4068C77.4139 27.4064 77.4145 27.406 77.4151 27.4056L58.7436 20.2383C53.5876 18.2591 51.0123 12.4749 52.9915 7.31885C54.9707 2.16283 60.755 -0.412485 65.911 1.56673L120.828 22.6473C120.959 22.6977 121.089 22.7506 121.217 22.8059C121.453 22.8928 121.69 22.9815 121.926 23.0721C147.706 32.9681 160.583 61.8894 150.686 87.6695C140.79 113.45 111.869 126.326 86.089 116.43C85.5927 116.24 85.1011 116.042 84.6144 115.838C84.3783 115.766 84.1431 115.686 83.9091 115.596L30.0742 94.9308C24.9182 92.9516 22.3428 87.1673 24.3221 82.0113C26.3013 76.8553 32.0855 74.2799 37.2415 76.2592L55.9106 83.4256C55.9103 83.4242 55.9099 83.4229 55.9095 83.4215L55.9133 83.423C61.0694 85.4022 66.8536 82.8269 68.8328 77.6709C70.812 72.5148 68.2367 66.7306 63.0807 64.7514L54.6786 61.5261C54.6787 61.5257 54.6788 61.5252 54.6789 61.5247L7.06565 43.2477Z"}})]),t._v(" "),r("symbol",{attrs:{id:"supporter-hrf",viewBox:"0 0 3000 987.6"}},[r("path",{attrs:{d:"M1137.09 103.9v773.45h-51.44V515.96h-953.6v361.38H80.62V103.9h51.44v361.2h953.6V103.9h51.43zm-102.77 0h-51.44v258.19H234.94V103.9H183.5v309.05h850.82V103.9zm-696.29 0h-50.87v205.84h50.87V103.9zm593.05 0h-51.44v205.84h51.44V103.9zM183.5 877.34h51.44V619.16h747.94v258.19h51.44V567.72H183.5v309.62zm695.72 0h51.44V670.93h-51.44v206.41zm-592.47 0h51.44V670.93h-51.44v206.41z",fill:"#e12991"}}),r("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{d:"M1422.94 103.88V331.3h-44.51v-94.22h-92.2v94.22h-44.83V103.88h44.83v90.32h92.2v-90.32h44.51zM1605.81 168.85V331.3h-41.91v-18.19c-9.75 14.62-26.64 22.74-48.41 22.74-34.44 0-61.4-24.04-61.4-67.25v-99.74H1496v94.54c0 22.1 13.32 33.47 32.16 33.47 20.47 0 35.74-12.02 35.74-40.29v-87.72h41.91zM1885.19 231.23V331.3h-41.91v-97.14c0-19.17-9.75-30.86-27.29-30.86-18.52 0-30.22 12.35-30.22 36.71v91.29h-41.91v-97.14c0-19.17-9.75-30.86-27.29-30.86-17.87 0-30.54 12.35-30.54 36.71v91.29h-41.91V168.85h41.91v17.22c9.1-13.64 24.37-21.77 45.16-21.77 20.14 0 35.09 8.45 44.18 23.39 10.07-14.62 26.32-23.39 48.41-23.39 37.04.01 61.41 26.32 61.41 66.93zM2086.24 168.85V331.3h-41.91v-19.17c-11.7 14.62-29.24 23.72-52.96 23.72-43.21 0-78.95-37.36-78.95-85.77s35.74-85.77 78.95-85.77c23.72 0 41.26 9.1 52.96 23.72v-19.17h41.91zm-41.91 81.23c0-27.29-19.17-45.81-45.16-45.81-25.66 0-44.83 18.52-44.83 45.81 0 27.29 19.17 45.81 44.83 45.81 25.99 0 45.16-18.52 45.16-45.81zM2275.93 231.56v99.74h-41.91v-94.54c0-22.09-13.32-33.46-32.16-33.46-20.47 0-35.74 12.02-35.74 40.29v87.72h-41.91V168.85h41.91v18.19c9.75-14.62 26.64-22.74 48.41-22.74 34.44.01 61.4 24.05 61.4 67.26zM1316.47 525.36h-30.25v78.95h-44.83V376.89h94.84c41.91 0 75.7 33.79 75.7 75.37 0 28.59-17.87 54.26-43.86 66.28l50.36 85.77h-48.41l-53.55-78.95zm-30.25-39.31h50c16.89 0 30.86-14.95 30.86-33.79s-13.97-33.46-30.86-33.46h-50v67.25zM1437.88 396.71c0-13.97 15.57-25.99 29.54-25.99 14.29 0 22.12 12.02 22.12 25.99s-11.7 25.67-25.99 25.67c-13.97 0-25.67-11.7-25.67-25.67zm4.88 45.16h41.91v162.45h-41.91V441.87zM1681.86 441.87v154.65c0 53.28-41.91 77.33-84.8 77.33-34.77 0-62.7-13.32-77-39.64l35.74-20.47c6.82 12.67 17.54 22.74 42.56 22.74 26.31 0 42.56-14.29 42.56-39.96v-17.54c-11.37 15.27-28.92 24.69-51.98 24.69-46.14 0-80.9-37.36-80.9-83.17 0-45.48 34.76-83.17 80.9-83.17 23.07 0 40.61 9.42 51.98 24.69v-20.14h40.94zm-40.94 78.62c0-25.67-19.17-44.18-45.49-44.18-26.31 0-45.48 18.52-45.48 44.18 0 25.99 19.17 44.51 45.48 44.51 26.32 0 45.49-18.52 45.49-44.51zM1871.55 504.57v99.74h-41.91v-94.54c0-22.09-13.32-33.46-32.16-33.46-20.47 0-35.74 12.02-35.74 40.29v87.72h-41.91V376.89h41.91v83.17c9.75-14.62 26.64-22.74 48.41-22.74 34.44 0 61.4 24.04 61.4 67.25zM1963.46 482.15v67.58c0 17.54 12.67 17.87 36.71 16.57v38.01c-58.81 6.5-78.62-10.72-78.62-54.58v-67.58h-28.27v-40.29h28.27v-32.81l41.91-12.67v45.48h36.71v40.29h-36.71zM2148.63 556.88c0 35.09-30.54 51.98-65.31 51.98-32.49 0-56.53-13.64-68.22-38.66l36.39-20.47c4.55 13.32 15.6 21.12 31.84 21.12 13.32 0 22.42-4.55 22.42-13.97 0-23.72-83.82-10.72-83.82-67.9 0-33.14 28.27-51.66 61.73-51.66 26.32 0 49.06 12.02 61.73 34.44l-35.74 19.49c-4.88-10.4-13.97-16.57-25.99-16.57-10.4 0-18.84 4.55-18.84 13.32-.01 24.04 83.81 9.1 83.81 68.88zM1286.22 692.79v53.93h96.11v42.89h-96.11v87.72h-44.83V649.9h143.54v42.88h-98.71zM1400.82 796.1c0-48.41 38.01-85.77 85.77-85.77s86.1 37.36 86.1 85.77-38.34 85.77-86.1 85.77c-47.76 0-85.77-37.36-85.77-85.77zm129.96 0c0-26.31-19.17-44.83-44.19-44.83-24.69 0-43.86 18.52-43.86 44.83 0 26.32 19.17 44.83 43.86 44.83 25.02.01 44.19-18.51 44.19-44.83zM1744.84 714.88v162.45h-41.91v-18.19c-9.75 14.62-26.64 22.74-48.41 22.74-34.44 0-61.4-24.04-61.4-67.25v-99.74h41.91v94.54c0 22.1 13.32 33.47 32.16 33.47 20.47 0 35.74-12.02 35.74-40.29v-87.72h41.91zM1934.86 777.58v99.74h-41.91v-94.54c0-22.09-13.32-33.46-32.16-33.46-20.47 0-35.74 12.02-35.74 40.29v87.72h-41.91V714.88h41.91v18.19c9.75-14.62 26.64-22.74 48.41-22.74 34.44 0 61.4 24.04 61.4 67.25zM2135.61 649.9v227.42h-41.91v-19.17c-11.7 14.95-28.92 23.72-52.63 23.72-43.54 0-79.27-37.36-79.27-85.77s35.74-85.77 79.27-85.77c23.72 0 40.94 8.77 52.63 23.72V649.9h41.91zm-41.91 146.2c0-27.29-19.17-45.81-44.84-45.81-25.99 0-45.16 18.52-45.16 45.81 0 27.29 19.17 45.81 45.16 45.81 25.67.01 44.84-18.51 44.84-45.81zM2337.35 714.88v162.45h-41.91v-19.17c-11.7 14.62-29.24 23.72-52.96 23.72-43.21 0-78.95-37.36-78.95-85.77s35.74-85.77 78.95-85.77c23.72 0 41.26 9.1 52.96 23.72v-19.17h41.91zm-41.91 81.22c0-27.29-19.17-45.81-45.16-45.81-25.66 0-44.83 18.52-44.83 45.81 0 27.29 19.17 45.81 44.83 45.81 25.99.01 45.16-18.51 45.16-45.81zM2433.46 755.17v67.58c0 17.54 12.67 17.87 36.71 16.57v38.01c-58.81 6.5-78.62-10.72-78.62-54.58v-67.58h-28.26v-40.29h28.26v-32.81l41.91-12.67v45.48h36.71v40.29h-36.71zM2494.84 669.72c0-13.97 11.7-25.99 25.67-25.99 14.29 0 25.99 12.02 25.99 25.99s-11.7 25.66-25.99 25.66c-13.97.01-25.67-11.69-25.67-25.66zm4.87 45.16h41.91v162.45h-41.91V714.88zM2565 796.1c0-48.41 38.01-85.77 85.77-85.77s86.1 37.36 86.1 85.77-38.34 85.77-86.1 85.77c-47.76 0-85.77-37.36-85.77-85.77zm129.96 0c0-26.31-19.17-44.83-44.19-44.83-24.69 0-43.86 18.52-43.86 44.83 0 26.32 19.17 44.83 43.86 44.83 25.02.01 44.19-18.51 44.19-44.83zM2911.62 777.58v99.74h-41.91v-94.54c0-22.09-13.32-33.46-32.16-33.46-20.47 0-35.74 12.02-35.74 40.29v87.72h-41.91V714.88h41.91v18.19c9.75-14.62 26.64-22.74 48.41-22.74 34.44 0 61.4 24.04 61.4 67.25z"}})]),t._v(" "),r("symbol",{attrs:{id:"supporter-esc",viewBox:"0 0 74.222 74.044"}},[r("g",{staticStyle:{fill:"var(--btcpay-body-text)"}},[r("path",{staticStyle:{"stroke-width":"1.91694"},attrs:{d:"M625.227 7403.82c-287.542-92.014-494.572-337.383-538.662-640.26-21.087-157.19-21.087-5869.689 0-6026.878 46.007-308.628 260.704-557.832 555.914-646.01C736.41 63.833 1046.955 60 3769.018 60s3032.608 3.834 3126.539 30.671c295.21 88.18 509.907 337.383 555.914 646.01 21.086 157.19 21.086 5869.69 0 6026.879-46.007 308.628-260.705 557.83-555.914 646.01-93.93 26.838-404.476 30.672-3134.207 28.755-2842.83 0-3036.442-1.917-3136.123-34.505zm6208.987-299.044c120.768-42.173 187.861-97.764 251.12-207.03l57.509-99.681V702.177l-57.509-99.681c-63.259-109.266-130.352-164.858-251.12-207.03-120.767-44.09-6009.625-44.09-6130.393 0-120.767 42.172-187.86 97.764-251.12 207.03l-57.508 99.68v6095.889l57.509 99.68c61.342 105.433 130.352 164.858 243.452 207.031 113.1 40.256 6021.127 42.173 6138.06 0z",transform:"matrix(.0098 0 0 .0098 .182 .285)"}}),r("path",{staticStyle:{"stroke-width":"1.91694"},attrs:{d:"M1934.5 4967.381c-272.206-55.591-492.654-249.203-582.75-511.824-32.59-97.764-36.423-162.94-36.423-705.436 0-542.496 3.834-607.672 36.422-705.436 74.761-216.615 241.535-391.057 456.233-475.403 103.515-42.173 139.937-44.09 529.077-46.007h419.811l46.007 53.675c59.425 69.01 59.425 136.103-1.917 195.528-46.007 47.924-49.84 47.924-398.725 47.924-433.23 0-513.741 19.17-646.01 151.439-113.1 113.1-134.186 180.193-134.186 425.562v185.944l59.425 11.501c32.588 5.751 291.376 11.502 575.084 11.502h513.741l38.339 49.84c51.758 65.177 51.758 122.685 0 187.861l-38.339 49.84h-513.741c-283.708 0-542.496 5.752-577.001 11.502l-61.342 13.419 5.75 224.283c7.668 207.03 11.502 230.033 61.343 302.877 69.01 107.35 185.943 187.86 302.877 212.781 51.758 11.502 247.286 21.087 431.313 21.087 329.715 0 335.465 0 381.472 47.923 61.342 59.425 61.342 126.519 1.917 195.529l-46.007 53.674-371.887 3.834c-203.196 1.917-406.393-5.75-450.482-13.419zM3677.004 2553.947c-208.947 55.59-368.053 189.777-461.984 389.14-42.172 92.013-49.84 134.186-49.84 279.874 0 157.19 5.75 185.943 63.259 300.96 70.927 143.771 184.027 254.954 325.88 323.964 67.094 32.588 145.689 46.007 312.463 57.508 251.12 17.253 289.459 28.755 379.555 105.432 228.117 191.695 147.605 565.5-139.937 649.845-70.927 21.086-197.445 28.754-481.153 28.754-379.555 0-387.223 0-427.48 44.09-57.507 61.342-55.59 147.605 7.669 207.03 49.84 46.007 49.84 46.007 492.655 46.007 412.143-1.917 452.4-3.834 550.163-44.09 153.356-61.342 293.293-191.694 368.054-345.05 57.508-115.017 63.26-143.771 63.26-300.96 0-157.19-5.752-185.944-63.26-300.961-69.01-143.771-184.027-254.954-325.88-323.964-69.011-32.588-141.855-46.007-312.463-57.508-164.857-11.502-243.452-24.92-300.96-53.675-237.702-120.767-283.709-415.977-93.931-611.506 97.764-101.598 195.529-118.85 638.343-118.85h389.14l38.339-49.84c59.425-74.762 51.758-147.606-19.17-207.031l-59.425-49.84-394.89 1.916c-279.875 0-427.48 9.585-498.407 28.755zM5630.372 4965.465c-299.043-57.509-546.33-297.127-613.423-594.254-26.837-109.266-26.837-1132.915 0-1242.18 69.01-302.878 314.38-538.663 621.091-594.254 174.442-32.588 745.692-26.837 812.785 7.668 84.346 42.173 107.35 153.356 47.924 230.033-26.837 36.422-57.509 38.34-435.147 47.924-392.974 9.585-410.226 13.419-504.157 61.342-113.1 59.426-193.611 157.19-230.033 279.874-38.34 124.602-38.34 1054.32 0 1178.922 36.422 120.768 122.684 226.2 235.784 281.791 88.18 46.007 111.183 47.924 484.987 53.675 368.054 5.75 394.891 9.584 437.064 47.923 23.003 21.087 42.173 61.343 42.173 92.014 0 153.355-49.84 170.608-473.486 168.691-187.86-1.917-379.555-9.585-425.562-19.17z",transform:"matrix(.0098 0 0 .0098 .182 .285)"}})])]),t._v(" "),r("symbol",{attrs:{id:"supporter-opensats",viewBox:"0 0 5220 720"}},[r("path",{attrs:{d:"M0 435.197L229.609 291.597V288.121L0 144.259V29.0508L334.901 245.894V333.824L0 550.798V435.197Z",fill:"#FF3300"}}),r("path",{attrs:{d:"M486.969 623.844H902.627V719.643H486.969V623.844Z",fill:"#FF3300"}}),r("path",{attrs:{d:"M993.879 291.2C993.879 106.422 1084.61 0 1214.37 0C1344.13 0 1434.86 106.422 1434.86 291.2C1434.86 479.061 1344.13 587.581 1214.37 587.581C1084.61 587.581 993.879 479.061 993.879 291.2ZM1345.12 291.2C1345.12 155.01 1293.16 75.9967 1214.37 75.9967C1135.58 75.9967 1083.62 155.01 1083.62 291.2C1083.62 430.473 1135.58 511.584 1214.37 511.584C1293.16 511.584 1344.85 430.473 1344.85 291.2H1345.12Z",fill:"#FF3300"}}),r("path",{attrs:{d:"M1593.29 154.29H1663.81L1670.37 205.37H1673.13C1711.31 169.634 1764.71 144.258 1814.44 144.258C1925.96 144.258 1988.02 228.713 1988.02 359.855C1988.02 504.111 1897.95 587.911 1797.77 587.911C1759.13 587.911 1713.54 568.829 1677.39 535.454H1675.29L1679.43 612.237V749.936H1593.29V154.29ZM1899.65 359.855C1899.65 271.269 1867.44 215.599 1791.21 215.599C1756.57 215.599 1717.93 232.713 1679.69 272.121V472.112C1714.79 503.914 1754.61 515.455 1781.57 515.455C1848.75 515.717 1899.65 459.851 1899.65 359.855Z",fill:"#FF3300"}}),r("path",{attrs:{d:"M2118.96 365.035C2118.96 227.336 2222.75 143.93 2335.98 143.93C2460.16 143.93 2530.82 225.434 2530.82 343.527C2530.67 359.209 2529.35 374.858 2526.88 390.345H2178.73V327.2H2473.22L2454.52 348.249C2454.52 256.449 2410.17 210.55 2338.47 210.55C2264.41 210.55 2203.66 265.17 2203.66 364.904C2203.66 468.833 2268.8 520.044 2359.79 520.044C2407.09 520.044 2445.08 505.75 2483.39 482.8L2513.56 537.29C2464.7 569.886 2407.32 587.378 2348.57 587.582C2220.39 587.582 2118.96 505.947 2118.96 365.035Z",fill:"#FF3300"}}),r("path",{attrs:{d:"M2658.41 154.29H2729.07L2735.63 221.697H2739.04C2781.55 178.289 2829.83 144.258 2895.17 144.258C2994.1 144.258 3039.17 205.042 3039.17 315.201V577.026H2952.9V326.152C2952.9 252.319 2928.11 218.222 2865.39 218.222C2819.47 218.222 2788.31 240.844 2744.68 285.563V577.026H2658.41V154.29Z",fill:"#FF3300"}}),r("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{d:"M3208.36 504.308L3259.46 444.376C3303 486.486 3360.93 510.468 3421.5 511.455C3493.27 511.455 3533.03 478.669 3533.03 432.77C3533.03 377.362 3491.63 361.953 3435.41 338.217L3355.57 303.333C3297.64 280.514 3234.21 238.614 3234.21 155.143C3234.21 66.8186 3313.65 0.001814 3425.64 0.001814C3492.01 -0.442962 3555.93 25.0654 3603.75 71.0807L3558.87 126.554C3521.22 93.051 3472.3 74.9951 3421.9 75.9985C3362.2 75.9985 3322.11 103.604 3322.11 150.028C3322.11 199.206 3371.05 217.173 3420.98 236.516L3497.93 270.416C3569.04 298.087 3622.18 339.528 3622.18 422.344C3622.18 513.356 3545.36 587.583 3416.78 587.583C3339.11 587.998 3264.34 558.123 3208.36 504.308V504.308Z"}}),r("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{d:"M3762.96 465.557C3762.96 370.741 3849.04 324.055 4062.7 308.186C4059.62 255.73 4031.54 213.896 3956.3 213.896C3905.13 213.896 3854.68 237.304 3813.28 261.5L3780.48 203.994C3827.98 174.684 3898.57 144.062 3971.78 144.062C4088.42 144.062 4148.91 210.945 4148.91 322.678V577.027H4077.73L4070.84 522.144H4068.08C4022.82 557.553 3963.97 587.715 3906.04 587.715C3825.16 587.584 3762.96 540.045 3762.96 465.557ZM4062.7 462.278V363.266C3896.79 375.134 3847.26 408.576 3847.26 459C3847.26 501.489 3885.38 519.063 3930.65 519.063C3975.91 519.063 4018.88 497.883 4062.7 462.278Z"}}),r("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{d:"M4388.81 409.884V222.941H4272.17V158.813L4392.16 154.289L4403.44 20.2617H4475.02V154.289H4674.64V222.941H4475.02V410.146C4475.02 482.864 4500.73 518.076 4577.29 518.076C4610.27 517.981 4642.96 511.847 4673.73 499.979L4691.24 562.992C4648.39 578.951 4603.07 587.274 4557.35 587.581C4430.86 587.581 4388.81 516.043 4388.81 409.884Z"}}),r("path",{staticStyle:{fill:"var(--btcpay-body-text)"},attrs:{d:"M4818.71 521.815L4857.09 466.014C4909.9 502.948 4972.98 522.353 5037.43 521.487C5102.31 521.487 5133.34 495.259 5133.34 463.85C5133.34 433.95 5115.76 415 5009.22 393.034C4897.7 369.887 4845.21 331.2 4845.21 267.203C4845.21 196.518 4908.85 143.93 5025.95 143.93C5093.26 143.93 5157.55 170.158 5199.93 198.878L5159.45 252.646C5117.79 224.668 5068.79 209.592 5018.6 209.304C4955.62 209.304 4931.28 234.155 4931.28 263.138C4931.28 295.923 4965.07 309.037 5048.12 326.938C5185.89 357.101 5220.33 392.509 5220.33 458.736C5220.33 529.487 5151.71 587.582 5026.8 587.582C4952.47 586.641 4880.07 563.76 4818.71 521.815V521.815Z"}})])]),t._v(" "),r("div",{staticClass:"supporters"},[r("h3",[t._v("Our Supporters")]),t._v(" "),r("p",[t._v("\n The BTCPay Server Project is proudly supported by these entities through the\n "),r("a",{attrs:{href:"https://foundation.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[t._v("BTCPay Server Foundation")]),t._v(".\n ")]),t._v(" "),r("div",{staticClass:"logos"},[r("a",{attrs:{href:"https://spiral.xyz",target:"_blank",rel:"noopener noreferrer"}},[r("svg",{staticStyle:{padding:"5px"},attrs:{role:"img",width:"100",height:"100"}},[r("use",{attrs:{href:"#supporter-spiral"}})]),t._v("\n Spiral\n ")]),t._v(" "),r("a",{attrs:{href:"https://opensats.org",target:"_blank",rel:"noopener noreferrer"}},[r("svg",{attrs:{role:"img",width:"120",height:"100"}},[r("use",{attrs:{href:"#supporter-opensats"}})]),t._v("\n OpenSats\n ")]),t._v(" "),r("a",{attrs:{href:"https://www.bailliegifford.com",target:"_blank",rel:"noopener noreferrer"}},[r("svg",{attrs:{role:"img",width:"110",height:"100"}},[r("use",{attrs:{href:"#supporter-bailliegifford"}})]),t._v("\n Baillie Gifford\n ")]),t._v(" "),r("a",{attrs:{href:"https://strike.me",target:"_blank",rel:"noopener noreferrer"}},[r("svg",{attrs:{role:"img",width:"55",height:"50"}},[r("use",{attrs:{href:"#supporter-strike"}})]),t._v("\n Strike\n ")]),t._v(" "),r("a",{attrs:{href:"https://hrf.org",target:"_blank",rel:"noopener noreferrer"}},[r("svg",{attrs:{role:"img",width:"110",height:"50"}},[r("use",{attrs:{href:"#supporter-hrf"}})]),t._v("\n HRF\n ")]),t._v(" "),r("a",{attrs:{href:"https://escapetoelsalvador.org/",target:"_blank",rel:"noopener noreferrer"}},[r("svg",{attrs:{role:"img",width:"100",height:"90"}},[r("use",{attrs:{href:"#supporter-esc"}})]),t._v("\n ESC\n ")]),t._v(" "),r("a",{attrs:{href:"https://www.lunanode.com/",target:"_blank",rel:"noopener noreferrer"}},[r("svg",{attrs:{role:"img",width:"100",height:"100"}},[r("use",{attrs:{href:"#supporter-lunanode"}})]),t._v("\n LunaNode\n ")]),t._v(" "),r("a",{attrs:{href:"https://walletofsatoshi.com/",target:"_blank",rel:"noopener noreferrer"}},[r("svg",{attrs:{role:"img",width:"100",height:"100"}},[r("use",{attrs:{href:"#supporter-walletofsatoshi"}})]),t._v("\n Wallet of Satoshi\n ")]),t._v(" "),r("a",{attrs:{href:"https://coincards.com/",target:"_blank",rel:"noopener noreferrer"}},[r("svg",{attrs:{role:"img",width:"130",height:"100"}},[r("use",{attrs:{href:"#supporter-coincards"}})]),t._v("\n Coincards\n ")]),t._v(" "),r("a",{attrs:{href:"https://www.ivpn.net/",target:"_blank",rel:"noopener noreferrer"}},[r("svg",{attrs:{role:"img",width:"100",height:"100"}},[r("use",{attrs:{href:"#supporter-ivpn"}})]),t._v("\n IVPN\n ")])]),t._v(" "),r("p",[t._v("If you'd like to support the project, please visit the "),r("a",{attrs:{href:"https://btcpayserver.org/donate/"}},[t._v("donation page")]),t._v(".")])])])}),[],!1,null,null,null);r.default=l.exports}}]); \ No newline at end of file diff --git a/assets/js/19.5033c916.js b/assets/js/19.31958e97.js similarity index 76% rename from assets/js/19.5033c916.js rename to assets/js/19.31958e97.js index f49fec70c8..9e82cc3ca5 100644 --- a/assets/js/19.5033c916.js +++ b/assets/js/19.31958e97.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{259:function(t,e,a){t.exports=a.p+"assets/img/payouts-status3-options-appr.2f1b2d15.jpg"},639:function(t,e,a){t.exports=a.p+"assets/img/invoices-details.19bfdb69.jpg"},640:function(t,e,a){t.exports=a.p+"assets/img/issue-refund.ad313350.jpg"},641:function(t,e,a){t.exports=a.p+"assets/img/issue-refund-payment-option.ba17b34c.jpg"},642:function(t,e,a){t.exports=a.p+"assets/img/issue-refund-amount.d6751041.jpg"},643:function(t,e,a){t.exports=a.p+"assets/img/claimingside.b4816192.jpg"},644:function(t,e,a){t.exports=a.p+"assets/img/payouts-status4-options-sign3-adv.96d0e967.jpg"},645:function(t,e,a){t.exports=a.p+"assets/img/payout-status-succesfull.7513d4bc.jpg"},646:function(t,e,a){t.exports=a.p+"assets/img/payouts-status5-completed1.b5295c02.jpg"},647:function(t,e,a){t.exports=a.p+"assets/img/claiment-completed1.4e877454.jpg"},803:function(t,e,a){"use strict";a.r(e);var r=a(9),s=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"refunds"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#refunds"}},[t._v("#")]),t._v(" Refunds")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("If you are looking for information about requesting a refund from a merchant, please refer to this "),e("RouterLink",{attrs:{to:"/FAQ/General/#what-if-i-have-a-problem-with-a-paid-invoice"}},[t._v("FAQ")])],1)]),t._v(" "),e("p",[e("strong",[t._v("Refunds")]),t._v(" are one of the applications built on top of the "),e("RouterLink",{attrs:{to:"/PullPayments/"}},[t._v("Pull Payments")]),t._v(" feature.")],1),t._v(" "),e("p",[t._v("On this page, we will walk you through the process of issuing a refund.\nThere are a short few steps to create the refund for the customer.")]),t._v(" "),e("h2",{attrs:{id:"create-a-refund"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-a-refund"}},[t._v("#")]),t._v(" Create a refund")]),t._v(" "),e("ol",[e("li",[t._v("To refund an invoice, go in the "),e("code",[t._v("Invoices")]),t._v(" page and click "),e("code",[t._v("Details")]),t._v(" on the invoice.")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(639),alt:"BTCPay Server refund feature",title:"BTCPay Server refund feature"}})]),t._v(" "),e("ol",{attrs:{start:"2"}},[e("li",[t._v("Click "),e("code",[t._v("Issue a refund")])])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(640),alt:"BTCPay Server refund feature",title:"BTCPay Server refund feature"}})]),t._v(" "),e("ol",{attrs:{start:"3"}},[e("li",[t._v("Select refund's payment method")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(641),alt:"BTCPay Server refund feature",title:"BTCPay Server refund feature"}})]),t._v(" "),e("ol",{attrs:{start:"4"}},[e("li",[t._v("Select the "),e("code",[t._v("amount")]),t._v(" you want to refund")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(642),alt:"BTCPay Server refund feature",title:"BTCPay Server refund feature"}})]),t._v(" "),e("ol",{attrs:{start:"5"}},[e("li",[t._v("Share the link of this page with your customer")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(643),alt:"BTCPay Server refund feature",title:"BTCPay Server refund feature"}})]),t._v(" "),e("h2",{attrs:{id:"processing-refund"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processing-refund"}},[t._v("#")]),t._v(" Processing refund")]),t._v(" "),e("p",[t._v("Once a customer clicks on the link you've provided adds their refund bitcoin address and claims the invoice, the next step is to process a refund.")]),t._v(" "),e("ol",[e("li",[t._v("Go to the "),e("code",[t._v("Payouts")]),t._v(" tab in your sidebar.")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(259),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})]),t._v(" "),e("ol",{attrs:{start:"2"}},[e("li",[t._v("Select the Payouts you want to process, go to actions and select "),e("code",[t._v("Approve and send")])])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(259),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})]),t._v(" "),e("ol",{attrs:{start:"3"}},[e("li",[t._v("Sign and broadcast the transactions.")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(644),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})]),t._v(" "),e("ol",{attrs:{start:"4"}},[e("li",[t._v("The payout has now been signed and is in progress, awaiting confirmation on the blockchain. This is reflected to the claimant in their view.")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(645),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})]),t._v(" "),e("ol",{attrs:{start:"5"}},[e("li",[t._v("After the transaction has been confirmed on the blockchain, the status of the payout will be "),e("code",[t._v("completed")]),t._v(".")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(646),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})]),t._v(" "),e("p",[t._v("Customer's view after the refund has been successfully processed.")]),t._v(" "),e("figure",[e("img",{attrs:{src:a(647),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{259:function(t,e,a){t.exports=a.p+"assets/img/payouts-status3-options-appr.2f1b2d15.jpg"},647:function(t,e,a){t.exports=a.p+"assets/img/invoices-details.19bfdb69.jpg"},648:function(t,e,a){t.exports=a.p+"assets/img/issue-refund.ad313350.jpg"},649:function(t,e,a){t.exports=a.p+"assets/img/issue-refund-payment-option.ba17b34c.jpg"},650:function(t,e,a){t.exports=a.p+"assets/img/issue-refund-amount.d6751041.jpg"},651:function(t,e,a){t.exports=a.p+"assets/img/claimingside.b4816192.jpg"},652:function(t,e,a){t.exports=a.p+"assets/img/payouts-status4-options-sign3-adv.96d0e967.jpg"},653:function(t,e,a){t.exports=a.p+"assets/img/payout-status-succesfull.7513d4bc.jpg"},654:function(t,e,a){t.exports=a.p+"assets/img/payouts-status5-completed1.b5295c02.jpg"},655:function(t,e,a){t.exports=a.p+"assets/img/claiment-completed1.4e877454.jpg"},804:function(t,e,a){"use strict";a.r(e);var r=a(9),s=Object(r.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"refunds"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#refunds"}},[t._v("#")]),t._v(" Refunds")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("If you are looking for information about requesting a refund from a merchant, please refer to this "),e("RouterLink",{attrs:{to:"/FAQ/General/#what-if-i-have-a-problem-with-a-paid-invoice"}},[t._v("FAQ")])],1)]),t._v(" "),e("p",[e("strong",[t._v("Refunds")]),t._v(" are one of the applications built on top of the "),e("RouterLink",{attrs:{to:"/PullPayments/"}},[t._v("Pull Payments")]),t._v(" feature.")],1),t._v(" "),e("p",[t._v("On this page, we will walk you through the process of issuing a refund.\nThere are a short few steps to create the refund for the customer.")]),t._v(" "),e("h2",{attrs:{id:"create-a-refund"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#create-a-refund"}},[t._v("#")]),t._v(" Create a refund")]),t._v(" "),e("ol",[e("li",[t._v("To refund an invoice, go in the "),e("code",[t._v("Invoices")]),t._v(" page and click "),e("code",[t._v("Details")]),t._v(" on the invoice.")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(647),alt:"BTCPay Server refund feature",title:"BTCPay Server refund feature"}})]),t._v(" "),e("ol",{attrs:{start:"2"}},[e("li",[t._v("Click "),e("code",[t._v("Issue a refund")])])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(648),alt:"BTCPay Server refund feature",title:"BTCPay Server refund feature"}})]),t._v(" "),e("ol",{attrs:{start:"3"}},[e("li",[t._v("Select refund's payment method")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(649),alt:"BTCPay Server refund feature",title:"BTCPay Server refund feature"}})]),t._v(" "),e("ol",{attrs:{start:"4"}},[e("li",[t._v("Select the "),e("code",[t._v("amount")]),t._v(" you want to refund")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(650),alt:"BTCPay Server refund feature",title:"BTCPay Server refund feature"}})]),t._v(" "),e("ol",{attrs:{start:"5"}},[e("li",[t._v("Share the link of this page with your customer")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(651),alt:"BTCPay Server refund feature",title:"BTCPay Server refund feature"}})]),t._v(" "),e("h2",{attrs:{id:"processing-refund"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#processing-refund"}},[t._v("#")]),t._v(" Processing refund")]),t._v(" "),e("p",[t._v("Once a customer clicks on the link you've provided adds their refund bitcoin address and claims the invoice, the next step is to process a refund.")]),t._v(" "),e("ol",[e("li",[t._v("Go to the "),e("code",[t._v("Payouts")]),t._v(" tab in your sidebar.")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(259),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})]),t._v(" "),e("ol",{attrs:{start:"2"}},[e("li",[t._v("Select the Payouts you want to process, go to actions and select "),e("code",[t._v("Approve and send")])])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(259),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})]),t._v(" "),e("ol",{attrs:{start:"3"}},[e("li",[t._v("Sign and broadcast the transactions.")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(652),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})]),t._v(" "),e("ol",{attrs:{start:"4"}},[e("li",[t._v("The payout has now been signed and is in progress, awaiting confirmation on the blockchain. This is reflected to the claimant in their view.")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(653),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})]),t._v(" "),e("ol",{attrs:{start:"5"}},[e("li",[t._v("After the transaction has been confirmed on the blockchain, the status of the payout will be "),e("code",[t._v("completed")]),t._v(".")])]),t._v(" "),e("figure",[e("img",{attrs:{src:a(654),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})]),t._v(" "),e("p",[t._v("Customer's view after the refund has been successfully processed.")]),t._v(" "),e("figure",[e("img",{attrs:{src:a(655),alt:"BTCPay Server Payouts tab",title:"BTCPay Server Payouts tab"}})])])}),[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/assets/js/20.dc9f3027.js b/assets/js/20.b7cc46dc.js similarity index 75% rename from assets/js/20.dc9f3027.js rename to assets/js/20.b7cc46dc.js index 02448019c1..4fbd31f7e6 100644 --- a/assets/js/20.dc9f3027.js +++ b/assets/js/20.b7cc46dc.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{320:function(t,e,r){t.exports=r.p+"assets/img/ContributeCloneRepo.4df4c253.jpg"},321:function(t,e,r){t.exports=r.p+"assets/img/ContributeCloneRepo2.70d12ce3.jpg"},322:function(t,e,r){t.exports=r.p+"assets/img/ContributeCreateBranch.7d45e1e5.jpg"},323:function(t,e,r){t.exports=r.p+"assets/img/ContributeCreateBranch2.05759e70.jpg"},324:function(t,e,r){t.exports=r.p+"assets/img/ContributeFindFile.0bdf3b61.jpg"},325:function(t,e,r){t.exports=r.p+"assets/img/ContributeCommit.aadec825.jpg"},326:function(t,e,r){t.exports=r.p+"assets/img/ContributeCommit2.e2985a43.jpg"},327:function(t,e,r){t.exports=r.p+"assets/img/ContributeCreatePR.67d68a78.jpg"},328:function(t,e,r){t.exports=r.p+"assets/img/ContributeOpenPR.bacee510.jpg"},696:function(t,e,r){"use strict";r.r(e);var i=r(9),o=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"contribute-to-the-software-stack"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contribute-to-the-software-stack"}},[t._v("#")]),t._v(" Contribute to the software stack")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("If you have trouble finding a string or contributing to the software stack, ask the "),e("RouterLink",{attrs:{to:"/Community/"}},[t._v("community")])],1),t._v(" "),e("p",[t._v("If your textual change is significant "),e("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues/new/choose",target:"_blank",rel:"noopener noreferrer"}},[t._v("open an issue on GitHub"),e("OutboundLink")],1),t._v(" and explain what you'd like to change and why.")])]),t._v(" "),e("h2",{attrs:{id:"step-1"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1"}},[t._v("#")]),t._v(" "),e("strong",[t._v("Step 1")])]),t._v(" "),e("p",[t._v("Fork/Clone the main repository ("),e("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/",target:"_blank",rel:"noopener noreferrer"}},[t._v("BTCPay Server"),e("OutboundLink")],1),t._v(") using Github and publish it.")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(320),alt:"ContributeCloneRepo",title:"ContributeCloneRepo"}})]),t._v(" "),e("figure",[e("img",{attrs:{src:r(321),alt:"ContributeCloneRepo2",title:"ContributeCloneRepo2"}})]),t._v(" "),e("h2",{attrs:{id:"step-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" "),e("strong",[t._v("Step 2")])]),t._v(" "),e("p",[t._v("Create a branch and name it (for example what file you're working on).")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(322),alt:"ContributeCreateBranch",title:"ContributeCreateBranch"}})]),t._v(" "),e("figure",[e("img",{attrs:{src:r(323),alt:"ContributeCreateBranch2",title:"ContributeCreateBranch2"}})]),t._v(" "),e("h2",{attrs:{id:"step-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" "),e("strong",[t._v("Step 3")])]),t._v(" "),e("p",[t._v("Now open your branch in your file explorer.")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(324),alt:"ContributeFindFile",title:"ContributeFindFile"}})]),t._v(" "),e("p",[t._v("You're all set!\nOpen the file you wish to edit and work on it.\nOnce finished, save it.")]),t._v(" "),e("h2",{attrs:{id:"step-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[t._v("#")]),t._v(" "),e("strong",[t._v("Step 4")])]),t._v(" "),e("p",[t._v("Once your changes are saved, return to Github Desktop.\nSee your changes on the right hand side.")]),t._v(" "),e("p",[t._v("Name your contribution and describe it.\nClick the "),e("code",[t._v("Commit")]),t._v(" button in the bottom left.")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(325),alt:"ContributeCommit",title:"ContributeCommit"}})]),t._v(" "),e("figure",[e("img",{attrs:{src:r(326),alt:"ContributeCommit2",title:"ContributeCommit2"}})]),t._v(" "),e("h2",{attrs:{id:"step-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[t._v("#")]),t._v(" "),e("strong",[t._v("Step 5")])]),t._v(" "),e("p",[t._v("Next, create a "),e("code",[t._v("Pull Request")]),t._v(" by clicking the "),e("code",[t._v("Create Pull Request")]),t._v(" button on the right to open a browser page.")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(327),alt:"ContributeCreatePR",title:"ContributeCreatePR"}})]),t._v(" "),e("p",[t._v("Then describe what your "),e("code",[t._v("Pull Request")]),t._v(" changes, give it a title, and click "),e("code",[t._v("Create Pull Request")]),t._v(".")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(328),alt:"ContributeOpenPR",title:"ContributeOpenPR"}})]),t._v(" "),e("p",[t._v("Once your pull request is submitted, it has to be reviewed by the maintainers and contributors. If it gets accepted - congratulations, you've made your first contribution.")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{311:function(t,e,r){t.exports=r.p+"assets/img/ContributeCloneRepo.4df4c253.jpg"},312:function(t,e,r){t.exports=r.p+"assets/img/ContributeCloneRepo2.70d12ce3.jpg"},313:function(t,e,r){t.exports=r.p+"assets/img/ContributeCreateBranch.7d45e1e5.jpg"},314:function(t,e,r){t.exports=r.p+"assets/img/ContributeCreateBranch2.05759e70.jpg"},315:function(t,e,r){t.exports=r.p+"assets/img/ContributeFindFile.0bdf3b61.jpg"},316:function(t,e,r){t.exports=r.p+"assets/img/ContributeCommit.aadec825.jpg"},317:function(t,e,r){t.exports=r.p+"assets/img/ContributeCommit2.e2985a43.jpg"},318:function(t,e,r){t.exports=r.p+"assets/img/ContributeCreatePR.67d68a78.jpg"},319:function(t,e,r){t.exports=r.p+"assets/img/ContributeOpenPR.bacee510.jpg"},693:function(t,e,r){"use strict";r.r(e);var i=r(9),o=Object(i.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"contribute-to-the-software-stack"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#contribute-to-the-software-stack"}},[t._v("#")]),t._v(" Contribute to the software stack")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("TIP")]),t._v(" "),e("p",[t._v("If you have trouble finding a string or contributing to the software stack, ask the "),e("RouterLink",{attrs:{to:"/Community/"}},[t._v("community")])],1),t._v(" "),e("p",[t._v("If your textual change is significant "),e("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues/new/choose",target:"_blank",rel:"noopener noreferrer"}},[t._v("open an issue on GitHub"),e("OutboundLink")],1),t._v(" and explain what you'd like to change and why.")])]),t._v(" "),e("h2",{attrs:{id:"step-1"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-1"}},[t._v("#")]),t._v(" "),e("strong",[t._v("Step 1")])]),t._v(" "),e("p",[t._v("Fork/Clone the main repository ("),e("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/",target:"_blank",rel:"noopener noreferrer"}},[t._v("BTCPay Server"),e("OutboundLink")],1),t._v(") using Github and publish it.")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(311),alt:"ContributeCloneRepo",title:"ContributeCloneRepo"}})]),t._v(" "),e("figure",[e("img",{attrs:{src:r(312),alt:"ContributeCloneRepo2",title:"ContributeCloneRepo2"}})]),t._v(" "),e("h2",{attrs:{id:"step-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-2"}},[t._v("#")]),t._v(" "),e("strong",[t._v("Step 2")])]),t._v(" "),e("p",[t._v("Create a branch and name it (for example what file you're working on).")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(313),alt:"ContributeCreateBranch",title:"ContributeCreateBranch"}})]),t._v(" "),e("figure",[e("img",{attrs:{src:r(314),alt:"ContributeCreateBranch2",title:"ContributeCreateBranch2"}})]),t._v(" "),e("h2",{attrs:{id:"step-3"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-3"}},[t._v("#")]),t._v(" "),e("strong",[t._v("Step 3")])]),t._v(" "),e("p",[t._v("Now open your branch in your file explorer.")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(315),alt:"ContributeFindFile",title:"ContributeFindFile"}})]),t._v(" "),e("p",[t._v("You're all set!\nOpen the file you wish to edit and work on it.\nOnce finished, save it.")]),t._v(" "),e("h2",{attrs:{id:"step-4"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-4"}},[t._v("#")]),t._v(" "),e("strong",[t._v("Step 4")])]),t._v(" "),e("p",[t._v("Once your changes are saved, return to Github Desktop.\nSee your changes on the right hand side.")]),t._v(" "),e("p",[t._v("Name your contribution and describe it.\nClick the "),e("code",[t._v("Commit")]),t._v(" button in the bottom left.")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(316),alt:"ContributeCommit",title:"ContributeCommit"}})]),t._v(" "),e("figure",[e("img",{attrs:{src:r(317),alt:"ContributeCommit2",title:"ContributeCommit2"}})]),t._v(" "),e("h2",{attrs:{id:"step-5"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#step-5"}},[t._v("#")]),t._v(" "),e("strong",[t._v("Step 5")])]),t._v(" "),e("p",[t._v("Next, create a "),e("code",[t._v("Pull Request")]),t._v(" by clicking the "),e("code",[t._v("Create Pull Request")]),t._v(" button on the right to open a browser page.")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(318),alt:"ContributeCreatePR",title:"ContributeCreatePR"}})]),t._v(" "),e("p",[t._v("Then describe what your "),e("code",[t._v("Pull Request")]),t._v(" changes, give it a title, and click "),e("code",[t._v("Create Pull Request")]),t._v(".")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(319),alt:"ContributeOpenPR",title:"ContributeOpenPR"}})]),t._v(" "),e("p",[t._v("Once your pull request is submitted, it has to be reviewed by the maintainers and contributors. If it gets accepted - congratulations, you've made your first contribution.")])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/21.48da6b29.js b/assets/js/21.148cbf1b.js similarity index 90% rename from assets/js/21.48da6b29.js rename to assets/js/21.148cbf1b.js index ca97f895f8..227f9d4d2b 100644 --- a/assets/js/21.48da6b29.js +++ b/assets/js/21.148cbf1b.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{240:function(e,t,a){e.exports=a.p+"assets/img/BroadcastConfirm.fde15efd.png"},312:function(e,t,a){e.exports=a.p+"assets/img/MainMenu.c6ee0a71.png"},313:function(e,t,a){e.exports=a.p+"assets/img/CreateNewWallet.b9662283.png"},314:function(e,t,a){e.exports=a.p+"assets/img/HotWallet.3334a95d.png"},315:function(e,t,a){e.exports=a.p+"assets/img/WalletSettings.20aa817c.png"},316:function(e,t,a){e.exports=a.p+"assets/img/AdvancedSettings.46859536.png"},317:function(e,t,a){e.exports=a.p+"assets/img/ServerSettings.6a6d7e35.png"},318:function(e,t,a){e.exports=a.p+"assets/img/WalletSend.b3bed5a9.png"},319:function(e,t,a){e.exports=a.p+"assets/img/SignTransaction.ddb5258c.png"},694:function(e,t,a){"use strict";a.r(t);var r=a(9),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"create-a-new-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-a-new-wallet"}},[e._v("#")]),e._v(" Create a new wallet")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#hot-wallet"}},[e._v("Hot Wallet")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#watch-only-wallet"}},[e._v("Watch-only wallet")])])]),e._v(" "),t("h3",{attrs:{id:"hot-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hot-wallet"}},[e._v("#")]),e._v(" Hot Wallet")]),e._v(" "),t("p",[e._v("If you do not have an existing wallet, you can generate a new one within your BTCPay Server. Whether you have an existing wallet or not, the quickest way to get a wallet connected to your store is to create a new wallet. You can always replace it with an alternative wallet after receiving a few small payments to your server, if you just want to get your store ready quickly.")]),e._v(" "),t("p",[e._v("This type of wallet is also necessary to use features such as "),t("RouterLink",{attrs:{to:"/Payjoin/"}},[e._v("Payjoin")]),e._v(" and "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues/1282",target:"_blank",rel:"noopener noreferrer"}},[e._v("Liquid"),t("OutboundLink")],1),e._v(".")],1),e._v(" "),t("p",[e._v("After creating a store, you'll be able to attach a wallet by first navigating to the sidebar or slide-out menu and clicking/tapping the "),t("strong",[e._v("Bitcoin")]),e._v(" button under the "),t("strong",[e._v("Wallets")]),e._v(" header. Alternatively, you can find the option to "),t("strong",[e._v("Set up a wallet")]),e._v(" on the Dashboard.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(312),alt:"Main Menu",title:"Main Menu"}})]),e._v(" "),t("p",[e._v("You'll focus on the "),t("strong",[e._v("I don't have a wallet")]),e._v(" section for a hot wallet and click the "),t("strong",[e._v("Create a new wallet")]),e._v(" button.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(313),alt:"New Wallet",title:"New Wallet"}})]),e._v(" "),t("p",[e._v("There will be two options on the proceeding page, and in this case, we'll select the "),t("strong",[e._v("Hot wallet")]),e._v(" button.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(314),alt:"Create Wallet",title:"Create Wallet"}})]),e._v(" "),t("p",[e._v("For most people, the default options, including "),t("strong",[e._v("Address Type")]),e._v(" (Segwit), should work well for most applications, and it's recommended not to change it unless you're sure of what you're doing. The "),t("strong",[e._v("Payjoin")]),e._v(" feature is optional, and you can learn more about it at the link "),t("a",{attrs:{href:"#hot-wallet"}},[e._v("above")]),e._v(".")]),e._v(" "),t("p",[e._v("Find out more about advanced settings "),t("a",{attrs:{href:"#advanced-settings"}},[e._v("here")]),e._v(".")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(315),alt:"Wallet Settings",title:"Wallet Settings"}})]),e._v(" "),t("h4",{attrs:{id:"recovery-seed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#recovery-seed"}},[e._v("#")]),e._v(" Recovery Seed")]),e._v(" "),t("p",[e._v("The last step to creating a hot wallet is making sure you document your recovery seed. After you've done so, tick the checkbox that says "),t("em",[e._v("I have written down my recovery phrase and stored it in a secure location")]),e._v(" and click the "),t("strong",[e._v("Done")]),e._v(" button.")]),e._v(" "),t("h4",{attrs:{id:"advanced-settings"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#advanced-settings"}},[e._v("#")]),e._v(" Advanced Settings")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Optional "),t("a",{attrs:{href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#from-mnemonic-to-seed",target:"_blank",rel:"noopener noreferrer"}},[e._v("BIP39"),t("OutboundLink")],1),e._v(" passphrase")]),e._v(" "),t("ul",[t("li",[e._v("You can add a passphrase for your hot wallet's mnemonic for an additional layer of security.")])])]),e._v(" "),t("li",[t("p",[e._v("Import keys to RPC")]),e._v(" "),t("ul",[t("li",[e._v("This is for more advanced applications of BTCPay Server. Importing your keys to RPC will allow users to leverage "),t("a",{attrs:{href:"https://developer.bitcoin.org/reference/rpc/index.html#wallet-rpcs",target:"_blank",rel:"noopener noreferrer"}},[e._v("bitcoind Wallet RPCs"),t("OutboundLink")],1),e._v(" on the imported wallet.")])])])]),e._v(" "),t("figure",[t("img",{attrs:{src:a(316),alt:"Advanced Settings",title:"Advanced Settings"}})]),e._v(" "),t("h4",{attrs:{id:"requirements-to-create-wallets"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#requirements-to-create-wallets"}},[e._v("#")]),e._v(" Requirements to create wallets")]),e._v(" "),t("p",[e._v("If are using a "),t("RouterLink",{attrs:{to:"/Deployment/ThirdPartyHosting/"}},[e._v("third-party host")]),e._v(", this option needs to be explicitly enabled by the server admin. Generating a new wallet in an environment you are not sure is trustworthy, is discouraged.")],1),e._v(" "),t("p",[e._v('By default, you need to be a server admin to use the create wallet feature. This is because server admins are able to extract the private key easily. If for some reason (such as allowing individuals that trust you enough with their store), you can enable the hot wallet for non-admins from Server Settings > Policies > "Allow non-admins to create hot wallets for their stores".')]),e._v(" "),t("p",[e._v("Understand that anyone with access to your recovery seed can also access and steal all your funds (current AND future funds!), since a private key is derived from a recovery seed. Securely back up your seed by writing it down and keep it in a safe place. Do not photograph it or store it in a digital format. Do not rely solely on your server for storing your recovery seed, always keep a backup copy.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(317),alt:"BTCPay Server settings",title:"BTCPay Server settings"}})]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("When a new wallet is generated, BTCPay Server will show you a twelve word recovery seed. After the initial display, the recovery seed is wiped from the server, unless a the hot wallet option is enabled.")])]),e._v(" "),t("h4",{attrs:{id:"spending-funds-with-btcpay-hot-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#spending-funds-with-btcpay-hot-wallet"}},[e._v("#")]),e._v(" Spending funds with BTCPay Hot Wallet")]),e._v(" "),t("p",[e._v("Once you've received funds to your wallet and decide to spend them, you can automatically sign the transaction inside BTCPay Server.")]),e._v(" "),t("ol",[t("li",[e._v("In BTCPay Server, go to > Wallets > Bitcoin > Send")]),e._v(" "),t("li",[e._v("Fill in the Destination address and the Amount")]),e._v(" "),t("li",[e._v("Adjust the transaction settings, including fee rate, confirmation time preference, and if you'd like transaction fees to be subtracted from the amount you're sending")]),e._v(" "),t("li",[e._v("Sign the transaction")]),e._v(" "),t("li",[e._v("Review the transaction")]),e._v(" "),t("li",[e._v("Broadcast the transaction")])]),e._v(" "),t("p",[t("img",{attrs:{src:a(318),alt:"BTCPay Server Send page",title:"BTCPay Server Send page"}}),e._v(" "),t("img",{attrs:{src:a(240),alt:"BTCPay Server Transaction Review and Broadcast page",title:"BTCPay Server Transaction Review and Broadcast page"}})]),e._v(" "),t("h4",{attrs:{id:"security-implications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-implications"}},[e._v("#")]),e._v(" Security Implications")]),e._v(" "),t("p",[e._v("Storing private keys on a public server comes with risks. This is similar to the risks of running and using the "),t("RouterLink",{attrs:{to:"/LightningNetwork/"}},[e._v("Lightning Network")]),e._v(" (except that you can recover funds with a backup).\n"),t("strong",[e._v("Please, ALWAYS be sure to back up any seed that is generated by this feature and to never leave money you cannot afford to lose spendable by those private keys")]),e._v(".")],1),e._v(" "),t("h4",{attrs:{id:"reducing-risk"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reducing-risk"}},[e._v("#")]),e._v(" Reducing risk")]),e._v(" "),t("p",[e._v("As mentioned above, the create wallet functionality includes the risk of funds being stolen if the server or account is compromised. To mitigate this risk, we advise you to:")]),e._v(" "),t("ul",[t("li",[e._v("Enable two factor or U2F authentication")]),e._v(" "),t("li",[e._v("Occasionally move funds to your cold storage either manually or by configuring "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcTransmuter/blob/master/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTC Transmuter"),t("OutboundLink")],1),e._v(" with automatic payment forwarding.")])]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),t("p",[e._v("Do not give anyone else access to your server's SSH keys or server account credentials when using a hot wallet. Anyone with access to your account can spend the funds from your hot wallet. If you need to allow account access to employees, developers, etc. use an "),t("RouterLink",{attrs:{to:"/ConnectWallet/#connect-an-existing-wallet"}},[e._v("existing wallet")]),e._v(" instead.")],1)]),e._v(" "),t("h3",{attrs:{id:"watch-only-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#watch-only-wallet"}},[e._v("#")]),e._v(" Watch-only wallet")]),e._v(" "),t("p",[e._v('Like the hot wallet, the watch-only wallet can instantly get your store connected to a wallet. In contrast, this option does not store the private keys on the server. As a result, the wallet becomes "watch-only" for any received funds.')]),e._v(" "),t("p",[e._v("There are several routes you can take to spend funds with this type of wallet including importing the seed words into a hardware wallet to sign your transactions using the "),t("RouterLink",{attrs:{to:"/Vault/"}},[e._v("BTCPay Server Vault application")]),e._v(", "),t("RouterLink",{attrs:{to:"/Wallet/#psbt"}},[e._v("PSBT")]),e._v(", or the least recommended manually providing your seed words every time.")],1),e._v(" "),t("figure",[t("img",{attrs:{src:a(319),alt:"BTCPay Server Transaction Signing Options",title:"BTCPay Server Transaction Signing Options"}})]),e._v(" "),t("p",[e._v("Alternatively, you can spend funds in another external wallet where you have imported your BTCPay Server-produced seed words. If you import your seed words into an external wallet, you can also use a PSBT to spend the funds, assuming the wallet supports it. This option will be available on the wallet's send page. Be sure to consider the "),t("RouterLink",{attrs:{to:"/FAQ/Wallet/#missing-payments-in-my-software-or-hardware-wallet"}},[e._v("gap limit issue")]),e._v(" if you're using an external wallet with your watch-only wallet.")],1)])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[21],{240:function(e,t,a){e.exports=a.p+"assets/img/BroadcastConfirm.fde15efd.png"},321:function(e,t,a){e.exports=a.p+"assets/img/MainMenu.c6ee0a71.png"},322:function(e,t,a){e.exports=a.p+"assets/img/CreateNewWallet.b9662283.png"},323:function(e,t,a){e.exports=a.p+"assets/img/HotWallet.3334a95d.png"},324:function(e,t,a){e.exports=a.p+"assets/img/WalletSettings.20aa817c.png"},325:function(e,t,a){e.exports=a.p+"assets/img/AdvancedSettings.46859536.png"},326:function(e,t,a){e.exports=a.p+"assets/img/ServerSettings.6a6d7e35.png"},327:function(e,t,a){e.exports=a.p+"assets/img/WalletSend.b3bed5a9.png"},328:function(e,t,a){e.exports=a.p+"assets/img/SignTransaction.ddb5258c.png"},695:function(e,t,a){"use strict";a.r(t);var r=a(9),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"create-a-new-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-a-new-wallet"}},[e._v("#")]),e._v(" Create a new wallet")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"#hot-wallet"}},[e._v("Hot Wallet")])]),e._v(" "),t("li",[t("a",{attrs:{href:"#watch-only-wallet"}},[e._v("Watch-only wallet")])])]),e._v(" "),t("h3",{attrs:{id:"hot-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#hot-wallet"}},[e._v("#")]),e._v(" Hot Wallet")]),e._v(" "),t("p",[e._v("If you do not have an existing wallet, you can generate a new one within your BTCPay Server. Whether you have an existing wallet or not, the quickest way to get a wallet connected to your store is to create a new wallet. You can always replace it with an alternative wallet after receiving a few small payments to your server, if you just want to get your store ready quickly.")]),e._v(" "),t("p",[e._v("This type of wallet is also necessary to use features such as "),t("RouterLink",{attrs:{to:"/Payjoin/"}},[e._v("Payjoin")]),e._v(" and "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues/1282",target:"_blank",rel:"noopener noreferrer"}},[e._v("Liquid"),t("OutboundLink")],1),e._v(".")],1),e._v(" "),t("p",[e._v("After creating a store, you'll be able to attach a wallet by first navigating to the sidebar or slide-out menu and clicking/tapping the "),t("strong",[e._v("Bitcoin")]),e._v(" button under the "),t("strong",[e._v("Wallets")]),e._v(" header. Alternatively, you can find the option to "),t("strong",[e._v("Set up a wallet")]),e._v(" on the Dashboard.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(321),alt:"Main Menu",title:"Main Menu"}})]),e._v(" "),t("p",[e._v("You'll focus on the "),t("strong",[e._v("I don't have a wallet")]),e._v(" section for a hot wallet and click the "),t("strong",[e._v("Create a new wallet")]),e._v(" button.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(322),alt:"New Wallet",title:"New Wallet"}})]),e._v(" "),t("p",[e._v("There will be two options on the proceeding page, and in this case, we'll select the "),t("strong",[e._v("Hot wallet")]),e._v(" button.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(323),alt:"Create Wallet",title:"Create Wallet"}})]),e._v(" "),t("p",[e._v("For most people, the default options, including "),t("strong",[e._v("Address Type")]),e._v(" (Segwit), should work well for most applications, and it's recommended not to change it unless you're sure of what you're doing. The "),t("strong",[e._v("Payjoin")]),e._v(" feature is optional, and you can learn more about it at the link "),t("a",{attrs:{href:"#hot-wallet"}},[e._v("above")]),e._v(".")]),e._v(" "),t("p",[e._v("Find out more about advanced settings "),t("a",{attrs:{href:"#advanced-settings"}},[e._v("here")]),e._v(".")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(324),alt:"Wallet Settings",title:"Wallet Settings"}})]),e._v(" "),t("h4",{attrs:{id:"recovery-seed"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#recovery-seed"}},[e._v("#")]),e._v(" Recovery Seed")]),e._v(" "),t("p",[e._v("The last step to creating a hot wallet is making sure you document your recovery seed. After you've done so, tick the checkbox that says "),t("em",[e._v("I have written down my recovery phrase and stored it in a secure location")]),e._v(" and click the "),t("strong",[e._v("Done")]),e._v(" button.")]),e._v(" "),t("h4",{attrs:{id:"advanced-settings"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#advanced-settings"}},[e._v("#")]),e._v(" Advanced Settings")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("Optional "),t("a",{attrs:{href:"https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#from-mnemonic-to-seed",target:"_blank",rel:"noopener noreferrer"}},[e._v("BIP39"),t("OutboundLink")],1),e._v(" passphrase")]),e._v(" "),t("ul",[t("li",[e._v("You can add a passphrase for your hot wallet's mnemonic for an additional layer of security.")])])]),e._v(" "),t("li",[t("p",[e._v("Import keys to RPC")]),e._v(" "),t("ul",[t("li",[e._v("This is for more advanced applications of BTCPay Server. Importing your keys to RPC will allow users to leverage "),t("a",{attrs:{href:"https://developer.bitcoin.org/reference/rpc/index.html#wallet-rpcs",target:"_blank",rel:"noopener noreferrer"}},[e._v("bitcoind Wallet RPCs"),t("OutboundLink")],1),e._v(" on the imported wallet.")])])])]),e._v(" "),t("figure",[t("img",{attrs:{src:a(325),alt:"Advanced Settings",title:"Advanced Settings"}})]),e._v(" "),t("h4",{attrs:{id:"requirements-to-create-wallets"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#requirements-to-create-wallets"}},[e._v("#")]),e._v(" Requirements to create wallets")]),e._v(" "),t("p",[e._v("If are using a "),t("RouterLink",{attrs:{to:"/Deployment/ThirdPartyHosting/"}},[e._v("third-party host")]),e._v(", this option needs to be explicitly enabled by the server admin. Generating a new wallet in an environment you are not sure is trustworthy, is discouraged.")],1),e._v(" "),t("p",[e._v('By default, you need to be a server admin to use the create wallet feature. This is because server admins are able to extract the private key easily. If for some reason (such as allowing individuals that trust you enough with their store), you can enable the hot wallet for non-admins from Server Settings > Policies > "Allow non-admins to create hot wallets for their stores".')]),e._v(" "),t("p",[e._v("Understand that anyone with access to your recovery seed can also access and steal all your funds (current AND future funds!), since a private key is derived from a recovery seed. Securely back up your seed by writing it down and keep it in a safe place. Do not photograph it or store it in a digital format. Do not rely solely on your server for storing your recovery seed, always keep a backup copy.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(326),alt:"BTCPay Server settings",title:"BTCPay Server settings"}})]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("When a new wallet is generated, BTCPay Server will show you a twelve word recovery seed. After the initial display, the recovery seed is wiped from the server, unless a the hot wallet option is enabled.")])]),e._v(" "),t("h4",{attrs:{id:"spending-funds-with-btcpay-hot-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#spending-funds-with-btcpay-hot-wallet"}},[e._v("#")]),e._v(" Spending funds with BTCPay Hot Wallet")]),e._v(" "),t("p",[e._v("Once you've received funds to your wallet and decide to spend them, you can automatically sign the transaction inside BTCPay Server.")]),e._v(" "),t("ol",[t("li",[e._v("In BTCPay Server, go to > Wallets > Bitcoin > Send")]),e._v(" "),t("li",[e._v("Fill in the Destination address and the Amount")]),e._v(" "),t("li",[e._v("Adjust the transaction settings, including fee rate, confirmation time preference, and if you'd like transaction fees to be subtracted from the amount you're sending")]),e._v(" "),t("li",[e._v("Sign the transaction")]),e._v(" "),t("li",[e._v("Review the transaction")]),e._v(" "),t("li",[e._v("Broadcast the transaction")])]),e._v(" "),t("p",[t("img",{attrs:{src:a(327),alt:"BTCPay Server Send page",title:"BTCPay Server Send page"}}),e._v(" "),t("img",{attrs:{src:a(240),alt:"BTCPay Server Transaction Review and Broadcast page",title:"BTCPay Server Transaction Review and Broadcast page"}})]),e._v(" "),t("h4",{attrs:{id:"security-implications"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#security-implications"}},[e._v("#")]),e._v(" Security Implications")]),e._v(" "),t("p",[e._v("Storing private keys on a public server comes with risks. This is similar to the risks of running and using the "),t("RouterLink",{attrs:{to:"/LightningNetwork/"}},[e._v("Lightning Network")]),e._v(" (except that you can recover funds with a backup).\n"),t("strong",[e._v("Please, ALWAYS be sure to back up any seed that is generated by this feature and to never leave money you cannot afford to lose spendable by those private keys")]),e._v(".")],1),e._v(" "),t("h4",{attrs:{id:"reducing-risk"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#reducing-risk"}},[e._v("#")]),e._v(" Reducing risk")]),e._v(" "),t("p",[e._v("As mentioned above, the create wallet functionality includes the risk of funds being stolen if the server or account is compromised. To mitigate this risk, we advise you to:")]),e._v(" "),t("ul",[t("li",[e._v("Enable two factor or U2F authentication")]),e._v(" "),t("li",[e._v("Occasionally move funds to your cold storage either manually or by configuring "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcTransmuter/blob/master/README.md",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTC Transmuter"),t("OutboundLink")],1),e._v(" with automatic payment forwarding.")])]),e._v(" "),t("div",{staticClass:"custom-block danger"},[t("p",{staticClass:"custom-block-title"},[e._v("DANGER")]),e._v(" "),t("p",[e._v("Do not give anyone else access to your server's SSH keys or server account credentials when using a hot wallet. Anyone with access to your account can spend the funds from your hot wallet. If you need to allow account access to employees, developers, etc. use an "),t("RouterLink",{attrs:{to:"/ConnectWallet/#connect-an-existing-wallet"}},[e._v("existing wallet")]),e._v(" instead.")],1)]),e._v(" "),t("h3",{attrs:{id:"watch-only-wallet"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#watch-only-wallet"}},[e._v("#")]),e._v(" Watch-only wallet")]),e._v(" "),t("p",[e._v('Like the hot wallet, the watch-only wallet can instantly get your store connected to a wallet. In contrast, this option does not store the private keys on the server. As a result, the wallet becomes "watch-only" for any received funds.')]),e._v(" "),t("p",[e._v("There are several routes you can take to spend funds with this type of wallet including importing the seed words into a hardware wallet to sign your transactions using the "),t("RouterLink",{attrs:{to:"/Vault/"}},[e._v("BTCPay Server Vault application")]),e._v(", "),t("RouterLink",{attrs:{to:"/Wallet/#psbt"}},[e._v("PSBT")]),e._v(", or the least recommended manually providing your seed words every time.")],1),e._v(" "),t("figure",[t("img",{attrs:{src:a(328),alt:"BTCPay Server Transaction Signing Options",title:"BTCPay Server Transaction Signing Options"}})]),e._v(" "),t("p",[e._v("Alternatively, you can spend funds in another external wallet where you have imported your BTCPay Server-produced seed words. If you import your seed words into an external wallet, you can also use a PSBT to spend the funds, assuming the wallet supports it. This option will be available on the wallet's send page. Be sure to consider the "),t("RouterLink",{attrs:{to:"/FAQ/Wallet/#missing-payments-in-my-software-or-hardware-wallet"}},[e._v("gap limit issue")]),e._v(" if you're using an external wallet with your watch-only wallet.")],1)])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/25.3e0686cc.js b/assets/js/25.2396ab27.js similarity index 90% rename from assets/js/25.3e0686cc.js rename to assets/js/25.2396ab27.js index 2a103f2235..388b62aa29 100644 --- a/assets/js/25.3e0686cc.js +++ b/assets/js/25.2396ab27.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{648:function(e,t,a){e.exports=a.p+"assets/img/1.61c3b232.jpg"},649:function(e,t,a){e.exports=a.p+"assets/img/2.4ec63b47.jpg"},650:function(e,t,a){e.exports=a.p+"assets/img/3.0a39c840.jpg"},651:function(e,t,a){e.exports=a.p+"assets/img/4.e37e0402.png"},652:function(e,t,a){e.exports=a.p+"assets/img/5.29be95a6.png"},653:function(e,t,a){e.exports=a.p+"assets/img/6.861ee564.jpg"},654:function(e,t,a){e.exports=a.p+"assets/img/7.56e93cc1.jpg"},655:function(e,t,a){e.exports=a.p+"assets/img/8.e6a2f12e.jpg"},805:function(e,t,a){"use strict";a.r(t);var r=a(9),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"pull-payments"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pull-payments"}},[e._v("#")]),e._v(" Pull payments")]),e._v(" "),t("h2",{attrs:{id:"introduction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),t("p",[e._v("Traditionally, to make a Bitcoin payment, a receiver shares their bitcoin address and the sender later sends money to this address.\nSuch system is called "),t("code",[e._v("Push payment")]),e._v(" as the sender initiates the payment while the receiver may be unavailable, in effect "),t("code",[e._v("pushing")]),e._v(" the payment to the receiver.")]),e._v(" "),t("p",[e._v("However, what about reversing the role?")]),e._v(" "),t("p",[e._v("What if, instead of a sender "),t("code",[e._v("pushing")]),e._v(" the payment, the sender allows the receiver to "),t("code",[e._v("pull")]),e._v(" the payment at a time the receiver seems fit?\nThis is the concept of "),t("code",[e._v("Pull payment")]),e._v(". This allows several new applications such as:")]),e._v(" "),t("ul",[t("li",[e._v("A subscription service (where the subscriber allows the service to pull money every x amount of time)")]),e._v(" "),t("li",[e._v("Refunds (where the merchant allows the customer to pull the refund money to his wallet when it seems fit)")]),e._v(" "),t("li",[e._v("Time-based billing for freelancers (where the person hiring allows the freelancer to pull money to his wallet as time gets reported)")]),e._v(" "),t("li",[e._v("Patronage (where the patron allows the recipient to pull money every month to continue supporting their work)")]),e._v(" "),t("li",[e._v("Automatic selling (where a customer of an exchange would allow an exchange to pull money from their wallet to automatically sell every month)")]),e._v(" "),t("li",[e._v("Balance withdraw system (where a high-volume service allows users to request withdrawals from their balance, the service can then easily batch all the payouts to many users, at fixed intervals)")])]),e._v(" "),t("p",[e._v("You can also follow this video:")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/-e8lPd9NtPs/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=-e8lPd9NtPs",title:"What is a pull payment","data-id":"-e8lPd9NtPs"}},[t("iframe",{attrs:{title:"What is a pull payment","data-src":"https://www.youtube-nocookie.com/embed/-e8lPd9NtPs?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("h2",{attrs:{id:"concept"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#concept"}},[e._v("#")]),e._v(" Concept")]),e._v(" "),t("p",[e._v("When a sender configures a "),t("code",[e._v("Pull payment")]),e._v(", they can configure a number of properties:")]),e._v(" "),t("ul",[t("li",[e._v("Start date")]),e._v(" "),t("li",[e._v("End date (optional)")]),e._v(" "),t("li",[e._v("A period (optional)")]),e._v(" "),t("li",[e._v("A limit amount")]),e._v(" "),t("li",[e._v("A unit (such as USD, BTC, Hours)")]),e._v(" "),t("li",[e._v("Available payment methods")])]),e._v(" "),t("p",[e._v("After this, the sender can "),t("strong",[e._v("share the pull payment")]),e._v(" using a link with the receiver, allowing the receiver to "),t("code",[e._v("create a payout")]),e._v(".\nThe receiver will choose for their payout:")]),e._v(" "),t("ul",[t("li",[e._v("Which payment method to use")]),e._v(" "),t("li",[e._v("Where to send the money")])]),e._v(" "),t("p",[e._v("Once a payout is created, it will count toward the "),t("code",[e._v("pull payment's limit")]),e._v(" for the current "),t("code",[e._v("period")]),e._v(".\nThe sender will then approve the payout by setting the "),t("code",[e._v("rate")]),e._v(" in which the payout will be sent, and proceed with payment.")]),e._v(" "),t("p",[e._v("For the sender, we provide an easy to use way to batch the payment of several payouts from the "),t("RouterLink",{attrs:{to:"/Wallet/"}},[e._v("BTCPay Internal Wallet")]),e._v(".")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n +----------+ +-------------------+ +------------+\n | | | | | |\n | Sender | | BTCPay Server | | Receiver |\n | | | | | |\n +----------+ +-------------------+ +------------+\n | | |\n | | |\n | Create | |\n +---------------------------\x3e+ |\n | Pull payment | |\n | | |\n | | |\n | Share | |\n +--------------------------------------------------------\x3e+\n | Pull payment | |\n | | |\n | | Create |\n | +<---------------------------+\n | | Payout |\n | | |\n | Approve | |\n +---------------------------\x3e+ v\n | Payout |\n | |\n | Pay |\n +---------------------------\x3e+\n | Payout |\n | |\n | |\n v v\n")])])]),t("p",[e._v("Note that BTCPay Server does not approve and pay a payout automatically. In future releases, we will look into payouts which are approved to be paid out automatically under the correct conditions.\nInstead, a notification will appear for the sender, giving the sender the choice to approve and pay the payouts.")]),e._v(" "),t("h2",{attrs:{id:"greenfield-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#greenfield-api"}},[e._v("#")]),e._v(" Greenfield API")]),e._v(" "),t("p",[e._v("We provide a full API to both the sender and receiver that is documented in the "),t("code",[e._v("/docs")]),e._v(" page of your instance. (or on our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("public link"),t("OutboundLink")],1),e._v(" page)")]),e._v(" "),t("p",[e._v("Since our API exposes the full capability of pull payments, a sender can automate payments for his own need.")]),e._v(" "),t("h2",{attrs:{id:"user-interface"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#user-interface"}},[e._v("#")]),e._v(" User interface")]),e._v(" "),t("p",[e._v("The user interface only allows a subset of what is possible.")]),e._v(" "),t("h3",{attrs:{id:"create-a-pull-payment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-a-pull-payment"}},[e._v("#")]),e._v(" Create a pull payment")]),e._v(" "),t("ol",[t("li",[e._v("Go to your wallet page / pull payments\n"),t("img",{attrs:{src:a(648),alt:"BTCPay Server Pull Payment",title:"BTCPay Server Pull Payment"}})]),e._v(" "),t("li",[e._v("Click on "),t("code",[e._v("Create a new pull payment")]),e._v(" "),t("img",{attrs:{src:a(649),alt:"BTCPay Server Pull Payment",title:"BTCPay Server Pull Payment"}})]),e._v(" "),t("li",[e._v("Fill out the pull payment information, click "),t("code",[e._v("Create")]),e._v(" "),t("img",{attrs:{src:a(650),alt:"BTCPay Server Pull Payment",title:"BTCPay Server Pull Payment"}})]),e._v(" "),t("li",[e._v("Go to the pull payment page by clicking on "),t("code",[e._v("View")])]),e._v(" "),t("li",[e._v("Share this page with the payment receiver\n"),t("img",{attrs:{src:a(651),alt:"BTCPay Server Pull Payment",title:"BTCPay Server Pull Payment"}})]),e._v(" "),t("li",[e._v("As the receiver, fill out how much "),t("code",[e._v("USD")]),e._v(" you claim, and to which address the money should be sent.\n"),t("img",{attrs:{src:a(652),alt:"BTCPay Server Pull Payment",title:"BTCPay Server Pull Payment"}})])]),e._v(" "),t("h3",{attrs:{id:"approve-and-pay-a-payout"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#approve-and-pay-a-payout"}},[e._v("#")]),e._v(" Approve and pay a payout")]),e._v(" "),t("ol",[t("li",[e._v("The sender gets notified when the receiver is pulling money\n"),t("img",{attrs:{src:a(653),alt:"6",title:"6"}})]),e._v(" "),t("li",[e._v("Clicking on the notification brings the sender to a page listing all outstanding payouts\n"),t("img",{attrs:{src:a(654),alt:"7",title:"7"}})]),e._v(" "),t("li",[e._v("Check the payout to approve, pay and confirm\n"),t("img",{attrs:{src:a(655),alt:"8",title:"8"}})]),e._v(" "),t("li",[e._v("You are then brought to the normal wallet user interface of BTCPay Server")])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Clicking on Confirm selected payouts will use the current exchange rate of your wallet's store settings. The rate is then fixed, even if you don't complete the payment. Payments made at a later time will use this previously confirmed rate.")])]),e._v(" "),t("h2",{attrs:{id:"additional-use-cases-for-the-pull-payments-feature"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#additional-use-cases-for-the-pull-payments-feature"}},[e._v("#")]),e._v(" Additional use cases for the Pull Payments feature")]),e._v(" "),t("p",[e._v("The "),t("strong",[e._v("Pull Payment feature")]),e._v(" can be used in multiple applications, the first one being "),t("RouterLink",{attrs:{to:"/Refund/"}},[e._v("Refunds")]),e._v(".")],1)])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[25],{639:function(e,t,a){e.exports=a.p+"assets/img/1.61c3b232.jpg"},640:function(e,t,a){e.exports=a.p+"assets/img/2.4ec63b47.jpg"},641:function(e,t,a){e.exports=a.p+"assets/img/3.0a39c840.jpg"},642:function(e,t,a){e.exports=a.p+"assets/img/4.e37e0402.png"},643:function(e,t,a){e.exports=a.p+"assets/img/5.29be95a6.png"},644:function(e,t,a){e.exports=a.p+"assets/img/6.861ee564.jpg"},645:function(e,t,a){e.exports=a.p+"assets/img/7.56e93cc1.jpg"},646:function(e,t,a){e.exports=a.p+"assets/img/8.e6a2f12e.jpg"},803:function(e,t,a){"use strict";a.r(t);var r=a(9),n=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"pull-payments"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#pull-payments"}},[e._v("#")]),e._v(" Pull payments")]),e._v(" "),t("h2",{attrs:{id:"introduction"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#introduction"}},[e._v("#")]),e._v(" Introduction")]),e._v(" "),t("p",[e._v("Traditionally, to make a Bitcoin payment, a receiver shares their bitcoin address and the sender later sends money to this address.\nSuch system is called "),t("code",[e._v("Push payment")]),e._v(" as the sender initiates the payment while the receiver may be unavailable, in effect "),t("code",[e._v("pushing")]),e._v(" the payment to the receiver.")]),e._v(" "),t("p",[e._v("However, what about reversing the role?")]),e._v(" "),t("p",[e._v("What if, instead of a sender "),t("code",[e._v("pushing")]),e._v(" the payment, the sender allows the receiver to "),t("code",[e._v("pull")]),e._v(" the payment at a time the receiver seems fit?\nThis is the concept of "),t("code",[e._v("Pull payment")]),e._v(". This allows several new applications such as:")]),e._v(" "),t("ul",[t("li",[e._v("A subscription service (where the subscriber allows the service to pull money every x amount of time)")]),e._v(" "),t("li",[e._v("Refunds (where the merchant allows the customer to pull the refund money to his wallet when it seems fit)")]),e._v(" "),t("li",[e._v("Time-based billing for freelancers (where the person hiring allows the freelancer to pull money to his wallet as time gets reported)")]),e._v(" "),t("li",[e._v("Patronage (where the patron allows the recipient to pull money every month to continue supporting their work)")]),e._v(" "),t("li",[e._v("Automatic selling (where a customer of an exchange would allow an exchange to pull money from their wallet to automatically sell every month)")]),e._v(" "),t("li",[e._v("Balance withdraw system (where a high-volume service allows users to request withdrawals from their balance, the service can then easily batch all the payouts to many users, at fixed intervals)")])]),e._v(" "),t("p",[e._v("You can also follow this video:")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/-e8lPd9NtPs/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=-e8lPd9NtPs",title:"What is a pull payment","data-id":"-e8lPd9NtPs"}},[t("iframe",{attrs:{title:"What is a pull payment","data-src":"https://www.youtube-nocookie.com/embed/-e8lPd9NtPs?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("h2",{attrs:{id:"concept"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#concept"}},[e._v("#")]),e._v(" Concept")]),e._v(" "),t("p",[e._v("When a sender configures a "),t("code",[e._v("Pull payment")]),e._v(", they can configure a number of properties:")]),e._v(" "),t("ul",[t("li",[e._v("Start date")]),e._v(" "),t("li",[e._v("End date (optional)")]),e._v(" "),t("li",[e._v("A period (optional)")]),e._v(" "),t("li",[e._v("A limit amount")]),e._v(" "),t("li",[e._v("A unit (such as USD, BTC, Hours)")]),e._v(" "),t("li",[e._v("Available payment methods")])]),e._v(" "),t("p",[e._v("After this, the sender can "),t("strong",[e._v("share the pull payment")]),e._v(" using a link with the receiver, allowing the receiver to "),t("code",[e._v("create a payout")]),e._v(".\nThe receiver will choose for their payout:")]),e._v(" "),t("ul",[t("li",[e._v("Which payment method to use")]),e._v(" "),t("li",[e._v("Where to send the money")])]),e._v(" "),t("p",[e._v("Once a payout is created, it will count toward the "),t("code",[e._v("pull payment's limit")]),e._v(" for the current "),t("code",[e._v("period")]),e._v(".\nThe sender will then approve the payout by setting the "),t("code",[e._v("rate")]),e._v(" in which the payout will be sent, and proceed with payment.")]),e._v(" "),t("p",[e._v("For the sender, we provide an easy to use way to batch the payment of several payouts from the "),t("RouterLink",{attrs:{to:"/Wallet/"}},[e._v("BTCPay Internal Wallet")]),e._v(".")],1),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("\n +----------+ +-------------------+ +------------+\n | | | | | |\n | Sender | | BTCPay Server | | Receiver |\n | | | | | |\n +----------+ +-------------------+ +------------+\n | | |\n | | |\n | Create | |\n +---------------------------\x3e+ |\n | Pull payment | |\n | | |\n | | |\n | Share | |\n +--------------------------------------------------------\x3e+\n | Pull payment | |\n | | |\n | | Create |\n | +<---------------------------+\n | | Payout |\n | | |\n | Approve | |\n +---------------------------\x3e+ v\n | Payout |\n | |\n | Pay |\n +---------------------------\x3e+\n | Payout |\n | |\n | |\n v v\n")])])]),t("p",[e._v("Note that BTCPay Server does not approve and pay a payout automatically. In future releases, we will look into payouts which are approved to be paid out automatically under the correct conditions.\nInstead, a notification will appear for the sender, giving the sender the choice to approve and pay the payouts.")]),e._v(" "),t("h2",{attrs:{id:"greenfield-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#greenfield-api"}},[e._v("#")]),e._v(" Greenfield API")]),e._v(" "),t("p",[e._v("We provide a full API to both the sender and receiver that is documented in the "),t("code",[e._v("/docs")]),e._v(" page of your instance. (or on our "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("public link"),t("OutboundLink")],1),e._v(" page)")]),e._v(" "),t("p",[e._v("Since our API exposes the full capability of pull payments, a sender can automate payments for his own need.")]),e._v(" "),t("h2",{attrs:{id:"user-interface"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#user-interface"}},[e._v("#")]),e._v(" User interface")]),e._v(" "),t("p",[e._v("The user interface only allows a subset of what is possible.")]),e._v(" "),t("h3",{attrs:{id:"create-a-pull-payment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#create-a-pull-payment"}},[e._v("#")]),e._v(" Create a pull payment")]),e._v(" "),t("ol",[t("li",[e._v("Go to your wallet page / pull payments\n"),t("img",{attrs:{src:a(639),alt:"BTCPay Server Pull Payment",title:"BTCPay Server Pull Payment"}})]),e._v(" "),t("li",[e._v("Click on "),t("code",[e._v("Create a new pull payment")]),e._v(" "),t("img",{attrs:{src:a(640),alt:"BTCPay Server Pull Payment",title:"BTCPay Server Pull Payment"}})]),e._v(" "),t("li",[e._v("Fill out the pull payment information, click "),t("code",[e._v("Create")]),e._v(" "),t("img",{attrs:{src:a(641),alt:"BTCPay Server Pull Payment",title:"BTCPay Server Pull Payment"}})]),e._v(" "),t("li",[e._v("Go to the pull payment page by clicking on "),t("code",[e._v("View")])]),e._v(" "),t("li",[e._v("Share this page with the payment receiver\n"),t("img",{attrs:{src:a(642),alt:"BTCPay Server Pull Payment",title:"BTCPay Server Pull Payment"}})]),e._v(" "),t("li",[e._v("As the receiver, fill out how much "),t("code",[e._v("USD")]),e._v(" you claim, and to which address the money should be sent.\n"),t("img",{attrs:{src:a(643),alt:"BTCPay Server Pull Payment",title:"BTCPay Server Pull Payment"}})])]),e._v(" "),t("h3",{attrs:{id:"approve-and-pay-a-payout"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#approve-and-pay-a-payout"}},[e._v("#")]),e._v(" Approve and pay a payout")]),e._v(" "),t("ol",[t("li",[e._v("The sender gets notified when the receiver is pulling money\n"),t("img",{attrs:{src:a(644),alt:"6",title:"6"}})]),e._v(" "),t("li",[e._v("Clicking on the notification brings the sender to a page listing all outstanding payouts\n"),t("img",{attrs:{src:a(645),alt:"7",title:"7"}})]),e._v(" "),t("li",[e._v("Check the payout to approve, pay and confirm\n"),t("img",{attrs:{src:a(646),alt:"8",title:"8"}})]),e._v(" "),t("li",[e._v("You are then brought to the normal wallet user interface of BTCPay Server")])]),e._v(" "),t("div",{staticClass:"custom-block warning"},[t("p",{staticClass:"custom-block-title"},[e._v("WARNING")]),e._v(" "),t("p",[e._v("Clicking on Confirm selected payouts will use the current exchange rate of your wallet's store settings. The rate is then fixed, even if you don't complete the payment. Payments made at a later time will use this previously confirmed rate.")])]),e._v(" "),t("h2",{attrs:{id:"additional-use-cases-for-the-pull-payments-feature"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#additional-use-cases-for-the-pull-payments-feature"}},[e._v("#")]),e._v(" Additional use cases for the Pull Payments feature")]),e._v(" "),t("p",[e._v("The "),t("strong",[e._v("Pull Payment feature")]),e._v(" can be used in multiple applications, the first one being "),t("RouterLink",{attrs:{to:"/Refund/"}},[e._v("Refunds")]),e._v(".")],1)])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/44.612d82fd.js b/assets/js/44.612d82fd.js deleted file mode 100644 index 0931163112..0000000000 --- a/assets/js/44.612d82fd.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{425:function(e,t,a){e.exports=a.p+"assets/img/btcpayWebhookFAQ1.2e4720f3.jpg"},426:function(e,t,a){e.exports=a.p+"assets/img/btcpayWebhookFAQ2.3b3a0f4e.jpg"},427:function(e,t,a){e.exports=a.p+"assets/img/NBXplorer-stuck.715f322b.png"},747:function(e,t,a){"use strict";a.r(t);var r=a(9),o=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"general-faq"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#general-faq"}},[e._v("#")]),e._v(" General FAQ")]),e._v(" "),t("p",[e._v("This page contains general questions and answers about BTCPay Server. What it is, how it works, how to install it.")]),e._v(" "),t("p"),t("div",{staticClass:"table-of-contents"},[t("ul",[t("li",[t("a",{attrs:{href:"#what-is-btcpay-server"}},[e._v("What is BTCPay Server?")])]),t("li",[t("a",{attrs:{href:"#why-should-i-choose-btcpay-over-other-processors"}},[e._v("Why should I choose BTCPay over other processors?")])]),t("li",[t("a",{attrs:{href:"#why-is-everyone-so-excited-about-btcpay"}},[e._v("Why is everyone so excited about BTCPay?")])]),t("li",[t("a",{attrs:{href:"#who-can-use-btcpay"}},[e._v("Who can use BTCPay?")])]),t("li",[t("a",{attrs:{href:"#how-to-install-btcpay-server"}},[e._v("How to install BTCPay Server?")])]),t("li",[t("a",{attrs:{href:"#where-to-find-btcpay-video-tutorials"}},[e._v("Where to find BTCPay video tutorials?")])]),t("li",[t("a",{attrs:{href:"#do-i-need-to-have-an-online-store-to-use-btcpay-server"}},[e._v("Do I need to have an online store to use BTCPay Server?")])]),t("li",[t("a",{attrs:{href:"#why-cant-i-just-give-my-bitcoin-address-to-a-buyer"}},[e._v("Why can't I just give my Bitcoin address to a buyer?")])]),t("li",[t("a",{attrs:{href:"#how-does-btcpay-create-a-new-address-for-each-invoice"}},[e._v("How does BTCPay create a new address for each invoice?")])]),t("li",[t("a",{attrs:{href:"#does-btcpay-need-my-private-key"}},[e._v("Does BTCPay need my private key?")])]),t("li",[t("a",{attrs:{href:"#does-btcpay-server-support-crypto-to-fiat-conversion"}},[e._v("Does BTCPay Server support crypto to fiat conversion?")])]),t("li",[t("a",{attrs:{href:"#what-if-i-have-a-problem-paying-an-invoice"}},[e._v("What if I have a problem paying an invoice?")])]),t("li",[t("a",{attrs:{href:"#what-if-i-have-a-problem-with-a-paid-invoice"}},[e._v("What if I have a problem with a paid invoice?")])]),t("li",[t("a",{attrs:{href:"#where-can-i-get-help-and-support"}},[e._v("Where can I get help and support?")])]),t("li",[t("a",{attrs:{href:"#how-can-i-contribute-to-btcpay"}},[e._v("How can I contribute to BTCPay?")])]),t("li",[t("a",{attrs:{href:"#how-can-i-use-the-btcpay-server-api"}},[e._v("How can I use the BTCPay Server API?")])]),t("li",[t("a",{attrs:{href:"#how-to-create-a-webhook-"}},[e._v("How to create a webhook ?")])]),t("li",[t("a",{attrs:{href:"#webhook-format-is-not-bitpay-compatible"}},[e._v("Webhook format is not bitpay compatible?")])]),t("li",[t("a",{attrs:{href:"#how-can-i-backup-my-btcpay-server"}},[e._v("How can I backup my BTCPay Server?")])]),t("li",[t("a",{attrs:{href:"#how-can-i-charge-for-using-my-btcpay-server-instance"}},[e._v("How can I charge for using my BTCPay Server instance?")])]),t("li",[t("a",{attrs:{href:"#stuck-synching-nbxplorer-is-synchronizing-"}},[e._v('Stuck synching: "NBXplorer is synchronizing"')])])])]),t("p"),e._v(" "),t("h2",{attrs:{id:"what-is-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-btcpay-server"}},[e._v("#")]),e._v(" What is BTCPay Server?")]),e._v(" "),t("p",[e._v("BTCPay Server is a free and open-source cryptocurrency payment processor which allows you to receive payments in Bitcoin (on-chain and via the Lightning Network) and altcoins directly, with no fees, transaction cost or a middleman.")]),e._v(" "),t("p",[e._v("BTCPay is a non-custodial invoicing system which eliminates the involvement of a third-party. Payments with BTCPay go directly to your wallet, which increases the privacy and security. Your private keys are never required to receive payments to your BTCPay Server. There is "),t("a",{attrs:{href:"#how-does-btcpay-create-a-new-address-for-each-invoice"}},[e._v("no address re-use")]),e._v(" since each invoice uses a new address for receiving payments to your wallet.")]),e._v(" "),t("h2",{attrs:{id:"why-should-i-choose-btcpay-over-other-processors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-should-i-choose-btcpay-over-other-processors"}},[e._v("#")]),e._v(" Why should I choose BTCPay over other processors?")]),e._v(" "),t("p",[e._v("The most significant advantage of BTCPay over other processors is that it is entirely free and open-source, non-custodial software, created by the community. While most of the other processors hold your Bitcoins, BTCPay allows you to receive payments P2P, directly to your software or hardware wallet.")]),e._v(" "),t("p",[e._v("BTCPay is a self-hosted software. This means that you are your own payment processor. There are no subscriptions, no transaction fees. There's no third-party involvement which significantly increases the censorship-resistance, privacy, and security for you and your customers. Furthermore, BTCPay enables you to become a processor yourself, so that you can offer different packages and help spread the adoption locally or globally.")]),e._v(" "),t("p",[e._v("With BTCPay, you are your own bank.")]),e._v(" "),t("h2",{attrs:{id:"why-is-everyone-so-excited-about-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-is-everyone-so-excited-about-btcpay"}},[e._v("#")]),e._v(" Why is everyone so excited about BTCPay?")]),e._v(" "),t("p",[e._v("The community is excited about BTCPay and often recommends it to merchants or content creators because it offers a direct way for store-owners and charities to receive Bitcoin payments, which significantly improves the privacy of the customers/donors.")]),e._v(" "),t("p",[e._v("BTCPay doesn't compromise on censorship-resistance, which is one of the main features of Bitcoin. Besides that, being free and open-source it gives an excellent opportunity for developers to build things and integrations on top of BTCPay.")]),e._v(" "),t("h2",{attrs:{id:"who-can-use-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#who-can-use-btcpay"}},[e._v("#")]),e._v(" Who can use BTCPay?")]),e._v(" "),t("p",[e._v("BTCPay server is a feature-rich software with plenty of use-cases that can solve problems for different types of users. Merchants, content creators, lightning network users, exchanges, hosting providers and many others can find it useful. See the "),t("RouterLink",{attrs:{to:"/UseCase/"}},[e._v("Use Case page")]),e._v(" for detailed breakdown of BTCPay use-cases.")],1),e._v(" "),t("p",[e._v("BTCPay is licensed under the "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"}},[e._v("MIT License"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"how-to-install-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-to-install-btcpay-server"}},[e._v("#")]),e._v(" How to install BTCPay Server?")]),e._v(" "),t("p",[e._v("First take a look at the various deployment options and consider which one best suits your specific needs.")]),e._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/Deployment/"}},[e._v("See all deployments")])],1)]),e._v(" "),t("p",[e._v("If you still have questions, visit the "),t("RouterLink",{attrs:{to:"/FAQ/Deployment/"}},[e._v("Deployment FAQ")])],1),e._v(" "),t("h2",{attrs:{id:"where-to-find-btcpay-video-tutorials"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#where-to-find-btcpay-video-tutorials"}},[e._v("#")]),e._v(" Where to find BTCPay video tutorials?")]),e._v(" "),t("p",[e._v("BTCPay Server instructional video guides can be found on the official BTCPay Server YouTube channel:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://www.youtube.com/channel/UCpG9WL6TJuoNfFVkaDMp9ug/videos",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay YouTube channel"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.youtube.com/playlist?list=PL7b9Wt9shK2r-WXS6ysG4tafVQRu80biZ",target:"_blank",rel:"noopener noreferrer"}},[e._v("Assorted playlist of all BTCPay YouTube videos"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"do-i-need-to-have-an-online-store-to-use-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#do-i-need-to-have-an-online-store-to-use-btcpay-server"}},[e._v("#")]),e._v(" Do I need to have an online store to use BTCPay Server?")]),e._v(" "),t("p",[e._v("You can use BTCPay even if you don't have an e-commerce store. You can launch your BTCPay Server and be the payment processor for your friends or local market. Another use-case is to accept donations through the POS (Point of Sale) app or payment buttons which can be copy-pasted as HTML snippets into any website.")]),e._v(" "),t("p",[e._v("If you do not have a store, but want to create one, read "),t("a",{attrs:{href:"https://bitcoinshirt.co/how-to-create-store-accept-bitcoin/",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to Create an Online Store & Accept Bitcoin – Step By Step Guide"),t("OutboundLink")],1),e._v(" which teaches you how to build a store from scratch and install BTCPay.")]),e._v(" "),t("h2",{attrs:{id:"why-cant-i-just-give-my-bitcoin-address-to-a-buyer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-cant-i-just-give-my-bitcoin-address-to-a-buyer"}},[e._v("#")]),e._v(" Why can't I just give my Bitcoin address to a buyer?")]),e._v(" "),t("p",[e._v("Re-using an address for receiving payments is a privacy issue. Providing a different address manually to each customer is not an optimal solution. Imagine having to send a unique e-mail to everyone that wants to pay you with cryptocurrency.")]),e._v(" "),t("p",[e._v("BTCPay solves the address re-use issue. It automates the checkout process for the merchant by creating a new invoice with a unique address created from the merchant's wallet, each time a customer pays using BTCPay. If you are using an integration with an e-commerce store, BTCPay Server integrates into your checkout process, and customers can pay you in Bitcoin or altcoins in a few clicks, just like any other traditional payment option.")]),e._v(" "),t("p",[e._v("After a customer makes a payment, the BTCPay Server software notifies your store that the order has been paid/completed. Depending on the e-commerce software you're using, it can also change the order status. All you have to worry about is getting items shipped, leave the invoicing and payment processing to BTCPay.")]),e._v(" "),t("h2",{attrs:{id:"how-does-btcpay-create-a-new-address-for-each-invoice"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-does-btcpay-create-a-new-address-for-each-invoice"}},[e._v("#")]),e._v(" How does BTCPay create a new address for each invoice?")]),e._v(" "),t("p",[e._v("BTCPay Server includes an important feature which eliminates the known privacy issue of address re-use. It does this by providing a new address each time an invoice is requested for payment. This is all done automatically and the merchant does not need to keep track of which addresses belong to which wallet, store, etc. BTCPay Server organizes all the payment information in a detailed invoicing system for the merchant.")]),e._v(" "),t("p",[e._v("The way it works is fairly simple. Merchants connect a wallet to each of their stores that they want to receive payments to. The invoices produced for store payments are linked directly to the merchant's connected wallet. The invoice addresses are derived from the "),t("a",{attrs:{href:"https://bitcointalk.org/index.php?topic=2828777.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("xpubkey"),t("OutboundLink")],1),e._v(" of the wallet associated with the store. The software only needs your extended public key of a wallet to produce new addresses for each payment. These addresses are monitored by BTCPay Server as they move through the blockchain. The status of the payments to those addresses are detailed in the merchant's invoice page for each store.")]),e._v(" "),t("h2",{attrs:{id:"does-btcpay-need-my-private-key"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#does-btcpay-need-my-private-key"}},[e._v("#")]),e._v(" Does BTCPay need my private key?")]),e._v(" "),t("p",[e._v("Private keys are not required for using BTCPay with an existing wallet. The fact that BTCPay Server does not require access to your master private key for on-chain transactions is a huge security advantage. Even if your server gets hacked, your funds from the on-chain transactions are always safe. Securing your on-chain funds comes down to "),t("a",{attrs:{href:"https://btcinformation.org/en/secure-your-wallet",target:"_blank",rel:"noopener noreferrer"}},[e._v("securing your wallet"),t("OutboundLink")],1),e._v(". Using an "),t("RouterLink",{attrs:{to:"/WalletSetup/#use-an-existing-wallet"}},[e._v("existing wallet with BTCPay Server")]),e._v(" only requires the public key from your wallet.")],1),e._v(" "),t("p",[e._v("It is possible to generate new wallets using BTCPay Server which are hot wallets stored on the server. If you have a lightning node, BTCPay technically has access to the keys (macaroons) of your Lightning funds as well. If these are features that you would like to use, be sure to understand the "),t("RouterLink",{attrs:{to:"/CreateWallet/#security-implications"}},[e._v("security implications and the risks")]),e._v(" associated with these experimental features.")],1),e._v(" "),t("p",[e._v("If you're using a Third-Party BTCPay host, you should be familiar with the "),t("RouterLink",{attrs:{to:"/Deployment/ThirdPartyHosting/#security-concerns"}},[e._v("security concerns")]),e._v(" associated with private keys.")],1),e._v(" "),t("h2",{attrs:{id:"does-btcpay-server-support-crypto-to-fiat-conversion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#does-btcpay-server-support-crypto-to-fiat-conversion"}},[e._v("#")]),e._v(" Does BTCPay Server support crypto to fiat conversion?")]),e._v(" "),t("p",[e._v("At this time, it is possible to do automated conversions using the BTCPay Server plugin called "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcTransmuter",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCTransmuter"),t("OutboundLink")],1),e._v(". Please note this software is currently in "),t("em",[e._v("alpha state")]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"what-if-i-have-a-problem-paying-an-invoice"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-if-i-have-a-problem-paying-an-invoice"}},[e._v("#")]),e._v(" What if I have a problem paying an invoice?")]),e._v(" "),t("p",[e._v("If you have an issue paying a BTCPay Server invoice, it is likely do to one of the following reasons:")]),e._v(" "),t("ol",[t("li",[e._v("You are trying to pay using a non-segwit wallet and the merchant's invoices use Bech32 format.")])]),e._v(" "),t("p",[e._v("This is a fairly common issue but can be confusing to the user who will likely receive wallet errors similar to "),t("code",[e._v("invalid address")]),e._v(" when making a payment to an invoice. The solution for this (by the customer) is to use a "),t("a",{attrs:{href:"https://en.bitcoin.it/wiki/Bech32_adoption",target:"_blank",rel:"noopener noreferrer"}},[e._v("SegWit compatible wallet"),t("OutboundLink")],1),e._v(" which supports sending to Bech32 addresses.")]),e._v(" "),t("p",[e._v("The solution for this (by the merchant) is to modify your extended public key (xPub) you are providing in your BTCPay Server store. To do this, you can append your xPub with "),t("code",[e._v("-[p2sh]")]),e._v(" which will automatically modify your invoice addresses to allow both SegWit and non-SegWit wallets to make payments to your addresses. The BTCPay Server wallet will do this by wrapping the xPub's addresses with a Pay to Script Hash (p2sh) which produces more widely accepted addresses. It's important to understand how this can affect your wallet and the payments received before and after implementing this solution in your BTCPay Server store. Modifying your store's xPub will generate an entirely new wallet from the perspective of your BTCPay Server store. Please understand the following before blindly implementing the solution:")]),e._v(" "),t("ul",[t("li",[e._v("If you are using a hot wallet generated by your BTCPay Server, modifying the xpub will not create new seed words and your previous hot wallet seed words will "),t("strong",[e._v("no longer be stored")]),e._v(" on the server.\n"),t("ul",[t("li",[e._v("As a result, you will not be able to spend your new funds. Instead, create a new store and a new BTCPay Server hot wallet and select the option "),t("code",[e._v("Segwit wrapped (Compatible with old wallets)")]),e._v(" address type, and migrate funds to this new store's wallet.)")])])]),e._v(" "),t("li",[e._v("If you imported your xPub from another wallet (such as a hardware or software wallet) your external wallet will not detect the payments after modifying your xPub.\n"),t("ul",[t("li",[e._v("As a result, you will still be able to spend the funds using your BTCPay Server internal wallet using the Hardware Wallet Integration (Vault, recommended) or by signing with seed (not recommended).")])])]),e._v(" "),t("li",[e._v("Older funds and transactions which were previously displayed in your store's wallet will not appear anymore.\n"),t("ul",[t("li",[e._v("As a result, you may want to consider creating a second store with the modified xpub, to retain the previous transaction history of your transactions.")])])])]),e._v(" "),t("p",[e._v("Learn more about xpub formats and how to modify them "),t("RouterLink",{attrs:{to:"/FAQ/Wallet/#what-is-a-derivation-scheme"}},[e._v("here")]),e._v(". If you do not understand the options listed above, ask for clarification in the "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community on Mattermost"),t("OutboundLink")],1),e._v(".")],1),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[e._v("The invoice receives payment, but it is not paid in full.")])]),e._v(" "),t("p",[e._v("Users may try to pay an invoice from an exchange or other custodial service where part of the payment is deducted as a fee from the payment. A solution is to pay the amount due (provided that the invoice has not expired) or contact the merchant for a refund or a way to pay the remainder of payment due.")]),e._v(" "),t("h2",{attrs:{id:"what-if-i-have-a-problem-with-a-paid-invoice"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-if-i-have-a-problem-with-a-paid-invoice"}},[e._v("#")]),e._v(" What if I have a problem with a paid invoice?")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("To request a refund from a merchant, you must contact the merchant directly! BTCPay Server has no relationship to the merchant you purchased the product or service from.")])]),e._v(" "),t("p",[e._v("BTCPay Server is an open-source self-hosted software stack, not a company. The community and contributors behind BTCPay Server have no control over who uses the software or how they use it.\nIf you paid an invoice to a merchant and have a problem with your order, you must contact the merchant directly to see what happened.")]),e._v(" "),t("p",[e._v("Each merchant running the software controls their own store and the connected wallets that receive funds. The BTCPay Server community does not hold or have access to any funds of a store using the BTCPay Server software, only the merchant does.")]),e._v(" "),t("h2",{attrs:{id:"where-can-i-get-help-and-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#where-can-i-get-help-and-support"}},[e._v("#")]),e._v(" Where can I get help and support?")]),e._v(" "),t("p",[e._v("BTCPay is an open-source project. It is not a company; there is no e-mail, live-chat or phone support. The software relies on a network of contributors and users to provide support.")]),e._v(" "),t("p",[e._v("If you encountered an issue or have a feature request, please "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("open an issue on GitHub"),t("OutboundLink")],1),e._v(". For more general questions, join our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community on Mattermost"),t("OutboundLink")],1),e._v(". Certain community members offer "),t("RouterLink",{attrs:{to:"/Support/"}},[e._v("premium (paid) support")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"how-can-i-contribute-to-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-contribute-to-btcpay"}},[e._v("#")]),e._v(" How can I contribute to BTCPay?")]),e._v(" "),t("p",[e._v("There are many ways in which you can contribute to an open-source project like BTCPay.")]),e._v(" "),t("p",[e._v("The easiest way is to use the software, provide feedback and report any bugs or issues you or your customers encounter. If you're a developer, you can help us develop and improve the software by contributing in any of the BTCPay Server "),t("a",{attrs:{href:"https://github.com/btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repositories"),t("OutboundLink")],1),e._v(". Translating BTCPay into your native language on "),t("a",{attrs:{href:"https://www.transifex.com/btcpayserver/btcpayserver/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Transifex"),t("OutboundLink")],1),e._v(", helping us with documentation and writing are ways in which you can help us out, even if you're not a developer or tech-savvy. We appreciate every contributor to the project.")]),e._v(" "),t("p",[e._v("Check out the "),t("RouterLink",{attrs:{to:"/Contribute/"}},[e._v("contribute section")]),e._v(" for all the ways to contribute and help improve the project.")],1),e._v(" "),t("h2",{attrs:{id:"how-can-i-use-the-btcpay-server-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-use-the-btcpay-server-api"}},[e._v("#")]),e._v(" How can I use the BTCPay Server API?")]),e._v(" "),t("p",[e._v("The original BTCPay Server API is compatible for the most part with "),t("a",{attrs:{href:"https://bitpay.com/api/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BitPay's API"),t("OutboundLink")],1),e._v(" to allow merchants to smoothly transition to using BTCPay if they prefer a free, open source, payment processing alternative.")]),e._v(" "),t("p",[e._v("In 2020, BTCPay Server started releasing a new Greenfield API. This new API will co-exist with the original API and allow full usage of all BTCPay Server features, without requiring the UI. You can view the current "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Greenfield API documentation"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("A BTCPay Server functionality that is not found in the Greenfield API documentation means it isn't fully implemented yet in the new API and users should use the original API instead. The discussion on the development of the new Greenfield API can be found "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues/1320",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"how-to-create-a-webhook-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-to-create-a-webhook-"}},[e._v("#")]),e._v(" How to create a webhook ?")]),e._v(" "),t("p",[e._v("Within BTCPay Server, it's reasonably easy to make a new "),t("code",[e._v("Webhook")]),e._v("\nWhile in the BTCPay Server Dashboard, go to "),t("code",[e._v("Store settings")]),e._v(" and then click on the "),t("code",[e._v("Webhooks")]),e._v(" tab.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(425),alt:"Create new Webhook",title:"Create new Webhook"}})]),e._v(" "),t("p",[e._v("You're now in the view for creating a "),t("code",[e._v("Webhook")]),e._v(".\nMake sure you know your "),t("code",[e._v("Payload")]),e._v(" URL and paste this into your BTCPay Server.\nWhile you pasted the "),t("code",[e._v("payload")]),e._v(" URL, underneath it shows the "),t("code",[e._v("webhook")]),e._v(" secret.")]),e._v(" "),t("p",[e._v("Copy the "),t("code",[e._v("webhook")]),e._v(" secret and provide it on the endpoint.\nWhen everything has been set, you can toggle in BTCPay Server to "),t("code",[e._v("Automatical redelivery")]),e._v(".\nWe will try to redeliver any failed delivery after 10 seconds, 1 minute, and up to 6 times after 10 minutes.\nYou can toggle between every event or specify the events for your needs.")]),e._v(" "),t("p",[e._v("Be sure to enable the webhook and hit the "),t("code",[e._v("Add webhook")]),e._v(" to save it.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(426),alt:"Create new Webhook",title:"Create new Webhook"}})]),e._v(" "),t("h2",{attrs:{id:"webhook-format-is-not-bitpay-compatible"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#webhook-format-is-not-bitpay-compatible"}},[e._v("#")]),e._v(" Webhook format is not bitpay compatible?")]),e._v(" "),t("p",[e._v('Webhooks are not meant to be compatible with bitpay API.\nThere\'s two seperate IPNs (in BitPay terms: "Instant Payment Notifications") in BTCPay Server.')]),e._v(" "),t("ul",[t("li",[e._v("Webhooks")]),e._v(" "),t("li",[e._v("notifications")])]),e._v(" "),t("p",[e._v("Where "),t("code",[e._v("Webhooks")]),e._v(" are the Greenfield Events and "),t("code",[e._v("Notifications")]),e._v(" are Bitpay events.\nUse "),t("code",[e._v("Notification URL")]),e._v(" when creating an invoice through Bitpay.")]),e._v(" "),t("p",[e._v("To read more on this question ; "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/2282",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("To read more on "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Greenfield API "),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("For guidance on how to process a "),t("code",[e._v("Webhook")]),e._v(" in PHP, check out the following "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-greenfield-php/blob/master/examples/webhook.php",target:"_blank",rel:"noopener noreferrer"}},[e._v("example script"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"how-can-i-backup-my-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-backup-my-btcpay-server"}},[e._v("#")]),e._v(" How can I backup my BTCPay Server?")]),e._v(" "),t("p",[e._v("It's possible to "),t("RouterLink",{attrs:{to:"/Docker/backup-restore/"}},[e._v("create backups of your BTCPay Server")]),e._v(" instance and it's data. Please keep in mind that the backup scripts have not been thoroughly tested for all types of BTCPay Server setups and custom deployments. Be sure to use your backup to verify it properly recreates your setup, before relying on it.")],1),e._v(" "),t("h2",{attrs:{id:"how-can-i-charge-for-using-my-btcpay-server-instance"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-charge-for-using-my-btcpay-server-instance"}},[e._v("#")]),e._v(" How can I charge for using my BTCPay Server instance?")]),e._v(" "),t("p",[e._v("Currently charging users for using your BTCPay Server instance, whether it's a percentage of transactions or a registration fee, is not supported natively.\nEnabling such a feature could be possible, using the "),t("RouterLink",{attrs:{to:"/Transmuter/"}},[e._v("Transmuter")]),e._v(" and/or the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Greenfield API"),t("OutboundLink")],1),e._v(" but will require moderate to extensive technical knowledge.")],1),e._v(" "),t("h2",{attrs:{id:"stuck-synching-nbxplorer-is-synchronizing-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#stuck-synching-nbxplorer-is-synchronizing-"}},[e._v("#")]),e._v(' Stuck synching: "NBXplorer is synchronizing"')]),e._v(" "),t("p",[e._v("In some cases, you may encounter NBXplorer getting stuck. The first thing to try in such a situation is to update it. If you are using the Docker deployment, simply run "),t("code",[e._v("./btcpay-update.sh")]),e._v(" or go to "),t("code",[e._v("Server settings / Maintenance / Update")]),e._v(".")]),e._v(" "),t("p",[e._v("If, despite restarting, the problem persists and NBXplorer remains stuck, you may notice that the synch dialog appears as shown below, and the height does not change such as in this screenshot:")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(427),alt:"NBXplorer-stuck",title:"NBXplorer-stuck"}})]),e._v(" "),t("p",[e._v("This issue generally occurs when your server has been offline for an extended period, and your Bitcoin full node is pruned, which is the default setting in BTCPay Server Docker deployments.")]),e._v(" "),t("p",[e._v("When the server restarts, the Bitcoin full node syncs before allowing NBXplorer to sync. However, after the full node has synced, it may have pruned the blocks that NBXplorer requires for syncing.")]),e._v(" "),t("p",[e._v("The only way to resolve this situation is to force NBXplorer to skip the affected blocks. This means that it will not be able to see any transactions that occurred during that period. Nevertheless, your BTCPay Server will be back online.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" stop generated_nbxplorer_1\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("exec")]),e._v(" -ti generated_postgres_1 psql -U postgres -d nbxplorermainnet -c "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v("\"DELETE FROM nbxv1_settings WHERE code='BTC' AND key='BlockLocator-';\"")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" start generated_nbxplorer_1\n")])])]),t("p",[e._v("Your server should now be synced and ready for use.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/44.8f0c4bbf.js b/assets/js/44.8f0c4bbf.js new file mode 100644 index 0000000000..b6de486311 --- /dev/null +++ b/assets/js/44.8f0c4bbf.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[44],{425:function(e,t,a){e.exports=a.p+"assets/img/btcpayWebhookFAQ1.2e4720f3.jpg"},426:function(e,t,a){e.exports=a.p+"assets/img/btcpayWebhookFAQ2.3b3a0f4e.jpg"},427:function(e,t,a){e.exports=a.p+"assets/img/NBXplorer-stuck.715f322b.png"},747:function(e,t,a){"use strict";a.r(t);var r=a(9),o=Object(r.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"general-faq"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#general-faq"}},[e._v("#")]),e._v(" General FAQ")]),e._v(" "),t("p",[e._v("This page contains general questions and answers about BTCPay Server. What it is, how it works, how to install it.")]),e._v(" "),t("p"),t("div",{staticClass:"table-of-contents"},[t("ul",[t("li",[t("a",{attrs:{href:"#what-is-btcpay-server"}},[e._v("What is BTCPay Server?")])]),t("li",[t("a",{attrs:{href:"#why-should-i-choose-btcpay-over-other-processors"}},[e._v("Why should I choose BTCPay over other processors?")])]),t("li",[t("a",{attrs:{href:"#why-is-everyone-so-excited-about-btcpay"}},[e._v("Why is everyone so excited about BTCPay?")])]),t("li",[t("a",{attrs:{href:"#who-can-use-btcpay"}},[e._v("Who can use BTCPay?")])]),t("li",[t("a",{attrs:{href:"#how-to-install-btcpay-server"}},[e._v("How to install BTCPay Server?")])]),t("li",[t("a",{attrs:{href:"#where-to-find-btcpay-video-tutorials"}},[e._v("Where to find BTCPay video tutorials?")])]),t("li",[t("a",{attrs:{href:"#do-i-need-to-have-an-online-store-to-use-btcpay-server"}},[e._v("Do I need to have an online store to use BTCPay Server?")])]),t("li",[t("a",{attrs:{href:"#why-cant-i-just-give-my-bitcoin-address-to-a-buyer"}},[e._v("Why can't I just give my Bitcoin address to a buyer?")])]),t("li",[t("a",{attrs:{href:"#how-does-btcpay-create-a-new-address-for-each-invoice"}},[e._v("How does BTCPay create a new address for each invoice?")])]),t("li",[t("a",{attrs:{href:"#does-btcpay-need-my-private-key"}},[e._v("Does BTCPay need my private key?")])]),t("li",[t("a",{attrs:{href:"#does-btcpay-server-support-crypto-to-fiat-conversion"}},[e._v("Does BTCPay Server support crypto to fiat conversion?")])]),t("li",[t("a",{attrs:{href:"#what-if-i-have-a-problem-paying-an-invoice"}},[e._v("What if I have a problem paying an invoice?")])]),t("li",[t("a",{attrs:{href:"#what-if-i-have-a-problem-with-a-paid-invoice"}},[e._v("What if I have a problem with a paid invoice?")])]),t("li",[t("a",{attrs:{href:"#where-can-i-get-help-and-support"}},[e._v("Where can I get help and support?")])]),t("li",[t("a",{attrs:{href:"#how-can-i-contribute-to-btcpay"}},[e._v("How can I contribute to BTCPay?")])]),t("li",[t("a",{attrs:{href:"#how-can-i-use-the-btcpay-server-api"}},[e._v("How can I use the BTCPay Server API?")])]),t("li",[t("a",{attrs:{href:"#how-to-create-a-webhook-"}},[e._v("How to create a webhook ?")])]),t("li",[t("a",{attrs:{href:"#webhook-format-is-not-bitpay-compatible"}},[e._v("Webhook format is not bitpay compatible?")])]),t("li",[t("a",{attrs:{href:"#how-can-i-backup-my-btcpay-server"}},[e._v("How can I backup my BTCPay Server?")])]),t("li",[t("a",{attrs:{href:"#how-can-i-charge-for-using-my-btcpay-server-instance"}},[e._v("How can I charge for using my BTCPay Server instance?")])]),t("li",[t("a",{attrs:{href:"#stuck-synching-nbxplorer-is-synchronizing-"}},[e._v('Stuck synching: "NBXplorer is synchronizing"')])])])]),t("p"),e._v(" "),t("h2",{attrs:{id:"what-is-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-btcpay-server"}},[e._v("#")]),e._v(" What is BTCPay Server?")]),e._v(" "),t("p",[e._v("BTCPay Server is a free and open-source cryptocurrency payment processor which allows you to receive payments in Bitcoin (on-chain and via the Lightning Network) and altcoins directly, with no fees, transaction cost or a middleman.")]),e._v(" "),t("p",[e._v("BTCPay is a non-custodial invoicing system which eliminates the involvement of a third-party. Payments with BTCPay go directly to your wallet, which increases the privacy and security. Your private keys are never required to receive payments to your BTCPay Server. There is "),t("a",{attrs:{href:"#how-does-btcpay-create-a-new-address-for-each-invoice"}},[e._v("no address re-use")]),e._v(" since each invoice uses a new address for receiving payments to your wallet.")]),e._v(" "),t("h2",{attrs:{id:"why-should-i-choose-btcpay-over-other-processors"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-should-i-choose-btcpay-over-other-processors"}},[e._v("#")]),e._v(" Why should I choose BTCPay over other processors?")]),e._v(" "),t("p",[e._v("The most significant advantage of BTCPay over other processors is that it is entirely free and open-source, non-custodial software, created by the community. While most of the other processors hold your Bitcoins, BTCPay allows you to receive payments P2P, directly to your software or hardware wallet.")]),e._v(" "),t("p",[e._v("BTCPay is a self-hosted software. This means that you are your own payment processor. There are no subscriptions, no transaction fees. There's no third-party involvement which significantly increases the censorship-resistance, privacy, and security for you and your customers. Furthermore, BTCPay enables you to become a processor yourself, so that you can offer different packages and help spread the adoption locally or globally.")]),e._v(" "),t("p",[e._v("With BTCPay, you are your own bank.")]),e._v(" "),t("h2",{attrs:{id:"why-is-everyone-so-excited-about-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-is-everyone-so-excited-about-btcpay"}},[e._v("#")]),e._v(" Why is everyone so excited about BTCPay?")]),e._v(" "),t("p",[e._v("The community is excited about BTCPay and often recommends it to merchants or content creators because it offers a direct way for store-owners and charities to receive Bitcoin payments, which significantly improves the privacy of the customers/donors.")]),e._v(" "),t("p",[e._v("BTCPay doesn't compromise on censorship-resistance, which is one of the main features of Bitcoin. Besides that, being free and open-source it gives an excellent opportunity for developers to build things and integrations on top of BTCPay.")]),e._v(" "),t("h2",{attrs:{id:"who-can-use-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#who-can-use-btcpay"}},[e._v("#")]),e._v(" Who can use BTCPay?")]),e._v(" "),t("p",[e._v("BTCPay server is a feature-rich software with plenty of use-cases that can solve problems for different types of users. Merchants, content creators, lightning network users, exchanges, hosting providers and many others can find it useful. See the "),t("RouterLink",{attrs:{to:"/UseCase/"}},[e._v("Use Case page")]),e._v(" for detailed breakdown of BTCPay use-cases.")],1),e._v(" "),t("p",[e._v("BTCPay is licensed under the "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/blob/master/LICENSE",target:"_blank",rel:"noopener noreferrer"}},[e._v("MIT License"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"how-to-install-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-to-install-btcpay-server"}},[e._v("#")]),e._v(" How to install BTCPay Server?")]),e._v(" "),t("p",[e._v("First take a look at the various deployment options and consider which one best suits your specific needs.")]),e._v(" "),t("ul",[t("li",[t("RouterLink",{attrs:{to:"/Deployment/"}},[e._v("See all deployments")])],1)]),e._v(" "),t("p",[e._v("If you still have questions, visit the "),t("RouterLink",{attrs:{to:"/FAQ/Deployment/"}},[e._v("Deployment FAQ")])],1),e._v(" "),t("h2",{attrs:{id:"where-to-find-btcpay-video-tutorials"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#where-to-find-btcpay-video-tutorials"}},[e._v("#")]),e._v(" Where to find BTCPay video tutorials?")]),e._v(" "),t("p",[e._v("BTCPay Server instructional video guides can be found on the official BTCPay Server YouTube channel:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://www.youtube.com/channel/UCpG9WL6TJuoNfFVkaDMp9ug/videos",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCPay YouTube channel"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://www.youtube.com/playlist?list=PL7b9Wt9shK2r-WXS6ysG4tafVQRu80biZ",target:"_blank",rel:"noopener noreferrer"}},[e._v("Assorted playlist of all BTCPay YouTube videos"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"do-i-need-to-have-an-online-store-to-use-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#do-i-need-to-have-an-online-store-to-use-btcpay-server"}},[e._v("#")]),e._v(" Do I need to have an online store to use BTCPay Server?")]),e._v(" "),t("p",[e._v("You can use BTCPay even if you don't have an e-commerce store. You can launch your BTCPay Server and be the payment processor for your friends or local market. Another use-case is to accept donations through the POS (Point of Sale) app or payment buttons which can be copy-pasted as HTML snippets into any website.")]),e._v(" "),t("h2",{attrs:{id:"why-cant-i-just-give-my-bitcoin-address-to-a-buyer"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#why-cant-i-just-give-my-bitcoin-address-to-a-buyer"}},[e._v("#")]),e._v(" Why can't I just give my Bitcoin address to a buyer?")]),e._v(" "),t("p",[e._v("Re-using an address for receiving payments is a privacy issue. Providing a different address manually to each customer is not an optimal solution. Imagine having to send a unique e-mail to everyone that wants to pay you with cryptocurrency.")]),e._v(" "),t("p",[e._v("BTCPay solves the address re-use issue. It automates the checkout process for the merchant by creating a new invoice with a unique address created from the merchant's wallet, each time a customer pays using BTCPay. If you are using an integration with an e-commerce store, BTCPay Server integrates into your checkout process, and customers can pay you in Bitcoin or altcoins in a few clicks, just like any other traditional payment option.")]),e._v(" "),t("p",[e._v("After a customer makes a payment, the BTCPay Server software notifies your store that the order has been paid/completed. Depending on the e-commerce software you're using, it can also change the order status. All you have to worry about is getting items shipped, leave the invoicing and payment processing to BTCPay.")]),e._v(" "),t("h2",{attrs:{id:"how-does-btcpay-create-a-new-address-for-each-invoice"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-does-btcpay-create-a-new-address-for-each-invoice"}},[e._v("#")]),e._v(" How does BTCPay create a new address for each invoice?")]),e._v(" "),t("p",[e._v("BTCPay Server includes an important feature which eliminates the known privacy issue of address re-use. It does this by providing a new address each time an invoice is requested for payment. This is all done automatically and the merchant does not need to keep track of which addresses belong to which wallet, store, etc. BTCPay Server organizes all the payment information in a detailed invoicing system for the merchant.")]),e._v(" "),t("p",[e._v("The way it works is fairly simple. Merchants connect a wallet to each of their stores that they want to receive payments to. The invoices produced for store payments are linked directly to the merchant's connected wallet. The invoice addresses are derived from the "),t("a",{attrs:{href:"https://bitcointalk.org/index.php?topic=2828777.0",target:"_blank",rel:"noopener noreferrer"}},[e._v("xpubkey"),t("OutboundLink")],1),e._v(" of the wallet associated with the store. The software only needs your extended public key of a wallet to produce new addresses for each payment. These addresses are monitored by BTCPay Server as they move through the blockchain. The status of the payments to those addresses are detailed in the merchant's invoice page for each store.")]),e._v(" "),t("h2",{attrs:{id:"does-btcpay-need-my-private-key"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#does-btcpay-need-my-private-key"}},[e._v("#")]),e._v(" Does BTCPay need my private key?")]),e._v(" "),t("p",[e._v("Private keys are not required for using BTCPay with an existing wallet. The fact that BTCPay Server does not require access to your master private key for on-chain transactions is a huge security advantage. Even if your server gets hacked, your funds from the on-chain transactions are always safe. Securing your on-chain funds comes down to "),t("a",{attrs:{href:"https://btcinformation.org/en/secure-your-wallet",target:"_blank",rel:"noopener noreferrer"}},[e._v("securing your wallet"),t("OutboundLink")],1),e._v(". Using an "),t("RouterLink",{attrs:{to:"/WalletSetup/#use-an-existing-wallet"}},[e._v("existing wallet with BTCPay Server")]),e._v(" only requires the public key from your wallet.")],1),e._v(" "),t("p",[e._v("It is possible to generate new wallets using BTCPay Server which are hot wallets stored on the server. If you have a lightning node, BTCPay technically has access to the keys (macaroons) of your Lightning funds as well. If these are features that you would like to use, be sure to understand the "),t("RouterLink",{attrs:{to:"/CreateWallet/#security-implications"}},[e._v("security implications and the risks")]),e._v(" associated with these experimental features.")],1),e._v(" "),t("p",[e._v("If you're using a Third-Party BTCPay host, you should be familiar with the "),t("RouterLink",{attrs:{to:"/Deployment/ThirdPartyHosting/#security-concerns"}},[e._v("security concerns")]),e._v(" associated with private keys.")],1),e._v(" "),t("h2",{attrs:{id:"does-btcpay-server-support-crypto-to-fiat-conversion"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#does-btcpay-server-support-crypto-to-fiat-conversion"}},[e._v("#")]),e._v(" Does BTCPay Server support crypto to fiat conversion?")]),e._v(" "),t("p",[e._v("At this time, it is possible to do automated conversions using the BTCPay Server plugin called "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcTransmuter",target:"_blank",rel:"noopener noreferrer"}},[e._v("BTCTransmuter"),t("OutboundLink")],1),e._v(". Please note this software is currently in "),t("em",[e._v("alpha state")]),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"what-if-i-have-a-problem-paying-an-invoice"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-if-i-have-a-problem-paying-an-invoice"}},[e._v("#")]),e._v(" What if I have a problem paying an invoice?")]),e._v(" "),t("p",[e._v("If you have an issue paying a BTCPay Server invoice, it is likely do to one of the following reasons:")]),e._v(" "),t("ol",[t("li",[e._v("You are trying to pay using a non-segwit wallet and the merchant's invoices use Bech32 format.")])]),e._v(" "),t("p",[e._v("This is a fairly common issue but can be confusing to the user who will likely receive wallet errors similar to "),t("code",[e._v("invalid address")]),e._v(" when making a payment to an invoice. The solution for this (by the customer) is to use a "),t("a",{attrs:{href:"https://en.bitcoin.it/wiki/Bech32_adoption",target:"_blank",rel:"noopener noreferrer"}},[e._v("SegWit compatible wallet"),t("OutboundLink")],1),e._v(" which supports sending to Bech32 addresses.")]),e._v(" "),t("p",[e._v("The solution for this (by the merchant) is to modify your extended public key (xPub) you are providing in your BTCPay Server store. To do this, you can append your xPub with "),t("code",[e._v("-[p2sh]")]),e._v(" which will automatically modify your invoice addresses to allow both SegWit and non-SegWit wallets to make payments to your addresses. The BTCPay Server wallet will do this by wrapping the xPub's addresses with a Pay to Script Hash (p2sh) which produces more widely accepted addresses. It's important to understand how this can affect your wallet and the payments received before and after implementing this solution in your BTCPay Server store. Modifying your store's xPub will generate an entirely new wallet from the perspective of your BTCPay Server store. Please understand the following before blindly implementing the solution:")]),e._v(" "),t("ul",[t("li",[e._v("If you are using a hot wallet generated by your BTCPay Server, modifying the xpub will not create new seed words and your previous hot wallet seed words will "),t("strong",[e._v("no longer be stored")]),e._v(" on the server.\n"),t("ul",[t("li",[e._v("As a result, you will not be able to spend your new funds. Instead, create a new store and a new BTCPay Server hot wallet and select the option "),t("code",[e._v("Segwit wrapped (Compatible with old wallets)")]),e._v(" address type, and migrate funds to this new store's wallet.)")])])]),e._v(" "),t("li",[e._v("If you imported your xPub from another wallet (such as a hardware or software wallet) your external wallet will not detect the payments after modifying your xPub.\n"),t("ul",[t("li",[e._v("As a result, you will still be able to spend the funds using your BTCPay Server internal wallet using the Hardware Wallet Integration (Vault, recommended) or by signing with seed (not recommended).")])])]),e._v(" "),t("li",[e._v("Older funds and transactions which were previously displayed in your store's wallet will not appear anymore.\n"),t("ul",[t("li",[e._v("As a result, you may want to consider creating a second store with the modified xpub, to retain the previous transaction history of your transactions.")])])])]),e._v(" "),t("p",[e._v("Learn more about xpub formats and how to modify them "),t("RouterLink",{attrs:{to:"/FAQ/Wallet/#what-is-a-derivation-scheme"}},[e._v("here")]),e._v(". If you do not understand the options listed above, ask for clarification in the "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community on Mattermost"),t("OutboundLink")],1),e._v(".")],1),e._v(" "),t("ol",{attrs:{start:"2"}},[t("li",[e._v("The invoice receives payment, but it is not paid in full.")])]),e._v(" "),t("p",[e._v("Users may try to pay an invoice from an exchange or other custodial service where part of the payment is deducted as a fee from the payment. A solution is to pay the amount due (provided that the invoice has not expired) or contact the merchant for a refund or a way to pay the remainder of payment due.")]),e._v(" "),t("h2",{attrs:{id:"what-if-i-have-a-problem-with-a-paid-invoice"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-if-i-have-a-problem-with-a-paid-invoice"}},[e._v("#")]),e._v(" What if I have a problem with a paid invoice?")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("TIP")]),e._v(" "),t("p",[e._v("To request a refund from a merchant, you must contact the merchant directly! BTCPay Server has no relationship to the merchant you purchased the product or service from.")])]),e._v(" "),t("p",[e._v("BTCPay Server is an open-source self-hosted software stack, not a company. The community and contributors behind BTCPay Server have no control over who uses the software or how they use it.\nIf you paid an invoice to a merchant and have a problem with your order, you must contact the merchant directly to see what happened.")]),e._v(" "),t("p",[e._v("Each merchant running the software controls their own store and the connected wallets that receive funds. The BTCPay Server community does not hold or have access to any funds of a store using the BTCPay Server software, only the merchant does.")]),e._v(" "),t("h2",{attrs:{id:"where-can-i-get-help-and-support"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#where-can-i-get-help-and-support"}},[e._v("#")]),e._v(" Where can I get help and support?")]),e._v(" "),t("p",[e._v("BTCPay is an open-source project. It is not a company; there is no e-mail, live-chat or phone support. The software relies on a network of contributors and users to provide support.")]),e._v(" "),t("p",[e._v("If you encountered an issue or have a feature request, please "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("open an issue on GitHub"),t("OutboundLink")],1),e._v(". For more general questions, join our "),t("a",{attrs:{href:"https://chat.btcpayserver.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("community on Mattermost"),t("OutboundLink")],1),e._v(". Certain community members offer "),t("RouterLink",{attrs:{to:"/Support/"}},[e._v("premium (paid) support")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"how-can-i-contribute-to-btcpay"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-contribute-to-btcpay"}},[e._v("#")]),e._v(" How can I contribute to BTCPay?")]),e._v(" "),t("p",[e._v("There are many ways in which you can contribute to an open-source project like BTCPay.")]),e._v(" "),t("p",[e._v("The easiest way is to use the software, provide feedback and report any bugs or issues you or your customers encounter. If you're a developer, you can help us develop and improve the software by contributing in any of the BTCPay Server "),t("a",{attrs:{href:"https://github.com/btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[e._v("GitHub repositories"),t("OutboundLink")],1),e._v(". Translating BTCPay into your native language on "),t("a",{attrs:{href:"https://www.transifex.com/btcpayserver/btcpayserver/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Transifex"),t("OutboundLink")],1),e._v(", helping us with documentation and writing are ways in which you can help us out, even if you're not a developer or tech-savvy. We appreciate every contributor to the project.")]),e._v(" "),t("p",[e._v("Check out the "),t("RouterLink",{attrs:{to:"/Contribute/"}},[e._v("contribute section")]),e._v(" for all the ways to contribute and help improve the project.")],1),e._v(" "),t("h2",{attrs:{id:"how-can-i-use-the-btcpay-server-api"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-use-the-btcpay-server-api"}},[e._v("#")]),e._v(" How can I use the BTCPay Server API?")]),e._v(" "),t("p",[e._v("The original BTCPay Server API is compatible for the most part with "),t("a",{attrs:{href:"https://bitpay.com/api/",target:"_blank",rel:"noopener noreferrer"}},[e._v("BitPay's API"),t("OutboundLink")],1),e._v(" to allow merchants to smoothly transition to using BTCPay if they prefer a free, open source, payment processing alternative.")]),e._v(" "),t("p",[e._v("In 2020, BTCPay Server started releasing a new Greenfield API. This new API will co-exist with the original API and allow full usage of all BTCPay Server features, without requiring the UI. You can view the current "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Greenfield API documentation"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("p",[e._v("A BTCPay Server functionality that is not found in the Greenfield API documentation means it isn't fully implemented yet in the new API and users should use the original API instead. The discussion on the development of the new Greenfield API can be found "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/issues/1320",target:"_blank",rel:"noopener noreferrer"}},[e._v("here"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("h2",{attrs:{id:"how-to-create-a-webhook-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-to-create-a-webhook-"}},[e._v("#")]),e._v(" How to create a webhook ?")]),e._v(" "),t("p",[e._v("Within BTCPay Server, it's reasonably easy to make a new "),t("code",[e._v("Webhook")]),e._v("\nWhile in the BTCPay Server Dashboard, go to "),t("code",[e._v("Store settings")]),e._v(" and then click on the "),t("code",[e._v("Webhooks")]),e._v(" tab.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(425),alt:"Create new Webhook",title:"Create new Webhook"}})]),e._v(" "),t("p",[e._v("You're now in the view for creating a "),t("code",[e._v("Webhook")]),e._v(".\nMake sure you know your "),t("code",[e._v("Payload")]),e._v(" URL and paste this into your BTCPay Server.\nWhile you pasted the "),t("code",[e._v("payload")]),e._v(" URL, underneath it shows the "),t("code",[e._v("webhook")]),e._v(" secret.")]),e._v(" "),t("p",[e._v("Copy the "),t("code",[e._v("webhook")]),e._v(" secret and provide it on the endpoint.\nWhen everything has been set, you can toggle in BTCPay Server to "),t("code",[e._v("Automatical redelivery")]),e._v(".\nWe will try to redeliver any failed delivery after 10 seconds, 1 minute, and up to 6 times after 10 minutes.\nYou can toggle between every event or specify the events for your needs.")]),e._v(" "),t("p",[e._v("Be sure to enable the webhook and hit the "),t("code",[e._v("Add webhook")]),e._v(" to save it.")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(426),alt:"Create new Webhook",title:"Create new Webhook"}})]),e._v(" "),t("h2",{attrs:{id:"webhook-format-is-not-bitpay-compatible"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#webhook-format-is-not-bitpay-compatible"}},[e._v("#")]),e._v(" Webhook format is not bitpay compatible?")]),e._v(" "),t("p",[e._v('Webhooks are not meant to be compatible with bitpay API.\nThere\'s two seperate IPNs (in BitPay terms: "Instant Payment Notifications") in BTCPay Server.')]),e._v(" "),t("ul",[t("li",[e._v("Webhooks")]),e._v(" "),t("li",[e._v("notifications")])]),e._v(" "),t("p",[e._v("Where "),t("code",[e._v("Webhooks")]),e._v(" are the Greenfield Events and "),t("code",[e._v("Notifications")]),e._v(" are Bitpay events.\nUse "),t("code",[e._v("Notification URL")]),e._v(" when creating an invoice through Bitpay.")]),e._v(" "),t("p",[e._v("To read more on this question ; "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver/discussions/2282",target:"_blank",rel:"noopener noreferrer"}},[e._v("Source"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("To read more on "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Greenfield API "),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("For guidance on how to process a "),t("code",[e._v("Webhook")]),e._v(" in PHP, check out the following "),t("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-greenfield-php/blob/master/examples/webhook.php",target:"_blank",rel:"noopener noreferrer"}},[e._v("example script"),t("OutboundLink")],1)]),e._v(" "),t("h2",{attrs:{id:"how-can-i-backup-my-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-backup-my-btcpay-server"}},[e._v("#")]),e._v(" How can I backup my BTCPay Server?")]),e._v(" "),t("p",[e._v("It's possible to "),t("RouterLink",{attrs:{to:"/Docker/backup-restore/"}},[e._v("create backups of your BTCPay Server")]),e._v(" instance and it's data. Please keep in mind that the backup scripts have not been thoroughly tested for all types of BTCPay Server setups and custom deployments. Be sure to use your backup to verify it properly recreates your setup, before relying on it.")],1),e._v(" "),t("h2",{attrs:{id:"how-can-i-charge-for-using-my-btcpay-server-instance"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#how-can-i-charge-for-using-my-btcpay-server-instance"}},[e._v("#")]),e._v(" How can I charge for using my BTCPay Server instance?")]),e._v(" "),t("p",[e._v("Currently charging users for using your BTCPay Server instance, whether it's a percentage of transactions or a registration fee, is not supported natively.\nEnabling such a feature could be possible, using the "),t("RouterLink",{attrs:{to:"/Transmuter/"}},[e._v("Transmuter")]),e._v(" and/or the "),t("a",{attrs:{href:"https://docs.btcpayserver.org/API/Greenfield/v1/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Greenfield API"),t("OutboundLink")],1),e._v(" but will require moderate to extensive technical knowledge.")],1),e._v(" "),t("h2",{attrs:{id:"stuck-synching-nbxplorer-is-synchronizing-"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#stuck-synching-nbxplorer-is-synchronizing-"}},[e._v("#")]),e._v(' Stuck synching: "NBXplorer is synchronizing"')]),e._v(" "),t("p",[e._v("In some cases, you may encounter NBXplorer getting stuck. The first thing to try in such a situation is to update it. If you are using the Docker deployment, simply run "),t("code",[e._v("./btcpay-update.sh")]),e._v(" or go to "),t("code",[e._v("Server settings / Maintenance / Update")]),e._v(".")]),e._v(" "),t("p",[e._v("If, despite restarting, the problem persists and NBXplorer remains stuck, you may notice that the synch dialog appears as shown below, and the height does not change such as in this screenshot:")]),e._v(" "),t("figure",[t("img",{attrs:{src:a(427),alt:"NBXplorer-stuck",title:"NBXplorer-stuck"}})]),e._v(" "),t("p",[e._v("This issue generally occurs when your server has been offline for an extended period, and your Bitcoin full node is pruned, which is the default setting in BTCPay Server Docker deployments.")]),e._v(" "),t("p",[e._v("When the server restarts, the Bitcoin full node syncs before allowing NBXplorer to sync. However, after the full node has synced, it may have pruned the blocks that NBXplorer requires for syncing.")]),e._v(" "),t("p",[e._v("The only way to resolve this situation is to force NBXplorer to skip the affected blocks. This means that it will not be able to see any transactions that occurred during that period. Nevertheless, your BTCPay Server will be back online.")]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" stop generated_nbxplorer_1\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("exec")]),e._v(" -ti generated_postgres_1 psql -U postgres -d nbxplorermainnet -c "),t("span",{pre:!0,attrs:{class:"token string"}},[e._v("\"DELETE FROM nbxv1_settings WHERE code='BTC' AND key='BlockLocator-';\"")]),e._v("\n\n"),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("docker")]),e._v(" start generated_nbxplorer_1\n")])])]),t("p",[e._v("Your server should now be synced and ready for use.")])])}),[],!1,null,null,null);t.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/52.14d9e6bd.js b/assets/js/52.6c2c5b0d.js similarity index 96% rename from assets/js/52.14d9e6bd.js rename to assets/js/52.6c2c5b0d.js index 602f9534bb..362dc2e031 100644 --- a/assets/js/52.14d9e6bd.js +++ b/assets/js/52.6c2c5b0d.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{469:function(e,t,i){e.exports=i.p+"assets/img/Invoices.d261efe1.png"},470:function(e,t,i){e.exports=i.p+"assets/img/InvoiceFiltering.71317a76.gif"},759:function(e,t,i){"use strict";i.r(t);var a=i(9),n=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"what-is-an-invoice-in-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-an-invoice-in-btcpay-server"}},[e._v("#")]),e._v(" What is an invoice in BTCPay Server?")]),e._v(" "),t("p",[e._v("An "),t("strong",[e._v("invoice")]),e._v(" is a document issued by the seller to a buyer to collect payment.")]),e._v(" "),t("p",[e._v("In BTCPay Server, an invoice represents a document that must be paid within a "),t("strong",[e._v("defined time interval")]),e._v(" at a fixed exchange rate. Invoices have expiration because they lock the exchange rate within a specified time frame to protect the receiver from price fluctuations.")]),e._v(" "),t("figure",[t("img",{attrs:{src:i(469),alt:"Invoices",title:"Invoices"}})]),e._v(" "),t("p",[e._v("The core of BTCPay Server is the ability to act as a bitcoin invoice management system. An invoice is an essential tool for keeping track and managing a received payment.")]),e._v(" "),t("p",[e._v("Unless you use a built in "),t("RouterLink",{attrs:{to:"/Wallet/"}},[e._v("Wallet")]),e._v(" to receive payments manually, all payments within a store will be shown on the "),t("code",[e._v("Invoices")]),e._v(" page. This page cumulatively sorts payments by date and is a central piece for invoice management and payment troubleshooting.")],1),e._v(" "),t("h2",{attrs:{id:"invoice-statuses"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#invoice-statuses"}},[e._v("#")]),e._v(" Invoice statuses")]),e._v(" "),t("p",[e._v("Table below lists and describes common invoice statuses in BTCPay and suggests common actions.\nActions are just recommendations.\nIt's up to users to define best course of action for their use-case and business.")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Invoice Status")]),e._v(" "),t("th",[e._v("Description")]),e._v(" "),t("th",[e._v("Action")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("strong",[e._v("New")])]),e._v(" "),t("td",[e._v("Not paid, invoice timer still has not expired")]),e._v(" "),t("td",[e._v("None")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("New (paidPartial)")])]),e._v(" "),t("td",[e._v("Paid, not in full, invoice timer still has not expired")]),e._v(" "),t("td",[e._v("None")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Expired")])]),e._v(" "),t("td",[e._v("Not paid, invoice timer expired")]),e._v(" "),t("td",[e._v("None")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Expired (paidPartial)")]),e._v(" **")]),e._v(" "),t("td",[e._v("Paid, not in full amount, and expired")]),e._v(" "),t("td",[e._v("Contact buyer to arrange a refund or ask for them to pay their due. Optionally mark invoice as settled or invalid")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Expired (paidLate)")])]),e._v(" "),t("td",[e._v("Paid, in full amount, after the invoice timer has expired")]),e._v(" "),t("td",[e._v("Contact buyer to arrange a refund or process order if late confirmations are acceptable.")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Settled (paidOver)")])]),e._v(" "),t("td",[e._v("Paid more than the invoice amount, settled, received sufficient amount of confirmations")]),e._v(" "),t("td",[e._v("Contact buyer to arrange a refund for the extra amount, or optionally wait for buyer to contact you")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Processing")])]),e._v(" "),t("td",[e._v("Paid in full, but has not received sufficient amount of confirmations specified in the store settings")]),e._v(" "),t("td",[e._v("Wait for confirmations (The invoice should become - settled)")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Processing (paidOver)")])]),e._v(" "),t("td",[e._v("Paid more than the invoice amount, not received sufficient amount of confirmations")]),e._v(" "),t("td",[e._v("Wait to be settled then contact buyer to arrange a refund for the extra amount, or optionally wait for buyer to contact you")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Settled")])]),e._v(" "),t("td",[e._v("Paid, in full, received sufficient amount of confirmations in store")]),e._v(" "),t("td",[e._v("Fulfil the order")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Settled (marked)")])]),e._v(" "),t("td",[e._v("Status was manually changed to settled from an processing or invalid status")]),e._v(" "),t("td",[e._v("Store admin has marked the payment as settled")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Invalid*")])]),e._v(" "),t("td",[e._v("Paid, but failed to receive sufficient amount of confirmations within the time specified in store settings")]),e._v(" "),t("td",[e._v("Check the transaction on a blockchain explorer, if it received sufficient confirmations, mark as settled")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Invalid (marked)")])]),e._v(" "),t("td",[e._v("Status was manually changed to invalid from a settled or expired status")]),e._v(" "),t("td",[e._v("Store admin has marked the payment as invalid")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Invalid (paidOver)")])]),e._v(" "),t("td",[e._v("Paid more than the invoice amount, but failed to receive sufficient amount of confirmations within the time specified in store settings")]),e._v(" "),t("td",[e._v("Check the transaction on a blockchain explorer, if it received sufficient confirmations, mark as settled")])])])]),e._v(" "),t("ul",[t("li",[t("ul",[t("li",[e._v("Invoices paid via the "),t("RouterLink",{attrs:{to:"/LightningNetwork/"}},[e._v("Lightning Network")]),e._v(" immediately go to a settled state, as their settlement is instant.")],1)])]),e._v(" "),t("li",[e._v("** Paid Partial invoice usually happens when a buyer pays the invoice from the exchange wallet which takes a fee for their service and deducts it from a total. In some cases, it happens when buyer enters an incorrect amount in their wallet.")]),e._v(" "),t("li",[e._v("*** Invalid - If you're receiving a lot of invalid invoices in your store, you may want to "),t("RouterLink",{attrs:{to:"/FAQ/Stores/#payment-invalid-if-transactions-fails-to-confirm-minutes-after-invoice-expiration"}},[e._v("adjust invalid invoice time in store settings")]),e._v(".")],1)]),e._v(" "),t("h3",{attrs:{id:"invoice-details"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#invoice-details"}},[e._v("#")]),e._v(" Invoice details")]),e._v(" "),t("p",[e._v("The invoice details page contains all information related to an invoice.")]),e._v(" "),t("p",[e._v("Invoice information is created automatically based on invoice status, exchange rate, etc. Product information is created automatically if the invoice was created with product information such as in the Point of Sale app. Read about collecting Buyer information "),t("RouterLink",{attrs:{to:"/FAQ/Stores/#how-to-collect-additional-buyer-information"}},[e._v("here")]),e._v(".")],1),e._v(" "),t("h3",{attrs:{id:"invoice-filtering"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#invoice-filtering"}},[e._v("#")]),e._v(" Invoice filtering")]),e._v(" "),t("p",[e._v("Invoices can be filtered via the quick filters located next to the search button or the advanced filters, which can be toggled by clicking the (Help) link on the top. Users can "),t("strong",[e._v("filter invoices")]),e._v(" by store, order id, item id, status, or date.")]),e._v(" "),t("figure",[t("img",{attrs:{src:i(470),alt:"Invoice Filtering",title:"Invoice Filtering"}})]),e._v(" "),t("h3",{attrs:{id:"invoice-export"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#invoice-export"}},[e._v("#")]),e._v(" Invoice export")]),e._v(" "),t("p",[e._v("BTCPay Server Invoices can be exported in CSV or JSON format. For more information about invoice export and accounting, "),t("RouterLink",{attrs:{to:"/Reporting/"}},[e._v("see this page")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"refunding-an-invoice"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#refunding-an-invoice"}},[e._v("#")]),e._v(" Refunding an invoice")]),e._v(" "),t("p",[e._v("If for any reason you would like to issue a refund, you can easily create a refund from the invoice view. Check our "),t("RouterLink",{attrs:{to:"/Refund/"}},[e._v("refunding documentation")]),e._v(" for more information.")],1),e._v(" "),t("h2",{attrs:{id:"archiving-invoices"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#archiving-invoices"}},[e._v("#")]),e._v(" Archiving invoices")]),e._v(" "),t("p",[e._v("As a result of the no address re-use feature of BTCPay Server, it's common to see many expired invoices in your store's invoice page. To hide them from your view, select them in the list and mark them as "),t("strong",[e._v("archived")]),e._v(". Invoices that have been marked as archived are not deleted. Payment to an archived invoice will still be detected by your BTCPay Server (paidLate status). You can view the store's archived invoices at any time by selecting archived invoices from the search filter dropdown.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[52],{468:function(e,t,i){e.exports=i.p+"assets/img/Invoices.d261efe1.png"},469:function(e,t,i){e.exports=i.p+"assets/img/InvoiceFiltering.71317a76.gif"},758:function(e,t,i){"use strict";i.r(t);var a=i(9),n=Object(a.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"what-is-an-invoice-in-btcpay-server"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#what-is-an-invoice-in-btcpay-server"}},[e._v("#")]),e._v(" What is an invoice in BTCPay Server?")]),e._v(" "),t("p",[e._v("An "),t("strong",[e._v("invoice")]),e._v(" is a document issued by the seller to a buyer to collect payment.")]),e._v(" "),t("p",[e._v("In BTCPay Server, an invoice represents a document that must be paid within a "),t("strong",[e._v("defined time interval")]),e._v(" at a fixed exchange rate. Invoices have expiration because they lock the exchange rate within a specified time frame to protect the receiver from price fluctuations.")]),e._v(" "),t("figure",[t("img",{attrs:{src:i(468),alt:"Invoices",title:"Invoices"}})]),e._v(" "),t("p",[e._v("The core of BTCPay Server is the ability to act as a bitcoin invoice management system. An invoice is an essential tool for keeping track and managing a received payment.")]),e._v(" "),t("p",[e._v("Unless you use a built in "),t("RouterLink",{attrs:{to:"/Wallet/"}},[e._v("Wallet")]),e._v(" to receive payments manually, all payments within a store will be shown on the "),t("code",[e._v("Invoices")]),e._v(" page. This page cumulatively sorts payments by date and is a central piece for invoice management and payment troubleshooting.")],1),e._v(" "),t("h2",{attrs:{id:"invoice-statuses"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#invoice-statuses"}},[e._v("#")]),e._v(" Invoice statuses")]),e._v(" "),t("p",[e._v("Table below lists and describes common invoice statuses in BTCPay and suggests common actions.\nActions are just recommendations.\nIt's up to users to define best course of action for their use-case and business.")]),e._v(" "),t("table",[t("thead",[t("tr",[t("th",[e._v("Invoice Status")]),e._v(" "),t("th",[e._v("Description")]),e._v(" "),t("th",[e._v("Action")])])]),e._v(" "),t("tbody",[t("tr",[t("td",[t("strong",[e._v("New")])]),e._v(" "),t("td",[e._v("Not paid, invoice timer still has not expired")]),e._v(" "),t("td",[e._v("None")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("New (paidPartial)")])]),e._v(" "),t("td",[e._v("Paid, not in full, invoice timer still has not expired")]),e._v(" "),t("td",[e._v("None")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Expired")])]),e._v(" "),t("td",[e._v("Not paid, invoice timer expired")]),e._v(" "),t("td",[e._v("None")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Expired (paidPartial)")]),e._v(" **")]),e._v(" "),t("td",[e._v("Paid, not in full amount, and expired")]),e._v(" "),t("td",[e._v("Contact buyer to arrange a refund or ask for them to pay their due. Optionally mark invoice as settled or invalid")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Expired (paidLate)")])]),e._v(" "),t("td",[e._v("Paid, in full amount, after the invoice timer has expired")]),e._v(" "),t("td",[e._v("Contact buyer to arrange a refund or process order if late confirmations are acceptable.")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Settled (paidOver)")])]),e._v(" "),t("td",[e._v("Paid more than the invoice amount, settled, received sufficient amount of confirmations")]),e._v(" "),t("td",[e._v("Contact buyer to arrange a refund for the extra amount, or optionally wait for buyer to contact you")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Processing")])]),e._v(" "),t("td",[e._v("Paid in full, but has not received sufficient amount of confirmations specified in the store settings")]),e._v(" "),t("td",[e._v("Wait for confirmations (The invoice should become - settled)")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Processing (paidOver)")])]),e._v(" "),t("td",[e._v("Paid more than the invoice amount, not received sufficient amount of confirmations")]),e._v(" "),t("td",[e._v("Wait to be settled then contact buyer to arrange a refund for the extra amount, or optionally wait for buyer to contact you")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Settled")])]),e._v(" "),t("td",[e._v("Paid, in full, received sufficient amount of confirmations in store")]),e._v(" "),t("td",[e._v("Fulfil the order")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Settled (marked)")])]),e._v(" "),t("td",[e._v("Status was manually changed to settled from an processing or invalid status")]),e._v(" "),t("td",[e._v("Store admin has marked the payment as settled")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Invalid*")])]),e._v(" "),t("td",[e._v("Paid, but failed to receive sufficient amount of confirmations within the time specified in store settings")]),e._v(" "),t("td",[e._v("Check the transaction on a blockchain explorer, if it received sufficient confirmations, mark as settled")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Invalid (marked)")])]),e._v(" "),t("td",[e._v("Status was manually changed to invalid from a settled or expired status")]),e._v(" "),t("td",[e._v("Store admin has marked the payment as invalid")])]),e._v(" "),t("tr",[t("td",[t("strong",[e._v("Invalid (paidOver)")])]),e._v(" "),t("td",[e._v("Paid more than the invoice amount, but failed to receive sufficient amount of confirmations within the time specified in store settings")]),e._v(" "),t("td",[e._v("Check the transaction on a blockchain explorer, if it received sufficient confirmations, mark as settled")])])])]),e._v(" "),t("ul",[t("li",[t("ul",[t("li",[e._v("Invoices paid via the "),t("RouterLink",{attrs:{to:"/LightningNetwork/"}},[e._v("Lightning Network")]),e._v(" immediately go to a settled state, as their settlement is instant.")],1)])]),e._v(" "),t("li",[e._v("** Paid Partial invoice usually happens when a buyer pays the invoice from the exchange wallet which takes a fee for their service and deducts it from a total. In some cases, it happens when buyer enters an incorrect amount in their wallet.")]),e._v(" "),t("li",[e._v("*** Invalid - If you're receiving a lot of invalid invoices in your store, you may want to "),t("RouterLink",{attrs:{to:"/FAQ/Stores/#payment-invalid-if-transactions-fails-to-confirm-minutes-after-invoice-expiration"}},[e._v("adjust invalid invoice time in store settings")]),e._v(".")],1)]),e._v(" "),t("h3",{attrs:{id:"invoice-details"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#invoice-details"}},[e._v("#")]),e._v(" Invoice details")]),e._v(" "),t("p",[e._v("The invoice details page contains all information related to an invoice.")]),e._v(" "),t("p",[e._v("Invoice information is created automatically based on invoice status, exchange rate, etc. Product information is created automatically if the invoice was created with product information such as in the Point of Sale app. Read about collecting Buyer information "),t("RouterLink",{attrs:{to:"/FAQ/Stores/#how-to-collect-additional-buyer-information"}},[e._v("here")]),e._v(".")],1),e._v(" "),t("h3",{attrs:{id:"invoice-filtering"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#invoice-filtering"}},[e._v("#")]),e._v(" Invoice filtering")]),e._v(" "),t("p",[e._v("Invoices can be filtered via the quick filters located next to the search button or the advanced filters, which can be toggled by clicking the (Help) link on the top. Users can "),t("strong",[e._v("filter invoices")]),e._v(" by store, order id, item id, status, or date.")]),e._v(" "),t("figure",[t("img",{attrs:{src:i(469),alt:"Invoice Filtering",title:"Invoice Filtering"}})]),e._v(" "),t("h3",{attrs:{id:"invoice-export"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#invoice-export"}},[e._v("#")]),e._v(" Invoice export")]),e._v(" "),t("p",[e._v("BTCPay Server Invoices can be exported in CSV or JSON format. For more information about invoice export and accounting, "),t("RouterLink",{attrs:{to:"/Reporting/"}},[e._v("see this page")]),e._v(".")],1),e._v(" "),t("h2",{attrs:{id:"refunding-an-invoice"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#refunding-an-invoice"}},[e._v("#")]),e._v(" Refunding an invoice")]),e._v(" "),t("p",[e._v("If for any reason you would like to issue a refund, you can easily create a refund from the invoice view. Check our "),t("RouterLink",{attrs:{to:"/Refund/"}},[e._v("refunding documentation")]),e._v(" for more information.")],1),e._v(" "),t("h2",{attrs:{id:"archiving-invoices"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#archiving-invoices"}},[e._v("#")]),e._v(" Archiving invoices")]),e._v(" "),t("p",[e._v("As a result of the no address re-use feature of BTCPay Server, it's common to see many expired invoices in your store's invoice page. To hide them from your view, select them in the list and mark them as "),t("strong",[e._v("archived")]),e._v(". Invoices that have been marked as archived are not deleted. Payment to an archived invoice will still be detected by your BTCPay Server (paidLate status). You can view the store's archived invoices at any time by selecting archived invoices from the search filter dropdown.")])])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/60.9e9ca465.js b/assets/js/60.ff0b404c.js similarity index 91% rename from assets/js/60.9e9ca465.js rename to assets/js/60.ff0b404c.js index a56f91de09..bf38925d1d 100644 --- a/assets/js/60.9e9ca465.js +++ b/assets/js/60.ff0b404c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{311:function(t,e,r){t.exports=r.p+"assets/img/BTCPayGettingStartedStoreRegistration1.5c04bbfc.jpg"},693:function(t,e,r){"use strict";r.r(e);var a=r(9),o=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"2-create-a-store"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#2-create-a-store"}},[t._v("#")]),t._v(" (2) Create a store")]),t._v(" "),e("h2",{attrs:{id:"creating-a-store-in-btcpay-server"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-store-in-btcpay-server"}},[t._v("#")]),t._v(" Creating a Store in BTCPay Server")]),t._v(" "),e("p",[t._v("Inside BTCPay Server, an unlimited number of stores can be created. Each store needs to be "),e("RouterLink",{attrs:{to:"/WalletSetup/"}},[t._v("connected to a wallet")]),t._v(", can have apps (Point of Sale, Payment Buttons and Crowdfunding) attached to it, or be paired with external e-commerce software through one of many available integrations.")],1),t._v(" "),e("p",[t._v("To "),e("strong",[t._v("create a store")]),t._v(", make sure you're logged in into your account, and go to > "),e("strong",[t._v("Stores")]),t._v(" in the upper navigation menu. Click on the "),e("strong",[t._v("create a new store")]),t._v(" button. Enter the store name into the text field and click "),e("code",[t._v("Create")]),t._v(".")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(311),alt:"BTCPayRegister2",title:"BTCPayRegister2"}})]),t._v(" "),e("h2",{attrs:{id:"customizing-your-btcpay-store-settings"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#customizing-your-btcpay-store-settings"}},[t._v("#")]),t._v(" Customizing your BTCPay Store Settings")]),t._v(" "),e("p",[t._v("Store > Settings provides basic control over the individual store settings. Modify the confirmations, invoice expiry and more. For more information, check "),e("RouterLink",{attrs:{to:"/FAQ/Stores/"}},[t._v("Stores FAQ")]),t._v(".")],1),t._v(" "),e("p",[e("strong",[e("em",[t._v("Proceed to the next step - "),e("RouterLink",{attrs:{to:"/WalletSetup/"}},[t._v("Connecting a Wallet")]),t._v(".")],1)])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[60],{320:function(t,e,r){t.exports=r.p+"assets/img/BTCPayGettingStartedStoreRegistration1.5c04bbfc.jpg"},694:function(t,e,r){"use strict";r.r(e);var a=r(9),o=Object(a.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"2-create-a-store"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#2-create-a-store"}},[t._v("#")]),t._v(" (2) Create a store")]),t._v(" "),e("h2",{attrs:{id:"creating-a-store-in-btcpay-server"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#creating-a-store-in-btcpay-server"}},[t._v("#")]),t._v(" Creating a Store in BTCPay Server")]),t._v(" "),e("p",[t._v("Inside BTCPay Server, an unlimited number of stores can be created. Each store needs to be "),e("RouterLink",{attrs:{to:"/WalletSetup/"}},[t._v("connected to a wallet")]),t._v(", can have apps (Point of Sale, Payment Buttons and Crowdfunding) attached to it, or be paired with external e-commerce software through one of many available integrations.")],1),t._v(" "),e("p",[t._v("To "),e("strong",[t._v("create a store")]),t._v(", make sure you're logged in into your account, and go to > "),e("strong",[t._v("Stores")]),t._v(" in the upper navigation menu. Click on the "),e("strong",[t._v("create a new store")]),t._v(" button. Enter the store name into the text field and click "),e("code",[t._v("Create")]),t._v(".")]),t._v(" "),e("figure",[e("img",{attrs:{src:r(320),alt:"BTCPayRegister2",title:"BTCPayRegister2"}})]),t._v(" "),e("h2",{attrs:{id:"customizing-your-btcpay-store-settings"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#customizing-your-btcpay-store-settings"}},[t._v("#")]),t._v(" Customizing your BTCPay Store Settings")]),t._v(" "),e("p",[t._v("Store > Settings provides basic control over the individual store settings. Modify the confirmations, invoice expiry and more. For more information, check "),e("RouterLink",{attrs:{to:"/FAQ/Stores/"}},[t._v("Stores FAQ")]),t._v(".")],1),t._v(" "),e("p",[e("strong",[e("em",[t._v("Proceed to the next step - "),e("RouterLink",{attrs:{to:"/WalletSetup/"}},[t._v("Connecting a Wallet")]),t._v(".")],1)])])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/67.a079740e.js b/assets/js/67.892f599e.js similarity index 96% rename from assets/js/67.a079740e.js rename to assets/js/67.892f599e.js index efdd937b59..d821bb46b2 100644 --- a/assets/js/67.a079740e.js +++ b/assets/js/67.892f599e.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{468:function(t,e,a){t.exports=a.p+"assets/img/support.970aea07.png"},758:function(t,e,a){"use strict";a.r(e);var n=a(9),o=Object(n.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"lndhub-api"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lndhub-api"}},[t._v("#")]),t._v(" LNDhub API")]),t._v(" "),e("p",[t._v("A plugin for "),e("a",{attrs:{href:"https://github.com/btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[t._v("BTCPay Server"),e("OutboundLink")],1),t._v(" to add a LNDhub-compatible API for stores.\nThis means that your store's Lightning wallet can be used with the following wallet apps:")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://bluewallet.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("BlueWallet"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://zeusln.app/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Zeus"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://getalby.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Alby"),e("OutboundLink")],1)])]),t._v(" "),e("p",[t._v("These wallets offer import features, so that you can easily import your store's Lightning wallets into these apps.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("NOTE")]),t._v(" "),e("p",[t._v("The prerequisite for a Lightning wallet to be accessible like this is enabling the plugin for your store.\nPlease note that this offers full access to the Lightning node that is connected to the store, not just the BTCPay Server-related activity.")])]),t._v(" "),e("h2",{attrs:{id:"importing-the-wallet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#importing-the-wallet"}},[t._v("#")]),t._v(" Importing the wallet")]),t._v(" "),e("p",[t._v('On the LNDhub API settings page you will find the "Connect LNDhub-compatible wallet" section.\nIt has a QR code and the Access URL, which contain the details (server URL and credentials) to connect the apps.')]),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("The credentials allow unrestricted access to your store's Lightning node.\nTreat the QR code and Access URL as confidential information!")])]),t._v(" "),e("h3",{attrs:{id:"bluewallet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bluewallet"}},[t._v("#")]),t._v(" BlueWallet")]),t._v(" "),e("p",[t._v("In BlueWallet you can use this path to import the wallet:")]),t._v(" "),e("p",[e("code",[t._v("Add Wallet > Import Wallet > Scan or import file")]),t._v(".")]),t._v(" "),e("p",[t._v("You can then scan the QR code from the LNDhub API plugin page.\nOnce the wallet is imported, you can also set a name.")]),t._v(" "),e("h3",{attrs:{id:"zeus"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#zeus"}},[t._v("#")]),t._v(" Zeus")]),t._v(" "),e("p",[t._v("In Zeus you can use this path to import the wallet:")]),t._v(" "),e("ul",[e("li",[t._v("Open the settings by clicking on the node icon in the top left corner.")]),t._v(" "),e("li",[t._v("In the settings click the node (first row) to get to the list of nodes.")]),t._v(" "),e("li",[t._v("Click the plus icon in the top right corner to add a new node/wallet.")])]),t._v(" "),e("p",[t._v("You will land on the following screen and have to …")]),t._v(" "),e("ul",[e("li",[t._v('Choose "LNDHub" as the "Node Interface"')]),t._v(" "),e("li",[t._v('Enable the "Existing account" toggle')]),t._v(" "),e("li",[t._v('Click the "Scan LNDHub QR" button and scan the code')])]),t._v(" "),e("h3",{attrs:{id:"alby"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#alby"}},[t._v("#")]),t._v(" Alby")]),t._v(" "),e("p",[t._v('In the Alby account dropdown, choose "Add a new account".\nOn the "Add a new lightning account" choose "LNDhub (BlueWallet)".')]),t._v(" "),e("p",[t._v('Now you can either copy and paste the account URL from the LNDhub API plugin page or scan the QR code.\nOnce the account is initialized, you should see a "Success!" message.')]),t._v(" "),e("p",[t._v("There is also the possibility to "),e("a",{attrs:{href:"https://guides.getalby.com/overall-guide/alby-browser-extension/connect-lightning-wallets-and-nodes-to-the-alby-extension/connect-btcpay-server",target:"_blank",rel:"noopener noreferrer"}},[t._v("connect BTCPay Server to the Alby Browser Extension"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"support-this-plugin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#support-this-plugin"}},[t._v("#")]),t._v(" Support this plugin")]),t._v(" "),e("figure",[e("a",{attrs:{href:"https://github.com/dennisreimann/btcpayserver-plugin-lndhub-api/blob/master/lightning:LNURL1DP68GURN8GHJ7AMPD3KX2AR0VEEKZAR0WD5XJTNRDAKJ7TNHV4KXCTTTDEHHWM30D3H82UNVWQHKXUN0WAJX2ER9V9E8G6PN8QSKVTEZ",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:a(468),alt:"Support this plugin",title:"Support this plugin"}}),e("OutboundLink")],1)])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[67],{470:function(t,e,a){t.exports=a.p+"assets/img/support.970aea07.png"},759:function(t,e,a){"use strict";a.r(e);var n=a(9),o=Object(n.a)({},(function(){var t=this,e=t._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[e("h1",{attrs:{id:"lndhub-api"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#lndhub-api"}},[t._v("#")]),t._v(" LNDhub API")]),t._v(" "),e("p",[t._v("A plugin for "),e("a",{attrs:{href:"https://github.com/btcpayserver",target:"_blank",rel:"noopener noreferrer"}},[t._v("BTCPay Server"),e("OutboundLink")],1),t._v(" to add a LNDhub-compatible API for stores.\nThis means that your store's Lightning wallet can be used with the following wallet apps:")]),t._v(" "),e("ul",[e("li",[e("a",{attrs:{href:"https://bluewallet.io/",target:"_blank",rel:"noopener noreferrer"}},[t._v("BlueWallet"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://zeusln.app/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Zeus"),e("OutboundLink")],1)]),t._v(" "),e("li",[e("a",{attrs:{href:"https://getalby.com/",target:"_blank",rel:"noopener noreferrer"}},[t._v("Alby"),e("OutboundLink")],1)])]),t._v(" "),e("p",[t._v("These wallets offer import features, so that you can easily import your store's Lightning wallets into these apps.")]),t._v(" "),e("div",{staticClass:"custom-block tip"},[e("p",{staticClass:"custom-block-title"},[t._v("NOTE")]),t._v(" "),e("p",[t._v("The prerequisite for a Lightning wallet to be accessible like this is enabling the plugin for your store.\nPlease note that this offers full access to the Lightning node that is connected to the store, not just the BTCPay Server-related activity.")])]),t._v(" "),e("h2",{attrs:{id:"importing-the-wallet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#importing-the-wallet"}},[t._v("#")]),t._v(" Importing the wallet")]),t._v(" "),e("p",[t._v('On the LNDhub API settings page you will find the "Connect LNDhub-compatible wallet" section.\nIt has a QR code and the Access URL, which contain the details (server URL and credentials) to connect the apps.')]),t._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[t._v("WARNING")]),t._v(" "),e("p",[t._v("The credentials allow unrestricted access to your store's Lightning node.\nTreat the QR code and Access URL as confidential information!")])]),t._v(" "),e("h3",{attrs:{id:"bluewallet"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#bluewallet"}},[t._v("#")]),t._v(" BlueWallet")]),t._v(" "),e("p",[t._v("In BlueWallet you can use this path to import the wallet:")]),t._v(" "),e("p",[e("code",[t._v("Add Wallet > Import Wallet > Scan or import file")]),t._v(".")]),t._v(" "),e("p",[t._v("You can then scan the QR code from the LNDhub API plugin page.\nOnce the wallet is imported, you can also set a name.")]),t._v(" "),e("h3",{attrs:{id:"zeus"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#zeus"}},[t._v("#")]),t._v(" Zeus")]),t._v(" "),e("p",[t._v("In Zeus you can use this path to import the wallet:")]),t._v(" "),e("ul",[e("li",[t._v("Open the settings by clicking on the node icon in the top left corner.")]),t._v(" "),e("li",[t._v("In the settings click the node (first row) to get to the list of nodes.")]),t._v(" "),e("li",[t._v("Click the plus icon in the top right corner to add a new node/wallet.")])]),t._v(" "),e("p",[t._v("You will land on the following screen and have to …")]),t._v(" "),e("ul",[e("li",[t._v('Choose "LNDHub" as the "Node Interface"')]),t._v(" "),e("li",[t._v('Enable the "Existing account" toggle')]),t._v(" "),e("li",[t._v('Click the "Scan LNDHub QR" button and scan the code')])]),t._v(" "),e("h3",{attrs:{id:"alby"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#alby"}},[t._v("#")]),t._v(" Alby")]),t._v(" "),e("p",[t._v('In the Alby account dropdown, choose "Add a new account".\nOn the "Add a new lightning account" choose "LNDhub (BlueWallet)".')]),t._v(" "),e("p",[t._v('Now you can either copy and paste the account URL from the LNDhub API plugin page or scan the QR code.\nOnce the account is initialized, you should see a "Success!" message.')]),t._v(" "),e("p",[t._v("There is also the possibility to "),e("a",{attrs:{href:"https://guides.getalby.com/overall-guide/alby-browser-extension/connect-lightning-wallets-and-nodes-to-the-alby-extension/connect-btcpay-server",target:"_blank",rel:"noopener noreferrer"}},[t._v("connect BTCPay Server to the Alby Browser Extension"),e("OutboundLink")],1),t._v(".")]),t._v(" "),e("h2",{attrs:{id:"support-this-plugin"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#support-this-plugin"}},[t._v("#")]),t._v(" Support this plugin")]),t._v(" "),e("figure",[e("a",{attrs:{href:"https://github.com/dennisreimann/btcpayserver-plugin-lndhub-api/blob/master/lightning:LNURL1DP68GURN8GHJ7AMPD3KX2AR0VEEKZAR0WD5XJTNRDAKJ7TNHV4KXCTTTDEHHWM30D3H82UNVWQHKXUN0WAJX2ER9V9E8G6PN8QSKVTEZ",target:"_blank",rel:"noopener noreferrer"}},[e("img",{attrs:{src:a(470),alt:"Support this plugin",title:"Support this plugin"}}),e("OutboundLink")],1)])])}),[],!1,null,null,null);e.default=o.exports}}]); \ No newline at end of file diff --git a/assets/js/90.65a52573.js b/assets/js/90.85851442.js similarity index 99% rename from assets/js/90.65a52573.js rename to assets/js/90.85851442.js index d18e08ae98..e117cc94d4 100644 --- a/assets/js/90.65a52573.js +++ b/assets/js/90.85851442.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{695:function(t,a,e){"use strict";e.r(a);var s=e(9),n=Object(s.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"using-the-btcpay-api-for-custom-integration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-the-btcpay-api-for-custom-integration"}},[t._v("#")]),t._v(" Using the BTCPay API for Custom Integration")]),t._v(" "),a("p",[t._v("BTCPay Server provides 2 APIS in order to integrate with it:")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/Development/GreenFieldExample/"}},[t._v("GreenField API")]),t._v(" - A RESTful API that aims to allow you to use BTCPay Server headless. This is the recommended API for projects which do not wish to recycle code from a Bitpay integration.")],1),t._v(" "),a("li",[t._v("Bitpay Invoice API - BTCPay implements the same API as Bitpay for creating and managing invoices.")])]),t._v(" "),a("p",[a("strong",[t._v("Migrating from BitPay to BTCPay")]),t._v(" normally is as easy as changing a URL.")]),t._v(" "),a("p",[t._v("While Bitpay only allows one account for one merchant, BTCPay allows a user to manage multiple stores.")]),t._v(" "),a("h2",{attrs:{id:"official-client-libraries"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#official-client-libraries"}},[t._v("#")]),t._v(" Official Client Libraries")]),t._v(" "),a("p",[t._v("BTCPay maintains official client libraries for "),a("a",{attrs:{href:"https://github.com/MetacoSA/NBitpayClient",target:"_blank",rel:"noopener noreferrer"}},[t._v("C#"),a("OutboundLink")],1),t._v(", "),a("a",{attrs:{href:"https://github.com/btcpayserver/btcpay-python",target:"_blank",rel:"noopener noreferrer"}},[t._v("Python"),a("OutboundLink")],1),t._v(" and "),a("a",{attrs:{href:"https://github.com/btcpayserver/node-btcpay",target:"_blank",rel:"noopener noreferrer"}},[t._v("NodeJS"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("In addition, there are forked repositories of Bitpay's "),a("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-php-client",target:"_blank",rel:"noopener noreferrer"}},[t._v("PHP"),a("OutboundLink")],1),t._v(" and "),a("a",{attrs:{href:"https://github.com/bitpay/ruby-client",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ruby"),a("OutboundLink")],1),t._v(" clients.")]),t._v(" "),a("h2",{attrs:{id:"accessing-the-api-manually"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-api-manually"}},[t._v("#")]),t._v(" Accessing the API Manually")]),t._v(" "),a("p",[t._v("If not using one of the libraries above, the REST API can be accessed manually.")]),t._v(" "),a("p",[t._v("The authentication mechanism is using "),a("code",[t._v("BitId")]),t._v(".")]),t._v(" "),a("p",[t._v("With "),a("code",[t._v("BitId")]),t._v(", the "),a("code",[t._v("client")]),t._v(" of the API (like an e-commerce plugin) generates a private key, then informs the "),a("code",[t._v("server")]),t._v(" (BTCPay) about the "),a("code",[t._v("public key")]),t._v(".")]),t._v(" "),a("p",[t._v("Every requests to the API sent by the client is signed with the client's "),a("code",[t._v("private key")]),t._v(".")]),t._v(" "),a("p",[t._v("We call "),a("code",[t._v("pairing")]),t._v(" the process to inform BTCPay about your "),a("code",[t._v("public key")]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"pairing-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pairing-process"}},[t._v("#")]),t._v(" Pairing process")]),t._v(" "),a("p",[t._v("Your first need to create a new store:")]),t._v(" "),a("ol",[a("li",[t._v("Log in")]),t._v(" "),a("li",[t._v("Go to Stores menu")]),t._v(" "),a("li",[t._v("Click on "),a("code",[t._v("Create a new store")])]),t._v(" "),a("li",[t._v("Enter a friendly name for the store, validate.")])]),t._v(" "),a("p",[t._v("There is two method of "),a("code",[t._v("pairing")]),t._v(", client side pairing and server side pairing.")]),t._v(" "),a("h3",{attrs:{id:"client-side-pairing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-side-pairing"}},[t._v("#")]),t._v(" Client side pairing")]),t._v(" "),a("p",[t._v("With client side pairing, the "),a("code",[t._v("client")]),t._v(" generates a URL from their "),a("code",[t._v("public key")]),t._v(" which a human user can browse to validate the pairing.")]),t._v(" "),a("p",[t._v("Typically the URL looks like "),a("code",[t._v("https://btcpay.example.com/api-access-request?pairingCode=")]),t._v(".")]),t._v(" "),a("p",[t._v("You can find documentation about how to achieve this with "),a("a",{attrs:{href:"https://support.bitpay.com/hc/en-us/articles/115003001183-How-do-I-pair-my-client-and-create-a-token-",target:"_blank",rel:"noopener noreferrer"}},[t._v("this link"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"server-side-pairing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-pairing"}},[t._v("#")]),t._v(" Server side pairing")]),t._v(" "),a("p",[t._v("The second way, is to generate your private key via some bitcoin library then:")]),t._v(" "),a("ol",[a("li",[t._v("Go to the store's settings")]),t._v(" "),a("li",[t._v("Click on "),a("code",[t._v("Access tokens")])]),t._v(" "),a("li",[t._v("Click on "),a("code",[t._v("Create new Token")])]),t._v(" "),a("li",[t._v("Select merchant's facade and enter your public key,")]),t._v(" "),a("li",[t._v("Click request pairing")]),t._v(" "),a("li",[t._v("Click on Approve")])]),t._v(" "),a("h2",{attrs:{id:"note"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#note"}},[t._v("#")]),t._v(" Note")]),t._v(" "),a("p",[a("strong",[t._v("BTCPay Server has an API compatible with Bitpay")]),t._v("; changing your e-commerce application "),a("strong",[t._v("from Bitpay to BTCPay")]),t._v(" should take minimal effort.")]),t._v(" "),a("p",[t._v("You can read the full API documentation "),a("a",{attrs:{href:"https://bitpay.com/api#resource-Invoices",target:"_blank",rel:"noopener noreferrer"}},[t._v("on Bitpay's website"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("There is only one difference: Bitpay only allows one account for one merchant, BTCPay allows a user to manage multiple stores.")]),t._v(" "),a("h2",{attrs:{id:"modal-checkout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#modal-checkout"}},[t._v("#")]),t._v(" Modal Checkout")]),t._v(" "),a("p",[t._v("To generate a pop-up modal experience:")]),t._v(" "),a("ol",[a("li",[t._v("Include the btcpay.js script in your html page")])]),t._v(" "),a("div",{staticClass:"language-html extra-class"},[a("pre",{pre:!0,attrs:{class:"language-html"}},[a("code",[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation attr-equals"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v('"')]),t._v("https://your.btcpay.url/modal/btcpay.js"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{pre:!0,attrs:{class:"token script"}}),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Call the invoice API to generate an invoice (example code). This is sample backend code as it contains an auth token that should not be exposed in your front-end.")])]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" axiosClient "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" axios"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("create")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baseURL")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token constant"}},[t._v("BTCPAY_URL")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("timeout")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("responseType")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'json'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("headers")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'Content-Type'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'application/json'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("Authorization")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token constant"}},[t._v("BTCPAY_AUTH")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invoiceCreation "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("price")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("12345")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("currency")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'USD'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("orderId")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'something'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("itemDesc")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'item description'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("notificationUrl")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'https://webhook.after.checkout.com/goeshere'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("redirectURL")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'https://go.here.after.checkout.com'")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" response "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" axiosClient"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("post")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/invoices'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" invoiceCreation"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invoiceId "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" response"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Use the invoiceId to pop up the modal")])]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("window"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("btcpay"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("showInvoice")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("invoiceId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("ol",{attrs:{start:"4"}},[a("li",[t._v("You'll often want to do something like refresh the state of your page when the invoice is paid, or note some kind of state before the modal pops up. You can attach event listeners like this:")])]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("window"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("btcpay"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onModalWillEnter")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("yourCallbackFunction"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nwindow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("btcpay"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onModalWillLeave")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("yourCallbackFunction"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nwindow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("btcpay"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onModalReceiveMessage")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("yourCallbackFunction"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// available from v1.0.5.6")]),t._v("\n")])])]),a("p",[a("code",[t._v("onModalReceiveMessage")]),t._v(" will invoke your callback when a new status has been pushed from BTCPay Server to the invoice UI. The data format is "),a("code",[t._v('{invoiceId: "x", status: "y" }')])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[90],{696:function(t,a,e){"use strict";e.r(a);var s=e(9),n=Object(s.a)({},(function(){var t=this,a=t._self._c;return a("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[a("h1",{attrs:{id:"using-the-btcpay-api-for-custom-integration"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#using-the-btcpay-api-for-custom-integration"}},[t._v("#")]),t._v(" Using the BTCPay API for Custom Integration")]),t._v(" "),a("p",[t._v("BTCPay Server provides 2 APIS in order to integrate with it:")]),t._v(" "),a("ul",[a("li",[a("RouterLink",{attrs:{to:"/Development/GreenFieldExample/"}},[t._v("GreenField API")]),t._v(" - A RESTful API that aims to allow you to use BTCPay Server headless. This is the recommended API for projects which do not wish to recycle code from a Bitpay integration.")],1),t._v(" "),a("li",[t._v("Bitpay Invoice API - BTCPay implements the same API as Bitpay for creating and managing invoices.")])]),t._v(" "),a("p",[a("strong",[t._v("Migrating from BitPay to BTCPay")]),t._v(" normally is as easy as changing a URL.")]),t._v(" "),a("p",[t._v("While Bitpay only allows one account for one merchant, BTCPay allows a user to manage multiple stores.")]),t._v(" "),a("h2",{attrs:{id:"official-client-libraries"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#official-client-libraries"}},[t._v("#")]),t._v(" Official Client Libraries")]),t._v(" "),a("p",[t._v("BTCPay maintains official client libraries for "),a("a",{attrs:{href:"https://github.com/MetacoSA/NBitpayClient",target:"_blank",rel:"noopener noreferrer"}},[t._v("C#"),a("OutboundLink")],1),t._v(", "),a("a",{attrs:{href:"https://github.com/btcpayserver/btcpay-python",target:"_blank",rel:"noopener noreferrer"}},[t._v("Python"),a("OutboundLink")],1),t._v(" and "),a("a",{attrs:{href:"https://github.com/btcpayserver/node-btcpay",target:"_blank",rel:"noopener noreferrer"}},[t._v("NodeJS"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("In addition, there are forked repositories of Bitpay's "),a("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-php-client",target:"_blank",rel:"noopener noreferrer"}},[t._v("PHP"),a("OutboundLink")],1),t._v(" and "),a("a",{attrs:{href:"https://github.com/bitpay/ruby-client",target:"_blank",rel:"noopener noreferrer"}},[t._v("Ruby"),a("OutboundLink")],1),t._v(" clients.")]),t._v(" "),a("h2",{attrs:{id:"accessing-the-api-manually"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#accessing-the-api-manually"}},[t._v("#")]),t._v(" Accessing the API Manually")]),t._v(" "),a("p",[t._v("If not using one of the libraries above, the REST API can be accessed manually.")]),t._v(" "),a("p",[t._v("The authentication mechanism is using "),a("code",[t._v("BitId")]),t._v(".")]),t._v(" "),a("p",[t._v("With "),a("code",[t._v("BitId")]),t._v(", the "),a("code",[t._v("client")]),t._v(" of the API (like an e-commerce plugin) generates a private key, then informs the "),a("code",[t._v("server")]),t._v(" (BTCPay) about the "),a("code",[t._v("public key")]),t._v(".")]),t._v(" "),a("p",[t._v("Every requests to the API sent by the client is signed with the client's "),a("code",[t._v("private key")]),t._v(".")]),t._v(" "),a("p",[t._v("We call "),a("code",[t._v("pairing")]),t._v(" the process to inform BTCPay about your "),a("code",[t._v("public key")]),t._v(".")]),t._v(" "),a("h2",{attrs:{id:"pairing-process"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#pairing-process"}},[t._v("#")]),t._v(" Pairing process")]),t._v(" "),a("p",[t._v("Your first need to create a new store:")]),t._v(" "),a("ol",[a("li",[t._v("Log in")]),t._v(" "),a("li",[t._v("Go to Stores menu")]),t._v(" "),a("li",[t._v("Click on "),a("code",[t._v("Create a new store")])]),t._v(" "),a("li",[t._v("Enter a friendly name for the store, validate.")])]),t._v(" "),a("p",[t._v("There is two method of "),a("code",[t._v("pairing")]),t._v(", client side pairing and server side pairing.")]),t._v(" "),a("h3",{attrs:{id:"client-side-pairing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#client-side-pairing"}},[t._v("#")]),t._v(" Client side pairing")]),t._v(" "),a("p",[t._v("With client side pairing, the "),a("code",[t._v("client")]),t._v(" generates a URL from their "),a("code",[t._v("public key")]),t._v(" which a human user can browse to validate the pairing.")]),t._v(" "),a("p",[t._v("Typically the URL looks like "),a("code",[t._v("https://btcpay.example.com/api-access-request?pairingCode=")]),t._v(".")]),t._v(" "),a("p",[t._v("You can find documentation about how to achieve this with "),a("a",{attrs:{href:"https://support.bitpay.com/hc/en-us/articles/115003001183-How-do-I-pair-my-client-and-create-a-token-",target:"_blank",rel:"noopener noreferrer"}},[t._v("this link"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("h3",{attrs:{id:"server-side-pairing"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#server-side-pairing"}},[t._v("#")]),t._v(" Server side pairing")]),t._v(" "),a("p",[t._v("The second way, is to generate your private key via some bitcoin library then:")]),t._v(" "),a("ol",[a("li",[t._v("Go to the store's settings")]),t._v(" "),a("li",[t._v("Click on "),a("code",[t._v("Access tokens")])]),t._v(" "),a("li",[t._v("Click on "),a("code",[t._v("Create new Token")])]),t._v(" "),a("li",[t._v("Select merchant's facade and enter your public key,")]),t._v(" "),a("li",[t._v("Click request pairing")]),t._v(" "),a("li",[t._v("Click on Approve")])]),t._v(" "),a("h2",{attrs:{id:"note"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#note"}},[t._v("#")]),t._v(" Note")]),t._v(" "),a("p",[a("strong",[t._v("BTCPay Server has an API compatible with Bitpay")]),t._v("; changing your e-commerce application "),a("strong",[t._v("from Bitpay to BTCPay")]),t._v(" should take minimal effort.")]),t._v(" "),a("p",[t._v("You can read the full API documentation "),a("a",{attrs:{href:"https://bitpay.com/api#resource-Invoices",target:"_blank",rel:"noopener noreferrer"}},[t._v("on Bitpay's website"),a("OutboundLink")],1),t._v(".")]),t._v(" "),a("p",[t._v("There is only one difference: Bitpay only allows one account for one merchant, BTCPay allows a user to manage multiple stores.")]),t._v(" "),a("h2",{attrs:{id:"modal-checkout"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#modal-checkout"}},[t._v("#")]),t._v(" Modal Checkout")]),t._v(" "),a("p",[t._v("To generate a pop-up modal experience:")]),t._v(" "),a("ol",[a("li",[t._v("Include the btcpay.js script in your html page")])]),t._v(" "),a("div",{staticClass:"language-html extra-class"},[a("pre",{pre:!0,attrs:{class:"language-html"}},[a("code",[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("<")]),t._v("script")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token attr-name"}},[t._v("src")]),a("span",{pre:!0,attrs:{class:"token attr-value"}},[a("span",{pre:!0,attrs:{class:"token punctuation attr-equals"}},[t._v("=")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v('"')]),t._v("https://your.btcpay.url/modal/btcpay.js"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v('"')])]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(">")])]),a("span",{pre:!0,attrs:{class:"token script"}}),a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token tag"}},[a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("")])]),t._v("\n")])])]),a("ol",{attrs:{start:"2"}},[a("li",[t._v("Call the invoice API to generate an invoice (example code). This is sample backend code as it contains an auth token that should not be exposed in your front-end.")])]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" axiosClient "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" axios"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("create")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("baseURL")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token constant"}},[t._v("BTCPAY_URL")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("timeout")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("5000")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("responseType")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'json'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("headers")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token string-property property"}},[t._v("'Content-Type'")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'application/json'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("Authorization")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token constant"}},[t._v("BTCPAY_AUTH")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invoiceCreation "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("{")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("price")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token number"}},[t._v("12345")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("currency")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'USD'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("orderId")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'something'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("itemDesc")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'item description'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("notificationUrl")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'https://webhook.after.checkout.com/goeshere'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v("\n "),a("span",{pre:!0,attrs:{class:"token literal-property property"}},[t._v("redirectURL")]),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v(":")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'https://go.here.after.checkout.com'")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("}")]),t._v("\n\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" response "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("await")]),t._v(" axiosClient"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("post")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),a("span",{pre:!0,attrs:{class:"token string"}},[t._v("'/invoices'")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(",")]),t._v(" invoiceCreation"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n"),a("span",{pre:!0,attrs:{class:"token keyword"}},[t._v("const")]),t._v(" invoiceId "),a("span",{pre:!0,attrs:{class:"token operator"}},[t._v("=")]),t._v(" response"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("data"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("id\n")])])]),a("ol",{attrs:{start:"3"}},[a("li",[t._v("Use the invoiceId to pop up the modal")])]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("window"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("btcpay"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("showInvoice")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("invoiceId"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\n")])])]),a("ol",{attrs:{start:"4"}},[a("li",[t._v("You'll often want to do something like refresh the state of your page when the invoice is paid, or note some kind of state before the modal pops up. You can attach event listeners like this:")])]),t._v(" "),a("div",{staticClass:"language-js extra-class"},[a("pre",{pre:!0,attrs:{class:"language-js"}},[a("code",[t._v("window"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("btcpay"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onModalWillEnter")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("yourCallbackFunction"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nwindow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("btcpay"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onModalWillLeave")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("yourCallbackFunction"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v("\nwindow"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),t._v("btcpay"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(".")]),a("span",{pre:!0,attrs:{class:"token function"}},[t._v("onModalReceiveMessage")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v("(")]),t._v("yourCallbackFunction"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[t._v(")")]),t._v(" "),a("span",{pre:!0,attrs:{class:"token comment"}},[t._v("// available from v1.0.5.6")]),t._v("\n")])])]),a("p",[a("code",[t._v("onModalReceiveMessage")]),t._v(" will invoke your callback when a new status has been pushed from BTCPay Server to the invoice UI. The data format is "),a("code",[t._v('{invoiceId: "x", status: "y" }')])])])}),[],!1,null,null,null);a.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/93.df96d58e.js b/assets/js/93.854fcc6f.js similarity index 98% rename from assets/js/93.df96d58e.js rename to assets/js/93.854fcc6f.js index e6fa8c8b26..5a9c3664a6 100644 --- a/assets/js/93.df96d58e.js +++ b/assets/js/93.854fcc6f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{708:function(e,r,t){"use strict";t.r(r);var a=t(9),n=Object(a.a)({},(function(){var e=this,r=e._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"hardware-as-a-service"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#hardware-as-a-service"}},[e._v("#")]),e._v(" Hardware As A Service")]),e._v(" "),r("p",[e._v("Multiple entities or companies in the Bitcoin space provide "),r("strong",[e._v("preinstalled hardware that include BTCPay Server")]),e._v(".\nInstalled for example on Raspberry Pi or Rock64 devices, the BTCPay Server instance sits besides other software stacks.")]),e._v(" "),r("p",[e._v("This "),r("strong",[e._v("Hardware As A Service")]),e._v(" can be free or paid, and is mostly open-sourced for peer-review.")]),e._v(" "),r("p",[e._v("They are suitable for technical users to speed up the installation and intitial syncing process.\nLess-technical users will find the 1-click or plug-and-play systems of these services incredibly practical.")]),e._v(" "),r("div",{staticClass:"custom-block warning"},[r("p",{staticClass:"custom-block-title"},[e._v("Please note:")]),e._v(" "),r("p",[e._v("Hardware-as-a-Service products consist of multiple softwares tied together.\nThe BTCPay Server community has no knowledge of how BTCPay Server integrates into these services, and cannot provide any support for these types of "),r("RouterLink",{attrs:{to:"/Deployment/ManualDeployment/"}},[e._v("Manual Deployments")]),e._v(". Please report bugs and issues directly to the entity that provided you with BTCPay Server inside their product.")],1)]),e._v(" "),r("p",[e._v("Here you can find a non-exhaustive list of companies that provide such a service:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://www.nodl.it/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nodl"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://www.dglab.com/en/works/hack0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hack0"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://lightninginabox.co/",target:"_blank",rel:"noopener noreferrer"}},[e._v("LightningInABox"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://mynodebtc.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MyNode"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://raspiblitz.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("RaspiBlitz"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://umbrel.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Umbrel"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://start9.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Embassy"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://runcitadel.space/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Citadel"),r("OutboundLink")],1)])]),e._v(" "),r("p",[e._v("Do you provide Hardware As A Service and are not listed here?\nOpen an issue to "),r("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-doc/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("get added to this list"),r("OutboundLink")],1)])])}),[],!1,null,null,null);r.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[93],{706:function(e,r,t){"use strict";t.r(r);var a=t(9),n=Object(a.a)({},(function(){var e=this,r=e._self._c;return r("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[r("h1",{attrs:{id:"hardware-as-a-service"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#hardware-as-a-service"}},[e._v("#")]),e._v(" Hardware As A Service")]),e._v(" "),r("p",[e._v("Multiple entities or companies in the Bitcoin space provide "),r("strong",[e._v("preinstalled hardware that include BTCPay Server")]),e._v(".\nInstalled for example on Raspberry Pi or Rock64 devices, the BTCPay Server instance sits besides other software stacks.")]),e._v(" "),r("p",[e._v("This "),r("strong",[e._v("Hardware As A Service")]),e._v(" can be free or paid, and is mostly open-sourced for peer-review.")]),e._v(" "),r("p",[e._v("They are suitable for technical users to speed up the installation and intitial syncing process.\nLess-technical users will find the 1-click or plug-and-play systems of these services incredibly practical.")]),e._v(" "),r("div",{staticClass:"custom-block warning"},[r("p",{staticClass:"custom-block-title"},[e._v("Please note:")]),e._v(" "),r("p",[e._v("Hardware-as-a-Service products consist of multiple softwares tied together.\nThe BTCPay Server community has no knowledge of how BTCPay Server integrates into these services, and cannot provide any support for these types of "),r("RouterLink",{attrs:{to:"/Deployment/ManualDeployment/"}},[e._v("Manual Deployments")]),e._v(". Please report bugs and issues directly to the entity that provided you with BTCPay Server inside their product.")],1)]),e._v(" "),r("p",[e._v("Here you can find a non-exhaustive list of companies that provide such a service:")]),e._v(" "),r("ul",[r("li",[r("a",{attrs:{href:"https://www.nodl.it/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nodl"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://www.dglab.com/en/works/hack0/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Hack0"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://lightninginabox.co/",target:"_blank",rel:"noopener noreferrer"}},[e._v("LightningInABox"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://mynodebtc.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("MyNode"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://raspiblitz.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("RaspiBlitz"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://umbrel.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Umbrel"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://start9.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Embassy"),r("OutboundLink")],1)]),e._v(" "),r("li",[r("a",{attrs:{href:"https://runcitadel.space/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Citadel"),r("OutboundLink")],1)])]),e._v(" "),r("p",[e._v("Do you provide Hardware As A Service and are not listed here?\nOpen an issue to "),r("a",{attrs:{href:"https://github.com/btcpayserver/btcpayserver-doc/issues",target:"_blank",rel:"noopener noreferrer"}},[e._v("get added to this list"),r("OutboundLink")],1)])])}),[],!1,null,null,null);r.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/94.74773ec5.js b/assets/js/94.c2a6523f.js similarity index 99% rename from assets/js/94.74773ec5.js rename to assets/js/94.c2a6523f.js index a175cbf6d6..9e5125be35 100644 --- a/assets/js/94.74773ec5.js +++ b/assets/js/94.c2a6523f.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{706:function(e,o,t){"use strict";t.r(o);var r=t(9),n=Object(r.a)({},(function(){var e=this,o=e._self._c;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"hardware-deployment"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#hardware-deployment"}},[e._v("#")]),e._v(" Hardware Deployment")]),e._v(" "),o("p",[e._v('Andreas Antonopoulos tells us "Not your keys, not your Bitcoin".\nHere\'s another Bitcoin axiom "Your hardware. Your node. Your keys. Your Bitcoin".')]),e._v(" "),o("p",[e._v("In order for your Bitcoin experience to be truly self-sovereign and trustless you should consider "),o("strong",[e._v("running nodes on your own hardware")]),e._v(" and internet connection.\n"),o("strong",[e._v("BTCPay Server is an excellent way to run both Bitcoin & Lightning nodes")]),e._v(".\nNot only are you validating transactions you also get the ability to accept base layer Bitcoin and second layer Lightning payments.\nTo that end here are instructions to install and host your very own BTCPay Server.")]),e._v(" "),o("p",[e._v("The process is basically the following:")]),e._v(" "),o("ol",[o("li",[e._v("Purchase and assemble hardware.")]),e._v(" "),o("li",[e._v("Install base Operating System and configure networking.")]),e._v(" "),o("li",[e._v("Install BTCPayServer-Docker.")])]),e._v(" "),o("p",[e._v("While it may be possible to "),o("strong",[e._v("install BTCPayServer or parts of it's architecture on ARM based single board computers")]),e._v(" (ie. Raspberry Pi, Odroid, OrangePi or NanoPC) the process may require additional skills and knowledge that are beyond the scope of this tutorial.\nFor the sake of speed, compatibility and ease of installation it is recommended that you use an Intel/AMD based computer with a minimum of 4 GB RAM and a 500 GB hard drive. The Gigabyte Brix or Intel NUC lines of compact computers are a great place to start. They are basically small, fanless boxes that are built using laptop components.")]),e._v(" "),o("p",[o("strong",[e._v("BTCPayServer can be successfully installed on the following hardware")]),e._v('. The end result is a small, quiet node that is fast enough to sync from block zero. The total cost is approximately $225 (including tax and delivery). These are "off the shelf" components that can be purchased from any online retailer (TigerDirect, NewEgg, Amazon, BestBuy etc). It will take roughly 24 hours to sync the Bitcoin blockchain. You can save little money by cutting the RAM and hard drive size in half.')]),e._v(" "),o("ol",[o("li",[e._v("Gigabyte Brix GB-BXBT-1900\n"),o("img",{attrs:{src:"https://i1.wp.com/lightninginabox.co/wp-content/uploads/2018/08/20150603180458_m.png?resize=300%2C254&ssl=1",alt:"Gigabyte Brix GB-BXBT-1900",title:"Gigabyte Brix GB-BXBT-1900"}})]),e._v(" "),o("li",[e._v("Crucial 8GB DDR3L-1600 SODIMM\n"),o("img",{attrs:{src:"https://i0.wp.com/lightninginabox.co/wp-content/uploads/2018/08/204-pinsodimmddr3.png?resize=300%2C133&ssl=1",alt:"Crucial 8GB DDR3L-1600",title:"Crucial 8GB DDR3L-1600"}})]),e._v(" "),o("li",[e._v("WD Blue 1TB Mobile Hard Disk Drive\n"),o("img",{attrs:{src:"https://i1.wp.com/lightninginabox.co/wp-content/uploads/2018/08/81qCyd2gDL._SL1500_.jpg?resize=300%2C300&ssl=1",alt:"WD Blue 1 TB HDD",title:"WD Blue 1 TB HDD"}})])]),e._v(" "),o("p",[e._v("Other requirements are as follows:")]),e._v(" "),o("ol",[o("li",[e._v("High speed internet connection.")]),e._v(" "),o("li",[e._v("Static IP")]),e._v(" "),o("li",[e._v("Domain Name")]),e._v(" "),o("li",[e._v("Ability to open ports (80, 443, 9735) on your router.")]),e._v(" "),o("li",[e._v("Tiny Screwdriver")]),e._v(" "),o("li",[e._v("USB Thumb Drive")]),e._v(" "),o("li",[e._v("USB Keyboard, Mouse and Monitor (for initial install only). Can be headless when completed.")]),e._v(" "),o("li",[e._v("Four Port USB Hub")])]),e._v(" "),o("p",[e._v("Assuming you purchased the hardware mentioned above, here are the build instructions.")]),e._v(" "),o("p",[o("strong",[e._v("Step 1")]),e._v(' - Configure your domain name.\nIt can take several hours for DNS changes to propagate so you should do this step first.\nLogin to your domain registrar and point an A record from your domain to the external IP address of your internet connection.\nI suggest that you use a subdomain (ie. btcpay.yourdomain.com).\nTo find your external IP address Google "whats my ip".')]),e._v(" "),o("p",[o("strong",[e._v("Step 2")]),e._v(" - Assemble your BTCPayBox (BTCPB). If you already have your own Ubuntu Server you can skip to Step 6.")]),e._v(" "),o("ul",[o("li",[e._v("Remove back cover with screwdriver.")]),e._v(" "),o("li",[e._v("Insert RAM")]),e._v(" "),o("li",[e._v("Install hard drive using included cage.")])]),e._v(" "),o("p",[o("strong",[e._v("Step 3")]),e._v(" - Download "),o("a",{attrs:{href:"https://releases.ubuntu.com/18.04/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ubuntu 18.04 Desktop Image"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("strong",[e._v("Step 4")]),e._v(" - Download and install "),o("a",{attrs:{href:"https://etcher.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Etcher"),o("OutboundLink")],1),e._v(". Etcher is software that is used to flash OS images to SD cards and USB Drives.\nIn this case we will be using Etcher to flash our USB Thumb Drive with the Ubuntu OS.")]),e._v(" "),o("p",[o("strong",[e._v("Step 5")]),e._v(" - Connect your USB keyboard, mouse, monitor and thumb drive. Press the power button to boot your BTCPB using the thumb drive. The Ubuntu installation process is pretty simple and easy to follow. Here's a tutorial from the Ubuntu website. "),o("a",{attrs:{href:"https://tutorials.ubuntu.com/tutorial/tutorial-install-ubuntu-desktop#0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Install Ubuntu Desktop"),o("OutboundLink")],1),e._v(". The GB-BXBT-1900 with BIOS version F9 (and earlier) will need to be configured for compatibility with Ubuntu 18.04, due in part to Intel's cstates. Refer to this "),o("a",{attrs:{href:"https://gist.github.com/plembo/4d52f7c71739a54f1a023814bbb87e00",target:"_blank",rel:"noopener noreferrer"}},[e._v("BXBT-1900 Setup Guide"),o("OutboundLink")],1),e._v(" for help.")]),e._v(" "),o("p",[o("strong",[e._v("Step 6")]),e._v(" - Give your BTCPB a static IP address on your local network. There are a few different ways to do this and you will find a ton of articles online. Here's a pretty simple one to follow "),o("a",{attrs:{href:"https://linuxconfig.org/how-to-configure-static-ip-address-on-ubuntu-18-04-bionic-beaver-linux",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to configure a static IP address on Ubuntu 18.04"),o("OutboundLink")],1),e._v('. To avoid conflicts with other devices on your network you should also set a "reservation" for your BTCPB.')]),e._v(" "),o("p",[o("strong",[e._v("Step 7")]),e._v(' - Log into your router and forward ports 80, 443 and 9735 to your BTPCB\'s local IP address. Every router is different and you should be able to find instructions for your router by searching for "Port Forward + your router make and model".')]),e._v(" "),o("p",[o("strong",[e._v("Step 8")]),e._v(" - Install OpenSSH Server, Fail2ban and GIT. OpenSSH server allows you to connect to your server using SSH clients (ie. "),o("a",{attrs:{href:"https://www.putty.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Putty"),o("OutboundLink")],1),e._v(") Fail2ban bans IP's that attempt to connect to your server and show malicious signs. GIT allows you to clone and manage repositories on github.com.\nOpen a new terminal window and type the following commands:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo apt update")])]),e._v(" "),o("li",[o("code",[e._v("sudo apt install -y openssh-server fail2ban git")])])]),e._v(" "),o("p",[o("strong",[e._v("Step 9")]),e._v(" - Install Uncomplicated Firewall (UFW) and allow only specific ports. UFW is a user-friendly front-end for managing iptables firewall rules and its main goal is to make managing iptables easier or as the name says uncomplicated.\nInstall UFW")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo apt install ufw")])])]),e._v(" "),o("p",[e._v("This command allows SSH connections from your LAN only. Replace 192.168.1.0 with your own subnet.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo ufw allow from 192.168.1.0/24 to any port 22")])])]),e._v(" "),o("p",[e._v("These ports need to be accessible from anywhere. The default subnet is 'any' unless you specify one.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo ufw allow 80, 443, 9735")])])]),e._v(" "),o("p",[e._v("Verify your configuration.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo ufw status")])])]),e._v(" "),o("p",[e._v("Enable your firewall.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo ufw enable")])])]),e._v(" "),o("p",[e._v("Reboot your BTCB and disconnect the keyboard, mouse and monitor. You should now be able to connect to your BTCB from another computer on your LAN via SSH.")]),e._v(" "),o("p",[o("strong",[e._v("Step 10")]),e._v(" - Install BTCPayServer.\nFrom another PC on your network login in to your BTCPB via SSH.")]),e._v(" "),o("p",[e._v("If you are using Windows")]),e._v(" "),o("ul",[o("li",[e._v("download "),o("a",{attrs:{href:"https://releases.ubuntu.com/18.04/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Putty"),o("OutboundLink")],1),e._v(" and create a connection to your BTCPB.")])]),e._v(" "),o("p",[e._v("If you are using another Linux machine open a new terminal and type in the following.\nYou will be prompted for your password.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("ssh user@LANIP")]),e._v(" (ie. bob@192.168.1.2)")])]),e._v(" "),o("p",[e._v("Run the following commands.\nMake sure you change the "),o("code",[e._v("BTCPAY_HOST")]),e._v(" parameter to your own domain name.")]),e._v(" "),o("p",[e._v("Login as root")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo su -")])])]),e._v(" "),o("p",[e._v("Create a folder for BTCPay")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("mkdir BTCPayServer")])]),e._v(" "),o("li",[o("code",[e._v("cd BTCPayServer")])])]),e._v(" "),o("p",[e._v("Clone the btcpayserver-docker repository")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("git clone https://github.com/btcpayserver/btcpayserver-docker")])]),e._v(" "),o("li",[o("code",[e._v("cd btcpayserver-docker")])])]),e._v(" "),o("p",[e._v("Set your environment variables.\nRun each command separately.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v('export BTCPAY_HOST="btcpay.YourDomain.com"')])]),e._v(" "),o("li",[o("code",[e._v('export NBITCOIN_NETWORK="mainnet"')])]),e._v(" "),o("li",[o("code",[e._v('export BTCPAYGEN_CRYPTO1="btc"')])]),e._v(" "),o("li",[o("code",[e._v('export BTCPAYGEN_CRYPTO2="ltc"')])]),e._v(" "),o("li",[o("code",[e._v('export BTCPAYGEN_REVERSEPROXY="nginx"')])]),e._v(" "),o("li",[o("code",[e._v('export BTCPAYGEN_LIGHTNING="clightning"')])])]),e._v(" "),o("p",[e._v("The last step is to launch the BTCPayServer setup script.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v(". ./btcpay-setup.sh -i")])]),e._v(" "),o("li",[o("code",[e._v("exit")])])]),e._v(" "),o("p",[o("strong",[e._v("Step 11")]),e._v("\nGo to https://btcpay.yourdomain.com and confirm that your nodes are syncing.\nEnjoy!")]),e._v(" "),o("p",[e._v("If you don't have the time or patience to build your own BTCPB there are a few merchants who can build one for you.")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://lightninginabox.co",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lightning in a Box"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://nodl.it",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nodl.it"),o("OutboundLink")],1)])])])}),[],!1,null,null,null);o.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[94],{707:function(e,o,t){"use strict";t.r(o);var r=t(9),n=Object(r.a)({},(function(){var e=this,o=e._self._c;return o("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[o("h1",{attrs:{id:"hardware-deployment"}},[o("a",{staticClass:"header-anchor",attrs:{href:"#hardware-deployment"}},[e._v("#")]),e._v(" Hardware Deployment")]),e._v(" "),o("p",[e._v('Andreas Antonopoulos tells us "Not your keys, not your Bitcoin".\nHere\'s another Bitcoin axiom "Your hardware. Your node. Your keys. Your Bitcoin".')]),e._v(" "),o("p",[e._v("In order for your Bitcoin experience to be truly self-sovereign and trustless you should consider "),o("strong",[e._v("running nodes on your own hardware")]),e._v(" and internet connection.\n"),o("strong",[e._v("BTCPay Server is an excellent way to run both Bitcoin & Lightning nodes")]),e._v(".\nNot only are you validating transactions you also get the ability to accept base layer Bitcoin and second layer Lightning payments.\nTo that end here are instructions to install and host your very own BTCPay Server.")]),e._v(" "),o("p",[e._v("The process is basically the following:")]),e._v(" "),o("ol",[o("li",[e._v("Purchase and assemble hardware.")]),e._v(" "),o("li",[e._v("Install base Operating System and configure networking.")]),e._v(" "),o("li",[e._v("Install BTCPayServer-Docker.")])]),e._v(" "),o("p",[e._v("While it may be possible to "),o("strong",[e._v("install BTCPayServer or parts of it's architecture on ARM based single board computers")]),e._v(" (ie. Raspberry Pi, Odroid, OrangePi or NanoPC) the process may require additional skills and knowledge that are beyond the scope of this tutorial.\nFor the sake of speed, compatibility and ease of installation it is recommended that you use an Intel/AMD based computer with a minimum of 4 GB RAM and a 500 GB hard drive. The Gigabyte Brix or Intel NUC lines of compact computers are a great place to start. They are basically small, fanless boxes that are built using laptop components.")]),e._v(" "),o("p",[o("strong",[e._v("BTCPayServer can be successfully installed on the following hardware")]),e._v('. The end result is a small, quiet node that is fast enough to sync from block zero. The total cost is approximately $225 (including tax and delivery). These are "off the shelf" components that can be purchased from any online retailer (TigerDirect, NewEgg, Amazon, BestBuy etc). It will take roughly 24 hours to sync the Bitcoin blockchain. You can save little money by cutting the RAM and hard drive size in half.')]),e._v(" "),o("ol",[o("li",[e._v("Gigabyte Brix GB-BXBT-1900\n"),o("img",{attrs:{src:"https://i1.wp.com/lightninginabox.co/wp-content/uploads/2018/08/20150603180458_m.png?resize=300%2C254&ssl=1",alt:"Gigabyte Brix GB-BXBT-1900",title:"Gigabyte Brix GB-BXBT-1900"}})]),e._v(" "),o("li",[e._v("Crucial 8GB DDR3L-1600 SODIMM\n"),o("img",{attrs:{src:"https://i0.wp.com/lightninginabox.co/wp-content/uploads/2018/08/204-pinsodimmddr3.png?resize=300%2C133&ssl=1",alt:"Crucial 8GB DDR3L-1600",title:"Crucial 8GB DDR3L-1600"}})]),e._v(" "),o("li",[e._v("WD Blue 1TB Mobile Hard Disk Drive\n"),o("img",{attrs:{src:"https://i1.wp.com/lightninginabox.co/wp-content/uploads/2018/08/81qCyd2gDL._SL1500_.jpg?resize=300%2C300&ssl=1",alt:"WD Blue 1 TB HDD",title:"WD Blue 1 TB HDD"}})])]),e._v(" "),o("p",[e._v("Other requirements are as follows:")]),e._v(" "),o("ol",[o("li",[e._v("High speed internet connection.")]),e._v(" "),o("li",[e._v("Static IP")]),e._v(" "),o("li",[e._v("Domain Name")]),e._v(" "),o("li",[e._v("Ability to open ports (80, 443, 9735) on your router.")]),e._v(" "),o("li",[e._v("Tiny Screwdriver")]),e._v(" "),o("li",[e._v("USB Thumb Drive")]),e._v(" "),o("li",[e._v("USB Keyboard, Mouse and Monitor (for initial install only). Can be headless when completed.")]),e._v(" "),o("li",[e._v("Four Port USB Hub")])]),e._v(" "),o("p",[e._v("Assuming you purchased the hardware mentioned above, here are the build instructions.")]),e._v(" "),o("p",[o("strong",[e._v("Step 1")]),e._v(' - Configure your domain name.\nIt can take several hours for DNS changes to propagate so you should do this step first.\nLogin to your domain registrar and point an A record from your domain to the external IP address of your internet connection.\nI suggest that you use a subdomain (ie. btcpay.yourdomain.com).\nTo find your external IP address Google "whats my ip".')]),e._v(" "),o("p",[o("strong",[e._v("Step 2")]),e._v(" - Assemble your BTCPayBox (BTCPB). If you already have your own Ubuntu Server you can skip to Step 6.")]),e._v(" "),o("ul",[o("li",[e._v("Remove back cover with screwdriver.")]),e._v(" "),o("li",[e._v("Insert RAM")]),e._v(" "),o("li",[e._v("Install hard drive using included cage.")])]),e._v(" "),o("p",[o("strong",[e._v("Step 3")]),e._v(" - Download "),o("a",{attrs:{href:"https://releases.ubuntu.com/18.04/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Ubuntu 18.04 Desktop Image"),o("OutboundLink")],1)]),e._v(" "),o("p",[o("strong",[e._v("Step 4")]),e._v(" - Download and install "),o("a",{attrs:{href:"https://etcher.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Etcher"),o("OutboundLink")],1),e._v(". Etcher is software that is used to flash OS images to SD cards and USB Drives.\nIn this case we will be using Etcher to flash our USB Thumb Drive with the Ubuntu OS.")]),e._v(" "),o("p",[o("strong",[e._v("Step 5")]),e._v(" - Connect your USB keyboard, mouse, monitor and thumb drive. Press the power button to boot your BTCPB using the thumb drive. The Ubuntu installation process is pretty simple and easy to follow. Here's a tutorial from the Ubuntu website. "),o("a",{attrs:{href:"https://tutorials.ubuntu.com/tutorial/tutorial-install-ubuntu-desktop#0",target:"_blank",rel:"noopener noreferrer"}},[e._v("Install Ubuntu Desktop"),o("OutboundLink")],1),e._v(". The GB-BXBT-1900 with BIOS version F9 (and earlier) will need to be configured for compatibility with Ubuntu 18.04, due in part to Intel's cstates. Refer to this "),o("a",{attrs:{href:"https://gist.github.com/plembo/4d52f7c71739a54f1a023814bbb87e00",target:"_blank",rel:"noopener noreferrer"}},[e._v("BXBT-1900 Setup Guide"),o("OutboundLink")],1),e._v(" for help.")]),e._v(" "),o("p",[o("strong",[e._v("Step 6")]),e._v(" - Give your BTCPB a static IP address on your local network. There are a few different ways to do this and you will find a ton of articles online. Here's a pretty simple one to follow "),o("a",{attrs:{href:"https://linuxconfig.org/how-to-configure-static-ip-address-on-ubuntu-18-04-bionic-beaver-linux",target:"_blank",rel:"noopener noreferrer"}},[e._v("How to configure a static IP address on Ubuntu 18.04"),o("OutboundLink")],1),e._v('. To avoid conflicts with other devices on your network you should also set a "reservation" for your BTCPB.')]),e._v(" "),o("p",[o("strong",[e._v("Step 7")]),e._v(' - Log into your router and forward ports 80, 443 and 9735 to your BTPCB\'s local IP address. Every router is different and you should be able to find instructions for your router by searching for "Port Forward + your router make and model".')]),e._v(" "),o("p",[o("strong",[e._v("Step 8")]),e._v(" - Install OpenSSH Server, Fail2ban and GIT. OpenSSH server allows you to connect to your server using SSH clients (ie. "),o("a",{attrs:{href:"https://www.putty.org/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Putty"),o("OutboundLink")],1),e._v(") Fail2ban bans IP's that attempt to connect to your server and show malicious signs. GIT allows you to clone and manage repositories on github.com.\nOpen a new terminal window and type the following commands:")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo apt update")])]),e._v(" "),o("li",[o("code",[e._v("sudo apt install -y openssh-server fail2ban git")])])]),e._v(" "),o("p",[o("strong",[e._v("Step 9")]),e._v(" - Install Uncomplicated Firewall (UFW) and allow only specific ports. UFW is a user-friendly front-end for managing iptables firewall rules and its main goal is to make managing iptables easier or as the name says uncomplicated.\nInstall UFW")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo apt install ufw")])])]),e._v(" "),o("p",[e._v("This command allows SSH connections from your LAN only. Replace 192.168.1.0 with your own subnet.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo ufw allow from 192.168.1.0/24 to any port 22")])])]),e._v(" "),o("p",[e._v("These ports need to be accessible from anywhere. The default subnet is 'any' unless you specify one.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo ufw allow 80, 443, 9735")])])]),e._v(" "),o("p",[e._v("Verify your configuration.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo ufw status")])])]),e._v(" "),o("p",[e._v("Enable your firewall.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo ufw enable")])])]),e._v(" "),o("p",[e._v("Reboot your BTCB and disconnect the keyboard, mouse and monitor. You should now be able to connect to your BTCB from another computer on your LAN via SSH.")]),e._v(" "),o("p",[o("strong",[e._v("Step 10")]),e._v(" - Install BTCPayServer.\nFrom another PC on your network login in to your BTCPB via SSH.")]),e._v(" "),o("p",[e._v("If you are using Windows")]),e._v(" "),o("ul",[o("li",[e._v("download "),o("a",{attrs:{href:"https://releases.ubuntu.com/18.04/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Putty"),o("OutboundLink")],1),e._v(" and create a connection to your BTCPB.")])]),e._v(" "),o("p",[e._v("If you are using another Linux machine open a new terminal and type in the following.\nYou will be prompted for your password.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("ssh user@LANIP")]),e._v(" (ie. bob@192.168.1.2)")])]),e._v(" "),o("p",[e._v("Run the following commands.\nMake sure you change the "),o("code",[e._v("BTCPAY_HOST")]),e._v(" parameter to your own domain name.")]),e._v(" "),o("p",[e._v("Login as root")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("sudo su -")])])]),e._v(" "),o("p",[e._v("Create a folder for BTCPay")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("mkdir BTCPayServer")])]),e._v(" "),o("li",[o("code",[e._v("cd BTCPayServer")])])]),e._v(" "),o("p",[e._v("Clone the btcpayserver-docker repository")]),e._v(" "),o("ul",[o("li",[o("code",[e._v("git clone https://github.com/btcpayserver/btcpayserver-docker")])]),e._v(" "),o("li",[o("code",[e._v("cd btcpayserver-docker")])])]),e._v(" "),o("p",[e._v("Set your environment variables.\nRun each command separately.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v('export BTCPAY_HOST="btcpay.YourDomain.com"')])]),e._v(" "),o("li",[o("code",[e._v('export NBITCOIN_NETWORK="mainnet"')])]),e._v(" "),o("li",[o("code",[e._v('export BTCPAYGEN_CRYPTO1="btc"')])]),e._v(" "),o("li",[o("code",[e._v('export BTCPAYGEN_CRYPTO2="ltc"')])]),e._v(" "),o("li",[o("code",[e._v('export BTCPAYGEN_REVERSEPROXY="nginx"')])]),e._v(" "),o("li",[o("code",[e._v('export BTCPAYGEN_LIGHTNING="clightning"')])])]),e._v(" "),o("p",[e._v("The last step is to launch the BTCPayServer setup script.")]),e._v(" "),o("ul",[o("li",[o("code",[e._v(". ./btcpay-setup.sh -i")])]),e._v(" "),o("li",[o("code",[e._v("exit")])])]),e._v(" "),o("p",[o("strong",[e._v("Step 11")]),e._v("\nGo to https://btcpay.yourdomain.com and confirm that your nodes are syncing.\nEnjoy!")]),e._v(" "),o("p",[e._v("If you don't have the time or patience to build your own BTCPB there are a few merchants who can build one for you.")]),e._v(" "),o("ul",[o("li",[o("a",{attrs:{href:"https://lightninginabox.co",target:"_blank",rel:"noopener noreferrer"}},[e._v("Lightning in a Box"),o("OutboundLink")],1)]),e._v(" "),o("li",[o("a",{attrs:{href:"https://nodl.it",target:"_blank",rel:"noopener noreferrer"}},[e._v("Nodl.it"),o("OutboundLink")],1)])])])}),[],!1,null,null,null);o.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/95.e112a9a1.js b/assets/js/95.ab566da2.js similarity index 99% rename from assets/js/95.e112a9a1.js rename to assets/js/95.ab566da2.js index 4885252a8a..c702d62d5b 100644 --- a/assets/js/95.e112a9a1.js +++ b/assets/js/95.ab566da2.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{707:function(e,t,a){"use strict";a.r(t);var o=a(9),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"deploying-btcpay-lunanode-web-wizard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deploying-btcpay-lunanode-web-wizard"}},[e._v("#")]),e._v(" Deploying BTCPay - LunaNode Web-Wizard")]),e._v(" "),t("p",[e._v("This article explains the "),t("strong",[e._v("deployment of BTCPay Server through LunaNode Web-Wizard")]),e._v(". "),t("a",{attrs:{href:"https://www.lunanode.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("LunaNode"),t("OutboundLink")],1),e._v(" is Canadian based hosting provider that accept Bitcoin payments and requires no personal identification except for a phone number verification.")]),e._v(" "),t("p",[e._v("Their web-wizard is one of the easiest ways to "),t("strong",[e._v("deploy BTCPay Servers from a very user-friendly interface")]),e._v(". This method is highly recommended if you don't have a lot of technical knowledge. LunaNode will provide you with a generic domain for your server to get you started. If you want to set up a custom domain you will need to have some comfort with the command line interface.")]),e._v(" "),t("p",[e._v("For the price of around US$8.80 per month, you can have a "),t("strong",[e._v("self-hosted BTCpay")]),e._v(", which includes a Bitcoin full node and Lightning Network node.")]),e._v(" "),t("p",[e._v("The video below explains all the step and customization of BTCPay.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/NjslXYvp8bk/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=NjslXYvp8bk",title:"BTCPay Server - LunaNode Web-Deployment","data-id":"NjslXYvp8bk"}},[t("iframe",{attrs:{title:"BTCPay Server - LunaNode Web-Deployment","data-src":"https://www.youtube-nocookie.com/embed/NjslXYvp8bk?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("The installation is also covered in "),t("a",{attrs:{href:"https://medium.com/@BtcpayServer/launch-btcpay-server-via-web-interface-and-deploy-full-bitcoin-node-lnd-in-less-than-a-minute-dc8bc6f06a3",target:"_blank",rel:"noopener noreferrer"}},[e._v("this article"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("The third video covers setting "),t("strong",[e._v("BTCPay up on LunaNode")]),e._v(", but also goes in-depth on setting up wallets, store and apps.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/00YCc87RwnU/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=00YCc87RwnU",title:"BTCPay Server - LunaNode Web-Deployment Video","data-id":"00YCc87RwnU"}},[t("iframe",{attrs:{title:"BTCPay Server - LunaNode Web-Deployment Video","data-src":"https://www.youtube-nocookie.com/embed/00YCc87RwnU?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("h2",{attrs:{id:"1-create-the-account-and-add-credits"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#1-create-the-account-and-add-credits"}},[e._v("#")]),e._v(" 1. Create the account and add credits")]),e._v(" "),t("p",[e._v("Register to LunaNode and add credits to your account. The process is quite straight-Forward. If by any chance you get stuck, "),t("a",{attrs:{href:"https://bitcoinshirt.co/how-to-create-store-accept-bitcoin/8/#Creating-an-account",target:"_blank",rel:"noopener noreferrer"}},[e._v("see this article"),t("OutboundLink")],1),e._v(". Wait for the invoice confirmation.")]),e._v(" "),t("h2",{attrs:{id:"2-create-the-api-key"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#2-create-the-api-key"}},[e._v("#")]),e._v(" 2. Create the API Key")]),e._v(" "),t("p",[e._v("Once your account has been verified, and credits added, go to the API section and create a new API. Do not close that page and proceed to step 3.")]),e._v(" "),t("h2",{attrs:{id:"3-web-wizard-deployment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#3-web-wizard-deployment"}},[e._v("#")]),e._v(" 3. Web-Wizard Deployment")]),e._v(" "),t("ol",[t("li",[e._v("Go to "),t("a",{attrs:{href:"https://launchbtcpay.lunanode.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("launchbtcpay.lunanode.com"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Paste the API Key and API ID created in step 2. and continue.")]),e._v(" "),t("li",[e._v("Use your own domain or automatically-generated one by LunaNode.")]),e._v(" "),t("li",[e._v("Customize the web-wizard settings according to your needs.")]),e._v(" "),t("li",[e._v("Click Launch VM. Wait 6-7 minutes for Virtual Machine deployment.")])]),e._v(" "),t("p",[e._v("If you've used a custom domain,")]),e._v(" "),t("ol",{attrs:{start:"6"}},[t("li",[e._v("SSH into the VM using either the password generated by LunaNode or your private-public key pair.")]),e._v(" "),t("li",[e._v("Run the following commands.")])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("$ "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_HOST")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("your.cool.domain\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_PROTOCOL")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("https\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("REVERSEPROXY_DEFAULT_HOST")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_HOST")]),e._v('"')]),e._v("\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" btcpay-setup.sh -i\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" btcpay-restart.sh -i\n")])])]),t("ol",{attrs:{start:"8"}},[t("li",[e._v("Visit the domain, create an account and log in.")])]),e._v(" "),t("p",[e._v("Now you need to wait for blockchain to sync fully. Depending on the plan you used and the number of coins you added, that can take 1-7 days. If you enable CPU utilization, with Bitcoin and LND, it will take 1-2 days. There is a US$ 3 one-time charge for faster sync if you enable the CPU utilization. The sync pop-up window will disappear when your node fully syncs.")]),e._v(" "),t("h2",{attrs:{id:"4-additional-customization-optional"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#4-additional-customization-optional"}},[e._v("#")]),e._v(" 4. Additional customization (optional)")]),e._v(" "),t("p",[e._v("Once your BTCPay Server instance is setup, as with any deployment method, you can add environment variables such as activating keysend and autopilot for LND as well as get access to your own transmuter.\nFor more information, visit the available "),t("RouterLink",{attrs:{to:"/Docker/#generated-docker-compose"}},[e._v("environment variable list")]),e._v(". This requires knowledge of how to "),t("RouterLink",{attrs:{to:"/FAQ/ServerSettings/#how-to-ssh-into-my-btcpay-running-on-vps"}},[e._v("SSH into your server")]),e._v(".")],1)])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[95],{708:function(e,t,a){"use strict";a.r(t);var o=a(9),n=Object(o.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"deploying-btcpay-lunanode-web-wizard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#deploying-btcpay-lunanode-web-wizard"}},[e._v("#")]),e._v(" Deploying BTCPay - LunaNode Web-Wizard")]),e._v(" "),t("p",[e._v("This article explains the "),t("strong",[e._v("deployment of BTCPay Server through LunaNode Web-Wizard")]),e._v(". "),t("a",{attrs:{href:"https://www.lunanode.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("LunaNode"),t("OutboundLink")],1),e._v(" is Canadian based hosting provider that accept Bitcoin payments and requires no personal identification except for a phone number verification.")]),e._v(" "),t("p",[e._v("Their web-wizard is one of the easiest ways to "),t("strong",[e._v("deploy BTCPay Servers from a very user-friendly interface")]),e._v(". This method is highly recommended if you don't have a lot of technical knowledge. LunaNode will provide you with a generic domain for your server to get you started. If you want to set up a custom domain you will need to have some comfort with the command line interface.")]),e._v(" "),t("p",[e._v("For the price of around US$8.80 per month, you can have a "),t("strong",[e._v("self-hosted BTCpay")]),e._v(", which includes a Bitcoin full node and Lightning Network node.")]),e._v(" "),t("p",[e._v("The video below explains all the step and customization of BTCPay.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/NjslXYvp8bk/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=NjslXYvp8bk",title:"BTCPay Server - LunaNode Web-Deployment","data-id":"NjslXYvp8bk"}},[t("iframe",{attrs:{title:"BTCPay Server - LunaNode Web-Deployment","data-src":"https://www.youtube-nocookie.com/embed/NjslXYvp8bk?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("p",[e._v("The installation is also covered in "),t("a",{attrs:{href:"https://medium.com/@BtcpayServer/launch-btcpay-server-via-web-interface-and-deploy-full-bitcoin-node-lnd-in-less-than-a-minute-dc8bc6f06a3",target:"_blank",rel:"noopener noreferrer"}},[e._v("this article"),t("OutboundLink")],1)]),e._v(" "),t("p",[e._v("The third video covers setting "),t("strong",[e._v("BTCPay up on LunaNode")]),e._v(", but also goes in-depth on setting up wallets, store and apps.")]),e._v(" "),t("a",{staticClass:"ytEmbed",staticStyle:{"background-image":"url(https://img.youtube.com/vi/00YCc87RwnU/hqdefault.jpg)"},attrs:{href:"https://www.youtube.com/watch?v=00YCc87RwnU",title:"BTCPay Server - LunaNode Web-Deployment Video","data-id":"00YCc87RwnU"}},[t("iframe",{attrs:{title:"BTCPay Server - LunaNode Web-Deployment Video","data-src":"https://www.youtube-nocookie.com/embed/00YCc87RwnU?&autoplay=1&autohide=1&modestbranding=1&color=white&rel=0",frameborder:"0",allow:"autoplay;encrypted-media;picture-in-picture",allowfullscreen:""}})]),e._v(" "),t("h2",{attrs:{id:"1-create-the-account-and-add-credits"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#1-create-the-account-and-add-credits"}},[e._v("#")]),e._v(" 1. Create the account and add credits")]),e._v(" "),t("p",[e._v("Register to LunaNode and add credits to your account. The process is quite straight-Forward. If by any chance you get stuck, "),t("a",{attrs:{href:"https://bitcoinshirt.co/how-to-create-store-accept-bitcoin/8/#Creating-an-account",target:"_blank",rel:"noopener noreferrer"}},[e._v("see this article"),t("OutboundLink")],1),e._v(". Wait for the invoice confirmation.")]),e._v(" "),t("h2",{attrs:{id:"2-create-the-api-key"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#2-create-the-api-key"}},[e._v("#")]),e._v(" 2. Create the API Key")]),e._v(" "),t("p",[e._v("Once your account has been verified, and credits added, go to the API section and create a new API. Do not close that page and proceed to step 3.")]),e._v(" "),t("h2",{attrs:{id:"3-web-wizard-deployment"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#3-web-wizard-deployment"}},[e._v("#")]),e._v(" 3. Web-Wizard Deployment")]),e._v(" "),t("ol",[t("li",[e._v("Go to "),t("a",{attrs:{href:"https://launchbtcpay.lunanode.com/",target:"_blank",rel:"noopener noreferrer"}},[e._v("launchbtcpay.lunanode.com"),t("OutboundLink")],1)]),e._v(" "),t("li",[e._v("Paste the API Key and API ID created in step 2. and continue.")]),e._v(" "),t("li",[e._v("Use your own domain or automatically-generated one by LunaNode.")]),e._v(" "),t("li",[e._v("Customize the web-wizard settings according to your needs.")]),e._v(" "),t("li",[e._v("Click Launch VM. Wait 6-7 minutes for Virtual Machine deployment.")])]),e._v(" "),t("p",[e._v("If you've used a custom domain,")]),e._v(" "),t("ol",{attrs:{start:"6"}},[t("li",[e._v("SSH into the VM using either the password generated by LunaNode or your private-public key pair.")]),e._v(" "),t("li",[e._v("Run the following commands.")])]),e._v(" "),t("div",{staticClass:"language-bash extra-class"},[t("pre",{pre:!0,attrs:{class:"language-bash"}},[t("code",[e._v("$ "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("sudo")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token function"}},[e._v("su")]),e._v(" -\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_HOST")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("your.cool.domain\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("BTCPAY_PROTOCOL")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),e._v("https\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("export")]),e._v(" "),t("span",{pre:!0,attrs:{class:"token assign-left variable"}},[e._v("REVERSEPROXY_DEFAULT_HOST")]),t("span",{pre:!0,attrs:{class:"token operator"}},[e._v("=")]),t("span",{pre:!0,attrs:{class:"token string"}},[e._v('"'),t("span",{pre:!0,attrs:{class:"token variable"}},[e._v("$BTCPAY_HOST")]),e._v('"')]),e._v("\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v("cd")]),e._v(" btcpayserver-docker\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" btcpay-setup.sh -i\n$ "),t("span",{pre:!0,attrs:{class:"token builtin class-name"}},[e._v(".")]),e._v(" btcpay-restart.sh -i\n")])])]),t("ol",{attrs:{start:"8"}},[t("li",[e._v("Visit the domain, create an account and log in.")])]),e._v(" "),t("p",[e._v("Now you need to wait for blockchain to sync fully. Depending on the plan you used and the number of coins you added, that can take 1-7 days. If you enable CPU utilization, with Bitcoin and LND, it will take 1-2 days. There is a US$ 3 one-time charge for faster sync if you enable the CPU utilization. The sync pop-up window will disappear when your node fully syncs.")]),e._v(" "),t("h2",{attrs:{id:"4-additional-customization-optional"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#4-additional-customization-optional"}},[e._v("#")]),e._v(" 4. Additional customization (optional)")]),e._v(" "),t("p",[e._v("Once your BTCPay Server instance is setup, as with any deployment method, you can add environment variables such as activating keysend and autopilot for LND as well as get access to your own transmuter.\nFor more information, visit the available "),t("RouterLink",{attrs:{to:"/Docker/#generated-docker-compose"}},[e._v("environment variable list")]),e._v(". This requires knowledge of how to "),t("RouterLink",{attrs:{to:"/FAQ/ServerSettings/#how-to-ssh-into-my-btcpay-running-on-vps"}},[e._v("SSH into your server")]),e._v(".")],1)])}),[],!1,null,null,null);t.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/app.1ece7624.js b/assets/js/app.04daa845.js similarity index 94% rename from assets/js/app.1ece7624.js rename to assets/js/app.04daa845.js index a88b8b9a21..98224d5646 100644 --- a/assets/js/app.1ece7624.js +++ b/assets/js/app.04daa845.js @@ -1,4 +1,4 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(e){function t(t){for(var r,a,l=t[0],s=t[1],c=t[2],p=0,d=[];p
    '};function o(e,t,n){return en?n:e}function i(e){return 100*(-1+e)}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var s=n.render(!t),c=s.querySelector(r.barSelector),u=r.speed,p=r.easing;return s.offsetWidth,a((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,function(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+i(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+i(e)+"%,0)"}:{"margin-left":i(e)+"%"}).transition="all "+t+"ms "+n,o}(e,u,p)),1===e?(l(s,{transition:"none",opacity:1}),s.offsetWidth,setTimeout((function(){l(s,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,a=t.querySelector(r.barSelector),s=e?"-100":i(n.status||0),u=document.querySelector(r.parent);return l(a,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&d(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&d(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var a=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(n){return n=n.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()})),t[n]||(t[n]=function(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,i=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+i)in n)return r;return t}(n))}function r(e,t,r){t=n(t),e.style[t]=r}return function(e,t){var n,o,i=arguments;if(2==i.length)for(n in t)void 0!==(o=t[n])&&t.hasOwnProperty(n)&&r(e,n,o);else r(e,i[1],i[2])}}();function s(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;s(n,t)||(e.className=r.substring(1))}function u(e,t){var n,r=p(e);s(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function d(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n})?r.call(t,n,t,e):r)||(e.exports=o)},function(e,t,n){var r=n(23),o=Function.prototype.call;e.exports=r?o.bind(o):function(){return o.apply(o,arguments)}},function(e,t,n){var r=n(4);e.exports=!r((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(42),o=n(43);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(2),o=r({}.toString),i=r("".slice);e.exports=function(e){return i(o(e),8,-1)}},function(e,t,n){var r=n(0),o=n(51),i=n(6),a=n(54),l=n(48),s=n(47),c=o("wks"),u=r.Symbol,p=u&&u.for,d=s?u:u&&u.withoutSetter||a;e.exports=function(e){if(!i(c,e)||!l&&"string"!=typeof c[e]){var t="Symbol."+e;l&&i(u,e)?c[e]=u[e]:c[e]=s&&p?p(t):d(t)}return c[e]}},function(e,t,n){var r=n(0),o=n(29),i=r["__core-js_shared__"]||o("__core-js_shared__",{});e.exports=i},function(e,t,n){var r=n(0),o=Object.defineProperty;e.exports=function(e,t){try{o(r,e,{value:t,configurable:!0,writable:!0})}catch(n){r[e]=t}return t}},function(e,t,n){var r=n(0),o=n(7),i=r.String,a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not an object")}},function(e,t,n){var r=n(134),o=n(10),i=Object.prototype,a=i.hasOwnProperty,l=i.propertyIsEnumerable,s=r(function(){return arguments}())?r:function(e){return o(e)&&a.call(e,"callee")&&!l.call(e,"callee")};e.exports=s},function(e,t,n){var r=n(8)(n(5),"Map");e.exports=r},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var r=n(154),o=n(161),i=n(163),a=n(164),l=n(165);function s(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1&&e%1==0&&e<=9007199254740991}},function(e,t,n){var r=n(3),o=n(38),i=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!o(e))||(a.test(e)||!i.test(e)||null!=t&&e in Object(t))}},function(e,t,n){var r=n(12),o=n(10);e.exports=function(e){return"symbol"==typeof e||o(e)&&"[object Symbol]"==r(e)}},function(e,t){e.exports=function(e){return e}},function(e,t,n){var r=n(0),o=n(41).f,i=n(13),a=n(103),l=n(29),s=n(59),c=n(116);e.exports=function(e,t){var n,u,p,d,h,v=e.target,m=e.global,f=e.stat;if(n=m?r:f?r[v]||l(v,{}):(r[v]||{}).prototype)for(u in t){if(d=t[u],p=e.noTargetGet?(h=o(n,u))&&h.value:n[u],!c(m?u:v+(f?".":"#")+u,e.forced)&&void 0!==p){if(typeof d==typeof p)continue;s(d,p)}(e.sham||p&&p.sham)&&i(d,"sham",!0),a(n,u,d,e)}}},function(e,t,n){var r=n(11),o=n(22),i=n(95),a=n(24),l=n(25),s=n(44),c=n(6),u=n(55),p=Object.getOwnPropertyDescriptor;t.f=r?p:function(e,t){if(e=l(e),t=s(t),u)try{return p(e,t)}catch(e){}if(c(e,t))return a(!o(i.f,e,t),e[t])}},function(e,t,n){var r=n(0),o=n(2),i=n(4),a=n(26),l=r.Object,s=o("".split);e.exports=i((function(){return!l("z").propertyIsEnumerable(0)}))?function(e){return"String"==a(e)?s(e,""):l(e)}:l},function(e,t,n){var r=n(0).TypeError;e.exports=function(e){if(null==e)throw r("Can't call method on "+e);return e}},function(e,t,n){var r=n(96),o=n(45);e.exports=function(e){var t=r(e,"string");return o(t)?t:t+""}},function(e,t,n){var r=n(0),o=n(15),i=n(1),a=n(46),l=n(47),s=r.Object;e.exports=l?function(e){return"symbol"==typeof e}:function(e){var t=o("Symbol");return i(t)&&a(t.prototype,s(e))}},function(e,t,n){var r=n(2);e.exports=r({}.isPrototypeOf)},function(e,t,n){var r=n(48);e.exports=r&&!Symbol.sham&&"symbol"==typeof Symbol.iterator},function(e,t,n){var r=n(49),o=n(4);e.exports=!!Object.getOwnPropertySymbols&&!o((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&r&&r<41}))},function(e,t,n){var r,o,i=n(0),a=n(97),l=i.process,s=i.Deno,c=l&&l.versions||s&&s.version,u=c&&c.v8;u&&(o=(r=u.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!o&&a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=+r[1]),e.exports=o},function(e,t,n){var r=n(0),o=n(1),i=n(99),a=r.TypeError;e.exports=function(e){if(o(e))return e;throw a(i(e)+" is not a function")}},function(e,t,n){var r=n(52),o=n(28);(e.exports=function(e,t){return o[e]||(o[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.20.3",mode:r?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.20.3/LICENSE",source:"https://github.com/zloirock/core-js"})},function(e,t){e.exports=!1},function(e,t,n){var r=n(0),o=n(43),i=r.Object;e.exports=function(e){return i(o(e))}},function(e,t,n){var r=n(2),o=0,i=Math.random(),a=r(1..toString);e.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+a(++o+i,36)}},function(e,t,n){var r=n(11),o=n(4),i=n(101);e.exports=!r&&!o((function(){return 7!=Object.defineProperty(i("div"),"a",{get:function(){return 7}}).a}))},function(e,t,n){var r=n(0),o=n(11),i=n(55),a=n(102),l=n(30),s=n(44),c=r.TypeError,u=Object.defineProperty,p=Object.getOwnPropertyDescriptor;t.f=o?a?function(e,t,n){if(l(e),t=s(t),l(n),"function"==typeof e&&"prototype"===t&&"value"in n&&"writable"in n&&!n.writable){var r=p(e,t);r&&r.writable&&(e[t]=n.value,n={configurable:"configurable"in n?n.configurable:r.configurable,enumerable:"enumerable"in n?n.enumerable:r.enumerable,writable:!1})}return u(e,t,n)}:u:function(e,t,n){if(l(e),t=s(t),l(n),i)try{return u(e,t,n)}catch(e){}if("get"in n||"set"in n)throw c("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var r=n(2),o=n(1),i=n(28),a=r(Function.toString);o(i.inspectSource)||(i.inspectSource=function(e){return a(e)}),e.exports=i.inspectSource},function(e,t){e.exports={}},function(e,t,n){var r=n(6),o=n(108),i=n(41),a=n(56);e.exports=function(e,t,n){for(var l=o(t),s=a.f,c=i.f,u=0;u0?r:n)(t)}},function(e,t,n){var r=n(113);e.exports=function(e){return r(e.length)}},function(e,t,n){var r=n(2),o=n(30),i=n(123);e.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=r(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return o(n),i(r),t?e(n,r):n.__proto__=r,n}}():void 0)},function(e,t){e.exports=function(e,t){for(var n=-1,r=t.length,o=e.length;++nu))return!1;var d=s.get(e),h=s.get(t);if(d&&h)return d==t&&h==e;var v=-1,m=!0,f=2&n?new r:void 0;for(s.set(e,t),s.set(t,e);++v-1&&e%1==0&&e=0&&Math.floor(t)===t&&isFinite(e)}function m(e){return a(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function f(e){return null==e?"":Array.isArray(e)||d(e)&&e.toString===p?JSON.stringify(e,null,2):String(e)}function g(e){var t=parseFloat(e);return isNaN(t)?e:t}function y(e,t){for(var n=Object.create(null),r=e.split(","),o=0;o-1)return e.splice(r,1)}}var P=Object.prototype.hasOwnProperty;function C(e,t){return P.call(e,t)}function D(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var k=/-(\w)/g,S=D((function(e){return e.replace(k,(function(e,t){return t?t.toUpperCase():""}))})),x=D((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),T=/\B([A-Z])/g,A=D((function(e){return e.replace(T,"-$1").toLowerCase()}));var _=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function E(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function L(e,t){for(var n in t)e[n]=t[n];return e}function B(e){for(var t={},n=0;n0,Y=X&&X.indexOf("edge/")>0;X&&X.indexOf("android");var Z=X&&/iphone|ipad|ipod|ios/.test(X);X&&/chrome\/\d+/.test(X),X&&/phantomjs/.test(X);var ee,te=X&&X.match(/firefox\/(\d+)/),ne={}.watch,re=!1;if(U)try{var oe={};Object.defineProperty(oe,"passive",{get:function(){re=!0}}),window.addEventListener("test-passive",null,oe)}catch(e){}var ie=function(){return void 0===ee&&(ee=!U&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),ee},ae=U&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function le(e){return"function"==typeof e&&/native code/.test(e.toString())}var se,ce="undefined"!=typeof Symbol&&le(Symbol)&&"undefined"!=typeof Reflect&&le(Reflect.ownKeys);se="undefined"!=typeof Set&&le(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ue=null;function pe(e){void 0===e&&(e=null),e||ue&&ue._scope.off(),ue=e,e&&e._scope.on()}var de=function(){function e(e,t,n,r,o,i,a,l){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=l,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(e.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),e}(),he=function(e){void 0===e&&(e="");var t=new de;return t.text=e,t.isComment=!0,t};function ve(e){return new de(void 0,void 0,void 0,String(e))}function me(e){var t=new de(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}var fe=0,ge=[],ye=function(){function e(){this._pending=!1,this.id=fe++,this.subs=[]}return e.prototype.addSub=function(e){this.subs.push(e)},e.prototype.removeSub=function(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,ge.push(this))},e.prototype.depend=function(t){e.target&&e.target.addDep(this)},e.prototype.notify=function(e){var t=this.subs.filter((function(e){return e}));for(var n=0,r=t.length;n0&&(Xe((c=e(c,"".concat(n||"","_").concat(r)))[0])&&Xe(p)&&(d[u]=ve(p.text+c[0].text),c.shift()),d.push.apply(d,c)):s(c)?Xe(p)?d[u]=ve(p.text+c):""!==c&&d.push(ve(c)):Xe(c)&&Xe(p)?d[u]=ve(p.text+c.text):(l(t._isVList)&&a(c.tag)&&i(c.key)&&a(n)&&(c.key="__vlist".concat(n,"_").concat(r,"__")),d.push(c)));return d}(e):void 0}function Xe(e){return a(e)&&a(e.text)&&!1===e.isComment}function Ke(e,t){var n,r,i,l,s=null;if(o(e)||"string"==typeof e)for(s=new Array(e.length),n=0,r=e.length;n0,l=t?!!t.$stable:!a,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(l&&o&&o!==r&&s===o.$key&&!a&&!o.$hasNormal)return o;for(var c in i={},t)t[c]&&"$"!==c[0]&&(i[c]=mt(e,n,c,t[c]))}else i={};for(var u in n)u in i||(i[u]=ft(n,u));return t&&Object.isExtensible(t)&&(t._normalized=i),Q(i,"$stable",l),Q(i,"$key",s),Q(i,"$hasNormal",a),i}function mt(e,t,n,r){var i=function(){var t=ue;pe(e);var n=arguments.length?r.apply(null,arguments):r({}),i=(n=n&&"object"==typeof n&&!o(n)?[n]:Ue(n))&&n[0];return pe(t),n&&(!i||1===n.length&&i.isComment&&!ht(i))?void 0:n};return r.proxy&&Object.defineProperty(t,n,{get:i,enumerable:!0,configurable:!0}),i}function ft(e,t){return function(){return e[t]}}function gt(e){return{get attrs(){if(!e._attrsProxy){var t=e._attrsProxy={};Q(t,"_v_attr_proxy",!0),yt(t,e.$attrs,r,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||yt(e._listenersProxy={},e.$listeners,r,e,"$listeners");return e._listenersProxy},get slots(){return function(e){e._slotsProxy||wt(e._slotsProxy={},e.$scopedSlots);return e._slotsProxy}(e)},emit:_(e.$emit,e),expose:function(t){t&&Object.keys(t).forEach((function(n){return je(e,t,n)}))}}}function yt(e,t,n,r,o){var i=!1;for(var a in t)a in e?t[a]!==n[a]&&(i=!0):(i=!0,bt(e,a,r,o));for(var a in e)a in t||(i=!0,delete e[a]);return i}function bt(e,t,n,r){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){return n[r][t]}})}function wt(e,t){for(var n in t)e[n]=t[n];for(var n in e)n in t||delete e[n]}var Pt=null;function Ct(e,t){return(e.__esModule||ce&&"Module"===e[Symbol.toStringTag])&&(e=e.default),u(e)?t.extend(e):e}function Dt(e){if(o(e))for(var t=0;tdocument.createEvent("Event").timeStamp&&(sn=function(){return cn.now()})}var un=function(e,t){if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function pn(){var e,t;for(ln=sn(),on=!0,en.sort(un),an=0;anan&&en[n].id>e.id;)n--;en.splice(n+1,0,e)}else en.push(e);rn||(rn=!0,Wt(pn))}}function hn(e,t){if(e){for(var n=Object.create(null),r=ce?Reflect.ownKeys(e):Object.keys(e),o=0;o-1)if(i&&!C(o,"default"))a=!1;else if(""===a||a===A(e)){var s=On(String,o.type);(s<0||l-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!h(e)&&e.test(t)}function Kn(e,t){var n=e.cache,r=e.keys,o=e._vnode;for(var i in n){var a=n[i];if(a){var l=a.name;l&&!t(l)&&Jn(n,i,r,o)}}}function Jn(e,t,n,r){var o=e[t];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),e[t]=null,w(n,t)}Gn.prototype._init=function(e){var t=this;t._uid=qn++,t._isVue=!0,t.__v_skip=!0,t._scope=new $e(!0),t._scope._vm=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=_n(Qn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Ut(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,o=n&&n.context;e.$slots=pt(t._renderChildren,o),e.$scopedSlots=n?vt(e.$parent,n.data.scopedSlots,e.$slots):r,e._c=function(t,n,r,o){return kt(e,t,n,r,o,!1)},e.$createElement=function(t,n,r,o){return kt(e,t,n,r,o,!0)};var i=n&&n.data;Le(e,"$attrs",i&&i.attrs||r,null,!0),Le(e,"$listeners",t._parentListeners||r,null,!0)}(t),Zt(t,"beforeCreate",void 0,!1),function(e){var t=hn(e.$options.inject,e);t&&(Te(!1),Object.keys(t).forEach((function(n){Le(e,n,t[n])})),Te(!0))}(t),Wn(t),function(e){var t=e.$options.provide;if(t){var n=c(t)?t.call(e):t;if(!u(n))return;for(var r=Me(e),o=ce?Reflect.ownKeys(n):Object.keys(n),i=0;i1?E(n):n;for(var r=E(arguments,1),o='event handler for "'.concat(e,'"'),i=0,a=n.length;iparseInt(this.max)&&Jn(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Jn(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",(function(t){Kn(e,(function(e){return Xn(t,e)}))})),this.$watch("exclude",(function(t){Kn(e,(function(e){return!Xn(t,e)}))}))},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=Dt(e),n=t&&t.componentOptions;if(n){var r=Un(n),o=this.include,i=this.exclude;if(o&&(!r||!Xn(o,r))||i&&r&&Xn(i,r))return t;var a=this.cache,l=this.keys,s=null==t.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):t.key;a[s]?(t.componentInstance=a[s].componentInstance,w(l,s),l.push(s)):(this.vnodeToCache=t,this.keyToCache=s),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return M}};Object.defineProperty(e,"config",t),e.util={warn:Cn,extend:L,mergeOptions:_n,defineReactive:Le},e.set=Be,e.delete=Ie,e.nextTick=Wt,e.observable=function(e){return Ee(e),e},e.options=Object.create(null),F.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,L(e.options.components,Zn),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=E(arguments,1);return n.unshift(this),c(e.install)?e.install.apply(e,n):c(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=_n(this.options,e),this}}(e),Vn(e),function(e){F.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&d(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&c(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(Gn),Object.defineProperty(Gn.prototype,"$isServer",{get:ie}),Object.defineProperty(Gn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Gn,"FunctionalRenderContext",{value:vn}),Gn.version="2.7.14";var er=y("style,class"),tr=y("input,textarea,option,select,progress"),nr=y("contenteditable,draggable,spellcheck"),rr=y("events,caret,typing,plaintext-only"),or=y("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ir="http://www.w3.org/1999/xlink",ar=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},lr=function(e){return ar(e)?e.slice(6,e.length):""},sr=function(e){return null==e||!1===e};function cr(e){for(var t=e.data,n=e,r=e;a(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=ur(r.data,t));for(;a(n=n.parent);)n&&n.data&&(t=ur(t,n.data));return function(e,t){if(a(e)||a(t))return pr(e,dr(t));return""}(t.staticClass,t.class)}function ur(e,t){return{staticClass:pr(e.staticClass,t.staticClass),class:a(e.class)?[e.class,t.class]:t.class}}function pr(e,t){return e?t?e+" "+t:e:t||""}function dr(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,o=e.length;r-1?Rr(e,t,n):or(t)?sr(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):nr(t)?e.setAttribute(t,function(e,t){return sr(t)||"false"===t?"false":"contenteditable"===e&&rr(t)?t:"true"}(t,n)):ar(t)?sr(n)?e.removeAttributeNS(ir,lr(t)):e.setAttributeNS(ir,t,n):Rr(e,t,n)}function Rr(e,t,n){if(sr(n))e.removeAttribute(t);else{if(K&&!J&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var Hr={create:Nr,update:Nr};function Wr(e,t){var n=t.elm,r=t.data,o=e.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var l=cr(t),s=n._transitionClasses;a(s)&&(l=pr(l,dr(s))),l!==n._prevClass&&(n.setAttribute("class",l),n._prevClass=l)}}var jr,Fr={create:Wr,update:Wr};function $r(e,t,n){var r=jr;return function o(){var i=t.apply(null,arguments);null!==i&&qr(e,o,n,r)}}var Mr=Et&&!(te&&Number(te[1])<=53);function zr(e,t,n,r){if(Mr){var o=ln,i=t;t=i._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=o||e.timeStamp<=0||e.target.ownerDocument!==document)return i.apply(this,arguments)}}jr.addEventListener(e,t,re?{capture:n,passive:r}:n)}function qr(e,t,n,r){(r||jr).removeEventListener(e,t._wrapper||t,n)}function Qr(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};jr=t.elm||e.elm,function(e){if(a(e.__r)){var t=K?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}a(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),Qe(n,r,zr,qr,$r,t.context),jr=void 0}}var Gr,Vr={create:Qr,update:Qr,destroy:function(e){return Qr(e,Dr)}};function Ur(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,r,o=t.elm,s=e.data.domProps||{},c=t.data.domProps||{};for(n in(a(c.__ob__)||l(c._v_attr_proxy))&&(c=t.data.domProps=L({},c)),s)n in c||(o[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===s[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var u=i(r)?"":String(r);Xr(o,u)&&(o.value=u)}else if("innerHTML"===n&&mr(o.tagName)&&i(o.innerHTML)){(Gr=Gr||document.createElement("div")).innerHTML="".concat(r,"");for(var p=Gr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;p.firstChild;)o.appendChild(p.firstChild)}else if(r!==s[n])try{o[n]=r}catch(e){}}}}function Xr(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(a(r)){if(r.number)return g(n)!==g(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Kr={create:Ur,update:Ur},Jr=D((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}));function Yr(e){var t=Zr(e.style);return e.staticStyle?L(e.staticStyle,t):t}function Zr(e){return Array.isArray(e)?B(e):"string"==typeof e?Jr(e):e}var eo,to=/^--/,no=/\s*!important$/,ro=function(e,t,n){if(to.test(t))e.style.setProperty(t,n);else if(no.test(n))e.style.setProperty(A(t),n.replace(no,""),"important");else{var r=io(t);if(Array.isArray(n))for(var o=0,i=n.length;o-1?t.split(so).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" ".concat(e.getAttribute("class")||""," ");n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function uo(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(so).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" ".concat(e.getAttribute("class")||""," "),r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function po(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&L(t,ho(e.name||"v")),L(t,e),t}return"string"==typeof e?ho(e):void 0}}var ho=D((function(e){return{enterClass:"".concat(e,"-enter"),enterToClass:"".concat(e,"-enter-to"),enterActiveClass:"".concat(e,"-enter-active"),leaveClass:"".concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-to"),leaveActiveClass:"".concat(e,"-leave-active")}})),vo=U&&!J,mo="transition",fo="transitionend",go="animation",yo="animationend";vo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(mo="WebkitTransition",fo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(go="WebkitAnimation",yo="webkitAnimationEnd"));var bo=U?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function wo(e){bo((function(){bo(e)}))}function Po(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),co(e,t))}function Co(e,t){e._transitionClasses&&w(e._transitionClasses,t),uo(e,t)}function Do(e,t,n){var r=So(e,t),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var l="transition"===o?fo:yo,s=0,c=function(){e.removeEventListener(l,u),n()},u=function(t){t.target===e&&++s>=a&&c()};setTimeout((function(){s0&&(n="transition",u=a,p=i.length):"animation"===t?c>0&&(n="animation",u=c,p=s.length):p=(n=(u=Math.max(a,c))>0?a>c?"transition":"animation":null)?"transition"===n?i.length:s.length:0,{type:n,timeout:u,propCount:p,hasTransform:"transition"===n&&ko.test(r[mo+"Property"])}}function xo(e,t){for(;e.length1}function Bo(e,t){!0!==t.data.show&&Ao(t)}var Io=function(e){var t,n,r={},c=e.modules,u=e.nodeOps;for(t=0;tv?w(e,i(n[g+1])?null:n[g+1].elm,n,h,g,r):h>g&&C(t,p,v)}(p,m,g,n,c):a(g)?(a(e.text)&&u.setTextContent(p,""),w(p,null,g,0,g.length-1,n)):a(m)?C(m,0,m.length-1):a(e.text)&&u.setTextContent(p,""):e.text!==t.text&&u.setTextContent(p,t.text),a(v)&&a(h=v.hook)&&a(h=h.postpatch)&&h(e,t)}}}function x(e,t,n){if(l(n)&&a(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(R(Wo(a),r))return void(e.selectedIndex!==l&&(e.selectedIndex=l));o||(e.selectedIndex=-1)}}function Ho(e,t){return t.every((function(t){return!R(t,e)}))}function Wo(e){return"_value"in e?e._value:e.value}function jo(e){e.target.composing=!0}function Fo(e){e.target.composing&&(e.target.composing=!1,$o(e.target,"input"))}function $o(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Mo(e){return!e.componentInstance||e.data&&e.data.transition?e:Mo(e.componentInstance._vnode)}var zo={model:No,show:{bind:function(e,t,n){var r=t.value,o=(n=Mo(n)).data&&n.data.transition,i=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&o?(n.data.show=!0,Ao(n,(function(){e.style.display=i}))):e.style.display=r?i:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Mo(n)).data&&n.data.transition?(n.data.show=!0,r?Ao(n,(function(){e.style.display=e.__vOriginalDisplay})):_o(n,(function(){e.style.display="none"}))):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,o){o||(e.style.display=e.__vOriginalDisplay)}}},qo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Qo(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Qo(Dt(t.children)):e}function Go(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var o=n._parentListeners;for(var r in o)t[S(r)]=o[r];return t}function Vo(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Uo=function(e){return e.tag||ht(e)},Xo=function(e){return"show"===e.name},Ko={name:"transition",props:qo,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(Uo)).length){0;var r=this.mode;0;var o=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;var i=Qo(o);if(!i)return o;if(this._leaving)return Vo(e,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var l=(i.data||(i.data={})).transition=Go(this),c=this._vnode,u=Qo(c);if(i.data.directives&&i.data.directives.some(Xo)&&(i.data.show=!0),u&&u.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(i,u)&&!ht(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var p=u.data.transition=L({},l);if("out-in"===r)return this._leaving=!0,Ge(p,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),Vo(e,o);if("in-out"===r){if(ht(i))return c;var d,h=function(){d()};Ge(l,"afterEnter",h),Ge(l,"enterCancelled",h),Ge(p,"delayLeave",(function(e){d=e}))}}return o}}},Jo=L({tag:String,moveClass:String},qo);function Yo(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function Zo(e){e.data.newPos=e.elm.getBoundingClientRect()}function ei(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,o=t.top-n.top;if(r||o){e.data.moved=!0;var i=e.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}delete Jo.mode;var ti={Transition:Ko,TransitionGroup:{props:Jo,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var o=Kt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,o(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Go(this),l=0;l-1?gr[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:gr[e]=/HTMLUnknownElement/.test(t.toString())},L(Gn.options.directives,zo),L(Gn.options.components,ti),Gn.prototype.__patch__=U?Io:I,Gn.prototype.$mount=function(e,t){return function(e,t,n){var r;e.$el=t,e.$options.render||(e.$options.render=he),Zt(e,"beforeMount"),r=function(){e._update(e._render(),n)},new qt(e,r,I,{before:function(){e._isMounted&&!e._isDestroyed&&Zt(e,"beforeUpdate")}},!0),n=!1;var o=e._preWatchers;if(o)for(var i=0;i=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(o.path||""),c=t&&t.path||"/",u=s.path?Ci(s.path,c,n||o.append):c,p=function(e,t,n){void 0===t&&(t={});var r,o=n||ci;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map(si):si(a)}return r}(s.query,o.query,r&&r.options.parseQuery),d=o.hash||s.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:u,query:p,hash:d}}var zi,qi=function(){},Qi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,l=o.href,s={},c=n.options.linkActiveClass,u=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,d=null==u?"router-link-exact-active":u,h=null==this.activeClass?p:this.activeClass,v=null==this.exactActiveClass?d:this.exactActiveClass,m=a.redirectedFrom?di(null,Mi(a.redirectedFrom),null,n):a;s[v]=gi(r,m,this.exactPath),s[h]=this.exact||this.exactPath?s[v]:function(e,t){return 0===e.path.replace(pi,"/").indexOf(t.path.replace(pi,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,m);var f=s[v]?this.ariaCurrentValue:null,g=function(e){Gi(e)&&(t.replace?n.replace(i,qi):n.push(i,qi))},y={click:Gi};Array.isArray(this.event)?this.event.forEach((function(e){y[e]=g})):y[this.event]=g;var b={class:s},w=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:l,route:a,navigate:g,isActive:s[h],isExactActive:s[v]});if(w){if(1===w.length)return w[0];if(w.length>1||!w.length)return 0===w.length?e():e("span",{},w)}if("a"===this.tag)b.on=y,b.attrs={href:l,"aria-current":f};else{var P=function e(t){var n;if(t)for(var r=0;r-1&&(l.params[d]=n.params[d]);return l.path=$i(u.path,l.params),s(u,l,a)}if(l.path){l.params={};for(var h=0;h-1}function Da(e,t){return Ca(e)&&e._isRouter&&(null==t||e.type===t)}function ka(e,t,n){var r=function(o){o>=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}function Sa(e){return function(t,n,r){var o=!1,i=0,a=null;xa(e,(function(e,t,n,l){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var s,c=_a((function(t){var o;((o=t).__esModule||Aa&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:zi.extend(t),n.components[l]=t,--i<=0&&r()})),u=_a((function(e){var t="Failed to resolve async component "+l+": "+e;a||(a=Ca(e)?e:new Error(t),r(a))}));try{s=e(c,u)}catch(e){u(e)}if(s)if("function"==typeof s.then)s.then(c,u);else{var p=s.component;p&&"function"==typeof p.then&&p.then(c,u)}}})),o||r()}}function xa(e,t){return Ta(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function Ta(e){return Array.prototype.concat.apply([],e)}var Aa="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function _a(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var Ea=function(e,t){this.router=e,this.base=function(e){if(!e)if(Vi){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=vi,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function La(e,t,n,r){var o=xa(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=zi.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return Ta(r?o.reverse():o)}function Ba(e,t){if(t)return function(){return e.apply(t,arguments)}}Ea.prototype.listen=function(e){this.cb=e},Ea.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Ea.prototype.onError=function(e){this.errorCbs.push(e)},Ea.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(Da(e,ga.redirected)&&i===vi||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},Ea.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,l=function(e){!Da(e)&&Ca(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},s=e.matched.length-1,c=o.matched.length-1;if(gi(e,o)&&s===c&&e.matched[s]===o.matched[c])return this.ensureURL(),e.hash&&ia(this.router,o,e,!1),l(((a=wa(i=o,e,ga.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var u=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=va&&n;r&&this.listeners.push(oa());var o=function(){var n=e.current,o=Na(e.base);e.current===vi&&o===e._startLocation||e.transitionTo(o,(function(e){r&&ia(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ma(Di(r.base+e.fullPath)),ia(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){fa(Di(r.base+e.fullPath)),ia(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(Na(this.base)!==this.current.fullPath){var t=Di(this.base+this.current.fullPath);e?ma(t):fa(t)}},t.prototype.getCurrentLocation=function(){return Na(this.base)},t}(Ea);function Na(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(Di(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Oa=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=Na(e);if(!/^\/#/.test(t))return window.location.replace(Di(e+"/#"+t)),!0}(this.base)||Ra()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=va&&t;n&&this.listeners.push(oa());var r=function(){var t=e.current;Ra()&&e.transitionTo(Ha(),(function(r){n&&ia(e.router,r,t,!0),va||Fa(r.fullPath)}))},o=va?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ja(e.fullPath),ia(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Fa(e.fullPath),ia(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;Ha()!==t&&(e?ja(t):Fa(t))},t.prototype.getCurrentLocation=function(){return Ha()},t}(Ea);function Ra(){var e=Ha();return"/"===e.charAt(0)||(Fa("/"+e),!1)}function Ha(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Wa(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function ja(e){va?ma(Wa(e)):window.location.hash=e}function Fa(e){va?fa(Wa(e)):window.location.replace(Wa(e))}var $a=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){Da(e,ga.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Ea),Ma=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ki(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!va&&!1!==e.fallback,this.fallback&&(t="hash"),Vi||(t="abstract"),this.mode=t,t){case"history":this.history=new Ia(this,e.base);break;case"hash":this.history=new Oa(this,e.base,this.fallback);break;case"abstract":this.history=new $a(this,e.base);break;default:0}},za={currentRoute:{configurable:!0}};Ma.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},za.currentRoute.get=function(){return this.history&&this.history.current},Ma.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof Ia||n instanceof Oa){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;va&&o&&"fullPath"in e&&ia(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Ma.prototype.beforeEach=function(e){return Qa(this.beforeHooks,e)},Ma.prototype.beforeResolve=function(e){return Qa(this.resolveHooks,e)},Ma.prototype.afterEach=function(e){return Qa(this.afterHooks,e)},Ma.prototype.onReady=function(e,t){this.history.onReady(e,t)},Ma.prototype.onError=function(e){this.history.onError(e)},Ma.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},Ma.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},Ma.prototype.go=function(e){this.history.go(e)},Ma.prototype.back=function(){this.go(-1)},Ma.prototype.forward=function(){this.go(1)},Ma.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Ma.prototype.resolve=function(e,t,n){var r=Mi(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?Di(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Ma.prototype.getRoutes=function(){return this.matcher.getRoutes()},Ma.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},Ma.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ma.prototype,za);var qa=Ma;function Qa(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}Ma.install=function e(t){if(!e.installed||zi!==t){e.installed=!0,zi=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",wi),t.component("RouterLink",Qi);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Ma.version="3.6.5",Ma.isNavigationFailure=Da,Ma.NavigationFailureType=ga,Ma.START_LOCATION=vi,Vi&&window.Vue&&window.Vue.use(Ma);n(94);n(120);var Ga={NotFound:()=>n.e(77).then(n.bind(null,667)),Layout:()=>Promise.all([n.e(0),n.e(3),n.e(16)]).then(n.bind(null,666)),Homepage:()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,668))},Va={"v-128c2a25":()=>n.e(54).then(n.bind(null,671)),"v-03334e4d":()=>n.e(55).then(n.bind(null,672)),"v-68028296":()=>n.e(78).then(n.bind(null,673)),"v-3b19ebb6":()=>n.e(79).then(n.bind(null,674)),"v-9b4e0776":()=>n.e(80).then(n.bind(null,675)),"v-c3e4e676":()=>n.e(81).then(n.bind(null,676)),"v-4c4d56f6":()=>n.e(82).then(n.bind(null,677)),"v-4d775b7a":()=>n.e(56).then(n.bind(null,678)),"v-61d8fd52":()=>n.e(83).then(n.bind(null,679)),"v-bc3ce3b6":()=>n.e(36).then(n.bind(null,680)),"v-64599034":()=>n.e(12).then(n.bind(null,681)),"v-9d2d2936":()=>n.e(57).then(n.bind(null,682)),"v-bac53276":()=>n.e(84).then(n.bind(null,683)),"v-0516060b":()=>n.e(85).then(n.bind(null,684)),"v-6762cd1e":()=>n.e(26).then(n.bind(null,685)),"v-a46e67b2":()=>n.e(48).then(n.bind(null,686)),"v-a39385f6":()=>n.e(86).then(n.bind(null,687)),"v-9909a134":()=>n.e(87).then(n.bind(null,688)),"v-3e89bcce":()=>n.e(58).then(n.bind(null,689)),"v-5c41b537":()=>n.e(88).then(n.bind(null,690)),"v-af48c69a":()=>n.e(89).then(n.bind(null,691)),"v-43a641c1":()=>n.e(59).then(n.bind(null,692)),"v-8e93b036":()=>n.e(60).then(n.bind(null,693)),"v-1ce314c7":()=>n.e(21).then(n.bind(null,694)),"v-11279236":()=>n.e(90).then(n.bind(null,695)),"v-28bb6fe9":()=>n.e(20).then(n.bind(null,696)),"v-ba716776":()=>n.e(23).then(n.bind(null,697)),"v-17b4e927":()=>n.e(42).then(n.bind(null,698)),"v-9ed60e36":()=>n.e(24).then(n.bind(null,699)),"v-784e0e36":()=>n.e(37).then(n.bind(null,700)),"v-f5865886":()=>n.e(18).then(n.bind(null,701)),"v-1aba0945":()=>n.e(91).then(n.bind(null,702)),"v-6423130d":()=>n.e(61).then(n.bind(null,703)),"v-4a79bbe7":()=>n.e(62).then(n.bind(null,704)),"v-7afc10f6":()=>n.e(92).then(n.bind(null,705)),"v-45023d5a":()=>n.e(94).then(n.bind(null,706)),"v-af8f8776":()=>n.e(95).then(n.bind(null,707)),"v-30d086c5":()=>n.e(93).then(n.bind(null,708)),"v-8a00b836":()=>n.e(96).then(n.bind(null,709)),"v-41065f05":()=>n.e(97).then(n.bind(null,710)),"v-d21f2f34":()=>n.e(63).then(n.bind(null,711)),"v-5762b925":()=>n.e(49).then(n.bind(null,712)),"v-180c16e5":()=>n.e(98).then(n.bind(null,713)),"v-39c48f76":()=>n.e(99).then(n.bind(null,714)),"v-762b62cf":()=>n.e(100).then(n.bind(null,715)),"v-49909ce5":()=>n.e(32).then(n.bind(null,716)),"v-3ec65b5a":()=>n.e(101).then(n.bind(null,717)),"v-dc719dd2":()=>n.e(102).then(n.bind(null,718)),"v-10e3317f":()=>n.e(103).then(n.bind(null,719)),"v-b64dbc36":()=>n.e(104).then(n.bind(null,720)),"v-f2be4ef6":()=>n.e(105).then(n.bind(null,721)),"v-3d044e45":()=>n.e(106).then(n.bind(null,722)),"v-ede35016":()=>n.e(107).then(n.bind(null,723)),"v-7daf4329":()=>n.e(108).then(n.bind(null,724)),"v-6f03bcc5":()=>n.e(50).then(n.bind(null,725)),"v-8ade6c04":()=>n.e(64).then(n.bind(null,726)),"v-19638485":()=>n.e(109).then(n.bind(null,727)),"v-06e5e8b6":()=>n.e(7).then(n.bind(null,728)),"v-3a2a5ff4":()=>n.e(110).then(n.bind(null,729)),"v-bcc9c0f6":()=>n.e(111).then(n.bind(null,730)),"v-52901cc5":()=>n.e(112).then(n.bind(null,731)),"v-aeaaf052":()=>n.e(33).then(n.bind(null,732)),"v-e159d7f6":()=>n.e(34).then(n.bind(null,733)),"v-2d316036":()=>n.e(113).then(n.bind(null,734)),"v-3d266a05":()=>n.e(115).then(n.bind(null,735)),"v-67ccefa5":()=>n.e(114).then(n.bind(null,736)),"v-bf626e76":()=>n.e(116).then(n.bind(null,737)),"v-92a19676":()=>n.e(117).then(n.bind(null,738)),"v-195b101b":()=>n.e(118).then(n.bind(null,739)),"v-b69e09ee":()=>n.e(119).then(n.bind(null,740)),"v-14b9fcf5":()=>n.e(120).then(n.bind(null,741)),"v-6dcde349":()=>n.e(11).then(n.bind(null,742)),"v-1e8449a5":()=>n.e(121).then(n.bind(null,743)),"v-5a7c8936":()=>n.e(122).then(n.bind(null,744)),"v-0fd6afca":()=>n.e(27).then(n.bind(null,745)),"v-02bea796":()=>n.e(43).then(n.bind(null,746)),"v-b4e335b6":()=>n.e(44).then(n.bind(null,747)),"v-dec9d2fe":()=>n.e(28).then(n.bind(null,748)),"v-42e075f7":()=>n.e(31).then(n.bind(null,749)),"v-78e9ef70":()=>n.e(123).then(n.bind(null,750)),"v-0763789a":()=>n.e(35).then(n.bind(null,751)),"v-1eb7e25b":()=>n.e(65).then(n.bind(null,752)),"v-0c2701b6":()=>n.e(124).then(n.bind(null,753)),"v-65060acd":()=>n.e(51).then(n.bind(null,754)),"v-7900ca36":()=>n.e(29).then(n.bind(null,755)),"v-51796845":()=>n.e(66).then(n.bind(null,756)),"v-2ad91fe5":()=>n.e(13).then(n.bind(null,757)),"v-9b2edb34":()=>n.e(67).then(n.bind(null,758)),"v-3526ef36":()=>n.e(52).then(n.bind(null,759)),"v-60c4a545":()=>n.e(125).then(n.bind(null,760)),"v-21ea7c46":()=>n.e(68).then(n.bind(null,761)),"v-7a7299c2":()=>n.e(126).then(n.bind(null,762)),"v-1a5789ad":()=>n.e(69).then(n.bind(null,763)),"v-6761eaa9":()=>n.e(70).then(n.bind(null,764)),"v-25de27bb":()=>n.e(127).then(n.bind(null,765)),"v-78fb4ca5":()=>n.e(128).then(n.bind(null,766)),"v-20a8c736":()=>n.e(129).then(n.bind(null,767)),"v-eee9bb82":()=>n.e(130).then(n.bind(null,768)),"v-6a07ad05":()=>n.e(71).then(n.bind(null,769)),"v-e3db5fd8":()=>n.e(131).then(n.bind(null,770)),"v-2352e414":()=>n.e(132).then(n.bind(null,771)),"v-88980e76":()=>n.e(38).then(n.bind(null,772)),"v-8d0f1fc6":()=>n.e(9).then(n.bind(null,773)),"v-15132f85":()=>n.e(30).then(n.bind(null,774)),"v-e98912f6":()=>n.e(39).then(n.bind(null,775)),"v-15dab665":()=>n.e(72).then(n.bind(null,776)),"v-49efd338":()=>n.e(73).then(n.bind(null,777)),"v-68f6ac6a":()=>n.e(40).then(n.bind(null,778)),"v-f5202af6":()=>n.e(74).then(n.bind(null,779)),"v-40e08a05":()=>n.e(134).then(n.bind(null,780)),"v-0597b005":()=>n.e(5).then(n.bind(null,781)),"v-21fce50b":()=>n.e(135).then(n.bind(null,782)),"v-7c2268b6":()=>n.e(136).then(n.bind(null,783)),"v-50ea01b4":()=>n.e(137).then(n.bind(null,784)),"v-937bc12e":()=>n.e(14).then(n.bind(null,785)),"v-9c5e78fe":()=>n.e(10).then(n.bind(null,786)),"v-784978e6":()=>n.e(138).then(n.bind(null,787)),"v-604d19c6":()=>n.e(139).then(n.bind(null,788)),"v-36032c85":()=>n.e(140).then(n.bind(null,789)),"v-31f01d3e":()=>n.e(141).then(n.bind(null,790)),"v-d4151eb6":()=>n.e(75).then(n.bind(null,791)),"v-63822f36":()=>n.e(142).then(n.bind(null,792)),"v-dae82c60":()=>n.e(76).then(n.bind(null,793)),"v-0e38183b":()=>n.e(4).then(n.bind(null,794)),"v-315abc86":()=>n.e(15).then(n.bind(null,795)),"v-5bcac676":()=>n.e(41).then(n.bind(null,796)),"v-13a93ebf":()=>n.e(22).then(n.bind(null,797)),"v-8c111c76":()=>n.e(143).then(n.bind(null,798)),"v-7d101341":()=>n.e(8).then(n.bind(null,799)),"v-53d8e985":()=>n.e(144).then(n.bind(null,800)),"v-faa5f0f6":()=>n.e(6).then(n.bind(null,801)),"v-a6ea6734":()=>n.e(53).then(n.bind(null,802)),"v-1dfa3141":()=>n.e(19).then(n.bind(null,803)),"v-dde32bd4":()=>n.e(133).then(n.bind(null,804)),"v-51df4a0d":()=>n.e(25).then(n.bind(null,805))};function Ua(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Xa=/-(\w)/g,Ka=Ua(e=>e.replace(Xa,(e,t)=>t?t.toUpperCase():"")),Ja=/\B([A-Z])/g,Ya=Ua(e=>e.replace(Ja,"-$1").toLowerCase()),Za=Ua(e=>e.charAt(0).toUpperCase()+e.slice(1));function el(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(Za(Ka(t))):e(Za(t))||e(Ya(t))}const tl=Object.assign({},Ga,Va),nl=e=>tl[e],rl=e=>Va[e],ol=e=>Ga[e],il=e=>Gn.component(e);function al(e){return el(rl,e)}function ll(e){return el(ol,e)}function sl(e){return el(nl,e)}function cl(e){return el(il,e)}function ul(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!cl(e)&&sl(e)){const t=await sl(e)();Gn.component(e,t.default)}}))}function pl(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var dl=n(87),hl=n.n(dl),vl=n(88),ml=n.n(vl),fl={created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${ml()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=yl(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=bl(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return hl()([{name:"description",content:this.$description}],e,this.siteMeta,wl)},updateCanonicalLink(){gl(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",yl(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){bl(null,this.currentMetaTags),gl()}};function gl(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function yl(e=""){return e?``:""}function bl(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function wl(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var Pl=n(89),Cl={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(Pl)()((function(){this.setActiveHash()}),300),setActiveHash(){const e=[].slice.call(document.querySelectorAll(".sidebar-link")),t=[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(e=>e.hash===t.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let e=0;e=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Dl=n(21),kl=n.n(Dl),Sl={mounted(){kl.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,n)=>{e.path===t.path||Gn.component(e.name)||kl.a.start(),n()}),this.$router.afterEach(()=>{kl.a.done(),this.isSidebarOpen=!1})}},xl={props:{parent:Object,code:String,options:{align:String,color:String,backgroundTransition:Boolean,backgroundColor:String,successText:String,staticIcon:Boolean}},data:()=>({success:!1,originalBackground:null,originalTransition:null}),computed:{alignStyle(){let e={};return e[this.options.align]="7.5px",e},iconClass(){return this.options.staticIcon?"":"hover"}},mounted(){this.originalTransition=this.parent.style.transition,this.originalBackground=this.parent.style.background},beforeDestroy(){this.parent.style.transition=this.originalTransition,this.parent.style.background=this.originalBackground},methods:{hexToRgb(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},copyToClipboard(e){if(navigator.clipboard)navigator.clipboard.writeText(this.code).then(()=>{this.setSuccessTransitions()},()=>{});else{let e=document.createElement("textarea");document.body.appendChild(e),e.value=this.code,e.select(),document.execCommand("Copy"),e.remove(),this.setSuccessTransitions()}},setSuccessTransitions(){if(clearTimeout(this.successTimeout),this.options.backgroundTransition){this.parent.style.transition="background 350ms";let e=this.hexToRgb(this.options.backgroundColor);this.parent.style.background=`rgba(${e.r}, ${e.g}, ${e.b}, 0.1)`}this.success=!0,this.successTimeout=setTimeout(()=>{this.options.backgroundTransition&&(this.parent.style.background=this.originalBackground,this.parent.style.transition=this.originalTransition),this.success=!1},500)}}},Tl=(n(225),n(9)),Al=Object(Tl.a)(xl,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"code-copy"},[t("svg",{class:e.iconClass,style:e.alignStyle,attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},on:{click:e.copyToClipboard}},[t("path",{attrs:{fill:"none",d:"M0 0h24v24H0z"}}),e._v(" "),t("path",{attrs:{fill:e.options.color,d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4l6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z"}})]),e._v(" "),t("span",{class:e.success?"success":"",style:e.alignStyle},[e._v("\n "+e._s(e.options.successText)+"\n ")])])}),[],!1,null,"49140617",null).exports,_l=(n(226),{updated(){this.update()},methods:{update(){setTimeout(()=>{document.querySelectorAll('div[class*="language-"] pre').forEach(e=>{if(e.classList.contains("code-copy-added"))return;let t=new(Gn.extend(Al));t.options={align:"bottom",color:"#8F979E",backgroundTransition:!1,backgroundColor:"#0075b8",successText:"Copied!",staticIcon:!0},t.code=e.innerText,t.parent=e,t.$mount(),e.classList.add("code-copy-added"),e.appendChild(t.$el)})},100)}}}),El=(n(227),Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(e){function t(){}e(t,t)},o=function(e){var t=e.target;t!==S?-1!==b.indexOf(t)&&m({target:t}):v()},i=function(){if(!P&&k.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(C-e)>D.scrollOffset&&setTimeout(v,150)}},a=function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||v()},l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e;if(e.background&&(S.style.background=e.background),e.container&&e.container instanceof Object&&(t.container=El({},D.container,e.container)),e.template){var n=Bl(e.template)?e.template:document.querySelector(e.template);t.template=n}return D=El({},D,t),b.forEach((function(e){e.dispatchEvent(Hl("medium-zoom:update",{detail:{zoom:x}}))})),x},s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(El({},D,t))},c=function(){for(var e=arguments.length,t=Array(e),n=0;n0?t.reduce((function(e,t){return[].concat(e,Nl(t))}),[]):b;return r.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(Hl("medium-zoom:detach",{detail:{zoom:x}}))})),b=b.filter((function(e){return-1===r.indexOf(e)})),x},p=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.addEventListener("medium-zoom:"+e,t,n)})),w.push({type:"medium-zoom:"+e,listener:t,options:n}),x},d=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.removeEventListener("medium-zoom:"+e,t,n)})),w=w.filter((function(n){return!(n.type==="medium-zoom:"+e&&n.listener.toString()===t.toString())})),x},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target,n=function(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,n=void 0;if(D.container)if(D.container instanceof Object)t=(e=El({},e,D.container)).width-e.left-e.right-2*D.margin,n=e.height-e.top-e.bottom-2*D.margin;else{var r=(Bl(D.container)?D.container:document.querySelector(D.container)).getBoundingClientRect(),o=r.width,i=r.height,a=r.left,l=r.top;e=El({},e,{width:o,height:i,left:a,top:l})}t=t||e.width-2*D.margin,n=n||e.height-2*D.margin;var s=k.zoomedHd||k.original,c=Il(s)?t:s.naturalWidth||t,u=Il(s)?n:s.naturalHeight||n,p=s.getBoundingClientRect(),d=p.top,h=p.left,v=p.width,m=p.height,f=Math.min(c,t)/v,g=Math.min(u,n)/m,y=Math.min(f,g),b="scale("+y+") translate3d("+((t-v)/2-h+D.margin+e.left)/y+"px, "+((n-m)/2-d+D.margin+e.top)/y+"px, 0)";k.zoomed.style.transform=b,k.zoomedHd&&(k.zoomedHd.style.transform=b)};return new r((function(e){if(t&&-1===b.indexOf(t))e(x);else{if(k.zoomed)e(x);else{if(t)k.original=t;else{if(!(b.length>0))return void e(x);var r=b;k.original=r[0]}if(k.original.dispatchEvent(Hl("medium-zoom:open",{detail:{zoom:x}})),C=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,P=!0,k.zoomed=Rl(k.original),document.body.appendChild(S),D.template){var o=Bl(D.template)?D.template:document.querySelector(D.template);k.template=document.createElement("div"),k.template.appendChild(o.content.cloneNode(!0)),document.body.appendChild(k.template)}if(document.body.appendChild(k.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),k.original.classList.add("medium-zoom-image--hidden"),k.zoomed.classList.add("medium-zoom-image--opened"),k.zoomed.addEventListener("click",v),k.zoomed.addEventListener("transitionend",(function t(){P=!1,k.zoomed.removeEventListener("transitionend",t),k.original.dispatchEvent(Hl("medium-zoom:opened",{detail:{zoom:x}})),e(x)})),k.original.getAttribute("data-zoom-src")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("srcset"),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.src=k.zoomed.getAttribute("data-zoom-src"),k.zoomedHd.onerror=function(){clearInterval(i),console.warn("Unable to reach the zoom image target "+k.zoomedHd.src),k.zoomedHd=null,n()};var i=setInterval((function(){k.zoomedHd.complete&&(clearInterval(i),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",v),document.body.appendChild(k.zoomedHd),n())}),10)}else if(k.original.hasAttribute("srcset")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.removeAttribute("loading");var a=k.zoomedHd.addEventListener("load",(function(){k.zoomedHd.removeEventListener("load",a),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",v),document.body.appendChild(k.zoomedHd),n()}))}else n()}}}))},v=function(){return new r((function(e){if(!P&&k.original){P=!0,document.body.classList.remove("medium-zoom--opened"),k.zoomed.style.transform="",k.zoomedHd&&(k.zoomedHd.style.transform=""),k.template&&(k.template.style.transition="opacity 150ms",k.template.style.opacity=0),k.original.dispatchEvent(Hl("medium-zoom:close",{detail:{zoom:x}})),k.zoomed.addEventListener("transitionend",(function t(){k.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(k.zoomed),k.zoomedHd&&document.body.removeChild(k.zoomedHd),document.body.removeChild(S),k.zoomed.classList.remove("medium-zoom-image--opened"),k.template&&document.body.removeChild(k.template),P=!1,k.zoomed.removeEventListener("transitionend",t),k.original.dispatchEvent(Hl("medium-zoom:closed",{detail:{zoom:x}})),k.original=null,k.zoomed=null,k.zoomedHd=null,k.template=null,e(x)}))}else e(x)}))},m=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return k.original?v():h({target:t})},f=function(){return D},g=function(){return b},y=function(){return k.original},b=[],w=[],P=!1,C=0,D=n,k={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(t)?D=t:(t||"string"==typeof t)&&c(t),D=El({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},D);var S=Ol(D.background);document.addEventListener("click",o),document.addEventListener("keyup",a),document.addEventListener("scroll",i),window.addEventListener("resize",v);var x={open:h,close:v,toggle:m,update:l,clone:s,attach:c,detach:u,on:p,off:d,getOptions:f,getImages:g,getZoomedImage:y};return x},jl=[fl,Cl,Sl,_l,{data:()=>({zoom:null}),mounted(){this.updateZoom()},updated(){this.updateZoom()},methods:{updateZoom(){setTimeout(()=>{this.zoom&&this.zoom.detach(),this.zoom=Wl(".theme-default-content :not(a) > img",void 0)},1e3)}}}],Fl={name:"GlobalLayout",computed:{layout(){const e=this.getLayout();return pl("layout",e),Gn.component(e)}},methods:{getLayout(){if(this.$page.path){const e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}}},$l=Object(Tl.a)(Fl,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}($l,"mixins",jl);const Ml=[{name:"v-128c2a25",path:"/AdvancedForms/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-128c2a25").then(n)}},{path:"/AdvancedForms/index.html",redirect:"/AdvancedForms/"},{path:"/AdvancedForms.html",redirect:"/AdvancedForms/"},{name:"v-03334e4d",path:"/Apps/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-03334e4d").then(n)}},{path:"/Apps/index.html",redirect:"/Apps/"},{path:"/Apps.html",redirect:"/Apps/"},{name:"v-68028296",path:"/BTCPayServer/LocalDevSetup/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-68028296").then(n)}},{path:"/BTCPayServer/LocalDevSetup/index.html",redirect:"/BTCPayServer/LocalDevSetup/"},{path:"/BTCPayServer/LocalDevSetup.html",redirect:"/BTCPayServer/LocalDevSetup/"},{name:"v-3b19ebb6",path:"/BTCPayServer/Security/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3b19ebb6").then(n)}},{path:"/BTCPayServer/Security/index.html",redirect:"/BTCPayServer/Security/"},{path:"/BTCPayServer/Security.html",redirect:"/BTCPayServer/Security/"},{name:"v-9b4e0776",path:"/BTCPayServer/db-migration/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9b4e0776").then(n)}},{path:"/BTCPayServer/db-migration/index.html",redirect:"/BTCPayServer/db-migration/"},{path:"/BTCPayServer/db-migration.html",redirect:"/BTCPayServer/db-migration/"},{name:"v-c3e4e676",path:"/BTCPayServer/greenfield-authorization/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-c3e4e676").then(n)}},{path:"/BTCPayServer/greenfield-authorization/index.html",redirect:"/BTCPayServer/greenfield-authorization/"},{path:"/BTCPayServer/greenfield-authorization.html",redirect:"/BTCPayServer/greenfield-authorization/"},{name:"v-4c4d56f6",path:"/BTCPayServer/greenfield-development/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-4c4d56f6").then(n)}},{path:"/BTCPayServer/greenfield-development/index.html",redirect:"/BTCPayServer/greenfield-development/"},{path:"/BTCPayServer/greenfield-development.html",redirect:"/BTCPayServer/greenfield-development/"},{name:"v-4d775b7a",path:"/BTCPayVsOthers/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-4d775b7a").then(n)}},{path:"/BTCPayVsOthers/index.html",redirect:"/BTCPayVsOthers/"},{path:"/BTCPayVsOthers.html",redirect:"/BTCPayVsOthers/"},{name:"v-61d8fd52",path:"/ColdCardWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-61d8fd52").then(n)}},{path:"/ColdCardWallet/index.html",redirect:"/ColdCardWallet/"},{path:"/ColdCardWallet.html",redirect:"/ColdCardWallet/"},{name:"v-bc3ce3b6",path:"/Community/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-bc3ce3b6").then(n)}},{path:"/Community/index.html",redirect:"/Community/"},{path:"/Community.html",redirect:"/Community/"},{name:"v-64599034",path:"/Configurator/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-64599034").then(n)}},{path:"/Configurator/index.html",redirect:"/Configurator/"},{name:"v-9d2d2936",path:"/ConnectWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9d2d2936").then(n)}},{path:"/ConnectWallet/index.html",redirect:"/ConnectWallet/"},{path:"/ConnectWallet.html",redirect:"/ConnectWallet/"},{name:"v-bac53276",path:"/Contribute/Design/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-bac53276").then(n)}},{path:"/Contribute/Design/index.html",redirect:"/Contribute/Design/"},{path:"/Contribute/Design.html",redirect:"/Contribute/Design/"},{name:"v-0516060b",path:"/Contribute/Dev/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0516060b").then(n)}},{path:"/Contribute/Dev/index.html",redirect:"/Contribute/Dev/"},{path:"/Contribute/Dev.html",redirect:"/Contribute/Dev/"},{name:"v-6762cd1e",path:"/Contribute/DevCode/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6762cd1e").then(n)}},{path:"/Contribute/DevCode/index.html",redirect:"/Contribute/DevCode/"},{path:"/Contribute/DevCode.html",redirect:"/Contribute/DevCode/"},{name:"v-a46e67b2",path:"/Contribute/DevTest/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-a46e67b2").then(n)}},{path:"/Contribute/DevTest/index.html",redirect:"/Contribute/DevTest/"},{path:"/Contribute/DevTest.html",redirect:"/Contribute/DevTest/"},{name:"v-a39385f6",path:"/Contribute/Misc/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-a39385f6").then(n)}},{path:"/Contribute/Misc/index.html",redirect:"/Contribute/Misc/"},{path:"/Contribute/Misc.html",redirect:"/Contribute/Misc/"},{name:"v-9909a134",path:"/Contribute/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9909a134").then(n)}},{path:"/Contribute/index.html",redirect:"/Contribute/"},{name:"v-3e89bcce",path:"/Contribute/Translate/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3e89bcce").then(n)}},{path:"/Contribute/Translate/index.html",redirect:"/Contribute/Translate/"},{path:"/Contribute/Translate.html",redirect:"/Contribute/Translate/"},{name:"v-5c41b537",path:"/Contribute/Write/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-5c41b537").then(n)}},{path:"/Contribute/Write/index.html",redirect:"/Contribute/Write/"},{path:"/Contribute/Write.html",redirect:"/Contribute/Write/"},{name:"v-af48c69a",path:"/Contribute/WriteBlog/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-af48c69a").then(n)}},{path:"/Contribute/WriteBlog/index.html",redirect:"/Contribute/WriteBlog/"},{path:"/Contribute/WriteBlog.html",redirect:"/Contribute/WriteBlog/"},{name:"v-43a641c1",path:"/Contribute/WriteDocs/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-43a641c1").then(n)}},{path:"/Contribute/WriteDocs/index.html",redirect:"/Contribute/WriteDocs/"},{path:"/Contribute/WriteDocs.html",redirect:"/Contribute/WriteDocs/"},{name:"v-8e93b036",path:"/CreateStore/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-8e93b036").then(n)}},{path:"/CreateStore/index.html",redirect:"/CreateStore/"},{path:"/CreateStore.html",redirect:"/CreateStore/"},{name:"v-1ce314c7",path:"/CreateWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1ce314c7").then(n)}},{path:"/CreateWallet/index.html",redirect:"/CreateWallet/"},{path:"/CreateWallet.html",redirect:"/CreateWallet/"},{name:"v-11279236",path:"/CustomIntegration/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-11279236").then(n)}},{path:"/CustomIntegration/index.html",redirect:"/CustomIntegration/"},{path:"/CustomIntegration.html",redirect:"/CustomIntegration/"},{name:"v-28bb6fe9",path:"/Contribute/WriteSoftware/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-28bb6fe9").then(n)}},{path:"/Contribute/WriteSoftware/index.html",redirect:"/Contribute/WriteSoftware/"},{path:"/Contribute/WriteSoftware.html",redirect:"/Contribute/WriteSoftware/"},{name:"v-ba716776",path:"/Dashboard/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-ba716776").then(n)}},{path:"/Dashboard/index.html",redirect:"/Dashboard/"},{path:"/Dashboard.html",redirect:"/Dashboard/"},{name:"v-17b4e927",path:"/Deployment/Azure/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-17b4e927").then(n)}},{path:"/Deployment/Azure/index.html",redirect:"/Deployment/Azure/"},{path:"/Deployment/Azure.html",redirect:"/Deployment/Azure/"},{name:"v-9ed60e36",path:"/Deployment/AzurePennyPinching/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9ed60e36").then(n)}},{path:"/Deployment/AzurePennyPinching/index.html",redirect:"/Deployment/AzurePennyPinching/"},{path:"/Deployment/AzurePennyPinching.html",redirect:"/Deployment/AzurePennyPinching/"},{name:"v-784e0e36",path:"/Deployment/Clovyr/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-784e0e36").then(n)}},{path:"/Deployment/Clovyr/index.html",redirect:"/Deployment/Clovyr/"},{path:"/Deployment/Clovyr.html",redirect:"/Deployment/Clovyr/"},{name:"v-f5865886",path:"/Deployment/DreamlabNetwork/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-f5865886").then(n)}},{path:"/Deployment/DreamlabNetwork/index.html",redirect:"/Deployment/DreamlabNetwork/"},{path:"/Deployment/DreamlabNetwork.html",redirect:"/Deployment/DreamlabNetwork/"},{name:"v-1aba0945",path:"/Deployment/DynamicDNS/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1aba0945").then(n)}},{path:"/Deployment/DynamicDNS/index.html",redirect:"/Deployment/DynamicDNS/"},{path:"/Deployment/DynamicDNS.html",redirect:"/Deployment/DynamicDNS/"},{name:"v-6423130d",path:"/Deployment/GoogleCloud/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6423130d").then(n)}},{path:"/Deployment/GoogleCloud/index.html",redirect:"/Deployment/GoogleCloud/"},{path:"/Deployment/GoogleCloud.html",redirect:"/Deployment/GoogleCloud/"},{name:"v-4a79bbe7",path:"/Deployment/Hack0/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-4a79bbe7").then(n)}},{path:"/Deployment/Hack0/index.html",redirect:"/Deployment/Hack0/"},{path:"/Deployment/Hack0.html",redirect:"/Deployment/Hack0/"},{name:"v-7afc10f6",path:"/Deployment/Hardware/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7afc10f6").then(n)}},{path:"/Deployment/Hardware/index.html",redirect:"/Deployment/Hardware/"},{path:"/Deployment/Hardware.html",redirect:"/Deployment/Hardware/"},{name:"v-45023d5a",path:"/Deployment/LightningInABox/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-45023d5a").then(n)}},{path:"/Deployment/LightningInABox/index.html",redirect:"/Deployment/LightningInABox/"},{path:"/Deployment/LightningInABox.html",redirect:"/Deployment/LightningInABox/"},{name:"v-af8f8776",path:"/Deployment/LunaNode/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-af8f8776").then(n)}},{path:"/Deployment/LunaNode/index.html",redirect:"/Deployment/LunaNode/"},{path:"/Deployment/LunaNode.html",redirect:"/Deployment/LunaNode/"},{name:"v-30d086c5",path:"/Deployment/HardwareAsAService/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-30d086c5").then(n)}},{path:"/Deployment/HardwareAsAService/index.html",redirect:"/Deployment/HardwareAsAService/"},{path:"/Deployment/HardwareAsAService.html",redirect:"/Deployment/HardwareAsAService/"},{name:"v-8a00b836",path:"/Deployment/ManualDeployment/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-8a00b836").then(n)}},{path:"/Deployment/ManualDeployment/index.html",redirect:"/Deployment/ManualDeployment/"},{path:"/Deployment/ManualDeployment.html",redirect:"/Deployment/ManualDeployment/"},{name:"v-41065f05",path:"/Deployment/ManualDeploymentExtended/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-41065f05").then(n)}},{path:"/Deployment/ManualDeploymentExtended/index.html",redirect:"/Deployment/ManualDeploymentExtended/"},{path:"/Deployment/ManualDeploymentExtended.html",redirect:"/Deployment/ManualDeploymentExtended/"},{name:"v-d21f2f34",path:"/Deployment/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-d21f2f34").then(n)}},{path:"/Deployment/index.html",redirect:"/Deployment/"},{name:"v-5762b925",path:"/Deployment/RaspberryPi4/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-5762b925").then(n)}},{path:"/Deployment/RaspberryPi4/index.html",redirect:"/Deployment/RaspberryPi4/"},{path:"/Deployment/RaspberryPi4.html",redirect:"/Deployment/RaspberryPi4/"},{name:"v-180c16e5",path:"/Deployment/ReverseProxyToTor/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-180c16e5").then(n)}},{path:"/Deployment/ReverseProxyToTor/index.html",redirect:"/Deployment/ReverseProxyToTor/"},{path:"/Deployment/ReverseProxyToTor.html",redirect:"/Deployment/ReverseProxyToTor/"},{name:"v-39c48f76",path:"/Deployment/ReverseSSHtunnel/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-39c48f76").then(n)}},{path:"/Deployment/ReverseSSHtunnel/index.html",redirect:"/Deployment/ReverseSSHtunnel/"},{path:"/Deployment/ReverseSSHtunnel.html",redirect:"/Deployment/ReverseSSHtunnel/"},{name:"v-762b62cf",path:"/Deployment/ThirdPartyHosting/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-762b62cf").then(n)}},{path:"/Deployment/ThirdPartyHosting/index.html",redirect:"/Deployment/ThirdPartyHosting/"},{path:"/Deployment/ThirdPartyHosting.html",redirect:"/Deployment/ThirdPartyHosting/"},{name:"v-49909ce5",path:"/Deployment/voltagecloud/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-49909ce5").then(n)}},{path:"/Deployment/voltagecloud/index.html",redirect:"/Deployment/voltagecloud/"},{path:"/Deployment/voltagecloud.html",redirect:"/Deployment/voltagecloud/"},{name:"v-3ec65b5a",path:"/Deployment/webdeployment/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3ec65b5a").then(n)}},{path:"/Deployment/webdeployment/index.html",redirect:"/Deployment/webdeployment/"},{path:"/Deployment/webdeployment.html",redirect:"/Deployment/webdeployment/"},{name:"v-dc719dd2",path:"/Development/Altcoins/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-dc719dd2").then(n)}},{path:"/Development/Altcoins/index.html",redirect:"/Development/Altcoins/"},{path:"/Development/Altcoins.html",redirect:"/Development/Altcoins/"},{name:"v-10e3317f",path:"/Development/GreenFieldExample-NodeJS/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-10e3317f").then(n)}},{path:"/Development/GreenFieldExample-NodeJS/index.html",redirect:"/Development/GreenFieldExample-NodeJS/"},{path:"/Development/GreenFieldExample-NodeJS.html",redirect:"/Development/GreenFieldExample-NodeJS/"},{name:"v-b64dbc36",path:"/Development/GreenFieldExample/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-b64dbc36").then(n)}},{path:"/Development/GreenFieldExample/index.html",redirect:"/Development/GreenFieldExample/"},{path:"/Development/GreenFieldExample.html",redirect:"/Development/GreenFieldExample/"},{name:"v-f2be4ef6",path:"/Development/GreenfieldExample-PHP/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-f2be4ef6").then(n)}},{path:"/Development/GreenfieldExample-PHP/index.html",redirect:"/Development/GreenfieldExample-PHP/"},{path:"/Development/GreenfieldExample-PHP.html",redirect:"/Development/GreenfieldExample-PHP/"},{name:"v-3d044e45",path:"/Development/InvoiceMetadata/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3d044e45").then(n)}},{path:"/Development/InvoiceMetadata/index.html",redirect:"/Development/InvoiceMetadata/"},{path:"/Development/InvoiceMetadata.html",redirect:"/Development/InvoiceMetadata/"},{name:"v-ede35016",path:"/Development/LocalDev/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-ede35016").then(n)}},{path:"/Development/LocalDev/index.html",redirect:"/Development/LocalDev/"},{path:"/Development/LocalDev.html",redirect:"/Development/LocalDev/"},{name:"v-7daf4329",path:"/Development/LocalDevelopment/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7daf4329").then(n)}},{path:"/Development/LocalDevelopment/index.html",redirect:"/Development/LocalDevelopment/"},{path:"/Development/LocalDevelopment.html",redirect:"/Development/LocalDevelopment/"},{name:"v-6f03bcc5",path:"/Development/Plugins/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6f03bcc5").then(n)}},{path:"/Development/Plugins/index.html",redirect:"/Development/Plugins/"},{path:"/Development/Plugins.html",redirect:"/Development/Plugins/"},{name:"v-8ade6c04",path:"/Development/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-8ade6c04").then(n)}},{path:"/Development/index.html",redirect:"/Development/"},{name:"v-19638485",path:"/Development/TestnetDemo/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-19638485").then(n)}},{path:"/Development/TestnetDemo/index.html",redirect:"/Development/TestnetDemo/"},{path:"/Development/TestnetDemo.html",redirect:"/Development/TestnetDemo/"},{name:"v-06e5e8b6",path:"/Development/Theme/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-06e5e8b6").then(n)}},{path:"/Development/Theme/index.html",redirect:"/Development/Theme/"},{path:"/Development/Theme.html",redirect:"/Development/Theme/"},{name:"v-3a2a5ff4",path:"/Docker/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3a2a5ff4").then(n)}},{path:"/Docker/index.html",redirect:"/Docker/"},{name:"v-bcc9c0f6",path:"/Docker/backup-restore/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-bcc9c0f6").then(n)}},{path:"/Docker/backup-restore/index.html",redirect:"/Docker/backup-restore/"},{path:"/Docker/backup-restore.html",redirect:"/Docker/backup-restore/"},{name:"v-52901cc5",path:"/Docker/chatwoot/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-52901cc5").then(n)}},{path:"/Docker/chatwoot/index.html",redirect:"/Docker/chatwoot/"},{path:"/Docker/chatwoot.html",redirect:"/Docker/chatwoot/"},{name:"v-aeaaf052",path:"/Docker/cloudflare-tunnel/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-aeaaf052").then(n)}},{path:"/Docker/cloudflare-tunnel/index.html",redirect:"/Docker/cloudflare-tunnel/"},{path:"/Docker/cloudflare-tunnel.html",redirect:"/Docker/cloudflare-tunnel/"},{name:"v-e159d7f6",path:"/Docker/fastsync/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-e159d7f6").then(n)}},{path:"/Docker/fastsync/index.html",redirect:"/Docker/fastsync/"},{path:"/Docker/fastsync.html",redirect:"/Docker/fastsync/"},{name:"v-2d316036",path:"/Docker/fireflyiii/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-2d316036").then(n)}},{path:"/Docker/fireflyiii/index.html",redirect:"/Docker/fireflyiii/"},{path:"/Docker/fireflyiii.html",redirect:"/Docker/fireflyiii/"},{name:"v-3d266a05",path:"/Docker/lightning-terminal/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3d266a05").then(n)}},{path:"/Docker/lightning-terminal/index.html",redirect:"/Docker/lightning-terminal/"},{path:"/Docker/lightning-terminal.html",redirect:"/Docker/lightning-terminal/"},{name:"v-67ccefa5",path:"/Docker/joinmarket/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-67ccefa5").then(n)}},{path:"/Docker/joinmarket/index.html",redirect:"/Docker/joinmarket/"},{path:"/Docker/joinmarket.html",redirect:"/Docker/joinmarket/"},{name:"v-bf626e76",path:"/Docker/ndlc/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-bf626e76").then(n)}},{path:"/Docker/ndlc/index.html",redirect:"/Docker/ndlc/"},{path:"/Docker/ndlc.html",redirect:"/Docker/ndlc/"},{name:"v-92a19676",path:"/Docker/pihole/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-92a19676").then(n)}},{path:"/Docker/pihole/index.html",redirect:"/Docker/pihole/"},{path:"/Docker/pihole.html",redirect:"/Docker/pihole/"},{name:"v-195b101b",path:"/Docker/tallycoin-connect/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-195b101b").then(n)}},{path:"/Docker/tallycoin-connect/index.html",redirect:"/Docker/tallycoin-connect/"},{path:"/Docker/tallycoin-connect.html",redirect:"/Docker/tallycoin-connect/"},{name:"v-b69e09ee",path:"/Drupal/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-b69e09ee").then(n)}},{path:"/Drupal/index.html",redirect:"/Drupal/"},{path:"/Drupal.html",redirect:"/Drupal/"},{name:"v-14b9fcf5",path:"/ElectrumPersonalServer/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-14b9fcf5").then(n)}},{path:"/ElectrumPersonalServer/index.html",redirect:"/ElectrumPersonalServer/"},{path:"/ElectrumPersonalServer.html",redirect:"/ElectrumPersonalServer/"},{name:"v-6dcde349",path:"/ElectrumWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6dcde349").then(n)}},{path:"/ElectrumWallet/index.html",redirect:"/ElectrumWallet/"},{path:"/ElectrumWallet.html",redirect:"/ElectrumWallet/"},{name:"v-1e8449a5",path:"/ElectrumX/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1e8449a5").then(n)}},{path:"/ElectrumX/index.html",redirect:"/ElectrumX/"},{path:"/ElectrumX.html",redirect:"/ElectrumX/"},{name:"v-5a7c8936",path:"/FAQ/Altcoin/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-5a7c8936").then(n)}},{path:"/FAQ/Altcoin/index.html",redirect:"/FAQ/Altcoin/"},{path:"/FAQ/Altcoin.html",redirect:"/FAQ/Altcoin/"},{name:"v-0fd6afca",path:"/FAQ/Apps/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0fd6afca").then(n)}},{path:"/FAQ/Apps/index.html",redirect:"/FAQ/Apps/"},{path:"/FAQ/Apps.html",redirect:"/FAQ/Apps/"},{name:"v-02bea796",path:"/FAQ/Deployment/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-02bea796").then(n)}},{path:"/FAQ/Deployment/index.html",redirect:"/FAQ/Deployment/"},{path:"/FAQ/Deployment.html",redirect:"/FAQ/Deployment/"},{name:"v-b4e335b6",path:"/FAQ/General/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-b4e335b6").then(n)}},{path:"/FAQ/General/index.html",redirect:"/FAQ/General/"},{path:"/FAQ/General.html",redirect:"/FAQ/General/"},{name:"v-dec9d2fe",path:"/FAQ/Integrations/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-dec9d2fe").then(n)}},{path:"/FAQ/Integrations/index.html",redirect:"/FAQ/Integrations/"},{path:"/FAQ/Integrations.html",redirect:"/FAQ/Integrations/"},{name:"v-42e075f7",path:"/FAQ/LightningNetwork/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-42e075f7").then(n)}},{path:"/FAQ/LightningNetwork/index.html",redirect:"/FAQ/LightningNetwork/"},{path:"/FAQ/LightningNetwork.html",redirect:"/FAQ/LightningNetwork/"},{name:"v-78e9ef70",path:"/FAQ/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-78e9ef70").then(n)}},{path:"/FAQ/index.html",redirect:"/FAQ/"},{name:"v-0763789a",path:"/FAQ/ServerSettings/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0763789a").then(n)}},{path:"/FAQ/ServerSettings/index.html",redirect:"/FAQ/ServerSettings/"},{path:"/FAQ/ServerSettings.html",redirect:"/FAQ/ServerSettings/"},{name:"v-1eb7e25b",path:"/FAQ/Stores/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1eb7e25b").then(n)}},{path:"/FAQ/Stores/index.html",redirect:"/FAQ/Stores/"},{path:"/FAQ/Stores.html",redirect:"/FAQ/Stores/"},{name:"v-0c2701b6",path:"/FAQ/Synchronization/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0c2701b6").then(n)}},{path:"/FAQ/Synchronization/index.html",redirect:"/FAQ/Synchronization/"},{path:"/FAQ/Synchronization.html",redirect:"/FAQ/Synchronization/"},{name:"v-65060acd",path:"/FAQ/Wallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-65060acd").then(n)}},{path:"/FAQ/Wallet/index.html",redirect:"/FAQ/Wallet/"},{path:"/FAQ/Wallet.html",redirect:"/FAQ/Wallet/"},{name:"v-7900ca36",path:"/Forms/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7900ca36").then(n)}},{path:"/Forms/index.html",redirect:"/Forms/"},{path:"/Forms.html",redirect:"/Forms/"},{name:"v-51796845",path:"/Guide/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-51796845").then(n)}},{path:"/Guide/index.html",redirect:"/Guide/"},{path:"/Guide.html",redirect:"/Guide/"},{name:"v-2ad91fe5",path:"/HardwareWalletIntegration/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-2ad91fe5").then(n)}},{path:"/HardwareWalletIntegration/index.html",redirect:"/HardwareWalletIntegration/"},{path:"/HardwareWalletIntegration.html",redirect:"/HardwareWalletIntegration/"},{name:"v-9b2edb34",path:"/LNDhubAPI/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9b2edb34").then(n)}},{path:"/LNDhubAPI/index.html",redirect:"/LNDhubAPI/"},{name:"v-3526ef36",path:"/Invoices/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3526ef36").then(n)}},{path:"/Invoices/index.html",redirect:"/Invoices/"},{path:"/Invoices.html",redirect:"/Invoices/"},{name:"v-60c4a545",path:"/LNbank/LNDhub/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-60c4a545").then(n)}},{path:"/LNbank/LNDhub/index.html",redirect:"/LNbank/LNDhub/"},{path:"/LNbank/LNDhub.html",redirect:"/LNbank/LNDhub/"},{name:"v-21ea7c46",path:"/LNbank/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-21ea7c46").then(n)}},{path:"/LNbank/index.html",redirect:"/LNbank/"},{name:"v-7a7299c2",path:"/LNbank/Troubleshooting/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7a7299c2").then(n)}},{path:"/LNbank/Troubleshooting/index.html",redirect:"/LNbank/Troubleshooting/"},{path:"/LNbank/Troubleshooting.html",redirect:"/LNbank/Troubleshooting/"},{name:"v-1a5789ad",path:"/LedgerWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1a5789ad").then(n)}},{path:"/LedgerWallet/index.html",redirect:"/LedgerWallet/"},{path:"/LedgerWallet.html",redirect:"/LedgerWallet/"},{name:"v-6761eaa9",path:"/LightningNetwork/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6761eaa9").then(n)}},{path:"/LightningNetwork/index.html",redirect:"/LightningNetwork/"},{path:"/LightningNetwork.html",redirect:"/LightningNetwork/"},{name:"v-25de27bb",path:"/LightningNetwork_PaymentChannels/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-25de27bb").then(n)}},{path:"/LightningNetwork_PaymentChannels/index.html",redirect:"/LightningNetwork_PaymentChannels/"},{path:"/LightningNetwork_PaymentChannels.html",redirect:"/LightningNetwork_PaymentChannels/"},{name:"v-78fb4ca5",path:"/Magento/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-78fb4ca5").then(n)}},{path:"/Magento/index.html",redirect:"/Magento/"},{path:"/Magento.html",redirect:"/Magento/"},{name:"v-20a8c736",path:"/NBXplorer/API/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-20a8c736").then(n)}},{path:"/NBXplorer/API/index.html",redirect:"/NBXplorer/API/"},{path:"/NBXplorer/API.html",redirect:"/NBXplorer/API/"},{name:"v-eee9bb82",path:"/NBXplorer/Postgres-Migration/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-eee9bb82").then(n)}},{path:"/NBXplorer/Postgres-Migration/index.html",redirect:"/NBXplorer/Postgres-Migration/"},{path:"/NBXplorer/Postgres-Migration.html",redirect:"/NBXplorer/Postgres-Migration/"},{name:"v-6a07ad05",path:"/NBXplorer/Postgres-Schema/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6a07ad05").then(n)}},{path:"/NBXplorer/Postgres-Schema/index.html",redirect:"/NBXplorer/Postgres-Schema/"},{path:"/NBXplorer/Postgres-Schema.html",redirect:"/NBXplorer/Postgres-Schema/"},{name:"v-e3db5fd8",path:"/NBXplorer/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-e3db5fd8").then(n)}},{path:"/NBXplorer/index.html",redirect:"/NBXplorer/"},{name:"v-2352e414",path:"/Nostr/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-2352e414").then(n)}},{path:"/Nostr/index.html",redirect:"/Nostr/"},{name:"v-88980e76",path:"/Notifications/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-88980e76").then(n)}},{path:"/Notifications/index.html",redirect:"/Notifications/"},{path:"/Notifications.html",redirect:"/Notifications/"},{name:"v-8d0f1fc6",path:"/OpenCart/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-8d0f1fc6").then(n)}},{path:"/OpenCart/index.html",redirect:"/OpenCart/"},{path:"/OpenCart.html",redirect:"/OpenCart/"},{name:"v-15132f85",path:"/Payjoin/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-15132f85").then(n)}},{path:"/Payjoin/index.html",redirect:"/Payjoin/"},{path:"/Payjoin.html",redirect:"/Payjoin/"},{name:"v-e98912f6",path:"/PaymentRequests/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-e98912f6").then(n)}},{path:"/PaymentRequests/index.html",redirect:"/PaymentRequests/"},{path:"/PaymentRequests.html",redirect:"/PaymentRequests/"},{name:"v-15dab665",path:"/Payouts/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-15dab665").then(n)}},{path:"/Payouts/index.html",redirect:"/Payouts/"},{path:"/Payouts.html",redirect:"/Payouts/"},{name:"v-49efd338",path:"/PodServer/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-49efd338").then(n)}},{path:"/PodServer/index.html",redirect:"/PodServer/"},{name:"v-68f6ac6a",path:"/PrestaShop/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-68f6ac6a").then(n)}},{path:"/PrestaShop/index.html",redirect:"/PrestaShop/"},{path:"/PrestaShop.html",redirect:"/PrestaShop/"},{name:"v-f5202af6",path:"/RegisterAccount/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-f5202af6").then(n)}},{path:"/RegisterAccount/index.html",redirect:"/RegisterAccount/"},{path:"/RegisterAccount.html",redirect:"/RegisterAccount/"},{name:"v-40e08a05",path:"/Reporting/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-40e08a05").then(n)}},{path:"/Reporting/index.html",redirect:"/Reporting/"},{path:"/Reporting.html",redirect:"/Reporting/"},{name:"v-0597b005",path:"/Shopify/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0597b005").then(n)}},{path:"/Shopify/index.html",redirect:"/Shopify/"},{path:"/Shopify.html",redirect:"/Shopify/"},{name:"v-21fce50b",path:"/Shopware/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-21fce50b").then(n)}},{path:"/Shopware/index.html",redirect:"/Shopware/"},{path:"/Shopware.html",redirect:"/Shopware/"},{name:"v-7c2268b6",path:"/Support/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7c2268b6").then(n)}},{path:"/Support/index.html",redirect:"/Support/"},{path:"/Support.html",redirect:"/Support/"},{name:"v-50ea01b4",path:"/TicketTailor/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-50ea01b4").then(n)}},{path:"/TicketTailor/index.html",redirect:"/TicketTailor/"},{name:"v-937bc12e",path:"/Transmuter/DCA/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-937bc12e").then(n)}},{path:"/Transmuter/DCA/index.html",redirect:"/Transmuter/DCA/"},{path:"/Transmuter/DCA.html",redirect:"/Transmuter/DCA/"},{name:"v-9c5e78fe",path:"/Transmuter/EmailReceiptsPreset/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9c5e78fe").then(n)}},{path:"/Transmuter/EmailReceiptsPreset/index.html",redirect:"/Transmuter/EmailReceiptsPreset/"},{path:"/Transmuter/EmailReceiptsPreset.html",redirect:"/Transmuter/EmailReceiptsPreset/"},{name:"v-784978e6",path:"/Transmuter/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-784978e6").then(n)}},{path:"/Transmuter/index.html",redirect:"/Transmuter/"},{name:"v-604d19c6",path:"/Trocador/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-604d19c6").then(n)}},{path:"/Trocador/index.html",redirect:"/Trocador/"},{name:"v-36032c85",path:"/Troubleshooting/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-36032c85").then(n)}},{path:"/Troubleshooting/index.html",redirect:"/Troubleshooting/"},{path:"/Troubleshooting.html",redirect:"/Troubleshooting/"},{name:"v-31f01d3e",path:"/TryItOut/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-31f01d3e").then(n)}},{path:"/TryItOut/index.html",redirect:"/TryItOut/"},{path:"/TryItOut.html",redirect:"/TryItOut/"},{name:"v-d4151eb6",path:"/UseCase/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-d4151eb6").then(n)}},{path:"/UseCase/index.html",redirect:"/UseCase/"},{path:"/UseCase.html",redirect:"/UseCase/"},{name:"v-63822f36",path:"/Vault/HowToVerify/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-63822f36").then(n)}},{path:"/Vault/HowToVerify/index.html",redirect:"/Vault/HowToVerify/"},{path:"/Vault/HowToVerify.html",redirect:"/Vault/HowToVerify/"},{name:"v-dae82c60",path:"/Vault/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-dae82c60").then(n)}},{path:"/Vault/index.html",redirect:"/Vault/"},{name:"v-0e38183b",path:"/VirtueMart/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0e38183b").then(n)}},{path:"/VirtueMart/index.html",redirect:"/VirtueMart/"},{path:"/VirtueMart.html",redirect:"/VirtueMart/"},{name:"v-315abc86",path:"/Wabisabi/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-315abc86").then(n)}},{path:"/Wabisabi/index.html",redirect:"/Wabisabi/"},{name:"v-5bcac676",path:"/Walkthrough/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-5bcac676").then(n)}},{path:"/Walkthrough/index.html",redirect:"/Walkthrough/"},{path:"/Walkthrough.html",redirect:"/Walkthrough/"},{name:"v-13a93ebf",path:"/Wallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-13a93ebf").then(n)}},{path:"/Wallet/index.html",redirect:"/Wallet/"},{path:"/Wallet.html",redirect:"/Wallet/"},{name:"v-8c111c76",path:"/WalletSetup/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-8c111c76").then(n)}},{path:"/WalletSetup/index.html",redirect:"/WalletSetup/"},{path:"/WalletSetup.html",redirect:"/WalletSetup/"},{name:"v-7d101341",path:"/WasabiWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7d101341").then(n)}},{path:"/WasabiWallet/index.html",redirect:"/WasabiWallet/"},{path:"/WasabiWallet.html",redirect:"/WasabiWallet/"},{name:"v-53d8e985",path:"/WhatsNext/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-53d8e985").then(n)}},{path:"/WhatsNext/index.html",redirect:"/WhatsNext/"},{path:"/WhatsNext.html",redirect:"/WhatsNext/"},{name:"v-faa5f0f6",path:"/WooCommerce/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-faa5f0f6").then(n)}},{path:"/WooCommerce/index.html",redirect:"/WooCommerce/"},{path:"/WooCommerce.html",redirect:"/WooCommerce/"},{name:"v-a6ea6734",path:"/Zapier/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-a6ea6734").then(n)}},{path:"/Zapier/index.html",redirect:"/Zapier/"},{name:"v-1dfa3141",path:"/Refund/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1dfa3141").then(n)}},{path:"/Refund/index.html",redirect:"/Refund/"},{path:"/Refund.html",redirect:"/Refund/"},{name:"v-dde32bd4",path:"/",component:$l,beforeEnter:(e,t,n)=>{ul("Homepage","v-dde32bd4").then(n)}},{path:"/index.html",redirect:"/"},{name:"v-51df4a0d",path:"/PullPayments/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-51df4a0d").then(n)}},{path:"/PullPayments/index.html",redirect:"/PullPayments/"},{path:"/PullPayments.html",redirect:"/PullPayments/"},{path:"*",component:$l}],zl={title:"BTCPay Server",description:"BTCPay Server Official Documentation",base:"/",headTags:[["meta",{name:"viewport",content:"width=device-width,initial-scale=1.0"}],["link",{rel:"stylesheet",href:"/styles/btcpayserver-variables.css"}]],pages:[{title:"Forms",frontmatter:{},regularPath:"/AdvancedForms.html",relativePath:"AdvancedForms.md",key:"v-128c2a25",path:"/AdvancedForms/",headers:[{level:2,title:"Well-known field names",slug:"well-known-field-names"},{level:2,title:"Mirror fields",slug:"mirror-fields"},{level:2,title:"Pre-filling form values",slug:"pre-filling-form-values"}]},{title:"BTCPay Server Apps",frontmatter:{description:"Apps allow users an easy way to extend BTCPay Server.",tags:["BTCPay Server","Apps","Point of Sale","Crowdfunding","Payment Button"]},regularPath:"/Apps.html",relativePath:"Apps.md",key:"v-03334e4d",path:"/Apps/",headers:[{level:2,title:"Point of Sale App",slug:"point-of-sale-app"},{level:2,title:"Crowdfunding App",slug:"crowdfunding-app"},{level:2,title:"Payment Button",slug:"payment-button"},{level:3,title:"Payment Button for React Developers",slug:"payment-button-for-react-developers"}]},{title:"Tooling",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver/edit/master/docs/LocalDevSetup.md",externalRepo:"https://github.com/btcpayserver/btcpayserver"},regularPath:"/BTCPayServer/LocalDevSetup.html",relativePath:"BTCPayServer/LocalDevSetup.md",key:"v-68028296",path:"/BTCPayServer/LocalDevSetup/",headers:[{level:2,title:"How to manually test payments",slug:"how-to-manually-test-payments"},{level:3,title:"Using the test bitcoin-cli",slug:"using-the-test-bitcoin-cli"},{level:3,title:"Using Polar to test Lightning payments",slug:"using-polar-to-test-lightning-payments"},{level:3,title:"Using the test litecoin-cli",slug:"using-the-test-litecoin-cli"},{level:3,title:"Using the test lightning-cli",slug:"using-the-test-lightning-cli"},{level:3,title:"Alternative Lightning testing: Using Polar to test Lightning payments",slug:"alternative-lightning-testing-using-polar-to-test-lightning-payments"},{level:2,title:"FAQ",slug:"faq"},{level:3,title:"docker-compose up dev failed or tests are not passing, what should I do?",slug:"docker-compose-up-dev-failed-or-tests-are-not-passing-what-should-i-do"},{level:3,title:"How to run the Altcoin environment?",slug:"how-to-run-the-altcoin-environment"},{level:3,title:"How to run the Selenium test with a browser?",slug:"how-to-run-the-selenium-test-with-a-browser"},{level:3,title:"Session not created: This version of ChromeDriver only supports Chrome version 88",slug:"session-not-created-this-version-of-chromedriver-only-supports-chrome-version-88"}]},{title:"Reporting a potential Vulnerability.",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver/edit/master/SECURITY.md",externalRepo:"https://github.com/btcpayserver/btcpayserver"},regularPath:"/BTCPayServer/Security.html",relativePath:"BTCPayServer/Security.md",key:"v-3b19ebb6",path:"/BTCPayServer/Security/"},{title:"Migration from SQLite and MySQL to Postgres",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver/edit/master/docs/db-migration.md",externalRepo:"https://github.com/btcpayserver/btcpayserver"},regularPath:"/BTCPayServer/db-migration.html",relativePath:"BTCPayServer/db-migration.md",key:"v-9b4e0776",path:"/BTCPayServer/db-migration/",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Procedure",slug:"procedure"},{level:2,title:"Known issues",slug:"known-issues"}]},{title:"GreenField API Authorization Flow",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver/edit/master/docs/greenfield-authorization.md",externalRepo:"https://github.com/btcpayserver/btcpayserver"},regularPath:"/BTCPayServer/greenfield-authorization.html",relativePath:"BTCPayServer/greenfield-authorization.md",key:"v-c3e4e676",path:"/BTCPayServer/greenfield-authorization/",headers:[{level:2,title:"Basic auth",slug:"basic-auth"},{level:2,title:"API Keys",slug:"api-keys"}]},{title:"GreenField API Development Documentation",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver/edit/master/docs/greenfield-development.md",externalRepo:"https://github.com/btcpayserver/btcpayserver"},regularPath:"/BTCPayServer/greenfield-development.html",relativePath:"BTCPayServer/greenfield-development.md",key:"v-4c4d56f6",path:"/BTCPayServer/greenfield-development/",headers:[{level:2,title:"Adding new API endpoints",slug:"adding-new-api-endpoints"},{level:2,title:"Updating existing API endpoints",slug:"updating-existing-api-endpoints"},{level:3,title:"Scenario 1: Changing a property type on the model",slug:"scenario-1-changing-a-property-type-on-the-model"},{level:3,title:"Scenario 2: Removing a property on the model",slug:"scenario-2-removing-a-property-on-the-model"},{level:3,title:"Scenario 3: Adding a property on the model",slug:"scenario-3-adding-a-property-on-the-model"},{level:2,title:"Technical specifics",slug:"technical-specifics"},{level:3,title:"Detecting missing properties in a JSON model.",slug:"detecting-missing-properties-in-a-json-model"}]},{title:"BTCPay Server vs. Others",frontmatter:{},regularPath:"/BTCPayVsOthers.html",relativePath:"BTCPayVsOthers.md",key:"v-4d775b7a",path:"/BTCPayVsOthers/",headers:[{level:2,title:"Features",slug:"features"},{level:2,title:"Cost",slug:"cost"},{level:2,title:"Security",slug:"security"},{level:2,title:"Privacy",slug:"privacy"},{level:2,title:"Censorship-Resistance",slug:"censorship-resistance"},{level:2,title:"Decentralized",slug:"decentralized"},{level:2,title:"Fiat",slug:"fiat"},{level:2,title:"Can't find this information for other payment processors?",slug:"cant-find-this-information-for-other-payment-processors"}]},{title:"Connecting Coldcard Wallet to BTCPay Server",frontmatter:{},regularPath:"/ColdCardWallet.html",relativePath:"ColdCardWallet.md",key:"v-61d8fd52",path:"/ColdCardWallet/",headers:[{level:2,title:"Coldcard Wallet Setup",slug:"coldcard-wallet-setup"},{level:3,title:"Quick Setup",slug:"quick-setup"},{level:3,title:"Spending from BTCPay Server wallet with Coldcard (PSBT)",slug:"spending-from-btcpay-server-wallet-with-coldcard-psbt"}]},{title:"Community",frontmatter:{},regularPath:"/Community.html",relativePath:"Community.md",key:"v-bc3ce3b6",path:"/Community/"},{title:"Deploy BTCPay with Configurator",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-configurator/edit/master/README.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-configurator"},regularPath:"/Configurator/",relativePath:"Configurator/README.md",key:"v-64599034",path:"/Configurator/",headers:[{level:2,title:"Option 1: Add as an external service to BTCPay",slug:"option-1-add-as-an-external-service-to-btcpay"},{level:2,title:"Option 2: Build locally with Docker",slug:"option-2-build-locally-with-docker"},{level:2,title:"Export Manual Configuration",slug:"export-manual-configuration"},{level:2,title:"Privacy & Security Concerns",slug:"privacy-security-concerns"}]},{title:"Connect an existing wallet",frontmatter:{},regularPath:"/ConnectWallet.html",relativePath:"ConnectWallet.md",key:"v-9d2d2936",path:"/ConnectWallet/",headers:[{level:2,title:"Connect an existing wallet",slug:"connect-an-existing-wallet"},{level:3,title:"Connect hardware wallet",slug:"connect-hardware-wallet"},{level:3,title:"Import Wallet file",slug:"import-wallet-file"},{level:3,title:"Enter extended public key",slug:"enter-extended-public-key"},{level:3,title:"Scan wallet QR code",slug:"scan-wallet-qr-code"},{level:3,title:"Enter wallet seed",slug:"enter-wallet-seed"}]},{title:"Design BTCPay Server",frontmatter:{},regularPath:"/Contribute/Design.html",relativePath:"Contribute/Design.md",key:"v-bac53276",path:"/Contribute/Design/",headers:[{level:2,title:"Why designing matters",slug:"why-designing-matters"}]},{title:"Coding BTCPay Server",frontmatter:{},regularPath:"/Contribute/Dev.html",relativePath:"Contribute/Dev.md",key:"v-0516060b",path:"/Contribute/Dev/",headers:[{level:2,title:"Why coding matters",slug:"why-coding-matters"},{level:2,title:"Where to start",slug:"where-to-start"},{level:3,title:"Setup Developer Environment",slug:"setup-developer-environment"},{level:3,title:"Local BTCPay Development",slug:"local-btcpay-development"},{level:3,title:"Local BTCPay Testing",slug:"local-btcpay-testing"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Videos",slug:"videos"}]},{title:"Setup Developer Environment",frontmatter:{},regularPath:"/Contribute/DevCode.html",relativePath:"Contribute/DevCode.md",key:"v-6762cd1e",path:"/Contribute/DevCode/",headers:[{level:2,title:"Developer Resources",slug:"developer-resources"},{level:2,title:"Windows Setup Software",slug:"windows-setup-software"},{level:2,title:"Git Setup",slug:"git-setup"},{level:3,title:"Fork BTCPay Server Repository",slug:"fork-btcpay-server-repository"},{level:3,title:"Clone BTCPay Server Repository",slug:"clone-btcpay-server-repository"},{level:3,title:"Create a Development Feature Branch",slug:"create-a-development-feature-branch"},{level:2,title:"Local BTCPay Setup",slug:"local-btcpay-setup"},{level:3,title:"Bitcoin Regtest Network Setup",slug:"bitcoin-regtest-network-setup"},{level:3,title:"Build Local BTCPay Server in Browser Mode",slug:"build-local-btcpay-server-in-browser-mode"},{level:3,title:"Visual Studio Setup",slug:"visual-studio-setup"},{level:3,title:"Build Local BTCPay Server in Debug Mode",slug:"build-local-btcpay-server-in-debug-mode"},{level:3,title:"Visual Studio Code Changes In Your Local BTCPay Server",slug:"visual-studio-code-changes-in-your-local-btcpay-server"},{level:2,title:"Git Maintenance",slug:"git-maintenance"},{level:3,title:"Sync Forked BTCPay Server Repository",slug:"sync-forked-btcpay-server-repository"},{level:3,title:"Commit Code To Make Pull Request",slug:"commit-code-to-make-pull-request"},{level:3,title:"Create a Branch of a Pull Request",slug:"create-a-branch-of-a-pull-request"},{level:3,title:"Delete Local Branch",slug:"delete-local-branch"},{level:2,title:"Working with Docker Containers",slug:"working-with-docker-containers"},{level:2,title:"Greenfield API Development",slug:"greenfield-api-development"},{level:2,title:"Working with the Database",slug:"working-with-the-database"},{level:2,title:"Questions",slug:"questions"}]},{title:"Testing BTCPay Server",frontmatter:{},regularPath:"/Contribute/DevTest.html",relativePath:"Contribute/DevTest.md",key:"v-a46e67b2",path:"/Contribute/DevTest/",headers:[{level:2,title:"Setup Regtest Network and Local BTCPay Server",slug:"setup-regtest-network-and-local-btcpay-server"},{level:2,title:"Using Docker Images for Mainnet Testing",slug:"using-docker-images-for-mainnet-testing"},{level:2,title:"Create Invoice",slug:"create-invoice"},{level:2,title:"Pay Invoice",slug:"pay-invoice"},{level:2,title:"Testers FAQ",slug:"testers-faq"},{level:3,title:"Start Debugging gives Error: No connection could be made because the target machine actively refused it. 127.0.0.1:39372",slug:"start-debugging-gives-error-no-connection-could-be-made-because-the-target-machine-actively-refused-it-12700139372"},{level:3,title:"Regtest payments are not showing as confirmed?",slug:"regtest-payments-are-not-showing-as-confirmed"},{level:3,title:"Which branch should be tested for major releases?",slug:"which-branch-should-be-tested-for-major-releases"},{level:3,title:"Can I mark an invoice as paid?",slug:"can-i-mark-an-invoice-as-paid"}]},{title:"Contributing to BTCPay Server in other ways",frontmatter:{},regularPath:"/Contribute/Misc.html",relativePath:"Contribute/Misc.md",key:"v-a39385f6",path:"/Contribute/Misc/",headers:[{level:2,title:"Create Videos & Graphics",slug:"create-videos-graphics"},{level:2,title:"Hosting Providers",slug:"hosting-providers"},{level:2,title:"Contribute to the Directory",slug:"contribute-to-the-directory"},{level:2,title:"Project Discussions",slug:"project-discussions"},{level:2,title:"Community",slug:"community"},{level:2,title:"Spreading the word",slug:"spreading-the-word"}]},{title:"How to contribute to BTCPay Server?",frontmatter:{},regularPath:"/Contribute/",relativePath:"Contribute/README.md",key:"v-9909a134",path:"/Contribute/"},{title:"Translating BTCPay Server",frontmatter:{},regularPath:"/Contribute/Translate.html",relativePath:"Contribute/Translate.md",key:"v-3e89bcce",path:"/Contribute/Translate/",headers:[{level:2,title:"Why translations matter",slug:"why-translations-matter"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Step 1: View Existing Translations",slug:"step-1-view-existing-translations"},{level:2,title:"Step 2: Start New Translation",slug:"step-2-start-new-translation"},{level:2,title:"Step 3: Translation",slug:"step-3-translation"},{level:2,title:"Translation Tips",slug:"translation-tips"},{level:3,title:"Variables",slug:"variables"},{level:3,title:"Notifications",slug:"notifications"},{level:2,title:"Get help, ask questions",slug:"get-help-ask-questions"}]},{title:"Documenting BTCPay Server",frontmatter:{},regularPath:"/Contribute/Write.html",relativePath:"Contribute/Write.md",key:"v-5c41b537",path:"/Contribute/Write/",headers:[{level:2,title:"Why documentation matters",slug:"why-documentation-matters"},{level:2,title:"BTCPay Documentation",slug:"btcpay-documentation"},{level:2,title:"BTCPay Blog",slug:"btcpay-blog"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Recommended software",slug:"recommended-software"},{level:3,title:"Text Editor",slug:"text-editor"},{level:3,title:"Version Control",slug:"version-control"}]},{title:"Contribute to the blog",frontmatter:{},regularPath:"/Contribute/WriteBlog.html",relativePath:"Contribute/WriteBlog.md",key:"v-af48c69a",path:"/Contribute/WriteBlog/"},{title:"Contribute to the documentation",frontmatter:{},regularPath:"/Contribute/WriteDocs.html",relativePath:"Contribute/WriteDocs.md",key:"v-43a641c1",path:"/Contribute/WriteDocs/"},{title:"(2) Create a store",frontmatter:{},regularPath:"/CreateStore.html",relativePath:"CreateStore.md",key:"v-8e93b036",path:"/CreateStore/",headers:[{level:2,title:"Creating a Store in BTCPay Server",slug:"creating-a-store-in-btcpay-server"},{level:2,title:"Customizing your BTCPay Store Settings",slug:"customizing-your-btcpay-store-settings"}]},{title:"Create a new wallet",frontmatter:{},regularPath:"/CreateWallet.html",relativePath:"CreateWallet.md",key:"v-1ce314c7",path:"/CreateWallet/",headers:[{level:3,title:"Hot Wallet",slug:"hot-wallet"},{level:3,title:"Watch-only wallet",slug:"watch-only-wallet"}]},{title:"Using the BTCPay API for Custom Integration",frontmatter:{},regularPath:"/CustomIntegration.html",relativePath:"CustomIntegration.md",key:"v-11279236",path:"/CustomIntegration/",headers:[{level:2,title:"Official Client Libraries",slug:"official-client-libraries"},{level:2,title:"Accessing the API Manually",slug:"accessing-the-api-manually"},{level:2,title:"Pairing process",slug:"pairing-process"},{level:3,title:"Client side pairing",slug:"client-side-pairing"},{level:3,title:"Server side pairing",slug:"server-side-pairing"},{level:2,title:"Note",slug:"note"},{level:2,title:"Modal Checkout",slug:"modal-checkout"}]},{title:"Contribute to the software stack",frontmatter:{},regularPath:"/Contribute/WriteSoftware.html",relativePath:"Contribute/WriteSoftware.md",key:"v-28bb6fe9",path:"/Contribute/WriteSoftware/",headers:[{level:2,title:"Step 1",slug:"step-1"},{level:2,title:"Step 2",slug:"step-2"},{level:2,title:"Step 3",slug:"step-3"},{level:2,title:"Step 4",slug:"step-4"},{level:2,title:"Step 5",slug:"step-5"}]},{title:"Dashboard",frontmatter:{},regularPath:"/Dashboard.html",relativePath:"Dashboard.md",key:"v-ba716776",path:"/Dashboard/",headers:[{level:2,title:"Dashboard tiles",slug:"dashboard-tiles"},{level:3,title:"Wallet Balance",slug:"wallet-balance"},{level:3,title:"Transaction activity",slug:"transaction-activity"},{level:3,title:"Lightning Balance",slug:"lightning-balance"},{level:3,title:"Lightning Services",slug:"lightning-services"},{level:3,title:"Recent Transactions",slug:"recent-transactions"},{level:3,title:"Recent invoices",slug:"recent-invoices"},{level:3,title:"Current active crowdfund",slug:"current-active-crowdfund"}]},{title:"Azure Deployment",frontmatter:{},regularPath:"/Deployment/Azure.html",relativePath:"Deployment/Azure.md",key:"v-17b4e927",path:"/Deployment/Azure/",headers:[{level:2,title:"One-click setup",slug:"one-click-setup"}]},{title:"How to penny-pinch your Azure deployment",frontmatter:{},regularPath:"/Deployment/AzurePennyPinching.html",relativePath:"Deployment/AzurePennyPinching.md",key:"v-9ed60e36",path:"/Deployment/AzurePennyPinching/",headers:[{level:2,title:"How much am I spending now?",slug:"how-much-am-i-spending-now"},{level:2,title:"What is my current configuration",slug:"what-is-my-current-configuration"},{level:2,title:"Selecting a new Virtual Machine",slug:"selecting-a-new-virtual-machine"},{level:3,title:"FAQ: B1MS does not appear in the list",slug:"faq-b1ms-does-not-appear-in-the-list-"}]},{title:"Clovyr BTCPay Server web deployment.",frontmatter:{},regularPath:"/Deployment/Clovyr.html",relativePath:"Deployment/Clovyr.md",key:"v-784e0e36",path:"/Deployment/Clovyr/",headers:[{level:2,title:"1. Visit the Clovyer BTCPay Server launch page",slug:"1-visit-the-clovyer-btcpay-server-launch-page"},{level:2,title:"2. Account creation",slug:"2-account-creation"},{level:2,title:"3. Accessing BTCPay Server",slug:"3-accessing-btcpay-server"},{level:2,title:"4. Start your first store.",slug:"4-start-your-first-store"},{level:2,title:"5. Welcome to your BTCPay Server dashboard",slug:"5-welcome-to-your-btcpay-server-dashboard"},{level:2,title:"6. Billing",slug:"6-billing"}]},{title:"Dream Lab Network BTCPay Server web deployment.",frontmatter:{},regularPath:"/Deployment/DreamlabNetwork.html",relativePath:"Deployment/DreamlabNetwork.md",key:"v-f5865886",path:"/Deployment/DreamlabNetwork/",headers:[{level:2,title:"1. Pick the server that fits your needs",slug:"1-pick-the-server-that-fits-your-needs"},{level:2,title:"2. Configure your BTCPay Server",slug:"2-configure-your-btcpay-server"},{level:3,title:"Hostname",slug:"hostname"},{level:3,title:"Configurable Options",slug:"configurable-options"},{level:3,title:"Addition Information",slug:"addition-information"},{level:3,title:"Review & Checkout",slug:"review-checkout"},{level:2,title:"3. Client Area Dream Lab Network",slug:"3-client-area-dream-lab-network"},{level:2,title:"4. Start your first store.",slug:"4-start-your-first-store"},{level:2,title:"5. Welcome to your BTCPay Server dashboard",slug:"5-welcome-to-your-btcpay-server-dashboard"}]},{title:"Dynamic DNS Service",frontmatter:{},regularPath:"/Deployment/DynamicDNS.html",relativePath:"Deployment/DynamicDNS.md",key:"v-1aba0945",path:"/Deployment/DynamicDNS/",headers:[{level:2,title:"Motivation",slug:"motivation"},{level:2,title:"How to use",slug:"how-to-use"},{level:3,title:"Step 1: Create the domain",slug:"step-1-create-the-domain"},{level:3,title:"Step 2: Configure Dynamic DNS on BTCPay Server",slug:"step-2-configure-dynamic-dns-on-btcpay-server"},{level:3,title:"Step 3: Configure your BTCPay docker install to provide HTTPS certificates",slug:"step-3-configure-your-btcpay-docker-install-to-provide-https-certificates"}]},{title:"Google Cloud Deployment",frontmatter:{},regularPath:"/Deployment/GoogleCloud.html",relativePath:"Deployment/GoogleCloud.md",key:"v-6423130d",path:"/Deployment/GoogleCloud/",headers:[{level:2,title:"Google Cloud shell setup",slug:"google-cloud-shell-setup"}]},{title:"Hack0",frontmatter:{},regularPath:"/Deployment/Hack0.html",relativePath:"Deployment/Hack0.md",key:"v-4a79bbe7",path:"/Deployment/Hack0/",headers:[{level:2,title:"Hardware specification (for distributors)",slug:"hardware-specification-for-distributors"},{level:2,title:"Factory installation (for distributors)",slug:"factory-installation-for-distributors"},{level:2,title:"End user setup",slug:"end-user-setup"},{level:2,title:"FAQ",slug:"faq"},{level:3,title:"How to connect via SSH to your hack0?",slug:"how-to-connect-via-ssh-to-your-hack0"}]},{title:"Hardware Deployment",frontmatter:{},regularPath:"/Deployment/Hardware.html",relativePath:"Deployment/Hardware.md",key:"v-7afc10f6",path:"/Deployment/Hardware/"},{title:"Hardware Deployment",frontmatter:{},regularPath:"/Deployment/LightningInABox.html",relativePath:"Deployment/LightningInABox.md",key:"v-45023d5a",path:"/Deployment/LightningInABox/"},{title:"Deploying BTCPay - LunaNode Web-Wizard",frontmatter:{},regularPath:"/Deployment/LunaNode.html",relativePath:"Deployment/LunaNode.md",key:"v-af8f8776",path:"/Deployment/LunaNode/",headers:[{level:2,title:"1. Create the account and add credits",slug:"1-create-the-account-and-add-credits"},{level:2,title:"2. Create the API Key",slug:"2-create-the-api-key"},{level:2,title:"3. Web-Wizard Deployment",slug:"3-web-wizard-deployment"},{level:2,title:"4. Additional customization (optional)",slug:"4-additional-customization-optional"}]},{title:"Hardware As A Service",frontmatter:{},regularPath:"/Deployment/HardwareAsAService.html",relativePath:"Deployment/HardwareAsAService.md",key:"v-30d086c5",path:"/Deployment/HardwareAsAService/"},{title:"Minimal manual setup",frontmatter:{},regularPath:"/Deployment/ManualDeployment.html",relativePath:"Deployment/ManualDeployment.md",key:"v-8a00b836",path:"/Deployment/ManualDeployment/",headers:[{level:2,title:"Warning: Not recommended to use in production",slug:"warning-not-recommended-to-use-in-production"},{level:2,title:"Typical manual installation",slug:"typical-manual-installation"},{level:3,title:"1) Install Bitcoin Core 0.19.1",slug:"1-install-bitcoin-core-0191"},{level:3,title:"2) Install .NET 6.0 SDK",slug:"2-install-net-60-sdk"},{level:3,title:"3) Install NBXplorer",slug:"3-install-nbxplorer"},{level:3,title:"4) Install BTCPayServer",slug:"4-install-btcpayserver"},{level:3,title:"5) Run bitcoind",slug:"5-run-bitcoind"},{level:3,title:"6) Run NBXplorer",slug:"6-run-nbxplorer"},{level:3,title:"7) Run BTCPay Server",slug:"7-run-btcpay-server"},{level:2,title:"Testnet Specific Deployments",slug:"testnet-specific-deployments"},{level:3,title:"Run bitcoind in testnet mode",slug:"run-bitcoind-in-testnet-mode"},{level:3,title:"Run NBXplorer in testnet mode",slug:"run-nbxplorer-in-testnet-mode"},{level:3,title:"Run BTCPayServer in testnet mode",slug:"run-btcpayserver-in-testnet-mode"},{level:2,title:"Additional links",slug:"additional-links"}]},{title:"Extended Manual Setup",frontmatter:{},regularPath:"/Deployment/ManualDeploymentExtended.html",relativePath:"Deployment/ManualDeploymentExtended.md",key:"v-41065f05",path:"/Deployment/ManualDeploymentExtended/",headers:[{level:2,title:"Installation Steps Overview",slug:"installation-steps-overview"},{level:3,title:"Security",slug:"security"},{level:2,title:"Unprivileged user",slug:"unprivileged-user"},{level:3,title:"Prerequisites",slug:"prerequisites"},{level:3,title:"Application Components",slug:"application-components"},{level:2,title:"Postgresql",slug:"postgresql"},{level:2,title:"Tor",slug:"tor"},{level:2,title:"NGINX and Let's Encrypt",slug:"nginx-and-lets-encrypt"},{level:2,title:"Bitcoin Core",slug:"bitcoin-core"},{level:2,title:"NBXplorer",slug:"nbxplorer"},{level:2,title:"BTCPay Server",slug:"btcpay-server"},{level:2,title:"Lightning Network Daemon (LND)",slug:"lightning-network-daemon-lnd"},{level:2,title:"Ride The Lightning (RTL)",slug:"ride-the-lightning-rtl"},{level:2,title:"The End",slug:"the-end"},{level:3,title:"Questions",slug:"questions"}]},{title:"Choosing a Deployment Method",frontmatter:{},regularPath:"/Deployment/",relativePath:"Deployment/README.md",key:"v-d21f2f34",path:"/Deployment/",headers:[{level:2,title:"To choose one that will best suit your needs, consider the following:",slug:"to-choose-one-that-will-best-suit-your-needs-consider-the-following"}]},{title:"Raspberry Pi Deployment",frontmatter:{},regularPath:"/Deployment/RaspberryPi4.html",relativePath:"Deployment/RaspberryPi4.md",key:"v-5762b925",path:"/Deployment/RaspberryPi4/",headers:[{level:2,title:"Required Hardware",slug:"required-hardware"},{level:3,title:"Raspberry Pi 4",slug:"raspberry-pi-4"},{level:3,title:"Data Storage options",slug:"data-storage-options"},{level:3,title:"Power Adapter options",slug:"power-adapter-options"},{level:3,title:"Case and Cooling options",slug:"case-and-cooling-options"},{level:2,title:"Quickstart",slug:"quickstart"},{level:3,title:"Setting up the Raspberry Pi",slug:"setting-up-the-raspberry-pi"},{level:2,title:"Detailed Step by Step Instructions",slug:"detailed-step-by-step-instructions"},{level:3,title:"Upgrade the OS packages to latest",slug:"upgrade-the-os-packages-to-latest"},{level:3,title:"Configuring the storage",slug:"configuring-the-storage"},{level:3,title:"Install Docker",slug:"install-docker"},{level:3,title:"Create mount for Docker volumes",slug:"create-mount-for-docker-volumes"},{level:3,title:"Configuring the firewall",slug:"configuring-the-firewall"},{level:3,title:"Setup BTCPay Server",slug:"setup-btcpay-server"},{level:3,title:"FastSync (optional)",slug:"fastsync-optional"}]},{title:"Reverse proxy to Tor",frontmatter:{},regularPath:"/Deployment/ReverseProxyToTor.html",relativePath:"Deployment/ReverseProxyToTor.md",key:"v-180c16e5",path:"/Deployment/ReverseProxyToTor/",headers:[{level:2,title:"Advantages",slug:"advantages"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"VPS Setup",slug:"vps-setup"},{level:3,title:"Socat setup",slug:"socat-setup"},{level:3,title:"Webserver setup",slug:"webserver-setup"},{level:2,title:"Do all this in a Docker container",slug:"do-all-this-in-a-docker-container"},{level:3,title:"SocaTor = SOCAT + TOR",slug:"socator-socat-tor"},{level:3,title:"Usage",slug:"usage"},{level:2,title:"Use that Docker container in a Kubernetes Cluster using these manifests",slug:"use-that-docker-container-in-a-kubernetes-cluster-using-these-manifests"},{level:2,title:"Resources",slug:"resources"}]},{title:"Forward ports with a reverse SSH tunnel",frontmatter:{},regularPath:"/Deployment/ReverseSSHtunnel.html",relativePath:"Deployment/ReverseSSHtunnel.md",key:"v-39c48f76",path:"/Deployment/ReverseSSHtunnel/",headers:[{level:2,title:"Advantages",slug:"advantages"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Setup",slug:"setup"},{level:3,title:"On the host (your BTCPay Server instance)",slug:"on-the-host-your-btcpay-server-instance"},{level:3,title:"On the VPS",slug:"on-the-vps"},{level:3,title:"Back to the host (your BTCPay Server instance)",slug:"back-to-the-host-your-btcpay-server-instance"},{level:2,title:"Monitoring",slug:"monitoring"},{level:2,title:"Resources",slug:"resources"}]},{title:"Third-party hosting",frontmatter:{},regularPath:"/Deployment/ThirdPartyHosting.html",relativePath:"Deployment/ThirdPartyHosting.md",key:"v-762b62cf",path:"/Deployment/ThirdPartyHosting/",headers:[{level:2,title:"Advantages and disadvantages",slug:"advantages-and-disadvantages"},{level:3,title:"Pros",slug:"pros"},{level:3,title:"Cons",slug:"cons"},{level:2,title:"Concerns For Use",slug:"concerns-for-use"},{level:3,title:"Security Concerns",slug:"security-concerns"},{level:3,title:"Privacy Concerns",slug:"privacy-concerns"},{level:3,title:"Trust Concerns",slug:"trust-concerns"},{level:2,title:"Third Party Hosting FAQ",slug:"third-party-hosting-faq"},{level:2,title:"Where is the list of BTCPay third-party hosts?",slug:"where-is-the-list-of-btcpay-third-party-hosts"},{level:2,title:"How can one become a third-party host?",slug:"how-can-one-become-a-third-party-host"},{level:2,title:"Are there any limitations in features when using a third-party host?",slug:"are-there-any-limitations-in-features-when-using-a-third-party-host"},{level:2,title:"Can I enable the use of my Lightning Network node to others?",slug:"can-i-enable-the-use-of-my-lightning-network-node-to-others"},{level:2,title:"What does the trusted third-party host know about their users?",slug:"what-does-the-trusted-third-party-host-know-about-their-users"}]},{title:"Voltage Cloud BTCPay Server web deployment",frontmatter:{},regularPath:"/Deployment/voltagecloud.html",relativePath:"Deployment/voltagecloud.md",key:"v-49909ce5",path:"/Deployment/voltagecloud/",headers:[{level:2,title:"1. Sign up and top up your account.",slug:"1-sign-up-and-top-up-your-account"},{level:2,title:"2. What node suits you?",slug:"2-what-node-suits-you"},{level:2,title:"3. Node dashboard",slug:"3-node-dashboard"},{level:2,title:"4. BTCPay server node",slug:"4-btcpay-server-node"},{level:2,title:"5. Finnish initial deployment.",slug:"5-finnish-initial-deployment"},{level:2,title:"6. Welcome to your BTCPay Server dashboard",slug:"6-welcome-to-your-btcpay-server-dashboard"}]},{title:"Introduction to Web Deployments",frontmatter:{},regularPath:"/Deployment/webdeployment.html",relativePath:"Deployment/webdeployment.md",key:"v-3ec65b5a",path:"/Deployment/webdeployment/",headers:[{level:2,title:"Known web deployments.",slug:"known-web-deployments"},{level:3,title:"LunaNode web-wizard.",slug:"lunanode-web-wizard"},{level:3,title:"Voltage Cloud",slug:"voltage-cloud"},{level:3,title:"DreamLab Network Solutions",slug:"dreamlab-network-solutions"},{level:3,title:"Clovyr",slug:"clovyr"},{level:2,title:"Missing deployments?",slug:"missing-deployments"}]},{title:"How to add an Altcoin",frontmatter:{},regularPath:"/Development/Altcoins.html",relativePath:"Development/Altcoins.md",key:"v-dc719dd2",path:"/Development/Altcoins/",headers:[{level:2,title:"How can I add an altcoin to BTCPayServer?",slug:"how-can-i-add-an-altcoin-to-btcpayserver"}]},{title:"Greenfield API example with Node.JS (JavaScript)",frontmatter:{},regularPath:"/Development/GreenFieldExample-NodeJS.html",relativePath:"Development/GreenFieldExample-NodeJS.md",key:"v-10e3317f",path:"/Development/GreenFieldExample-NodeJS/",headers:[{level:2,title:"Create a new user",slug:"create-a-new-user"},{level:2,title:"Create a new API key",slug:"create-a-new-api-key"},{level:2,title:"Create a new store",slug:"create-a-new-store"},{level:2,title:"Webhook implementation with Node.JS + Express",slug:"webhook-implementation-with-nodejs-express"}]},{title:"Greenfield API example with cURL",frontmatter:{},regularPath:"/Development/GreenFieldExample.html",relativePath:"Development/GreenFieldExample.md",key:"v-b64dbc36",path:"/Development/GreenFieldExample/",headers:[{level:2,title:"Create a new user",slug:"create-a-new-user"},{level:2,title:"Create a new API key",slug:"create-a-new-api-key"},{level:2,title:"Create a new store",slug:"create-a-new-store"},{level:2,title:"Create a new API key with limiting permissions on the new store, for example read only",slug:"create-a-new-api-key-with-limiting-permissions-on-the-new-store-for-example-read-only"},{level:2,title:"Read store information",slug:"read-store-information"}]},{title:"Greenfield API examples with PHP",frontmatter:{},regularPath:"/Development/GreenfieldExample-PHP.html",relativePath:"Development/GreenfieldExample-PHP.md",key:"v-f2be4ef6",path:"/Development/GreenfieldExample-PHP/",headers:[{level:2,title:"Create a new user",slug:"create-a-new-user"},{level:2,title:"Create a new API key",slug:"create-a-new-api-key"},{level:2,title:"Create a new store",slug:"create-a-new-store"},{level:2,title:"Create a simple invoice",slug:"create-a-simple-invoice"},{level:2,title:"Webhook implementation and validation with PHP",slug:"webhook-implementation-and-validation-with-php"}]},{title:"Invoice metadata",frontmatter:{},regularPath:"/Development/InvoiceMetadata.html",relativePath:"Development/InvoiceMetadata.md",key:"v-3d044e45",path:"/Development/InvoiceMetadata/",headers:[{level:2,title:"Well-known properties",slug:"well-known-properties"},{level:2,title:"Examples",slug:"examples"}]},{title:"Local development",frontmatter:{},regularPath:"/Development/LocalDev.html",relativePath:"Development/LocalDev.md",key:"v-ede35016",path:"/Development/LocalDev/",headers:[{level:2,title:"Prerequisites",slug:"prerequisites"},{level:2,title:"Dependencies",slug:"dependencies"},{level:2,title:"Which IDE?",slug:"which-ide"},{level:2,title:"Build configuration",slug:"build-configuration"},{level:2,title:"Launch profiles",slug:"launch-profiles"},{level:2,title:"Running tests",slug:"running-tests"},{level:2,title:"Altcoin support development",slug:"altcoin-support-development"},{level:2,title:"HTTPS support for local development",slug:"https-support-for-local-development"},{level:2,title:"Videos",slug:"videos"}]},{title:"Local development",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-doc/edit/master/docs/Development/LocalDev.md"},regularPath:"/Development/LocalDevelopment.html",relativePath:"Development/LocalDevelopment.md",key:"v-7daf4329",path:"/Development/LocalDevelopment/",headers:[{level:2,title:"Prerequisites",slug:"prerequisites"},{level:2,title:"Dependencies",slug:"dependencies"},{level:2,title:"Which IDE?",slug:"which-ide"},{level:2,title:"Build configuration",slug:"build-configuration"},{level:2,title:"Launch profiles",slug:"launch-profiles"},{level:2,title:"Running tests",slug:"running-tests"},{level:2,title:"Altcoin support development",slug:"altcoin-support-development"},{level:2,title:"HTTPS support for local development",slug:"https-support-for-local-development"},{level:2,title:"Videos",slug:"videos"},{level:2,title:"How to manually test payments",slug:"how-to-manually-test-payments"},{level:3,title:"Using the test bitcoin-cli",slug:"using-the-test-bitcoin-cli"},{level:3,title:"Using Polar to test Lightning payments",slug:"using-polar-to-test-lightning-payments"},{level:3,title:"Using the test litecoin-cli",slug:"using-the-test-litecoin-cli"},{level:3,title:"Using the test lightning-cli",slug:"using-the-test-lightning-cli"},{level:3,title:"Alternative Lightning testing: Using Polar to test Lightning payments",slug:"alternative-lightning-testing-using-polar-to-test-lightning-payments"},{level:2,title:"FAQ",slug:"faq"},{level:3,title:"docker-compose up dev failed or tests are not passing, what should I do?",slug:"docker-compose-up-dev-failed-or-tests-are-not-passing-what-should-i-do"},{level:3,title:"How to run the Altcoin environment?",slug:"how-to-run-the-altcoin-environment"},{level:3,title:"How to run the Selenium test with a browser?",slug:"how-to-run-the-selenium-test-with-a-browser"},{level:3,title:"Session not created: This version of ChromeDriver only supports Chrome version 88",slug:"session-not-created-this-version-of-chromedriver-only-supports-chrome-version-88"}]},{title:"Plugins",frontmatter:{},regularPath:"/Development/Plugins.html",relativePath:"Development/Plugins.md",key:"v-6f03bcc5",path:"/Development/Plugins/",headers:[{level:2,title:"Setup of a new plugin",slug:"setup-of-a-new-plugin"},{level:3,title:"Plugin reference",slug:"plugin-reference"},{level:2,title:"Coding a plugin",slug:"coding-a-plugin"},{level:3,title:"Assets",slug:"assets"},{level:3,title:"Database",slug:"database"},{level:3,title:"UI Extension Points",slug:"ui-extension-points"},{level:3,title:"Actions and Filters",slug:"actions-and-filters"},{level:3,title:"Authorization and Permissions",slug:"authorization-and-permissions"},{level:3,title:"API",slug:"api"},{level:2,title:"Publishing the plugin",slug:"publishing-the-plugin"},{level:2,title:"Resources",slug:"resources"}]},{title:"Architecture",frontmatter:{},regularPath:"/Development/",relativePath:"Development/README.md",key:"v-8ade6c04",path:"/Development/"},{title:"Testnet demo",frontmatter:{},regularPath:"/Development/TestnetDemo.html",relativePath:"Development/TestnetDemo.md",key:"v-19638485",path:"/Development/TestnetDemo/",headers:[{level:2,title:"Questions",slug:"questions"}]},{title:"Customizing themes",frontmatter:{},regularPath:"/Development/Theme.html",relativePath:"Development/Theme.md",key:"v-06e5e8b6",path:"/Development/Theme/",headers:[{level:2,title:"Built-in themes",slug:"built-in-themes"},{level:2,title:"1. Custom themes",slug:"1-custom-themes"},{level:3,title:"Developing and extending a custom theme",slug:"developing-and-extending-a-custom-theme"},{level:2,title:"2. Bootstrap themes",slug:"2-bootstrap-themes"},{level:2,title:"Checkout page themes",slug:"checkout-page-themes"},{level:3,title:"Andreas M. Antonopolous",slug:"andreas-m-antonopolous"},{level:3,title:"Bitcoin Fortune Cookie",slug:"bitcoin-fortune-cookie"},{level:3,title:"Bitma.tk",slug:"bitmatk"},{level:3,title:"Blockstream",slug:"blockstream"},{level:3,title:"Coincards",slug:"coincards"},{level:3,title:"CryptoCloaks",slug:"cryptocloaks"},{level:3,title:"Human Rights Foundation",slug:"human-rights-foundation"},{level:3,title:"Shiftcrypto",slug:"shiftcrypto"},{level:3,title:"Wears My Liberty",slug:"wears-my-liberty"},{level:3,title:"Bitcoin People",slug:"bitcoin-people"}]},{title:"Introduction",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/README.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/",relativePath:"Docker/README.md",key:"v-3a2a5ff4",path:"/Docker/",headers:[{level:2,title:"Generated docker-compose",slug:"generated-docker-compose"},{level:2,title:"Again, what does btcpay-setup.sh do?",slug:"again-what-does-btcpay-setupsh-do"},{level:2,title:"Overview of files generated by btcpay-setup.sh",slug:"overview-of-files-generated-by-btcpay-setupsh"},{level:2,title:"How can I modify my environment?",slug:"how-can-i-modify-my-environment"},{level:2,title:"I deployed before btcpay-setup.sh existed (before May 17, 2018), can I migrate to this new system?",slug:"i-deployed-before-btcpay-setupsh-existed-before-may-17-2018-can-i-migrate-to-this-new-system"},{level:2,title:"I'm getting an error on Windows: Cannot create container for service docker: Mount denied?",slug:"im-getting-an-error-on-windows-cannot-create-container-for-service-docker-mount-denied"},{level:2,title:"How I can prune my node(s)?",slug:"how-i-can-prune-my-nodes"},{level:2,title:"How can I customize the generated docker-compose file?",slug:"how-can-i-customize-the-generated-docker-compose-file"},{level:2,title:"Can I run BTCPay Server on ports other than 80 and 443?",slug:"can-i-run-btcpay-server-on-ports-other-than-80-and-443"},{level:2,title:"Can I offload HTTPS termination?",slug:"can-i-offload-https-termination"},{level:2,title:"How can I back up my BTCPay Server?",slug:"how-can-i-back-up-my-btcpay-server"},{level:2,title:"How can I connect to the database?",slug:"how-can-i-connect-to-the-database"},{level:2,title:"How do I upgrade my BTCPay Server docker?",slug:"how-do-i-upgrade-my-btcpay-server-docker"}]},{title:"Backup & Restore",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/backup-restore.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/backup-restore.html",relativePath:"Docker/backup-restore.md",key:"v-bcc9c0f6",path:"/Docker/backup-restore/",headers:[{level:2,title:"Remarks and Considerations",slug:"remarks-and-considerations"},{level:3,title:"Lightning channel backup",slug:"lightning-channel-backup"},{level:2,title:"How does the backup work?",slug:"how-does-the-backup-work"},{level:3,title:"Set a backup passphrase",slug:"set-a-backup-passphrase"},{level:3,title:"Automation by crontab",slug:"automation-by-crontab"},{level:2,title:"How to restore?",slug:"how-to-restore"}]},{title:"Chatwoot support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/chatwoot.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/chatwoot.html",relativePath:"Docker/chatwoot.md",key:"v-52901cc5",path:"/Docker/chatwoot/",headers:[{level:2,title:"How to use",slug:"how-to-use"}]},{title:"Cloudflare tunnel support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/cloudflare-tunnel.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/cloudflare-tunnel.html",relativePath:"Docker/cloudflare-tunnel.md",key:"v-aeaaf052",path:"/Docker/cloudflare-tunnel/",headers:[{level:2,title:"How to use?",slug:"how-to-use"},{level:2,title:"Recommended additional step",slug:"recommended-additional-step"},{level:2,title:"Known error",slug:"known-error"},{level:3,title:"Error 503",slug:"error-503"}]},{title:"Fast sync Bitcoin for BTCPay Server",frontmatter:{},regularPath:"/Docker/fastsync.html",relativePath:"Docker/fastsync.md",key:"v-e159d7f6",path:"/Docker/fastsync/",headers:[{level:2,title:"What problem does Fast Sync solve?",slug:"what-problem-does-fast-sync-solve"},{level:2,title:"How does Fast Sync solve the problem?",slug:"how-does-fast-sync-solve-the-problem"},{level:2,title:"What are the downsides of Fast Sync?",slug:"what-are-the-downsides-of-fast-sync"},{level:3,title:"Malicious UTXO Set",slug:"malicious-utxo-set"},{level:3,title:"Lightning Network routing issues",slug:"lightning-network-routing-issues"},{level:2,title:"How to verify that the UTXO Set snapshot follows the consensus?",slug:"how-to-verify-that-the-utxo-set-snapshot-follows-the-consensus"},{level:3,title:"If you trust the owner of this repository....",slug:"if-you-trust-the-owner-of-this-repository"},{level:3,title:"Don't trust, verify!",slug:"dont-trust-verify-"},{level:3,title:"If you trust someone else...",slug:"if-you-trust-someone-else"},{level:2,title:"FAQ",slug:"faq"},{level:3,title:"Can I add my signature to this repository?",slug:"can-i-add-my-signature-to-this-repository"},{level:3,title:"Where can I download UTXO set snapshots",slug:"where-can-i-download-utxo-set-snapshots"},{level:3,title:"How can I create my own snapshot?",slug:"how-can-i-create-my-own-snapshot"},{level:3,title:"How can I do this for my altcoin?",slug:"how-can-i-do-this-for-my-altcoin"},{level:3,title:"Do you plan to destroy Bitcoin?",slug:"do-you-plan-to-destroy-bitcoin"},{level:3,title:"Why you don't just: Make BTCPayServer rely on SPV",slug:"why-you-dont-just-make-btcpayserver-rely-on-spv"},{level:3,title:"Why you don't just: Make BTCPayServer rely on an external trusted node",slug:"why-you-dont-just-make-btcpayserver-rely-on-an-external-trusted-node"}]},{title:"Firefly III support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/fireflyiii.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/fireflyiii.html",relativePath:"Docker/fireflyiii.md",key:"v-2d316036",path:"/Docker/fireflyiii/",headers:[{level:2,title:"How to use",slug:"how-to-use"}]},{title:"Lightning Terminal (LiT)",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/lightning-terminal.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/lightning-terminal.html",relativePath:"Docker/lightning-terminal.md",key:"v-3d266a05",path:"/Docker/lightning-terminal/",headers:[{level:2,title:"Installation",slug:"installation"},{level:2,title:"Troubleshooting",slug:"troubleshooting"}]},{title:"Joinmarket support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/joinmarket.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/joinmarket.html",relativePath:"Docker/joinmarket.md",key:"v-67ccefa5",path:"/Docker/joinmarket/",headers:[{level:2,title:"How to use",slug:"how-to-use"},{level:2,title:"How to change joinmarket configuration?",slug:"how-to-change-joinmarket-configuration"},{level:2,title:"Managing your wallet",slug:"managing-your-wallet"},{level:2,title:"Getting command prompt into the container",slug:"getting-command-prompt-into-the-container"},{level:2,title:"Managing the services such as yield generators",slug:"managing-the-services-such-as-yield-generators"},{level:2,title:"OB-Watcher",slug:"ob-watcher"},{level:2,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:"Error: Failed to load wallet, you need to remove the lock file",slug:"error-failed-to-load-wallet-you-need-to-remove-the-lock-file"},{level:3,title:"Read the logs of services",slug:"read-the-logs-of-services"}]},{title:"NDLC support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/ndlc.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/ndlc.html",relativePath:"Docker/ndlc.md",key:"v-bf626e76",path:"/Docker/ndlc/",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"How to use",slug:"how-to-use"}]},{title:"Pi-Hole support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/pihole.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/pihole.html",relativePath:"Docker/pihole.md",key:"v-92a19676",path:"/Docker/pihole/",headers:[{level:2,title:"How to use",slug:"how-to-use"},{level:2,title:"Using the dashboard",slug:"using-the-dashboard"}]},{title:"Tallycoin Connect",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/tallycoin-connect.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/tallycoin-connect.html",relativePath:"Docker/tallycoin-connect.md",key:"v-195b101b",path:"/Docker/tallycoin-connect/",headers:[{level:2,title:"Installation",slug:"installation"},{level:2,title:"Troubleshooting",slug:"troubleshooting"}]},{title:"Drupal Commerce 2.x integration",frontmatter:{},regularPath:"/Drupal.html",relativePath:"Drupal.md",key:"v-b69e09ee",path:"/Drupal/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Module installation and configuration",slug:"module-installation-and-configuration"},{level:3,title:"Quick walkthrough screencast",slug:"quick-walkthrough-screencast"},{level:3,title:"Quick walkthrough steps",slug:"quick-walkthrough-steps"}]},{title:"Electrum Personal Server (EPS) integration",frontmatter:{},regularPath:"/ElectrumPersonalServer.html",relativePath:"ElectrumPersonalServer.md",key:"v-14b9fcf5",path:"/ElectrumPersonalServer/",headers:[{level:2,title:"About Tor support",slug:"about-tor-support"},{level:2,title:"How to enable Electrum Personal Server (EPS) in BTCPay:",slug:"how-to-enable-electrum-personal-server-eps-in-btcpay"},{level:2,title:"How to connect Electrum Wallet to EPS",slug:"how-to-connect-electrum-wallet-to-eps"},{level:3,title:"Reflection on what has been achieved:",slug:"reflection-on-what-has-been-achieved"},{level:3,title:"Troubleshooting:",slug:"troubleshooting"}]},{title:"Connecting Electrum Wallet to BTCPay Server",frontmatter:{},regularPath:"/ElectrumWallet.html",relativePath:"ElectrumWallet.md",key:"v-6dcde349",path:"/ElectrumWallet/",headers:[{level:2,title:"Electrum Wallet Setup",slug:"electrum-wallet-setup"},{level:3,title:"Quick Setup",slug:"quick-setup"},{level:2,title:"Step by Step",slug:"step-by-step"},{level:3,title:"Alternative Setup",slug:"alternative-setup"},{level:3,title:"Configuring the Gap Limit in Electrum",slug:"configuring-the-gap-limit-in-electrum"}]},{title:"ElectrumX",frontmatter:{},regularPath:"/ElectrumX.html",relativePath:"ElectrumX.md",key:"v-1e8449a5",path:"/ElectrumX/",headers:[{level:2,title:"How to integrate ElectrumX into your BTCPay Server and connect your Electrum Wallet to it for your complete privacy",slug:"how-to-integrate-electrumx-into-your-btcpay-server-and-connect-your-electrum-wallet-to-it-for-your-complete-privacy"},{level:3,title:"(only available in BTCPay docker version)",slug:"only-available-in-btcpay-docker-version"},{level:2,title:"Section 2.1 Enable Your Own ElectrumX Server (fully integrated with your BTCPay Server's full bitcoin node)",slug:"section-21-enable-your-own-electrumx-server-fully-integrated-with-your-btcpay-servers-full-bitcoin-node"},{level:3,title:"Prerequisites (mandatory):",slug:"prerequisites-mandatory"},{level:3,title:"How will enabling ElectrumX Server affect an existing BTCPay implementation?:",slug:"how-will-enabling-electrumx-server-affect-an-existing-btcpay-implementation"},{level:3,title:"Steps to enable ElectrumX Server in BTCPay:",slug:"steps-to-enable-electrumx-server-in-btcpay"},{level:2,title:"Section 2.2 Connect your Electrum Wallet (Desktop or Android) to your ElectrumX Server",slug:"section-22-connect-your-electrum-wallet-desktop-or-android-to-your-electrumx-server"},{level:3,title:"Connect to ElectrumX from Electrum Wallet on your Mac/PC/Linux Machine:",slug:"connect-to-electrumx-from-electrum-wallet-on-your-macpclinux-machine"},{level:3,title:"Reflection on what has been achieved:",slug:"reflection-on-what-has-been-achieved"},{level:3,title:"Troubleshooting:",slug:"troubleshooting"}]},{title:"Altcoins FAQ",frontmatter:{},regularPath:"/FAQ/Altcoin.html",relativePath:"FAQ/Altcoin.md",key:"v-5a7c8936",path:"/FAQ/Altcoin/",headers:[{level:2,title:"Which coins does BTCPay Server support?",slug:"which-coins-does-btcpay-server-support"},{level:2,title:"Can an XYZ coin be added in BTCPay?",slug:"can-an-xyz-coin-be-added-in-btcpay"},{level:2,title:"How to add an altcoin in BTCPay?",slug:"how-to-add-an-altcoin-in-btcpay"},{level:2,title:"How to add an altcoin to an existing BTCPay deployment?",slug:"how-to-add-an-altcoin-to-an-existing-btcpay-deployment"},{level:2,title:"How to remove a coin from BTCPay?",slug:"how-to-remove-a-coin-from-btcpay"}]},{title:"Apps FAQ",frontmatter:{},regularPath:"/FAQ/Apps.html",relativePath:"FAQ/Apps.md",key:"v-0fd6afca",path:"/FAQ/Apps/",headers:[{level:2,title:"What are the Apps in BTCPay?",slug:"what-are-the-apps-in-btcpay"},{level:2,title:"Is there a limit on the number of Apps I can create?",slug:"is-there-a-limit-on-the-number-of-apps-i-can-create"},{level:2,title:"Is there a Point of Sale feature in BTCPay?",slug:"is-there-a-point-of-sale-feature-in-btcpay"},{level:2,title:"How can I use BTCPay in a physical store?",slug:"how-can-i-use-btcpay-in-a-physical-store"},{level:2,title:"How to customize the appearance of Point of Sale App in BTCPay",slug:"how-to-customize-the-appearance-of-point-of-sale-app-in-btcpay"},{level:2,title:"What is a Payment Button?",slug:"what-is-a-payment-button"},{level:2,title:"How to create a Pay Button with a custom amount?",slug:"how-to-create-a-pay-button-with-a-custom-amount"},{level:2,title:"How to map a domain name to an app?",slug:"how-to-map-a-domain-name-to-an-app"},{level:2,title:"How to redirect to another site after payment?",slug:"how-to-redirect-to-another-site-after-payment"},{level:2,title:"How to integrate WooCommerce Store into a BTCPay Crowdfund app?",slug:"how-to-integrate-woocommerce-store-into-a-btcpay-crowdfund-app"},{level:3,title:"Requirements",slug:"requirements"},{level:3,title:"Instructions",slug:"instructions"}]},{title:"Deployment FAQ",frontmatter:{},regularPath:"/FAQ/Deployment.html",relativePath:"FAQ/Deployment.md",key:"v-02bea796",path:"/FAQ/Deployment/",headers:[{level:2,title:"General Deployment",slug:"general-deployment"},{level:3,title:"How much does it cost to run BTCPay Server?",slug:"how-much-does-it-cost-to-run-btcpay-server"},{level:3,title:"What are the minimal requirements for BTCPay?",slug:"what-are-the-minimal-requirements-for-btcpay"},{level:3,title:"What is the easiest method to deploy a self-hosted BTCPay Server?",slug:"what-is-the-easiest-method-to-deploy-a-self-hosted-btcpay-server"},{level:3,title:"How to choose a proper deployment method?",slug:"how-to-choose-a-proper-deployment-method"},{level:3,title:"Can I run BTCPay on my own hardware?",slug:"can-i-run-btcpay-on-my-own-hardware"},{level:3,title:"Can I deploy BTCPay on my existing VPS?",slug:"can-i-deploy-btcpay-on-my-existing-vps"},{level:3,title:"Are there free hosts where I can test?",slug:"are-there-free-hosts-where-i-can-test"},{level:3,title:"After initial deployment, I can't register and I don't have a login yet?",slug:"after-initial-deployment-i-cant-register-and-i-dont-have-a-login-yet"},{level:3,title:"How do I activate Tor on my BTCPay Server?",slug:"how-do-i-activate-tor-on-my-btcpay-server"},{level:3,title:"How do I disable Tor on my BTCPay Server?",slug:"how-do-i-disable-tor-on-my-btcpay-server"},{level:3,title:"Why activate Tor? Does it mean that nobody knows who I am?",slug:"why-activate-tor-does-it-mean-that-nobody-knows-who-i-am"},{level:3,title:"How to access the .onion address without clearnet?",slug:"how-to-access-the-onion-address-without-clearnet"},{level:3,title:"How can I modify or deactivate environment variables?",slug:"how-can-i-modify-or-deactivate-environment-variables"},{level:3,title:"How can I run BTCPay on testnet?",slug:"how-can-i-run-btcpay-on-testnet"},{level:3,title:"Can I start BTCPay only when I'm expecting a payment?",slug:"can-i-start-btcpay-only-when-im-expecting-a-payment"},{level:3,title:"Can I connect to my BTCPay Bitcoin P2P on port 8333?",slug:"can-i-connect-to-my-btcpay-bitcoin-p2p-on-port-8333"},{level:3,title:"How can I renew my SSL certificate?",slug:"how-can-i-renew-my-ssl-certificate"},{level:3,title:"Can I use an existing Nginx server as a reverse proxy with SSL termination?",slug:"can-i-use-an-existing-nginx-server-as-a-reverse-proxy-with-ssl-termination"},{level:2,title:"How to change your BTCPay Server domain name?",slug:"how-to-change-your-btcpay-server-domain-name"},{level:3,title:"Setting up DNS Records",slug:"setting-up-dns-records"},{level:3,title:"Change domain name in BTCPay Server settings",slug:"change-domain-name-in-btcpay-server-settings"},{level:3,title:"Change domain on command line",slug:"change-domain-on-command-line"},{level:2,title:"Web-deployment",slug:"web-deployment"},{level:3,title:"Can I run BTCPay on my home computer?",slug:"can-i-run-btcpay-on-my-home-computer"},{level:3,title:"LunaNode web-deployment",slug:"lunanode-web-deployment"},{level:2,title:"Manual Deployment",slug:"manual-deployment"},{level:3,title:"How do I completely uninstall BTCPay from a Linux environment (Docker version)",slug:"how-do-i-completely-uninstall-btcpay-from-a-linux-environment-docker-version"},{level:3,title:"How to deploy BTCPay Server alongside existing Bitcoin node?",slug:"how-to-deploy-btcpay-server-alongside-existing-bitcoin-node"},{level:3,title:"With the docker deployment, how to use a different volume for the data?",slug:"with-the-docker-deployment-how-to-use-a-different-volume-for-the-data"},{level:3,title:"I get 503 Service Temporarily Unavailable nginx",slug:"i-get-503-service-temporarily-unavailable-nginx"}]},{title:"General FAQ",frontmatter:{tags:["refund","merchant refund"]},regularPath:"/FAQ/General.html",relativePath:"FAQ/General.md",key:"v-b4e335b6",path:"/FAQ/General/",headers:[{level:2,title:"What is BTCPay Server?",slug:"what-is-btcpay-server"},{level:2,title:"Why should I choose BTCPay over other processors?",slug:"why-should-i-choose-btcpay-over-other-processors"},{level:2,title:"Why is everyone so excited about BTCPay?",slug:"why-is-everyone-so-excited-about-btcpay"},{level:2,title:"Who can use BTCPay?",slug:"who-can-use-btcpay"},{level:2,title:"How to install BTCPay Server?",slug:"how-to-install-btcpay-server"},{level:2,title:"Where to find BTCPay video tutorials?",slug:"where-to-find-btcpay-video-tutorials"},{level:2,title:"Do I need to have an online store to use BTCPay Server?",slug:"do-i-need-to-have-an-online-store-to-use-btcpay-server"},{level:2,title:"Why can't I just give my Bitcoin address to a buyer?",slug:"why-cant-i-just-give-my-bitcoin-address-to-a-buyer"},{level:2,title:"How does BTCPay create a new address for each invoice?",slug:"how-does-btcpay-create-a-new-address-for-each-invoice"},{level:2,title:"Does BTCPay need my private key?",slug:"does-btcpay-need-my-private-key"},{level:2,title:"Does BTCPay Server support crypto to fiat conversion?",slug:"does-btcpay-server-support-crypto-to-fiat-conversion"},{level:2,title:"What if I have a problem paying an invoice?",slug:"what-if-i-have-a-problem-paying-an-invoice"},{level:2,title:"What if I have a problem with a paid invoice?",slug:"what-if-i-have-a-problem-with-a-paid-invoice"},{level:2,title:"Where can I get help and support?",slug:"where-can-i-get-help-and-support"},{level:2,title:"How can I contribute to BTCPay?",slug:"how-can-i-contribute-to-btcpay"},{level:2,title:"How can I use the BTCPay Server API?",slug:"how-can-i-use-the-btcpay-server-api"},{level:2,title:"How to create a webhook ?",slug:"how-to-create-a-webhook-"},{level:2,title:"Webhook format is not bitpay compatible?",slug:"webhook-format-is-not-bitpay-compatible"},{level:2,title:"How can I backup my BTCPay Server?",slug:"how-can-i-backup-my-btcpay-server"},{level:2,title:"How can I charge for using my BTCPay Server instance?",slug:"how-can-i-charge-for-using-my-btcpay-server-instance"},{level:2,title:'Stuck synching: "NBXplorer is synchronizing"',slug:"stuck-synching-nbxplorer-is-synchronizing-"}]},{title:"Integrations FAQ",frontmatter:{},regularPath:"/FAQ/Integrations.html",relativePath:"FAQ/Integrations.md",key:"v-dec9d2fe",path:"/FAQ/Integrations/",headers:[{level:2,title:"General Integrations FAQ",slug:"general-integrations-faq"},{level:3,title:"What e-commerce integrations are available?",slug:"what-e-commerce-integrations-are-available"},{level:3,title:"How to use WooCommerce store with BTCPay?",slug:"how-to-use-woocommerce-store-with-btcpay"},{level:3,title:"How to use BTCPay with Drupal?",slug:"how-to-use-btcpay-with-drupal"},{level:3,title:"How to use BTCPay with Prestashop?",slug:"how-to-use-btcpay-with-prestashop"},{level:3,title:"Does BTCPay have a Shopify plugin?",slug:"does-btcpay-have-a-shopify-plugin"},{level:3,title:"Can I use BTCPay without an integration?",slug:"can-i-use-btcpay-without-an-integration"},{level:2,title:"WooCommerce FAQ",slug:"woocommerce-faq"},{level:3,title:"How to upgrade to the new BTCPay for WooCommerce V2 plugin?",slug:"how-to-upgrade-to-the-new-btcpay-for-woocommerce-v2-plugin"},{level:3,title:"How to configure order status in WooCommerce?",slug:"how-to-configure-order-status-in-woocommerce"},{level:3,title:"How to customize e-mail confirmations in WooCommerce?",slug:"how-to-customize-e-mail-confirmations-in-woocommerce"},{level:3,title:"Error: If you use an alternative order numbering system, please see class-wc-gateway-btcpay.php to apply a search filter",slug:"error-if-you-use-an-alternative-order-numbering-system-please-see-class-wc-gateway-btcpayphp-to-apply-a-search-filter"},{level:3,title:"How to configure Additional Token Support / Separate Payment Gateways",slug:"how-to-configure-additional-token-support-separate-payment-gateways"}]},{title:"Lightning Network FAQ",frontmatter:{},regularPath:"/FAQ/LightningNetwork.html",relativePath:"FAQ/LightningNetwork.md",key:"v-42e075f7",path:"/FAQ/LightningNetwork/",headers:[{level:2,title:"Lightning Network General FAQ",slug:"lightning-network-general-faq"},{level:3,title:"How many users can use Lightning Network in BTCPay?",slug:"how-many-users-can-use-lightning-network-in-btcpay"},{level:3,title:"How to find node info and open a direct channel with a store using BTCPay?",slug:"how-to-find-node-info-and-open-a-direct-channel-with-a-store-using-btcpay"},{level:3,title:"As a merchant, do I need to open direct channels?",slug:"as-a-merchant-do-i-need-to-open-direct-channels"},{level:3,title:"How can I get inbound capacity to my node?",slug:"how-can-i-get-inbound-capacity-to-my-node"},{level:3,title:"I previously installed BTCPayServer without lightning, can I enable it?",slug:"i-previously-installed-btcpayserver-without-lightning-can-i-enable-it"},{level:3,title:"Can I use a pruned node with LN in BTCPay?",slug:"can-i-use-a-pruned-node-with-ln-in-btcpay"},{level:3,title:"Can I use my existing LN node with BTCPay?",slug:"can-i-use-my-existing-ln-node-with-btcpay"},{level:3,title:"How to change from Core Lightning (CLN) to LND or vice-versa?",slug:"how-to-change-from-core-lightning-cln-to-lnd-or-vice-versa"},{level:3,title:'I switched Lightning Network implementation, but getting "no payment available" error',slug:"i-switched-lightning-network-implementation-but-getting-no-payment-available-error"},{level:3,title:'I get "WARNING: The LIGHTNING_ALIAS variable is not set. Defaulting to a blank string" when starting container',slug:"i-get-warning-the-lightning-alias-variable-is-not-set-defaulting-to-a-blank-string-when-starting-container"},{level:3,title:"How to display my Lightning Node information so that others can connect to me?",slug:"how-to-display-my-lightning-node-information-so-that-others-can-connect-to-me"},{level:3,title:"Where can I find recovery seed backup for my Lightning Network wallet in BTCPay Server?",slug:"where-can-i-find-recovery-seed-backup-for-my-lightning-network-wallet-in-btcpay-server"},{level:3,title:"How to disable on-chain payments and use LN payments only?",slug:"how-to-disable-on-chain-payments-and-use-ln-payments-only"},{level:3,title:"How to see my Lightning Network version?",slug:"how-to-see-my-lightning-network-version"},{level:3,title:"How to redirect a Lightning Address?",slug:"how-to-redirect-a-lightning-address"},{level:2,title:"Lightning Network LND FAQ",slug:"lightning-network-lnd-faq"},{level:3,title:"How to restart my LND?",slug:"how-to-restart-my-lnd"},{level:3,title:"How to rescan the LND on-chain wallet?",slug:"how-to-rescan-the-lnd-on-chain-wallet"},{level:3,title:"How to see LND logs?",slug:"how-to-see-lnd-logs"},{level:3,title:"What’s the default directory of LND in BTCPay?",slug:"what-s-the-default-directory-of-lnd-in-btcpay"},{level:3,title:"Which macaroon needs to be provided for external nodes?",slug:"which-macaroon-needs-to-be-provided-for-external-nodes"},{level:3,title:"LND connection issues after an update",slug:"lnd-connection-issues-after-an-update"},{level:3,title:"How to change my LND Node alias?",slug:"how-to-change-my-lnd-node-alias"},{level:3,title:"How to edit lnd.conf?",slug:"how-to-edit-lndconf"},{level:3,title:"How to connect to a LND watchtower?",slug:"how-to-connect-to-a-lnd-watchtower"},{level:3,title:"How to run a LND watchtower?",slug:"how-to-run-a-lnd-watchtower"},{level:3,title:"How to install ThunderHub?",slug:"how-to-install-thunderhub"},{level:2,title:"Lightning Network Core Lightning (CLN) FAQ",slug:"lightning-network-core-lightning-cln-faq"},{level:3,title:"How to restart my Core Lightning (CLN)?",slug:"how-to-restart-my-core-lightning-cln"},{level:3,title:"How to announce an IPv6 address?",slug:"how-to-announce-an-ipv6-address"},{level:2,title:"Lightning Network Questions and Support",slug:"lightning-network-questions-and-support"}]},{title:"Frequently Asked Questions and Common Issues",frontmatter:{},regularPath:"/FAQ/",relativePath:"FAQ/README.md",key:"v-78e9ef70",path:"/FAQ/",headers:[{level:2,title:"General FAQ",slug:"general-faq"},{level:2,title:"Deployment FAQ",slug:"deployment-faq"},{level:3,title:"General Deployment FAQ",slug:"general-deployment-faq"},{level:3,title:"Web Deployment FAQ",slug:"web-deployment-faq"},{level:3,title:"Manual Deployment FAQ",slug:"manual-deployment-faq"},{level:2,title:"Synchronization FAQ",slug:"synchronization-faq"},{level:2,title:"Integrations FAQ",slug:"integrations-faq"},{level:3,title:"Integrations General",slug:"integrations-general"},{level:3,title:"WooCommerce FAQ",slug:"woocommerce-faq"},{level:2,title:"Server Settings FAQ",slug:"server-settings-faq"},{level:3,title:"Maintenance FAQ",slug:"maintenance-faq"},{level:3,title:"Theme / Customization FAQ",slug:"theme-customization-faq"},{level:3,title:"Policies FAQ",slug:"policies-faq"},{level:3,title:"Services FAQ",slug:"services-faq"},{level:3,title:"Files FAQ",slug:"files-faq"},{level:2,title:"Stores FAQ",slug:"stores-faq"},{level:2,title:"Wallet FAQ",slug:"wallet-faq"},{level:2,title:"Apps FAQ",slug:"apps-faq"},{level:2,title:"Lightning Network FAQ",slug:"lightning-network-faq"},{level:3,title:"Lightning Network General FAQ",slug:"lightning-network-general-faq"},{level:3,title:"Lightning Network LND FAQ",slug:"lightning-network-lnd-faq"},{level:3,title:"Lightning Network Core Lightning (CLN) FAQ",slug:"lightning-network-core-lightning-cln-faq"},{level:2,title:"Altcoins FAQ",slug:"altcoins-faq"}]},{title:"Server Settings FAQ",frontmatter:{},regularPath:"/FAQ/ServerSettings.html",relativePath:"FAQ/ServerSettings.md",key:"v-0763789a",path:"/FAQ/ServerSettings/",headers:[{level:2,title:"Maintenance",slug:"maintenance"},{level:3,title:"How to update BTCPay Server?",slug:"how-to-update-btcpay-server"},{level:3,title:"How to restart BTCPay Server?",slug:"how-to-restart-btcpay-server"},{level:3,title:"How to SSH into my BTCPay running on VPS?",slug:"how-to-ssh-into-my-btcpay-running-on-vps"},{level:3,title:"How to see, as an admin, what's running on my BTCPay Server?",slug:"how-to-see-as-an-admin-whats-running-on-my-btcpay-server"},{level:3,title:"How can I see my BTCPay Server version?",slug:"how-can-i-see-my-btcpay-server-version"},{level:3,title:"How can I check my BTCPay Server version via terminal?",slug:"how-can-i-check-my-btcpay-server-version-via-terminal"},{level:3,title:"What is BTCPay SSH key file?",slug:"what-is-btcpay-ssh-key-file"},{level:3,title:"Forgot BTCPay Admin password?",slug:"forgot-btcpay-admin-password"},{level:3,title:"How to add a new user by invite?",slug:"how-to-add-a-new-user-by-invite"},{level:3,title:"How to disable U2F and 2FA for a user?",slug:"how-to-disable-u2f-and-2fa-for-a-user"},{level:3,title:"How to configure SMTP settings in BTCPay?",slug:"how-to-configure-smtp-settings-in-btcpay"},{level:3,title:"Error: Maintenance feature requires access to SSH properly configured in BTCPayServer configuration",slug:"error-maintenance-feature-requires-access-to-ssh-properly-configured-in-btcpayserver-configuration"},{level:3,title:"Error: Your local changes to the following files would be overwritten by merge",slug:"error-your-local-changes-to-the-following-files-would-be-overwritten-by-merge"},{level:3,title:"Error: BTCPAY_SSHKEYFILE is not set when running the docker install, or unable to update through Server Settings / Maintenance",slug:"error-btcpay-sshkeyfile-is-not-set-when-running-the-docker-install-or-unable-to-update-through-server-settings-maintenance"},{level:2,title:"Theme / Customization",slug:"theme-customization"},{level:3,title:"How to customize my BTCPay theme style?",slug:"how-to-customize-my-btcpay-theme-style"},{level:3,title:"How to modify the checkout page?",slug:"how-to-modify-the-checkout-page"},{level:3,title:"How to add Google Analytics code to BTCPay?",slug:"how-to-add-google-analytics-code-to-btcpay"},{level:2,title:"Policies",slug:"policies"},{level:3,title:"How to allow registration on my BTCPay Server?",slug:"how-to-allow-registration-on-my-btcpay-server"},{level:3,title:"How to hide my BTCPay Server from Search Engines?",slug:"how-to-hide-my-btcpay-server-from-search-engines"},{level:2,title:"Services",slug:"services"},{level:3,title:"How to remotely connect to my BTCPay full node?",slug:"how-to-remotely-connect-to-my-btcpay-full-node"},{level:2,title:"Files",slug:"files"},{level:3,title:"How to upload files to BTCPay?",slug:"how-to-upload-files-to-btcpay"}]},{title:"Stores FAQ",frontmatter:{},regularPath:"/FAQ/Stores.html",relativePath:"FAQ/Stores.md",key:"v-1eb7e25b",path:"/FAQ/Stores/",headers:[{level:2,title:"How to create a store in BTCPay Server?",slug:"how-to-create-a-store-in-btcpay-server"},{level:2,title:"How many stores can I create?",slug:"how-many-stores-can-i-create"},{level:2,title:"Why are invoices without payment showing as complete?",slug:"why-are-invoices-without-payment-showing-as-complete"},{level:2,title:"Add network fee to invoice (vary with mining fees)?",slug:"add-network-fee-to-invoice-vary-with-mining-fees"},{level:2,title:"Allow anyone to create invoice",slug:"allow-anyone-to-create-invoice"},{level:2,title:"Invoice expires if the full amount has not been paid after ... minutes",slug:"invoice-expires-if-the-full-amount-has-not-been-paid-after-minutes"},{level:2,title:"Payment invalid if transactions fails to confirm ... minutes after invoice expiration",slug:"payment-invalid-if-transactions-fails-to-confirm-minutes-after-invoice-expiration"},{level:2,title:"Consider the invoice confirmed when the payment transaction",slug:"consider-the-invoice-confirmed-when-the-payment-transaction"},{level:2,title:"Consider the invoice confirmed with RBF flag on 0-conf setup",slug:"consider-the-invoice-confirmed-with-rbf-flag-on-0-conf-setup"},{level:2,title:"Consider the invoice paid even if the paid amount is ... % less than expected",slug:"consider-the-invoice-paid-even-if-the-paid-amount-is-less-than-expected"},{level:2,title:"How to disable email on invoices",slug:"how-to-disable-email-on-invoices"},{level:2,title:"How to denominate invoices in sats",slug:"how-to-denominate-invoices-in-sats"},{level:2,title:"How to redirect store invoices after payment?",slug:"how-to-redirect-store-invoices-after-payment"},{level:2,title:"Can I delete invoices from BTCPay?",slug:"can-i-delete-invoices-from-btcpay"},{level:2,title:"How to collect additional buyer information?",slug:"how-to-collect-additional-buyer-information"},{level:2,title:"How to change the exchange rate provider for invoices?",slug:"how-to-change-the-exchange-rate-provider-for-invoices"},{level:2,title:"Getting GetRatesAsync was called on coinaverage error",slug:"getting-getratesasync-was-called-on-coinaverage-error"},{level:2,title:"What is a payment request?",slug:"what-is-a-payment-request"},{level:2,title:"What is the difference between a payment request and invoice?",slug:"what-is-the-difference-between-a-payment-request-and-invoice"}]},{title:"Synchronization FAQ",frontmatter:{},regularPath:"/FAQ/Synchronization.html",relativePath:"FAQ/Synchronization.md",key:"v-0c2701b6",path:"/FAQ/Synchronization/",headers:[{level:2,title:"Why does BTCPay sync?",slug:"why-does-btcpay-sync"},{level:2,title:"Can I skip the synchronization?",slug:"can-i-skip-the-synchronization"},{level:2,title:"How do I know that BTCPay synced completely?",slug:"how-do-i-know-that-btcpay-synced-completely"},{level:2,title:"How can I check the block height of my bitcoin node?",slug:"how-can-i-check-the-block-height-of-my-bitcoin-node"},{level:2,title:"BTCPay Server takes forever to synchronize",slug:"btcpay-server-takes-forever-to-synchronize"},{level:3,title:"Cause 1: Not enough CPU",slug:"cause-1-not-enough-cpu"},{level:3,title:"Cause 2: Using swap memory",slug:"cause-2-using-swap-memory"},{level:2,title:"BTCPay Server keeps showing that my node is always starting",slug:"btcpay-server-keeps-showing-that-my-node-is-always-starting"},{level:3,title:"Cause 1: You do not have enough RAM",slug:"cause-1-you-do-not-have-enough-ram"},{level:3,title:"Cause 2: You do not have enough storage",slug:"cause-2-you-do-not-have-enough-storage"},{level:3,title:"Cause 3: You accidentally disabled pruning",slug:"cause-3-you-accidentally-disabled-pruning"},{level:3,title:"Cause 4: Your bitcoin data directory is corrupted",slug:"cause-4-your-bitcoin-data-directory-is-corrupted"},{level:3,title:"Cause 5: Your last wallet synchronisation goes beyond pruned data",slug:"cause-5-your-last-wallet-synchronisation-goes-beyond-pruned-data"},{level:2,title:"I'm running a full node and have a synched blockchain, can BTCPay use it so that it doesn't have to do a full sync?",slug:"im-running-a-full-node-and-have-a-synched-blockchain-can-btcpay-use-it-so-that-it-doesnt-have-to-do-a-full-sync"},{level:2,title:"How to enable Bitcoin node pruning?",slug:"how-to-enable-bitcoin-node-pruning"},{level:2,title:"How to disable Bitcoin node pruning?",slug:"how-to-disable-bitcoin-node-pruning"}]},{title:"Wallet FAQ",frontmatter:{},regularPath:"/FAQ/Wallet.html",relativePath:"FAQ/Wallet.md",key:"v-65060acd",path:"/FAQ/Wallet/",headers:[{level:2,title:"What is BTCPay Server wallet?",slug:"what-is-btcpay-server-wallet"},{level:2,title:"How to set up my wallet with BTCPay Server?",slug:"how-to-set-up-my-wallet-with-btcpay-server"},{level:2,title:"Can I use a hardware wallet with BTCPay Server?",slug:"can-i-use-a-hardware-wallet-with-btcpay-server"},{level:2,title:"Is there address re-use for separate stores using same xpub?",slug:"is-there-address-re-use-for-separate-stores-using-same-xpub"},{level:2,title:"Do I have to use BTCPay Server wallet?",slug:"do-i-have-to-use-btcpay-server-wallet"},{level:2,title:"Why is sending a transaction using Trezor failing?",slug:"why-is-sending-a-transaction-using-trezor-failing"},{level:2,title:"Missing payments in my software or hardware wallet",slug:"missing-payments-in-my-software-or-hardware-wallet"},{level:3,title:"The gap limit problem",slug:"the-gap-limit-problem"},{level:3,title:"The gap limit solution",slug:"the-gap-limit-solution"},{level:2,title:"What is a derivation scheme?",slug:"what-is-a-derivation-scheme"},{level:2,title:"What is a Replace-By-Fee (RBF) transaction?",slug:"what-is-a-replace-by-fee-rbf-transaction"},{level:2,title:"Does BTCPay Server use mempoolfullrbf=1 ?",slug:"does-btcpay-server-use-mempoolfullrbf-1-"},{level:2,title:"How to add custom labels and comments to transactions?",slug:"how-to-add-custom-labels-and-comments-to-transactions"},{level:2,title:"I don't see Lightning network payments in BTCPay wallet?",slug:"i-dont-see-lightning-network-payments-in-btcpay-wallet"},{level:2,title:"Is there a mobile app for BTCPay Server wallet?",slug:"is-there-a-mobile-app-for-btcpay-server-wallet"}]},{title:"Forms",frontmatter:{},regularPath:"/Forms.html",relativePath:"Forms.md",key:"v-7900ca36",path:"/Forms/",headers:[{level:2,title:"Setting up your store's first Custom form.",slug:"setting-up-your-stores-first-custom-form"},{level:2,title:"Create a custom form.",slug:"create-a-custom-form"},{level:2,title:"Public Forms",slug:"public-forms"},{level:2,title:"Adjust invoice amounts based on user input",slug:"adjust-invoice-amounts-based-on-user-input"},{level:3,title:"Charging extra based on shipping method",slug:"charging-extra-based-on-shipping-method"},{level:3,title:"Promo codes",slug:"promo-codes"},{level:3,title:"Showing user input on the receipt",slug:"showing-user-input-on-the-receipt"},{level:2,title:"Support",slug:"support"}]},{title:"BTCPay Server Documentation",frontmatter:{},regularPath:"/Guide.html",relativePath:"Guide.md",key:"v-51796845",path:"/Guide/",headers:[{level:2,title:"What is BTCPay Server?",slug:"what-is-btcpay-server"},{level:2,title:"How BTCPay Server works?",slug:"how-btcpay-server-works"},{level:2,title:"Features",slug:"features"},{level:2,title:"Getting started",slug:"getting-started"},{level:2,title:"Get involved",slug:"get-involved"},{level:2,title:"Support",slug:"support"}]},{title:"Hardware Wallet Integration",frontmatter:{},regularPath:"/HardwareWalletIntegration.html",relativePath:"HardwareWalletIntegration.md",key:"v-2ad91fe5",path:"/HardwareWalletIntegration/",headers:[{level:2,title:"Getting Started",slug:"getting-started"},{level:3,title:"Spending funds",slug:"spending-funds"},{level:2,title:"Advanced Settings",slug:"advanced-settings"},{level:2,title:"Supported Hardware Wallets",slug:"supported-hardware-wallets"}]},{title:"LNDhub API",frontmatter:{editLink:"https://github.com/dennisreimann/btcpayserver-plugin-lndhub-api/edit/master/README.md",externalRepo:"https://github.com/dennisreimann/btcpayserver-plugin-lndhub-api"},regularPath:"/LNDhubAPI/",relativePath:"LNDhubAPI/README.md",key:"v-9b2edb34",path:"/LNDhubAPI/",headers:[{level:2,title:"Importing the wallet",slug:"importing-the-wallet"},{level:3,title:"BlueWallet",slug:"bluewallet"},{level:3,title:"Zeus",slug:"zeus"},{level:3,title:"Alby",slug:"alby"},{level:2,title:"Support this plugin",slug:"support-this-plugin"}]},{title:"What is an invoice in BTCPay Server?",frontmatter:{description:"Learn what are invoices and how to manage them in BTCPay Server.",tags:["Invoices","Payment request","Bitcoin invoices","Invoice status","Managing bitcoin invoices","Bitcoin invoicing"]},regularPath:"/Invoices.html",relativePath:"Invoices.md",key:"v-3526ef36",path:"/Invoices/",headers:[{level:2,title:"Invoice statuses",slug:"invoice-statuses"},{level:3,title:"Invoice details",slug:"invoice-details"},{level:3,title:"Invoice filtering",slug:"invoice-filtering"},{level:3,title:"Invoice export",slug:"invoice-export"},{level:2,title:"Refunding an invoice",slug:"refunding-an-invoice"},{level:2,title:"Archiving invoices",slug:"archiving-invoices"}]},{title:"LNDhub Compatibility",frontmatter:{editLink:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank/edit/master/docs/LNDhub.md",externalRepo:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank"},regularPath:"/LNbank/LNDhub.html",relativePath:"LNbank/LNDhub.md",key:"v-60c4a545",path:"/LNbank/LNDhub/",headers:[{level:2,title:"Importing the wallet",slug:"importing-the-wallet"},{level:3,title:"BlueWallet",slug:"bluewallet"},{level:3,title:"Zeus",slug:"zeus"},{level:3,title:"Alby",slug:"alby"}]},{title:"LNbank",frontmatter:{editLink:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank/edit/master/README.md",externalRepo:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank"},regularPath:"/LNbank/",relativePath:"LNbank/README.md",key:"v-21ea7c46",path:"/LNbank/",headers:[{level:2,title:"Use cases",slug:"use-cases"},{level:2,title:"Technicalities",slug:"technicalities"},{level:2,title:"Caveats",slug:"caveats"},{level:2,title:"Features and Compatibility",slug:"features-and-compatibility"},{level:2,title:"How to activate and use LNbank",slug:"how-to-activate-and-use-lnbank"},{level:3,title:"Server admin",slug:"server-admin"},{level:3,title:"User",slug:"user"},{level:2,title:"Support this plugin",slug:"support-this-plugin"}]},{title:"Troubleshooting",frontmatter:{editLink:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank/edit/master/docs/Troubleshooting.md",externalRepo:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank"},regularPath:"/LNbank/Troubleshooting.html",relativePath:"LNbank/Troubleshooting.md",key:"v-7a7299c2",path:"/LNbank/Troubleshooting/",headers:[{level:2,title:"Debugging connection problems",slug:"debugging-connection-problems"},{level:3,title:"DNS problems",slug:"dns-problems"},{level:3,title:"For Cloudflare users",slug:"for-cloudflare-users"},{level:3,title:"Using cURL for debugging",slug:"using-curl-for-debugging"},{level:2,title:"Manual deployment",slug:"manual-deployment"}]},{title:"Connecting Ledger Wallet to BTCPay Server",frontmatter:{},regularPath:"/LedgerWallet.html",relativePath:"LedgerWallet.md",key:"v-1a5789ad",path:"/LedgerWallet/",headers:[{level:2,title:"Ledger Nano S Wallet Setup",slug:"ledger-nano-s-wallet-setup"},{level:3,title:"Requirements",slug:"requirements"},{level:3,title:"Quick Setup",slug:"quick-setup"},{level:3,title:"Spending from BTCPay Server wallet with Ledger",slug:"spending-from-btcpay-server-wallet-with-ledger"}]},{title:"Lightning Network (LN) and BTCPay Server",frontmatter:{},regularPath:"/LightningNetwork.html",relativePath:"LightningNetwork.md",key:"v-6761eaa9",path:"/LightningNetwork/",headers:[{level:2,title:"Overview",slug:"overview"},{level:2,title:"Choosing the Lightning Network implementation",slug:"choosing-the-lightning-network-implementation"},{level:2,title:"Lightning node configuration in BTCPay Server",slug:"lightning-node-configuration-in-btcpay-server"},{level:3,title:"Connecting your internal Lightning Node",slug:"connecting-your-internal-lightning-node"},{level:3,title:"Connecting an external Lightning Node in BTCPay Server",slug:"connecting-an-external-lightning-node-in-btcpay-server"},{level:2,title:"Getting started with BTCPay Server and LND",slug:"getting-started-with-btcpay-server-and-lnd"},{level:3,title:"Control your LND using Ride The Lightning (RTL)",slug:"control-your-lnd-using-ride-the-lightning-rtl"},{level:3,title:"Control your LND using Zap",slug:"control-your-lnd-using-zap"},{level:3,title:"Control your LND using Lightning Joule",slug:"control-your-lnd-using-lightning-joule"},{level:3,title:"Control your LND via the command-line: lncli",slug:"control-your-lnd-via-the-command-line-lncli"},{level:2,title:"Getting started with BTCPay Server and Core Lightning (CLN)",slug:"getting-started-with-btcpay-server-and-core-lightning-cln"},{level:3,title:"Control your CLN using Ride The Lightning (RTL)",slug:"control-your-cln-using-ride-the-lightning-rtl"},{level:3,title:"Control your CLN via the command-line: lightning-cli",slug:"control-your-cln-via-the-command-line-lightning-cli"},{level:2,title:"Lightning node backup",slug:"lightning-node-backup"},{level:3,title:"Funding your on-chain wallet",slug:"funding-your-on-chain-wallet"}]},{title:"Opening and operating payment channels",frontmatter:{},regularPath:"/LightningNetwork_PaymentChannels.html",relativePath:"LightningNetwork_PaymentChannels.md",key:"v-25de27bb",path:"/LightningNetwork_PaymentChannels/"},{title:"BTCPay Magento Integration",frontmatter:{},regularPath:"/Magento.html",relativePath:"Magento.md",key:"v-78fb4ca5",path:"/Magento/",headers:[{level:2,title:"Magento 1",slug:"magento-1"},{level:2,title:"Magento 2",slug:"magento-2"}]},{title:"API Specification",frontmatter:{editLink:"https://github.com/dgarage/NBXplorer/edit/master/docs/API.md",externalRepo:"https://github.com/dgarage/NBXplorer"},regularPath:"/NBXplorer/API.html",relativePath:"NBXplorer/API.md",key:"v-20a8c736",path:"/NBXplorer/API/",headers:[{level:2,title:"Table of content",slug:"table-of-content"},{level:2,title:"Configuration",slug:"configuration"},{level:2,title:"Authentication",slug:"authentication"},{level:2,title:"Derivation Scheme Format",slug:"derivation-scheme-format"},{level:2,title:"Track a derivation scheme",slug:"track-a-derivation-scheme"},{level:2,title:"Track a specific address",slug:"track-a-specific-address"},{level:2,title:"Query transactions associated to a derivationScheme",slug:"query-transactions-associated-to-a-derivationscheme"},{level:2,title:"Query transactions associated to a specific address",slug:"query-transactions-associated-to-a-specific-address"},{level:2,title:"Query a single transaction associated to a address or derivation scheme",slug:"query-a-single-transaction-associated-to-a-address-or-derivation-scheme"},{level:2,title:"Get current balance",slug:"get-current-balance"},{level:2,title:"Get a transaction",slug:"get-a-transaction"},{level:2,title:"Get connection status to the chain",slug:"get-connection-status-to-the-chain"},{level:2,title:"Get a new unused address",slug:"get-a-new-unused-address"},{level:2,title:"Get scriptPubKey information of a Derivation Scheme",slug:"get-scriptpubkey-information-of-a-derivation-scheme"},{level:2,title:"Get available Unspent Transaction Outputs (UTXOs)",slug:"get-available-unspent-transaction-outputs-utxos"},{level:2,title:"Get available Unspent Transaction Outputs of a specific address",slug:"get-available-unspent-transaction-outputs-of-a-specific-address"},{level:2,title:"Notifications via websocket",slug:"notifications-via-websocket"},{level:2,title:"Broadcast a transaction",slug:"broadcast-a-transaction"},{level:2,title:"Rescan a transaction",slug:"rescan-a-transaction"},{level:2,title:"Get fee rate",slug:"get-fee-rate"},{level:2,title:"Scan UTXO Set",slug:"scan-utxo-set"},{level:2,title:"Get scan status",slug:"get-scan-status"},{level:2,title:"Wipe derivation scheme transactions",slug:"wipe-derivation-scheme-transactions"},{level:2,title:"Query event stream",slug:"query-event-stream"},{level:2,title:"Query event stream (from most recent)",slug:"query-event-stream-from-most-recent"},{level:2,title:"Create Partially Signed Bitcoin Transaction",slug:"create-partially-signed-bitcoin-transaction"},{level:2,title:"Update Partially Signed Bitcoin Transaction",slug:"update-partially-signed-bitcoin-transaction"},{level:2,title:"Attach metadata to a derivation scheme",slug:"attach-metadata-to-a-derivation-scheme"},{level:2,title:"Detach metadata from a derivation scheme",slug:"detach-metadata-from-a-derivation-scheme"},{level:2,title:"Retrieve metadata from a derivation scheme",slug:"retrieve-metadata-from-a-derivation-scheme"},{level:2,title:"Manual pruning",slug:"manual-pruning"},{level:2,title:"Generate a wallet",slug:"generate-a-wallet"},{level:2,title:"Node RPC Proxy",slug:"node-rpc-proxy"},{level:2,title:"Health check",slug:"health-check"},{level:2,title:"Liquid integration",slug:"liquid-integration"},{level:3,title:"Liquid Confidential Addresses",slug:"liquid-confidential-addresses"},{level:3,title:"Liquid Transactions support",slug:"liquid-transactions-support"}]},{title:"Migration from DBTrie backend to Postgres backend",frontmatter:{editLink:"https://github.com/dgarage/NBXplorer/edit/master/docs/Postgres-Migration.md",externalRepo:"https://github.com/dgarage/NBXplorer"},regularPath:"/NBXplorer/Postgres-Migration.html",relativePath:"NBXplorer/Postgres-Migration.md",key:"v-eee9bb82",path:"/NBXplorer/Postgres-Migration/"},{title:"Documentation of SQL Schema",frontmatter:{editLink:"https://github.com/dgarage/NBXplorer/edit/master/docs/Postgres-Schema.md",externalRepo:"https://github.com/dgarage/NBXplorer"},regularPath:"/NBXplorer/Postgres-Schema.html",relativePath:"NBXplorer/Postgres-Schema.md",key:"v-6a07ad05",path:"/NBXplorer/Postgres-Schema/",headers:[{level:2,title:"Using wallets tables",slug:"using-wallets-tables"},{level:2,title:"Making your own indexer",slug:"making-your-own-indexer"},{level:2,title:"Views and functions",slug:"views-and-functions"},{level:3,title:"Function: to_btc",slug:"function-to-btc"},{level:3,title:"Function: getwalletsrecent",slug:"function-get-wallets-recent"},{level:3,title:"View: utxos",slug:"view-utxos"},{level:3,title:"View: descriptorsscriptsunused",slug:"view-descriptors-scripts-unused"},{level:3,title:"View: wallets_utxos",slug:"view-wallets-utxos"},{level:3,title:"View: wallets_balances",slug:"view-wallets-balances"},{level:3,title:"Materialized view: wallets_history",slug:"materialized-view-wallets-history"},{level:3,title:"Function: getwalletshistogram",slug:"function-get-wallets-histogram"},{level:3,title:"Function: nbxv1getwallet_id",slug:"function-nbxv1-get-wallet-id"},{level:3,title:"Function: nbxv1getdescriptor_id",slug:"function-nbxv1-get-descriptor-id"}]},{title:"NBXplorer",frontmatter:{editLink:"https://github.com/dgarage/NBXplorer/edit/master/README.md",externalRepo:"https://github.com/dgarage/NBXplorer"},regularPath:"/NBXplorer/",relativePath:"NBXplorer/README.md",key:"v-e3db5fd8",path:"/NBXplorer/",headers:[{level:2,title:"Prerequisite",slug:"prerequisite"},{level:2,title:"API Specification",slug:"api-specification"},{level:2,title:"How to build and run?",slug:"how-to-build-and-run"},{level:2,title:"How to use the API?",slug:"how-to-use-the-api"},{level:2,title:"With Docker",slug:"with-docker"},{level:2,title:"How to develop on it?",slug:"how-to-develop-on-it"},{level:2,title:"How to configure?",slug:"how-to-configure"},{level:3,title:"Configuration file",slug:"configuration-file"},{level:3,title:"Command line parameters",slug:"command-line-parameters"},{level:3,title:"Environment variables",slug:"environment-variables"},{level:2,title:"How to Run",slug:"how-to-run"},{level:3,title:"Command Line",slug:"command-line"},{level:2,title:"Important Note",slug:"important-note"},{level:2,title:"How to query?",slug:"how-to-query"},{level:3,title:"Using Postman",slug:"using-postman"},{level:2,title:"Message Brokers",slug:"message-brokers"},{level:3,title:"Azure Service Bus",slug:"azure-service-bus"},{level:3,title:"Queues",slug:"queues"},{level:3,title:"Topics",slug:"topics"},{level:3,title:"RabbitMq",slug:"rabbitmq"},{level:2,title:"Client API",slug:"client-api"},{level:2,title:"How to run the tests?",slug:"how-to-run-the-tests"},{level:2,title:"How to add support to my altcoin",slug:"how-to-add-support-to-my-altcoin"},{level:2,title:"Licence",slug:"licence"},{level:2,title:"Special thanks",slug:"special-thanks"}]},{title:"BTCPay Server NIP05 Support",frontmatter:{editLink:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.NIP05/edit/master/docs/readme.md",externalRepo:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.NIP05"},regularPath:"/Nostr/",relativePath:"Nostr/readme.md",key:"v-2352e414",path:"/Nostr/",headers:[{level:2,title:"Usage",slug:"usage"}]},{title:"Notifications",frontmatter:{},regularPath:"/Notifications.html",relativePath:"Notifications.md",key:"v-88980e76",path:"/Notifications/",headers:[{level:2,title:"Notification Alerts",slug:"notification-alerts"},{level:2,title:"Server Emails",slug:"server-emails"},{level:2,title:"Store Emails",slug:"store-emails"},{level:3,title:"SMTP Email Setup",slug:"smtp-email-setup"},{level:2,title:"Forgot Password Email",slug:"forgot-password-email"},{level:2,title:"New User Confirmation Email",slug:"new-user-confirmation-email"},{level:2,title:"New User Invitation Email",slug:"new-user-invitation-email"},{level:2,title:"Custom Emails",slug:"custom-emails"},{level:2,title:"Email rules",slug:"email-rules"}]},{title:"OpenCart integration",frontmatter:{description:"How to integrate BTCPay Server into your OpenCart store.",tags:["OpenCart","Plugin","eCommerce"]},regularPath:"/OpenCart.html",relativePath:"OpenCart.md",key:"v-8d0f1fc6",path:"/OpenCart/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"1. Install BTCPay extension",slug:"1-install-btcpay-extension"},{level:3,title:"1.1 Install the extension from OpenCart admin dashboard",slug:"11-install-the-extension-from-opencart-admin-dashboard"},{level:3,title:"1.2 Download and install the extension from Marketplace or GitHub",slug:"12-download-and-install-the-extension-from-marketplace-or-github"},{level:3,title:"1.3 Install the extension",slug:"13-install-the-extension"},{level:2,title:"2. Connecting OpenCart and BTCPay Server",slug:"2-connecting-opencart-and-btcpay-server"},{level:3,title:"2.1 Configure BTCPay Server extension in OpenCart",slug:"21-configure-btcpay-server-extension-in-opencart"},{level:3,title:"2.2 Create an API key and configure permissions",slug:"22-create-an-api-key-and-configure-permissions"},{level:2,title:"3. Test the checkout",slug:"3-test-the-checkout"},{level:2,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:"Enable debug mode",slug:"enable-debug-mode"},{level:2,title:"The order states do not update, although the invoice has been paid.",slug:"the-order-states-do-not-update-although-the-invoice-has-been-paid"},{level:2,title:"I have trouble with using the extension or some other related questions.",slug:"i-have-trouble-with-using-the-extension-or-some-other-related-questions"}]},{title:"BTCPay Server Payjoin Guide",frontmatter:{},regularPath:"/Payjoin.html",relativePath:"Payjoin.md",key:"v-15132f85",path:"/Payjoin/",headers:[{level:2,title:"Enabling Payjoin as a merchant",slug:"enabling-payjoin-as-a-merchant"},{level:2,title:"Paying to Payjoin as a user",slug:"paying-to-payjoin-as-a-user"},{level:2,title:"Why did a payjoin not happen?",slug:"why-did-a-payjoin-not-happen"},{level:2,title:"Supported wallets",slug:"supported-wallets"}]},{title:"Payment Requests",frontmatter:{},regularPath:"/PaymentRequests.html",relativePath:"PaymentRequests.md",key:"v-e98912f6",path:"/PaymentRequests/",headers:[{level:2,title:"Payment Requests Video",slug:"payment-requests-video"},{level:2,title:"Customize Your Payment Requests",slug:"customize-your-payment-requests"},{level:2,title:"Create a Payment Request",slug:"create-a-payment-request"},{level:2,title:"Paid Request for Payment",slug:"paid-request-for-payment"},{level:2,title:"Customize Payment Requests",slug:"customize-payment-requests"}]},{title:"Payouts",frontmatter:{},regularPath:"/Payouts.html",relativePath:"Payouts.md",key:"v-15dab665",path:"/Payouts/",headers:[{level:2,title:"How does it work?",slug:"how-does-it-work"},{level:3,title:"Example",slug:"example"},{level:2,title:"Using Greenfield API",slug:"using-greenfield-api"}]},{title:"PodServer",frontmatter:{editLink:"https://github.com/dennisreimann/btcpayserver-plugin-podserver/edit/master/README.md",externalRepo:"https://github.com/dennisreimann/btcpayserver-plugin-podserver"},regularPath:"/PodServer/",relativePath:"PodServer/README.md",key:"v-49efd338",path:"/PodServer/",headers:[{level:2,title:"Use cases",slug:"use-cases"},{level:2,title:"Technicalities",slug:"technicalities"},{level:2,title:"Features and Compatibility",slug:"features-and-compatibility"},{level:2,title:"Notes",slug:"notes"},{level:2,title:"How to activate and use PodServer",slug:"how-to-activate-and-use-podserver"},{level:3,title:"Server admin",slug:"server-admin"},{level:3,title:"User",slug:"user"},{level:2,title:"Support this plugin",slug:"support-this-plugin"}]},{title:"Prestashop integration",frontmatter:{},regularPath:"/PrestaShop.html",relativePath:"PrestaShop.md",key:"v-68f6ac6a",path:"/PrestaShop/",headers:[{level:2,title:"Server Requirements",slug:"server-requirements"},{level:2,title:"Install BTCPay Plugin",slug:"install-btcpay-plugin"},{level:2,title:"Connecting the store",slug:"connecting-the-store"},{level:3,title:"Create the API key yourself",slug:"create-the-api-key-yourself"},{level:2,title:"3. Contribute",slug:"3-contribute"},{level:2,title:"PrestaShop Support",slug:"prestashop-support"}]},{title:"(1) Register account",frontmatter:{},regularPath:"/RegisterAccount.html",relativePath:"RegisterAccount.md",key:"v-f5202af6",path:"/RegisterAccount/",headers:[{level:2,title:"Account Registration",slug:"account-registration"},{level:3,title:"Configuring e-mail",slug:"configuring-e-mail"},{level:3,title:"Two-factor authentication",slug:"two-factor-authentication"}]},{title:"Reporting in BTCPay",frontmatter:{},regularPath:"/Reporting.html",relativePath:"Reporting.md",key:"v-40e08a05",path:"/Reporting/"},{title:"How to accept Bitcoin in Shopify",frontmatter:{},regularPath:"/Shopify.html",relativePath:"Shopify.md",key:"v-0597b005",path:"/Shopify/",headers:[{level:2,title:"Prerequisites:",slug:"prerequisites"},{level:2,title:"Setting up BTCPay Server with Shopify",slug:"setting-up-btcpay-server-with-shopify"}]},{title:"Shopware integration",frontmatter:{},regularPath:"/Shopware.html",relativePath:"Shopware.md",key:"v-21fce50b",path:"/Shopware/",headers:[{level:2,title:"Plugin for Shopware 6",slug:"plugin-for-shopware-6"},{level:2,title:"Plugin for Shopware 5",slug:"plugin-for-shopware-5"}]},{title:"Support",frontmatter:{},regularPath:"/Support.html",relativePath:"Support.md",key:"v-7c2268b6",path:"/Support/",headers:[{level:2,title:"Free support",slug:"free-support"},{level:2,title:"Paid support",slug:"paid-support"}]},{title:"TicketTailor plugin for BTCPayServer",frontmatter:{editLink:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.TicketTailor/edit/master/README.md",externalRepo:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.TicketTailor"},regularPath:"/TicketTailor/",relativePath:"TicketTailor/README.md",key:"v-50ea01b4",path:"/TicketTailor/",headers:[{level:2,title:"Installation",slug:"installation"},{level:2,title:"Flow",slug:"flow"},{level:2,title:"Additional Configuration",slug:"additional-configuration"},{level:2,title:"Secret Tickets",slug:"secret-tickets"}]},{title:"Dollar Cost Averaging Automation",frontmatter:{editLink:"https://github.com/btcpayserver/btcTransmuter/edit/master/docs/DCA.md",externalRepo:"https://github.com/btcpayserver/btcTransmuter"},regularPath:"/Transmuter/DCA.html",relativePath:"Transmuter/DCA.md",key:"v-937bc12e",path:"/Transmuter/DCA/",headers:[{level:2,title:"Dollar Cost Averaging Automation",slug:"dollar-cost-averaging-automation"},{level:2,title:"Why use Transmuter instead of dedicated DCA services?",slug:"why-use-transmuter-instead-of-dedicated-dca-services"},{level:2,title:"Setup",slug:"setup"}]},{title:"BTCPay Email Receipts - Ticket Sale Guide",frontmatter:{editLink:"https://github.com/btcpayserver/btcTransmuter/edit/master/docs/EmailReceiptsPreset.md",externalRepo:"https://github.com/btcpayserver/btcTransmuter"},regularPath:"/Transmuter/EmailReceiptsPreset.html",relativePath:"Transmuter/EmailReceiptsPreset.md",key:"v-9c5e78fe",path:"/Transmuter/EmailReceiptsPreset/",headers:[{level:2,title:"How the Ticket Sale System Works",slug:"how-the-ticket-sale-system-works"},{level:2,title:"BTCPay POS App Setup",slug:"btcpay-pos-app-setup"},{level:2,title:"Transmuter Email Receipts Setup",slug:"transmuter-email-receipts-setup"}]},{title:"BtcTransmuter Docs",frontmatter:{editLink:"https://github.com/btcpayserver/btcTransmuter/edit/master/README.md",externalRepo:"https://github.com/btcpayserver/btcTransmuter"},regularPath:"/Transmuter/",relativePath:"Transmuter/README.md",key:"v-784978e6",path:"/Transmuter/",headers:[{level:2,title:"Introduction - What is BtcTransmuter?",slug:"introduction-what-is-btctransmuter"},{level:2,title:"How does it work?",slug:"how-does-it-work"},{level:2,title:"Can I use this in production",slug:"can-i-use-this-in-production"},{level:2,title:"How do I deploy?",slug:"how-do-i-deploy"},{level:2,title:"What extensions are provided?",slug:"what-extensions-are-provided"},{level:2,title:"What preset recipes are provided?",slug:"what-preset-recipes-are-provided"},{level:2,title:"How do I write an extension?",slug:"how-do-i-write-an-extension"},{level:3,title:"Adding a Trigger",slug:"adding-a-trigger"},{level:3,title:"Adding an Action",slug:"adding-an-action"},{level:3,title:"Adding an External Service",slug:"adding-an-external-service"}]},{title:"Trocador",frontmatter:{editLink:"https://github.com/saltrafael/trocador-plugin/edit/master/README.md",externalRepo:"https://github.com/saltrafael/trocador-plugin"},regularPath:"/Trocador/",relativePath:"Trocador/README.md",key:"v-604d19c6",path:"/Trocador/",headers:[{level:2,title:"Use Cases and Features",slug:"use-cases-and-features"},{level:2,title:"Caveats",slug:"caveats"},{level:2,title:"Compatibility",slug:"compatibility"},{level:2,title:"How to activate",slug:"how-to-activate"}]},{title:"Troubleshooting an issue in BTCPay Server",frontmatter:{},regularPath:"/Troubleshooting.html",relativePath:"Troubleshooting.md",key:"v-36032c85",path:"/Troubleshooting/",headers:[{level:2,title:"1. Replicating the issue",slug:"1-replicating-the-issue"},{level:3,title:"1.1 Updating the server",slug:"11-updating-the-server"},{level:3,title:"1.2 Restarting the server",slug:"12-restarting-the-server"},{level:3,title:"1.3 Restarting a service",slug:"13-restarting-a-service"},{level:2,title:"2. Looking through the logs",slug:"2-looking-through-the-logs"},{level:3,title:"2.1 BTCPay Logs",slug:"21-btcpay-logs"},{level:3,title:"2.2 Lightning Network Logs",slug:"22-lightning-network-logs"},{level:3,title:"2.2.1 - Lightning Network LND - Docker",slug:"221-lightning-network-lnd-docker"},{level:3,title:"2.2.2 - Lightning Network Core Lightning (CLN) - Docker",slug:"222-lightning-network-core-lightning-cln-docker"},{level:2,title:"2.3 - Bitcoin Node Logs",slug:"23-bitcoin-node-logs"},{level:2,title:"3. Finding a solution yourself (Google, FAQ, GitHub issues)",slug:"3-finding-a-solution-yourself-google-faq-github-issues"},{level:3,title:"3.1 BTCPay FAQ",slug:"31-btcpay-faq"},{level:3,title:"3.2 GitHub",slug:"32-github"},{level:3,title:"3.3 Mattermost",slug:"33-mattermost"},{level:2,title:"4. Asking for help",slug:"4-asking-for-help"},{level:3,title:"4.1 Asking the community (general problems)",slug:"41-asking-the-community-general-problems"},{level:3,title:"4.2 Opening an Issue on GitHub (advanced problems)",slug:"42-opening-an-issue-on-github-advanced-problems"},{level:3,title:"4.3 Premium Support",slug:"43-premium-support"},{level:3,title:"4.4 Lightning Network Support",slug:"44-lightning-network-support"}]},{title:"Try out BTCPay server",frontmatter:{},regularPath:"/TryItOut.html",relativePath:"TryItOut.md",key:"v-31f01d3e",path:"/TryItOut/",headers:[{level:2,title:"Our mainnet demo server",slug:"our-mainnet-demo-server"},{level:2,title:"Our Testnet demo server",slug:"our-testnet-demo-server"},{level:2,title:"Third-party hosts",slug:"third-party-hosts"},{level:2,title:"Start testing",slug:"start-testing"},{level:3,title:"BTCPay Server in action",slug:"btcpay-server-in-action"},{level:2,title:"Questions",slug:"questions"}]},{title:"Who can use BTCPay Server?",frontmatter:{description:"Who uses BTCPay Server and why? What are the benefits of using BTCPay Server over other payment gateways?",tags:["Use-case","Target-audience","BTCPay users","benefits"]},regularPath:"/UseCase.html",relativePath:"UseCase.md",key:"v-d4151eb6",path:"/UseCase/",headers:[{level:2,title:"Merchants",slug:"merchants"},{level:3,title:"Online stores",slug:"online-stores"},{level:3,title:"Physical stores",slug:"physical-stores"},{level:2,title:"Self-sovereign individuals",slug:"self-sovereign-individuals"},{level:2,title:"Freelancers & bill pay",slug:"freelancers-bill-pay"},{level:2,title:"Charities & non-profits",slug:"charities-non-profits"},{level:2,title:"Developers",slug:"developers"},{level:2,title:"Local communities",slug:"local-communities"},{level:2,title:"Cryptocurrency exchanges",slug:"cryptocurrency-exchanges"},{level:2,title:"Hosting providers",slug:"hosting-providers"}]},{title:"How to verify release signatures",frontmatter:{editLink:"https://github.com/btcpayserver/BTCPayServer.Vault/edit/master/docs/HowToVerify.md",externalRepo:"https://github.com/btcpayserver/BTCPayServer.Vault"},regularPath:"/Vault/HowToVerify.html",relativePath:"Vault/HowToVerify.md",key:"v-63822f36",path:"/Vault/HowToVerify/",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Checking PGP signatures",slug:"checking-pgp-signatures"},{level:3,title:"Importing Nicolas Dorier pgp keys (only first time)",slug:"importing-nicolas-dorier-pgp-keys-only-first-time"},{level:3,title:"Checking the actual PGP signature",slug:"checking-the-actual-pgp-signature"}]},{frontmatter:{editLink:"https://github.com/btcpayserver/BTCPayServer.Vault/edit/master/README.md",externalRepo:"https://github.com/btcpayserver/BTCPayServer.Vault"},regularPath:"/Vault/",relativePath:"Vault/README.md",key:"v-dae82c60",path:"/Vault/",headers:[{level:2,title:"Why BTCPayServer Vault",slug:"why-btcpayserver-vault"},{level:2,title:"How to install",slug:"how-to-install"},{level:3,title:"Direct download",slug:"direct-download"},{level:3,title:"Via brew (macOS only)",slug:"via-brew-macos-only"},{level:2,title:"How does BTCPayServer Vault work",slug:"how-does-btcpayserver-vault-work"},{level:2,title:"Is it safe?",slug:"is-it-safe"},{level:2,title:"How to build?",slug:"how-to-build"},{level:2,title:"Documentation",slug:"documentation"},{level:2,title:"Licence",slug:"licence"},{level:2,title:"Special thanks",slug:"special-thanks"}]},{title:"Joomla VirtueMart integration",frontmatter:{description:"How to integrate BTCPay Server into your Joomla VirtueMart store.",tags:["VirtueMart","Joomla","Plugin","eCommerce"]},regularPath:"/VirtueMart.html",relativePath:"VirtueMart.md",key:"v-0e38183b",path:"/VirtueMart/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"1. Install BTCPay Plugin",slug:"1-install-btcpay-plugin"},{level:3,title:"1.1 Install plugin from Joomla Admin Dashboard (recommended)",slug:"11-install-plugin-from-joomla-admin-dashboard-recommended"},{level:3,title:"1.2 Download and install plugin from JED or GitHub",slug:"12-download-and-install-plugin-from-jed-or-github"},{level:3,title:"1.3 Enable the plugin",slug:"13-enable-the-plugin"},{level:2,title:"2. Connecting VirtueMart and BTCPay Server",slug:"2-connecting-virtuemart-and-btcpay-server"},{level:3,title:"2.1 Add BTCPay payment gateway in VirtueMart",slug:"21-add-btcpay-payment-gateway-in-virtuemart"},{level:3,title:"2.2 Create an API key and configure permissions",slug:"22-create-an-api-key-and-configure-permissions"},{level:3,title:"2.3 Create a webhook on BTCPay Server",slug:"23-create-a-webhook-on-btcpay-server"},{level:2,title:"3. Test the checkout",slug:"3-test-the-checkout"},{level:2,title:"Customizing VirtueMart BTCPay payment method settings",slug:"customizing-virtuemart-btcpay-payment-method-settings"},{level:3,title:"Section: BTCPay Server connection settings",slug:"section-btcpay-server-connection-settings"},{level:3,title:"Section: Order states mapping",slug:"section-order-states-mapping"},{level:3,title:"Section: Restrictions",slug:"section-restrictions"},{level:3,title:"Section Discounts and fees",slug:"section-discounts-and-fees"},{level:2,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:'Error on checkout "There was an error processing the payment on BTCPay Server. Please try again and contact us if the problem persists."',slug:"error-on-checkout-there-was-an-error-processing-the-payment-on-btcpay-server-please-try-again-and-contact-us-if-the-problem-persists-"},{level:2,title:"The order states do not update although the invoice has been paid",slug:"the-order-states-do-not-update-although-the-invoice-has-been-paid"},{level:2,title:"I have troubles with using the plugin or some other related questions",slug:"i-have-troubles-with-using-the-plugin-or-some-other-related-questions"}]},{title:"The BTCPay Server Coinjoin plugin",frontmatter:{editLink:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.Wabisabi/edit/master/docs/readme.md",externalRepo:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.Wabisabi"},regularPath:"/Wabisabi/",relativePath:"Wabisabi/readme.md",key:"v-315abc86",path:"/Wabisabi/",headers:[{level:2,title:"Installation",slug:"installation"},{level:2,title:"Usage",slug:"usage"},{level:2,title:"Spending privately",slug:"spending-privately"},{level:2,title:"Pleb mode vs Scientist mode",slug:"pleb-mode-vs-scientist-mode"},{level:2,title:"Additional Coordinators",slug:"additional-coordinators"},{level:2,title:"Running a coordinator",slug:"running-a-coordinator"}]},{title:"BTCPay Server Walkthrough",frontmatter:{},regularPath:"/Walkthrough.html",relativePath:"Walkthrough.md",key:"v-5bcac676",path:"/Walkthrough/",headers:[{level:2,title:"Store",slug:"store"},{level:2,title:"Notifications",slug:"notifications"},{level:2,title:"Dashboard",slug:"dashboard"},{level:2,title:"Wallets",slug:"wallets"},{level:3,title:"Bitcoin",slug:"bitcoin"},{level:3,title:"Lightning",slug:"lightning"},{level:2,title:"Payments",slug:"payments"},{level:3,title:"Invoices",slug:"invoices"},{level:3,title:"Payment Requests",slug:"payment-requests"},{level:3,title:"Pull Payments",slug:"pull-payments"},{level:3,title:"Payouts",slug:"payouts"},{level:3,title:"Pay Button",slug:"pay-button"},{level:2,title:"Apps",slug:"apps"},{level:2,title:"Plugins",slug:"plugins"},{level:2,title:"Server settings",slug:"server-settings"},{level:2,title:"Account",slug:"account"},{level:2,title:"Join The BTCPay Community",slug:"join-the-btcpay-community"}]},{title:"BTCPay Server Wallet",frontmatter:{},regularPath:"/Wallet.html",relativePath:"Wallet.md",key:"v-13a93ebf",path:"/Wallet/",headers:[{level:2,title:"Wallet features",slug:"wallet-features"},{level:3,title:"Transactions",slug:"transactions"},{level:3,title:"Send",slug:"send"},{level:3,title:"Receive",slug:"receive"},{level:3,title:"Pull Payments",slug:"pull-payments"},{level:3,title:"Payouts",slug:"payouts"},{level:3,title:"Re-scan",slug:"re-scan"},{level:3,title:"Settings",slug:"settings"}]},{title:"(3) Wallet Setup",frontmatter:{},regularPath:"/WalletSetup.html",relativePath:"WalletSetup.md",key:"v-8c111c76",path:"/WalletSetup/"},{title:"Connecting Wasabi Wallet to BTCPay Server",frontmatter:{},regularPath:"/WasabiWallet.html",relativePath:"WasabiWallet.md",key:"v-7d101341",path:"/WasabiWallet/",headers:[{level:2,title:"Wasabi Wallet Setup",slug:"wasabi-wallet-setup"},{level:2,title:"Quick Setup",slug:"quick-setup"},{level:2,title:"Step by Step",slug:"step-by-step"},{level:2,title:"Setup store wallet",slug:"setup-store-wallet"},{level:3,title:"Connecting Wasabi to BTCPay Server Full Node (If you're self-hosting BTCPay)",slug:"connecting-wasabi-to-btcpay-server-full-node-if-youre-self-hosting-btcpay"},{level:3,title:"Configuring the Gap Limit in Wasabi",slug:"configuring-the-gap-limit-in-wasabi"}]},{title:"(4) What's Next?",frontmatter:{},regularPath:"/WhatsNext.html",relativePath:"WhatsNext.md",key:"v-53d8e985",path:"/WhatsNext/",headers:[{level:2,title:"Creating the Point of Sale App",slug:"creating-the-point-of-sale-app"},{level:2,title:"Creating the Crowdfund App",slug:"creating-the-crowdfund-app"},{level:2,title:"Creating the Payment Request",slug:"creating-the-payment-request"},{level:2,title:"Creating the Pay Button",slug:"creating-the-pay-button"},{level:2,title:"Connecting your BTCPay store to your e-commerce platform",slug:"connecting-your-btcpay-store-to-your-e-commerce-platform"},{level:2,title:"Connecting Additional BTCPay Services",slug:"connecting-additional-btcpay-services"},{level:2,title:"Join The BTCPay Community",slug:"join-the-btcpay-community"}]},{title:"WooCommerce integration",frontmatter:{description:"How to integrate BTCPay Server into your WooCommerce store.",tags:["WooCommerce","WordPress","Plugin","eCommerce"]},regularPath:"/WooCommerce.html",relativePath:"WooCommerce.md",key:"v-faa5f0f6",path:"/WooCommerce/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"1. Install BTCPay Plugin",slug:"1-install-btcpay-plugin"},{level:3,title:"1.1 Install plugin from WordPress Admin Dashboard (recommended)",slug:"11-install-plugin-from-wordpress-admin-dashboard-recommended"},{level:3,title:"1.2 Download and install plugin from GitHub",slug:"12-download-and-install-plugin-from-github"},{level:2,title:"2. Connecting WooCommerce and BTCPay Server",slug:"2-connecting-woocommerce-and-btcpay-server"},{level:3,title:"2.1 Connect using the API key wizard (recommended)",slug:"21-connect-using-the-api-key-wizard-recommended"},{level:3,title:"2.2 Connect by manually creating the API key and permissions",slug:"22-connect-by-manually-creating-the-api-key-and-permissions"},{level:2,title:"3. Testing the checkout",slug:"3-testing-the-checkout"},{level:2,title:"4. Customizing BTCPay WooCommerce V2",slug:"4-customizing-btcpay-woocommerce-v2"},{level:3,title:"4.1 Global Settings",slug:"41-global-settings"},{level:3,title:"4.2 Payment Gateway specific",slug:"42-payment-gateway-specific"},{level:2,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:"Error: Call to undefined function BTCPayServer\\Http\\curl_init()",slug:"error-call-to-undefined-function-btcpayserver-http-curl-init"},{level:3,title:"The order states do not update although the invoice has been paid",slug:"the-order-states-do-not-update-although-the-invoice-has-been-paid"},{level:3,title:"I get an error during checkout but not sure what the problem is.",slug:"i-get-an-error-during-checkout-but-not-sure-what-the-problem-is"},{level:3,title:"I have troubles with using the plugin or some other related questions",slug:"i-have-troubles-with-using-the-plugin-or-some-other-related-questions"},{level:3,title:"Create a new API key",slug:"create-a-new-api-key"},{level:3,title:"I messed around with the webhook, how to fix",slug:"i-messed-around-with-the-webhook-how-to-fix"},{level:2,title:"Deploying WooCommerce from BTCPay Server",slug:"deploying-woocommerce-from-btcpay-server"}]},{title:"Easy Automation for BTCPay Server using Zapier.com - No Programming Skills Required",frontmatter:{editLink:"https://github.com/btcpayserver/zapier/edit/master/README.md",externalRepo:"https://github.com/btcpayserver/zapier"},regularPath:"/Zapier/",relativePath:"Zapier/README.md",key:"v-a6ea6734",path:"/Zapier/",headers:[{level:2,title:"Free to Use",slug:"free-to-use"},{level:2,title:"What does it do?",slug:"what-does-it-do"},{level:2,title:"Who is it for?",slug:"who-is-it-for"},{level:2,title:"Some Examples",slug:"some-examples"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Security Considerations",slug:"security-considerations"},{level:2,title:"Which permissions should I choose for my API key?",slug:"which-permissions-should-i-choose-for-my-api-key"},{level:2,title:"How does it work technically?",slug:"how-does-it-work-technically"},{level:2,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:"I got a 403 Forbidden error, what happened?",slug:"i-got-a-403-forbidden-error-what-happened"},{level:3,title:"I deleted the webhook from my BTCPay Server store by mistake.",slug:"i-deleted-the-webhook-from-my-btcpay-server-store-by-mistake"},{level:2,title:"Source Code, Issues and Feature Requests",slug:"source-code-issues-and-feature-requests"},{level:2,title:"Credits and Support",slug:"credits-and-support"}]},{title:"Refunds",frontmatter:{},regularPath:"/Refund.html",relativePath:"Refund.md",key:"v-1dfa3141",path:"/Refund/",headers:[{level:2,title:"Create a refund",slug:"create-a-refund"},{level:2,title:"Processing refund",slug:"processing-refund"}]},{frontmatter:{layout:"Homepage",heroImage:"/img/btcpay-logo.svg",heroText:"BTCPay Server Documentation",tagline:"Start Accepting Bitcoin Payments With 0% Fees & No Third-party",features:[{title:"User Guide",details:"Guide for users and merchants using BTCPay Server.",actionText:"User Docs ❯",actionLink:"/Guide/"},{title:"Deployment",details:"Setting up and maintaining your BTCPay Server.",actionText:"Deployment Docs ❯",actionLink:"/Deployment/"},{title:"Development",details:"Docs for developers building on BTCPay Server.",actionText:"Developers Docs ❯",actionLink:"/Development/"}],footer:"Content Released under MIT license."},regularPath:"/",relativePath:"README.md",key:"v-dde32bd4",path:"/"},{title:"Pull payments",frontmatter:{},regularPath:"/PullPayments.html",relativePath:"PullPayments.md",key:"v-51df4a0d",path:"/PullPayments/",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Concept",slug:"concept"},{level:2,title:"Greenfield API",slug:"greenfield-api"},{level:2,title:"User interface",slug:"user-interface"},{level:3,title:"Create a pull payment",slug:"create-a-pull-payment"},{level:3,title:"Approve and pay a payout",slug:"approve-and-pay-a-payout"},{level:2,title:"Additional use cases for the Pull Payments feature",slug:"additional-use-cases-for-the-pull-payments-feature"}]}],themeConfig:{domain:"https://docs.btcpayserver.org",logo:"/img/btcpay-logo.svg",displayAllHeaders:!1,repo:"btcpayserver/btcpayserver-doc",docsDir:"docs",editLinks:!0,notSatisfiedLinks:!0,sidebarDepth:0,algolia:{indexName:"btcpayserver",appId:"EJBX059GO6",apiKey:"534cbeda78baf7eeb4767d555f2585d4",algoliaOptions:{typoTolerance:"min"},autocompleteOptions:{openOnFocus:!0}},nav:[{text:"User Guide",link:"/Guide/"},{text:"Deployment",link:"/Deployment/"},{text:"Developers",link:"/Development/"},{text:"Contribute",link:"/Contribute/"},{text:"FAQ",link:"/FAQ/"}],social:[{text:"Website",link:"https://btcpayserver.org/",rel:"noopener noreferrer website"},{text:"Chat",link:"https://chat.btcpayserver.org/",rel:"noopener noreferrer chat"},{text:"GitHub",link:"https://github.com/btcpayserver/",rel:"noopener noreferrer github"},{text:"Twitter",link:"https://twitter.com/BtcpayServer",rel:"noopener noreferrer twitter"}],sidebar:{"/Development":[{title:"Greenfield API",collapsable:!1,children:[["https://docs.btcpayserver.org/API/Greenfield/v1","Greenfield API v1",{type:"external"}],"/BTCPayServer/greenfield-authorization","/Development/GreenFieldExample","/Development/GreenFieldExample-NodeJS","/Development/GreenfieldExample-PHP"]},{title:"Development",collapsable:!1,children:["/Development/","/Development/LocalDevelopment",["/BTCPayServer/greenfield-development","Greenfield API Development"],"/Development/Plugins","/Development/Altcoins","/Development/InvoiceMetadata","/Development/Theme"]},{title:"NBXplorer",collapsable:!1,children:[["/NBXplorer/","Overview"],"/NBXplorer/API",["/NBXplorer/Postgres-Schema","Postgres Schema"],["/NBXplorer/Postgres-Migration","Postgres Migration"]]},{title:"More",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"BTCPay Server Vault",path:"/Vault/",children:["/Vault/HowToVerify"]},["/BTCPayServer/Security","Security Disclosures"],["/Development/TestnetDemo","Testnet deployment"]]}],"/Contribute":[{title:"Contribute",path:"/Contribute/",collapsable:!1,children:[{title:"Code",path:"/Contribute/Dev",collapsable:!1,children:["/Contribute/DevCode","/Contribute/DevTest"]},{title:"Write",path:"/Contribute/Write",collapsable:!1,children:[["/Contribute/WriteSoftware","Software Stack"],["/Contribute/WriteDocs","Documentation"],["/Contribute/WriteBlog","Blog"]]},["/Contribute/Design","Design"],["/Contribute/Translate","Translate"],["/Contribute/Misc","Miscellaneous"]]}],"/Vault":[{title:"Greenfield API",collapsable:!1,children:[["https://docs.btcpayserver.org/API/Greenfield/v1","Greenfield API v1",{type:"external"}],"/BTCPayServer/greenfield-authorization","/Development/GreenFieldExample","/Development/GreenFieldExample-NodeJS","/Development/GreenfieldExample-PHP"]},{title:"Development",collapsable:!1,children:["/Development/","/Development/LocalDevelopment",["/BTCPayServer/greenfield-development","Greenfield API Development"],"/Development/Plugins","/Development/Altcoins","/Development/InvoiceMetadata","/Development/Theme"]},{title:"NBXplorer",collapsable:!1,children:[["/NBXplorer/","Overview"],"/NBXplorer/API",["/NBXplorer/Postgres-Schema","Postgres Schema"],["/NBXplorer/Postgres-Migration","Postgres Migration"]]},{title:"More",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"BTCPay Server Vault",path:"/Vault/",children:["/Vault/HowToVerify"]},["/BTCPayServer/Security","Security Disclosures"],["/Development/TestnetDemo","Testnet deployment"]]}],"/BTCPayServer":[{title:"Greenfield API",collapsable:!1,children:[["https://docs.btcpayserver.org/API/Greenfield/v1","Greenfield API v1",{type:"external"}],"/BTCPayServer/greenfield-authorization","/Development/GreenFieldExample","/Development/GreenFieldExample-NodeJS","/Development/GreenfieldExample-PHP"]},{title:"Development",collapsable:!1,children:["/Development/","/Development/LocalDevelopment",["/BTCPayServer/greenfield-development","Greenfield API Development"],"/Development/Plugins","/Development/Altcoins","/Development/InvoiceMetadata","/Development/Theme"]},{title:"NBXplorer",collapsable:!1,children:[["/NBXplorer/","Overview"],"/NBXplorer/API",["/NBXplorer/Postgres-Schema","Postgres Schema"],["/NBXplorer/Postgres-Migration","Postgres Migration"]]},{title:"More",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"BTCPay Server Vault",path:"/Vault/",children:["/Vault/HowToVerify"]},["/BTCPayServer/Security","Security Disclosures"],["/Development/TestnetDemo","Testnet deployment"]]}],"/NBXplorer":[{title:"Greenfield API",collapsable:!1,children:[["https://docs.btcpayserver.org/API/Greenfield/v1","Greenfield API v1",{type:"external"}],"/BTCPayServer/greenfield-authorization","/Development/GreenFieldExample","/Development/GreenFieldExample-NodeJS","/Development/GreenfieldExample-PHP"]},{title:"Development",collapsable:!1,children:["/Development/","/Development/LocalDevelopment",["/BTCPayServer/greenfield-development","Greenfield API Development"],"/Development/Plugins","/Development/Altcoins","/Development/InvoiceMetadata","/Development/Theme"]},{title:"NBXplorer",collapsable:!1,children:[["/NBXplorer/","Overview"],"/NBXplorer/API",["/NBXplorer/Postgres-Schema","Postgres Schema"],["/NBXplorer/Postgres-Migration","Postgres Migration"]]},{title:"More",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"BTCPay Server Vault",path:"/Vault/",children:["/Vault/HowToVerify"]},["/BTCPayServer/Security","Security Disclosures"],["/Development/TestnetDemo","Testnet deployment"]]}],"/Configurator":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/Deployment":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/Docker":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/ElectrumX":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/ElectrumPersonalServer":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/Transmuter":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/FAQ/":[{title:"FAQ and common issues",path:"/FAQ/",collapsable:!1,children:["General","Deployment","Synchronization","Integrations","ServerSettings","Stores","Wallet","Apps","LightningNetwork","Altcoin"]}],"/":[{title:"Learn",collapsable:!1,children:[["/Guide","Introduction"],["/TryItOut","Try it out"],["/Walkthrough","Walkthrough"],["/UseCase","Use Case"],["/BTCPayVsOthers","BTCPay Server vs. Others"]]},{title:"Getting Started",collapsable:!1,children:["/RegisterAccount","/CreateStore",{title:"(3) Wallet Setup",path:"/WalletSetup",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"Connect Wallet",path:"/ConnectWallet"},{title:"Create Wallet",path:"/CreateWallet"},{title:"Lightning Network",path:"/LightningNetwork"}]},["/WhatsNext","(4) What's Next?"]]},{title:"Features",collapsable:!1,children:[["/Dashboard","Dashboard"],{title:"Wallet",path:"/Wallet",children:[["/HardwareWalletIntegration","Hardware Wallet Integration"]]},["/Invoices","Invoices"],["/PaymentRequests","Payment Requests"],{title:"Pull Payments",path:"/PullPayments",children:[["/Refund","Refunds"]]},["/Payouts","Payouts"],{title:"Form Builder",path:"/Forms",children:[["/AdvancedForms","Advanced Forms"]]},["/Apps","Apps"],["/Reporting","Reporting"],{title:"Payjoin",path:"/Payjoin",children:[["https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki","Payjoin specification",{type:"external"}]]}]},{title:"Integrations",collapsable:!1,children:[["/WooCommerce","WooCommerce"],["/Shopify","Shopify"],["/Magento","Magento"],["/PrestaShop","PrestaShop"],["/OpenCart","OpenCart"],["/Drupal","Drupal"],["/Zapier/","Zapier"],["/Shopware","Shopware"],["/VirtueMart","VirtueMart"],["/CustomIntegration","Custom Integration"]]},{title:"Plugins",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"LNbank",path:"/LNbank/",children:[["/LNbank/LNDhub","LNDhub Compatibility"],["/LNbank/Troubleshooting","Troubleshooting"]]},["/LNDhubAPI/","LNDhub API"],["/Nostr/","Nostr"],["/PodServer/","PodServer"],["/TicketTailor/","TicketTailor"],["/Trocador/","Trocador"],["/Wabisabi/","Wabisabi Coinjoin"]]},{title:"Support and Community",collapsable:!1,initialOpenGroupIndex:-1,children:[["/Troubleshooting","Troubleshooting an issue"],["/Support","Support"],["/Community","Community"]]}]}}},ql=n(228),{COLOR_MODES:Ql,STORE_ATTR:Gl,setColorMode:Vl}=n(91),Ul=e=>"Enter"===e.code||13===(e.keyCode||e.which),Xl=e=>{const t=e.target.matches("#algolia-search-input")&&Ul(e);(e.target.matches(".ds-dropdown-menu *")||t)&&document.getElementById("algolia-search-input").blur(),e.target.matches(".ytEmbed")&&(e.preventDefault(),(e=>{const t=e.querySelector("iframe[data-src]");if(t){const e=t.getAttribute("data-src");t.setAttribute("src",e)}})(e.target))};if("undefined"==typeof process||"server"!==process.env.VUE_ENV){const e=window.matchMedia("(prefers-color-scheme: dark)").matches?Ql[1]:Ql[0],t=window.localStorage.getItem(Gl);Vl(Ql.includes(t)?t:e)}n(229);Gn.component("Badge",()=>Promise.all([n.e(0),n.e(45)]).then(n.bind(null,806))),Gn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(46)]).then(n.bind(null,669))),Gn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(47)]).then(n.bind(null,670)));n(230);var Kl=[({router:e})=>{"undefined"!=typeof process&&"server"===process.env.VUE_ENV||e.onReady(()=>{const{app:t}=e;ql.forEach(t=>e.addRoute(t)),t.$once("hook:mounted",()=>{setTimeout(()=>{const{hash:e}=document.location;if(e.length>1){const t=e.substring(1),n=document.getElementById(t);n&&n.scrollIntoView()}},500)}),document.addEventListener("click",Xl),document.addEventListener("keyup",e=>{Ul(e)&&Xl(e)})})},{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{},({Vue:e})=>{e.component("CodeCopy",Al)}],Jl=[];class Yl extends class{constructor(){this.store=new Gn({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){Gn.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(Yl.prototype,{getPageAsyncComponent:al,getLayoutAsyncComponent:ll,getAsyncComponent:sl,getVueComponent:cl});var Zl={install(e){const t=new Yl;e.$vuepress=t,e.prototype.$vuepress=t}};function es(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var ts={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return pl("pageKey",t),Gn.component(t)||Gn.component(t,al(t)),Gn.component(t)?e(t):e("")}},ns={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},rs={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},os=(n(231),n(232),Object(Tl.a)(rs,(function(){var e=this._self._c;return e("span",[e("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[e("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),e("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),e("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),is={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};Gn.config.productionTip=!1,Gn.use(qa),Gn.use(Zl),Gn.mixin(function(e,t,n=Gn){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const r=new(e(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((e,t)=>(t.startsWith("$")&&(e[t]=o[t].get),e),i),{computed:i}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!Gn.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(es(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";es(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";es(e,o)?r(o):es(e,n)?r(n):r()}})}(n);const r={};try{await Promise.all(Kl.filter(e=>"function"==typeof e).map(t=>t({Vue:Gn,options:r,router:n,siteData:zl,isServer:e})))}catch(e){console.error(e)}return{app:new Gn(Object.assign(r,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},Jl.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file +var r=Object.freeze({}),o=Array.isArray;function i(e){return null==e}function a(e){return null!=e}function l(e){return!0===e}function s(e){return"string"==typeof e||"number"==typeof e||"symbol"==typeof e||"boolean"==typeof e}function c(e){return"function"==typeof e}function u(e){return null!==e&&"object"==typeof e}var p=Object.prototype.toString;function d(e){return"[object Object]"===p.call(e)}function h(e){return"[object RegExp]"===p.call(e)}function v(e){var t=parseFloat(String(e));return t>=0&&Math.floor(t)===t&&isFinite(e)}function m(e){return a(e)&&"function"==typeof e.then&&"function"==typeof e.catch}function f(e){return null==e?"":Array.isArray(e)||d(e)&&e.toString===p?JSON.stringify(e,null,2):String(e)}function g(e){var t=parseFloat(e);return isNaN(t)?e:t}function y(e,t){for(var n=Object.create(null),r=e.split(","),o=0;o-1)return e.splice(r,1)}}var P=Object.prototype.hasOwnProperty;function C(e,t){return P.call(e,t)}function D(e){var t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}var k=/-(\w)/g,S=D((function(e){return e.replace(k,(function(e,t){return t?t.toUpperCase():""}))})),x=D((function(e){return e.charAt(0).toUpperCase()+e.slice(1)})),T=/\B([A-Z])/g,A=D((function(e){return e.replace(T,"-$1").toLowerCase()}));var _=Function.prototype.bind?function(e,t){return e.bind(t)}:function(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n};function E(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function L(e,t){for(var n in t)e[n]=t[n];return e}function B(e){for(var t={},n=0;n0,Y=X&&X.indexOf("edge/")>0;X&&X.indexOf("android");var Z=X&&/iphone|ipad|ipod|ios/.test(X);X&&/chrome\/\d+/.test(X),X&&/phantomjs/.test(X);var ee,te=X&&X.match(/firefox\/(\d+)/),ne={}.watch,re=!1;if(U)try{var oe={};Object.defineProperty(oe,"passive",{get:function(){re=!0}}),window.addEventListener("test-passive",null,oe)}catch(e){}var ie=function(){return void 0===ee&&(ee=!U&&"undefined"!=typeof global&&(global.process&&"server"===global.process.env.VUE_ENV)),ee},ae=U&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__;function le(e){return"function"==typeof e&&/native code/.test(e.toString())}var se,ce="undefined"!=typeof Symbol&&le(Symbol)&&"undefined"!=typeof Reflect&&le(Reflect.ownKeys);se="undefined"!=typeof Set&&le(Set)?Set:function(){function e(){this.set=Object.create(null)}return e.prototype.has=function(e){return!0===this.set[e]},e.prototype.add=function(e){this.set[e]=!0},e.prototype.clear=function(){this.set=Object.create(null)},e}();var ue=null;function pe(e){void 0===e&&(e=null),e||ue&&ue._scope.off(),ue=e,e&&e._scope.on()}var de=function(){function e(e,t,n,r,o,i,a,l){this.tag=e,this.data=t,this.children=n,this.text=r,this.elm=o,this.ns=void 0,this.context=i,this.fnContext=void 0,this.fnOptions=void 0,this.fnScopeId=void 0,this.key=t&&t.key,this.componentOptions=a,this.componentInstance=void 0,this.parent=void 0,this.raw=!1,this.isStatic=!1,this.isRootInsert=!0,this.isComment=!1,this.isCloned=!1,this.isOnce=!1,this.asyncFactory=l,this.asyncMeta=void 0,this.isAsyncPlaceholder=!1}return Object.defineProperty(e.prototype,"child",{get:function(){return this.componentInstance},enumerable:!1,configurable:!0}),e}(),he=function(e){void 0===e&&(e="");var t=new de;return t.text=e,t.isComment=!0,t};function ve(e){return new de(void 0,void 0,void 0,String(e))}function me(e){var t=new de(e.tag,e.data,e.children&&e.children.slice(),e.text,e.elm,e.context,e.componentOptions,e.asyncFactory);return t.ns=e.ns,t.isStatic=e.isStatic,t.key=e.key,t.isComment=e.isComment,t.fnContext=e.fnContext,t.fnOptions=e.fnOptions,t.fnScopeId=e.fnScopeId,t.asyncMeta=e.asyncMeta,t.isCloned=!0,t}var fe=0,ge=[],ye=function(){function e(){this._pending=!1,this.id=fe++,this.subs=[]}return e.prototype.addSub=function(e){this.subs.push(e)},e.prototype.removeSub=function(e){this.subs[this.subs.indexOf(e)]=null,this._pending||(this._pending=!0,ge.push(this))},e.prototype.depend=function(t){e.target&&e.target.addDep(this)},e.prototype.notify=function(e){var t=this.subs.filter((function(e){return e}));for(var n=0,r=t.length;n0&&(Xe((c=e(c,"".concat(n||"","_").concat(r)))[0])&&Xe(p)&&(d[u]=ve(p.text+c[0].text),c.shift()),d.push.apply(d,c)):s(c)?Xe(p)?d[u]=ve(p.text+c):""!==c&&d.push(ve(c)):Xe(c)&&Xe(p)?d[u]=ve(p.text+c.text):(l(t._isVList)&&a(c.tag)&&i(c.key)&&a(n)&&(c.key="__vlist".concat(n,"_").concat(r,"__")),d.push(c)));return d}(e):void 0}function Xe(e){return a(e)&&a(e.text)&&!1===e.isComment}function Ke(e,t){var n,r,i,l,s=null;if(o(e)||"string"==typeof e)for(s=new Array(e.length),n=0,r=e.length;n0,l=t?!!t.$stable:!a,s=t&&t.$key;if(t){if(t._normalized)return t._normalized;if(l&&o&&o!==r&&s===o.$key&&!a&&!o.$hasNormal)return o;for(var c in i={},t)t[c]&&"$"!==c[0]&&(i[c]=mt(e,n,c,t[c]))}else i={};for(var u in n)u in i||(i[u]=ft(n,u));return t&&Object.isExtensible(t)&&(t._normalized=i),Q(i,"$stable",l),Q(i,"$key",s),Q(i,"$hasNormal",a),i}function mt(e,t,n,r){var i=function(){var t=ue;pe(e);var n=arguments.length?r.apply(null,arguments):r({}),i=(n=n&&"object"==typeof n&&!o(n)?[n]:Ue(n))&&n[0];return pe(t),n&&(!i||1===n.length&&i.isComment&&!ht(i))?void 0:n};return r.proxy&&Object.defineProperty(t,n,{get:i,enumerable:!0,configurable:!0}),i}function ft(e,t){return function(){return e[t]}}function gt(e){return{get attrs(){if(!e._attrsProxy){var t=e._attrsProxy={};Q(t,"_v_attr_proxy",!0),yt(t,e.$attrs,r,e,"$attrs")}return e._attrsProxy},get listeners(){e._listenersProxy||yt(e._listenersProxy={},e.$listeners,r,e,"$listeners");return e._listenersProxy},get slots(){return function(e){e._slotsProxy||wt(e._slotsProxy={},e.$scopedSlots);return e._slotsProxy}(e)},emit:_(e.$emit,e),expose:function(t){t&&Object.keys(t).forEach((function(n){return je(e,t,n)}))}}}function yt(e,t,n,r,o){var i=!1;for(var a in t)a in e?t[a]!==n[a]&&(i=!0):(i=!0,bt(e,a,r,o));for(var a in e)a in t||(i=!0,delete e[a]);return i}function bt(e,t,n,r){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){return n[r][t]}})}function wt(e,t){for(var n in t)e[n]=t[n];for(var n in e)n in t||delete e[n]}var Pt=null;function Ct(e,t){return(e.__esModule||ce&&"Module"===e[Symbol.toStringTag])&&(e=e.default),u(e)?t.extend(e):e}function Dt(e){if(o(e))for(var t=0;tdocument.createEvent("Event").timeStamp&&(sn=function(){return cn.now()})}var un=function(e,t){if(e.post){if(!t.post)return 1}else if(t.post)return-1;return e.id-t.id};function pn(){var e,t;for(ln=sn(),on=!0,en.sort(un),an=0;anan&&en[n].id>e.id;)n--;en.splice(n+1,0,e)}else en.push(e);rn||(rn=!0,Wt(pn))}}function hn(e,t){if(e){for(var n=Object.create(null),r=ce?Reflect.ownKeys(e):Object.keys(e),o=0;o-1)if(i&&!C(o,"default"))a=!1;else if(""===a||a===A(e)){var s=On(String,o.type);(s<0||l-1:"string"==typeof e?e.split(",").indexOf(t)>-1:!!h(e)&&e.test(t)}function Kn(e,t){var n=e.cache,r=e.keys,o=e._vnode;for(var i in n){var a=n[i];if(a){var l=a.name;l&&!t(l)&&Jn(n,i,r,o)}}}function Jn(e,t,n,r){var o=e[t];!o||r&&o.tag===r.tag||o.componentInstance.$destroy(),e[t]=null,w(n,t)}Gn.prototype._init=function(e){var t=this;t._uid=qn++,t._isVue=!0,t.__v_skip=!0,t._scope=new $e(!0),t._scope._vm=!0,e&&e._isComponent?function(e,t){var n=e.$options=Object.create(e.constructor.options),r=t._parentVnode;n.parent=t.parent,n._parentVnode=r;var o=r.componentOptions;n.propsData=o.propsData,n._parentListeners=o.listeners,n._renderChildren=o.children,n._componentTag=o.tag,t.render&&(n.render=t.render,n.staticRenderFns=t.staticRenderFns)}(t,e):t.$options=_n(Qn(t.constructor),e||{},t),t._renderProxy=t,t._self=t,function(e){var t=e.$options,n=t.parent;if(n&&!t.abstract){for(;n.$options.abstract&&n.$parent;)n=n.$parent;n.$children.push(e)}e.$parent=n,e.$root=n?n.$root:e,e.$children=[],e.$refs={},e._provided=n?n._provided:Object.create(null),e._watcher=null,e._inactive=null,e._directInactive=!1,e._isMounted=!1,e._isDestroyed=!1,e._isBeingDestroyed=!1}(t),function(e){e._events=Object.create(null),e._hasHookEvent=!1;var t=e.$options._parentListeners;t&&Ut(e,t)}(t),function(e){e._vnode=null,e._staticTrees=null;var t=e.$options,n=e.$vnode=t._parentVnode,o=n&&n.context;e.$slots=pt(t._renderChildren,o),e.$scopedSlots=n?vt(e.$parent,n.data.scopedSlots,e.$slots):r,e._c=function(t,n,r,o){return kt(e,t,n,r,o,!1)},e.$createElement=function(t,n,r,o){return kt(e,t,n,r,o,!0)};var i=n&&n.data;Le(e,"$attrs",i&&i.attrs||r,null,!0),Le(e,"$listeners",t._parentListeners||r,null,!0)}(t),Zt(t,"beforeCreate",void 0,!1),function(e){var t=hn(e.$options.inject,e);t&&(Te(!1),Object.keys(t).forEach((function(n){Le(e,n,t[n])})),Te(!0))}(t),Wn(t),function(e){var t=e.$options.provide;if(t){var n=c(t)?t.call(e):t;if(!u(n))return;for(var r=Me(e),o=ce?Reflect.ownKeys(n):Object.keys(n),i=0;i1?E(n):n;for(var r=E(arguments,1),o='event handler for "'.concat(e,'"'),i=0,a=n.length;iparseInt(this.max)&&Jn(e,t[0],t,this._vnode),this.vnodeToCache=null}}},created:function(){this.cache=Object.create(null),this.keys=[]},destroyed:function(){for(var e in this.cache)Jn(this.cache,e,this.keys)},mounted:function(){var e=this;this.cacheVNode(),this.$watch("include",(function(t){Kn(e,(function(e){return Xn(t,e)}))})),this.$watch("exclude",(function(t){Kn(e,(function(e){return!Xn(t,e)}))}))},updated:function(){this.cacheVNode()},render:function(){var e=this.$slots.default,t=Dt(e),n=t&&t.componentOptions;if(n){var r=Un(n),o=this.include,i=this.exclude;if(o&&(!r||!Xn(o,r))||i&&r&&Xn(i,r))return t;var a=this.cache,l=this.keys,s=null==t.key?n.Ctor.cid+(n.tag?"::".concat(n.tag):""):t.key;a[s]?(t.componentInstance=a[s].componentInstance,w(l,s),l.push(s)):(this.vnodeToCache=t,this.keyToCache=s),t.data.keepAlive=!0}return t||e&&e[0]}}};!function(e){var t={get:function(){return M}};Object.defineProperty(e,"config",t),e.util={warn:Cn,extend:L,mergeOptions:_n,defineReactive:Le},e.set=Be,e.delete=Ie,e.nextTick=Wt,e.observable=function(e){return Ee(e),e},e.options=Object.create(null),F.forEach((function(t){e.options[t+"s"]=Object.create(null)})),e.options._base=e,L(e.options.components,Zn),function(e){e.use=function(e){var t=this._installedPlugins||(this._installedPlugins=[]);if(t.indexOf(e)>-1)return this;var n=E(arguments,1);return n.unshift(this),c(e.install)?e.install.apply(e,n):c(e)&&e.apply(null,n),t.push(e),this}}(e),function(e){e.mixin=function(e){return this.options=_n(this.options,e),this}}(e),Vn(e),function(e){F.forEach((function(t){e[t]=function(e,n){return n?("component"===t&&d(n)&&(n.name=n.name||e,n=this.options._base.extend(n)),"directive"===t&&c(n)&&(n={bind:n,update:n}),this.options[t+"s"][e]=n,n):this.options[t+"s"][e]}}))}(e)}(Gn),Object.defineProperty(Gn.prototype,"$isServer",{get:ie}),Object.defineProperty(Gn.prototype,"$ssrContext",{get:function(){return this.$vnode&&this.$vnode.ssrContext}}),Object.defineProperty(Gn,"FunctionalRenderContext",{value:vn}),Gn.version="2.7.14";var er=y("style,class"),tr=y("input,textarea,option,select,progress"),nr=y("contenteditable,draggable,spellcheck"),rr=y("events,caret,typing,plaintext-only"),or=y("allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,default,defaultchecked,defaultmuted,defaultselected,defer,disabled,enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,required,reversed,scoped,seamless,selected,sortable,truespeed,typemustmatch,visible"),ir="http://www.w3.org/1999/xlink",ar=function(e){return":"===e.charAt(5)&&"xlink"===e.slice(0,5)},lr=function(e){return ar(e)?e.slice(6,e.length):""},sr=function(e){return null==e||!1===e};function cr(e){for(var t=e.data,n=e,r=e;a(r.componentInstance);)(r=r.componentInstance._vnode)&&r.data&&(t=ur(r.data,t));for(;a(n=n.parent);)n&&n.data&&(t=ur(t,n.data));return function(e,t){if(a(e)||a(t))return pr(e,dr(t));return""}(t.staticClass,t.class)}function ur(e,t){return{staticClass:pr(e.staticClass,t.staticClass),class:a(e.class)?[e.class,t.class]:t.class}}function pr(e,t){return e?t?e+" "+t:e:t||""}function dr(e){return Array.isArray(e)?function(e){for(var t,n="",r=0,o=e.length;r-1?Rr(e,t,n):or(t)?sr(n)?e.removeAttribute(t):(n="allowfullscreen"===t&&"EMBED"===e.tagName?"true":t,e.setAttribute(t,n)):nr(t)?e.setAttribute(t,function(e,t){return sr(t)||"false"===t?"false":"contenteditable"===e&&rr(t)?t:"true"}(t,n)):ar(t)?sr(n)?e.removeAttributeNS(ir,lr(t)):e.setAttributeNS(ir,t,n):Rr(e,t,n)}function Rr(e,t,n){if(sr(n))e.removeAttribute(t);else{if(K&&!J&&"TEXTAREA"===e.tagName&&"placeholder"===t&&""!==n&&!e.__ieph){var r=function(t){t.stopImmediatePropagation(),e.removeEventListener("input",r)};e.addEventListener("input",r),e.__ieph=!0}e.setAttribute(t,n)}}var Hr={create:Nr,update:Nr};function Wr(e,t){var n=t.elm,r=t.data,o=e.data;if(!(i(r.staticClass)&&i(r.class)&&(i(o)||i(o.staticClass)&&i(o.class)))){var l=cr(t),s=n._transitionClasses;a(s)&&(l=pr(l,dr(s))),l!==n._prevClass&&(n.setAttribute("class",l),n._prevClass=l)}}var jr,Fr={create:Wr,update:Wr};function $r(e,t,n){var r=jr;return function o(){var i=t.apply(null,arguments);null!==i&&qr(e,o,n,r)}}var Mr=Et&&!(te&&Number(te[1])<=53);function zr(e,t,n,r){if(Mr){var o=ln,i=t;t=i._wrapper=function(e){if(e.target===e.currentTarget||e.timeStamp>=o||e.timeStamp<=0||e.target.ownerDocument!==document)return i.apply(this,arguments)}}jr.addEventListener(e,t,re?{capture:n,passive:r}:n)}function qr(e,t,n,r){(r||jr).removeEventListener(e,t._wrapper||t,n)}function Qr(e,t){if(!i(e.data.on)||!i(t.data.on)){var n=t.data.on||{},r=e.data.on||{};jr=t.elm||e.elm,function(e){if(a(e.__r)){var t=K?"change":"input";e[t]=[].concat(e.__r,e[t]||[]),delete e.__r}a(e.__c)&&(e.change=[].concat(e.__c,e.change||[]),delete e.__c)}(n),Qe(n,r,zr,qr,$r,t.context),jr=void 0}}var Gr,Vr={create:Qr,update:Qr,destroy:function(e){return Qr(e,Dr)}};function Ur(e,t){if(!i(e.data.domProps)||!i(t.data.domProps)){var n,r,o=t.elm,s=e.data.domProps||{},c=t.data.domProps||{};for(n in(a(c.__ob__)||l(c._v_attr_proxy))&&(c=t.data.domProps=L({},c)),s)n in c||(o[n]="");for(n in c){if(r=c[n],"textContent"===n||"innerHTML"===n){if(t.children&&(t.children.length=0),r===s[n])continue;1===o.childNodes.length&&o.removeChild(o.childNodes[0])}if("value"===n&&"PROGRESS"!==o.tagName){o._value=r;var u=i(r)?"":String(r);Xr(o,u)&&(o.value=u)}else if("innerHTML"===n&&mr(o.tagName)&&i(o.innerHTML)){(Gr=Gr||document.createElement("div")).innerHTML="".concat(r,"");for(var p=Gr.firstChild;o.firstChild;)o.removeChild(o.firstChild);for(;p.firstChild;)o.appendChild(p.firstChild)}else if(r!==s[n])try{o[n]=r}catch(e){}}}}function Xr(e,t){return!e.composing&&("OPTION"===e.tagName||function(e,t){var n=!0;try{n=document.activeElement!==e}catch(e){}return n&&e.value!==t}(e,t)||function(e,t){var n=e.value,r=e._vModifiers;if(a(r)){if(r.number)return g(n)!==g(t);if(r.trim)return n.trim()!==t.trim()}return n!==t}(e,t))}var Kr={create:Ur,update:Ur},Jr=D((function(e){var t={},n=/:(.+)/;return e.split(/;(?![^(]*\))/g).forEach((function(e){if(e){var r=e.split(n);r.length>1&&(t[r[0].trim()]=r[1].trim())}})),t}));function Yr(e){var t=Zr(e.style);return e.staticStyle?L(e.staticStyle,t):t}function Zr(e){return Array.isArray(e)?B(e):"string"==typeof e?Jr(e):e}var eo,to=/^--/,no=/\s*!important$/,ro=function(e,t,n){if(to.test(t))e.style.setProperty(t,n);else if(no.test(n))e.style.setProperty(A(t),n.replace(no,""),"important");else{var r=io(t);if(Array.isArray(n))for(var o=0,i=n.length;o-1?t.split(so).forEach((function(t){return e.classList.add(t)})):e.classList.add(t);else{var n=" ".concat(e.getAttribute("class")||""," ");n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function uo(e,t){if(t&&(t=t.trim()))if(e.classList)t.indexOf(" ")>-1?t.split(so).forEach((function(t){return e.classList.remove(t)})):e.classList.remove(t),e.classList.length||e.removeAttribute("class");else{for(var n=" ".concat(e.getAttribute("class")||""," "),r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");(n=n.trim())?e.setAttribute("class",n):e.removeAttribute("class")}}function po(e){if(e){if("object"==typeof e){var t={};return!1!==e.css&&L(t,ho(e.name||"v")),L(t,e),t}return"string"==typeof e?ho(e):void 0}}var ho=D((function(e){return{enterClass:"".concat(e,"-enter"),enterToClass:"".concat(e,"-enter-to"),enterActiveClass:"".concat(e,"-enter-active"),leaveClass:"".concat(e,"-leave"),leaveToClass:"".concat(e,"-leave-to"),leaveActiveClass:"".concat(e,"-leave-active")}})),vo=U&&!J,mo="transition",fo="transitionend",go="animation",yo="animationend";vo&&(void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend&&(mo="WebkitTransition",fo="webkitTransitionEnd"),void 0===window.onanimationend&&void 0!==window.onwebkitanimationend&&(go="WebkitAnimation",yo="webkitAnimationEnd"));var bo=U?window.requestAnimationFrame?window.requestAnimationFrame.bind(window):setTimeout:function(e){return e()};function wo(e){bo((function(){bo(e)}))}function Po(e,t){var n=e._transitionClasses||(e._transitionClasses=[]);n.indexOf(t)<0&&(n.push(t),co(e,t))}function Co(e,t){e._transitionClasses&&w(e._transitionClasses,t),uo(e,t)}function Do(e,t,n){var r=So(e,t),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var l="transition"===o?fo:yo,s=0,c=function(){e.removeEventListener(l,u),n()},u=function(t){t.target===e&&++s>=a&&c()};setTimeout((function(){s0&&(n="transition",u=a,p=i.length):"animation"===t?c>0&&(n="animation",u=c,p=s.length):p=(n=(u=Math.max(a,c))>0?a>c?"transition":"animation":null)?"transition"===n?i.length:s.length:0,{type:n,timeout:u,propCount:p,hasTransform:"transition"===n&&ko.test(r[mo+"Property"])}}function xo(e,t){for(;e.length1}function Bo(e,t){!0!==t.data.show&&Ao(t)}var Io=function(e){var t,n,r={},c=e.modules,u=e.nodeOps;for(t=0;tv?w(e,i(n[g+1])?null:n[g+1].elm,n,h,g,r):h>g&&C(t,p,v)}(p,m,g,n,c):a(g)?(a(e.text)&&u.setTextContent(p,""),w(p,null,g,0,g.length-1,n)):a(m)?C(m,0,m.length-1):a(e.text)&&u.setTextContent(p,""):e.text!==t.text&&u.setTextContent(p,t.text),a(v)&&a(h=v.hook)&&a(h=h.postpatch)&&h(e,t)}}}function x(e,t,n){if(l(n)&&a(e.parent))e.parent.data.pendingInsert=t;else for(var r=0;r-1,a.selected!==i&&(a.selected=i);else if(R(Wo(a),r))return void(e.selectedIndex!==l&&(e.selectedIndex=l));o||(e.selectedIndex=-1)}}function Ho(e,t){return t.every((function(t){return!R(t,e)}))}function Wo(e){return"_value"in e?e._value:e.value}function jo(e){e.target.composing=!0}function Fo(e){e.target.composing&&(e.target.composing=!1,$o(e.target,"input"))}function $o(e,t){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}function Mo(e){return!e.componentInstance||e.data&&e.data.transition?e:Mo(e.componentInstance._vnode)}var zo={model:No,show:{bind:function(e,t,n){var r=t.value,o=(n=Mo(n)).data&&n.data.transition,i=e.__vOriginalDisplay="none"===e.style.display?"":e.style.display;r&&o?(n.data.show=!0,Ao(n,(function(){e.style.display=i}))):e.style.display=r?i:"none"},update:function(e,t,n){var r=t.value;!r!=!t.oldValue&&((n=Mo(n)).data&&n.data.transition?(n.data.show=!0,r?Ao(n,(function(){e.style.display=e.__vOriginalDisplay})):_o(n,(function(){e.style.display="none"}))):e.style.display=r?e.__vOriginalDisplay:"none")},unbind:function(e,t,n,r,o){o||(e.style.display=e.__vOriginalDisplay)}}},qo={name:String,appear:Boolean,css:Boolean,mode:String,type:String,enterClass:String,leaveClass:String,enterToClass:String,leaveToClass:String,enterActiveClass:String,leaveActiveClass:String,appearClass:String,appearActiveClass:String,appearToClass:String,duration:[Number,String,Object]};function Qo(e){var t=e&&e.componentOptions;return t&&t.Ctor.options.abstract?Qo(Dt(t.children)):e}function Go(e){var t={},n=e.$options;for(var r in n.propsData)t[r]=e[r];var o=n._parentListeners;for(var r in o)t[S(r)]=o[r];return t}function Vo(e,t){if(/\d-keep-alive$/.test(t.tag))return e("keep-alive",{props:t.componentOptions.propsData})}var Uo=function(e){return e.tag||ht(e)},Xo=function(e){return"show"===e.name},Ko={name:"transition",props:qo,abstract:!0,render:function(e){var t=this,n=this.$slots.default;if(n&&(n=n.filter(Uo)).length){0;var r=this.mode;0;var o=n[0];if(function(e){for(;e=e.parent;)if(e.data.transition)return!0}(this.$vnode))return o;var i=Qo(o);if(!i)return o;if(this._leaving)return Vo(e,o);var a="__transition-".concat(this._uid,"-");i.key=null==i.key?i.isComment?a+"comment":a+i.tag:s(i.key)?0===String(i.key).indexOf(a)?i.key:a+i.key:i.key;var l=(i.data||(i.data={})).transition=Go(this),c=this._vnode,u=Qo(c);if(i.data.directives&&i.data.directives.some(Xo)&&(i.data.show=!0),u&&u.data&&!function(e,t){return t.key===e.key&&t.tag===e.tag}(i,u)&&!ht(u)&&(!u.componentInstance||!u.componentInstance._vnode.isComment)){var p=u.data.transition=L({},l);if("out-in"===r)return this._leaving=!0,Ge(p,"afterLeave",(function(){t._leaving=!1,t.$forceUpdate()})),Vo(e,o);if("in-out"===r){if(ht(i))return c;var d,h=function(){d()};Ge(l,"afterEnter",h),Ge(l,"enterCancelled",h),Ge(p,"delayLeave",(function(e){d=e}))}}return o}}},Jo=L({tag:String,moveClass:String},qo);function Yo(e){e.elm._moveCb&&e.elm._moveCb(),e.elm._enterCb&&e.elm._enterCb()}function Zo(e){e.data.newPos=e.elm.getBoundingClientRect()}function ei(e){var t=e.data.pos,n=e.data.newPos,r=t.left-n.left,o=t.top-n.top;if(r||o){e.data.moved=!0;var i=e.elm.style;i.transform=i.WebkitTransform="translate(".concat(r,"px,").concat(o,"px)"),i.transitionDuration="0s"}}delete Jo.mode;var ti={Transition:Ko,TransitionGroup:{props:Jo,beforeMount:function(){var e=this,t=this._update;this._update=function(n,r){var o=Kt(e);e.__patch__(e._vnode,e.kept,!1,!0),e._vnode=e.kept,o(),t.call(e,n,r)}},render:function(e){for(var t=this.tag||this.$vnode.data.tag||"span",n=Object.create(null),r=this.prevChildren=this.children,o=this.$slots.default||[],i=this.children=[],a=Go(this),l=0;l-1?gr[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:gr[e]=/HTMLUnknownElement/.test(t.toString())},L(Gn.options.directives,zo),L(Gn.options.components,ti),Gn.prototype.__patch__=U?Io:I,Gn.prototype.$mount=function(e,t){return function(e,t,n){var r;e.$el=t,e.$options.render||(e.$options.render=he),Zt(e,"beforeMount"),r=function(){e._update(e._render(),n)},new qt(e,r,I,{before:function(){e._isMounted&&!e._isDestroyed&&Zt(e,"beforeUpdate")}},!0),n=!1;var o=e._preWatchers;if(o)for(var i=0;i=0&&(t=e.slice(r),e=e.slice(0,r));var o=e.indexOf("?");return o>=0&&(n=e.slice(o+1),e=e.slice(0,o)),{path:e,query:n,hash:t}}(o.path||""),c=t&&t.path||"/",u=s.path?Ci(s.path,c,n||o.append):c,p=function(e,t,n){void 0===t&&(t={});var r,o=n||ci;try{r=o(e||"")}catch(e){r={}}for(var i in t){var a=t[i];r[i]=Array.isArray(a)?a.map(si):si(a)}return r}(s.query,o.query,r&&r.options.parseQuery),d=o.hash||s.hash;return d&&"#"!==d.charAt(0)&&(d="#"+d),{_normalized:!0,path:u,query:p,hash:d}}var zi,qi=function(){},Qi={name:"RouterLink",props:{to:{type:[String,Object],required:!0},tag:{type:String,default:"a"},custom:Boolean,exact:Boolean,exactPath:Boolean,append:Boolean,replace:Boolean,activeClass:String,exactActiveClass:String,ariaCurrentValue:{type:String,default:"page"},event:{type:[String,Array],default:"click"}},render:function(e){var t=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,l=o.href,s={},c=n.options.linkActiveClass,u=n.options.linkExactActiveClass,p=null==c?"router-link-active":c,d=null==u?"router-link-exact-active":u,h=null==this.activeClass?p:this.activeClass,v=null==this.exactActiveClass?d:this.exactActiveClass,m=a.redirectedFrom?di(null,Mi(a.redirectedFrom),null,n):a;s[v]=gi(r,m,this.exactPath),s[h]=this.exact||this.exactPath?s[v]:function(e,t){return 0===e.path.replace(pi,"/").indexOf(t.path.replace(pi,"/"))&&(!t.hash||e.hash===t.hash)&&function(e,t){for(var n in t)if(!(n in e))return!1;return!0}(e.query,t.query)}(r,m);var f=s[v]?this.ariaCurrentValue:null,g=function(e){Gi(e)&&(t.replace?n.replace(i,qi):n.push(i,qi))},y={click:Gi};Array.isArray(this.event)?this.event.forEach((function(e){y[e]=g})):y[this.event]=g;var b={class:s},w=!this.$scopedSlots.$hasNormal&&this.$scopedSlots.default&&this.$scopedSlots.default({href:l,route:a,navigate:g,isActive:s[h],isExactActive:s[v]});if(w){if(1===w.length)return w[0];if(w.length>1||!w.length)return 0===w.length?e():e("span",{},w)}if("a"===this.tag)b.on=y,b.attrs={href:l,"aria-current":f};else{var P=function e(t){var n;if(t)for(var r=0;r-1&&(l.params[d]=n.params[d]);return l.path=$i(u.path,l.params),s(u,l,a)}if(l.path){l.params={};for(var h=0;h-1}function Da(e,t){return Ca(e)&&e._isRouter&&(null==t||e.type===t)}function ka(e,t,n){var r=function(o){o>=e.length?n():e[o]?t(e[o],(function(){r(o+1)})):r(o+1)};r(0)}function Sa(e){return function(t,n,r){var o=!1,i=0,a=null;xa(e,(function(e,t,n,l){if("function"==typeof e&&void 0===e.cid){o=!0,i++;var s,c=_a((function(t){var o;((o=t).__esModule||Aa&&"Module"===o[Symbol.toStringTag])&&(t=t.default),e.resolved="function"==typeof t?t:zi.extend(t),n.components[l]=t,--i<=0&&r()})),u=_a((function(e){var t="Failed to resolve async component "+l+": "+e;a||(a=Ca(e)?e:new Error(t),r(a))}));try{s=e(c,u)}catch(e){u(e)}if(s)if("function"==typeof s.then)s.then(c,u);else{var p=s.component;p&&"function"==typeof p.then&&p.then(c,u)}}})),o||r()}}function xa(e,t){return Ta(e.map((function(e){return Object.keys(e.components).map((function(n){return t(e.components[n],e.instances[n],e,n)}))})))}function Ta(e){return Array.prototype.concat.apply([],e)}var Aa="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;function _a(e){var t=!1;return function(){for(var n=[],r=arguments.length;r--;)n[r]=arguments[r];if(!t)return t=!0,e.apply(this,n)}}var Ea=function(e,t){this.router=e,this.base=function(e){if(!e)if(Vi){var t=document.querySelector("base");e=(e=t&&t.getAttribute("href")||"/").replace(/^https?:\/\/[^\/]+/,"")}else e="/";"/"!==e.charAt(0)&&(e="/"+e);return e.replace(/\/$/,"")}(t),this.current=vi,this.pending=null,this.ready=!1,this.readyCbs=[],this.readyErrorCbs=[],this.errorCbs=[],this.listeners=[]};function La(e,t,n,r){var o=xa(e,(function(e,r,o,i){var a=function(e,t){"function"!=typeof e&&(e=zi.extend(e));return e.options[t]}(e,t);if(a)return Array.isArray(a)?a.map((function(e){return n(e,r,o,i)})):n(a,r,o,i)}));return Ta(r?o.reverse():o)}function Ba(e,t){if(t)return function(){return e.apply(t,arguments)}}Ea.prototype.listen=function(e){this.cb=e},Ea.prototype.onReady=function(e,t){this.ready?e():(this.readyCbs.push(e),t&&this.readyErrorCbs.push(t))},Ea.prototype.onError=function(e){this.errorCbs.push(e)},Ea.prototype.transitionTo=function(e,t,n){var r,o=this;try{r=this.router.match(e,this.current)}catch(e){throw this.errorCbs.forEach((function(t){t(e)})),e}var i=this.current;this.confirmTransition(r,(function(){o.updateRoute(r),t&&t(r),o.ensureURL(),o.router.afterHooks.forEach((function(e){e&&e(r,i)})),o.ready||(o.ready=!0,o.readyCbs.forEach((function(e){e(r)})))}),(function(e){n&&n(e),e&&!o.ready&&(Da(e,ga.redirected)&&i===vi||(o.ready=!0,o.readyErrorCbs.forEach((function(t){t(e)}))))}))},Ea.prototype.confirmTransition=function(e,t,n){var r=this,o=this.current;this.pending=e;var i,a,l=function(e){!Da(e)&&Ca(e)&&(r.errorCbs.length?r.errorCbs.forEach((function(t){t(e)})):console.error(e)),n&&n(e)},s=e.matched.length-1,c=o.matched.length-1;if(gi(e,o)&&s===c&&e.matched[s]===o.matched[c])return this.ensureURL(),e.hash&&ia(this.router,o,e,!1),l(((a=wa(i=o,e,ga.duplicated,'Avoided redundant navigation to current location: "'+i.fullPath+'".')).name="NavigationDuplicated",a));var u=function(e,t){var n,r=Math.max(e.length,t.length);for(n=0;n0)){var t=this.router,n=t.options.scrollBehavior,r=va&&n;r&&this.listeners.push(oa());var o=function(){var n=e.current,o=Na(e.base);e.current===vi&&o===e._startLocation||e.transitionTo(o,(function(e){r&&ia(t,e,n,!0)}))};window.addEventListener("popstate",o),this.listeners.push((function(){window.removeEventListener("popstate",o)}))}},t.prototype.go=function(e){window.history.go(e)},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ma(Di(r.base+e.fullPath)),ia(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){fa(Di(r.base+e.fullPath)),ia(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.ensureURL=function(e){if(Na(this.base)!==this.current.fullPath){var t=Di(this.base+this.current.fullPath);e?ma(t):fa(t)}},t.prototype.getCurrentLocation=function(){return Na(this.base)},t}(Ea);function Na(e){var t=window.location.pathname,n=t.toLowerCase(),r=e.toLowerCase();return!e||n!==r&&0!==n.indexOf(Di(r+"/"))||(t=t.slice(e.length)),(t||"/")+window.location.search+window.location.hash}var Oa=function(e){function t(t,n,r){e.call(this,t,n),r&&function(e){var t=Na(e);if(!/^\/#/.test(t))return window.location.replace(Di(e+"/#"+t)),!0}(this.base)||Ra()}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.setupListeners=function(){var e=this;if(!(this.listeners.length>0)){var t=this.router.options.scrollBehavior,n=va&&t;n&&this.listeners.push(oa());var r=function(){var t=e.current;Ra()&&e.transitionTo(Ha(),(function(r){n&&ia(e.router,r,t,!0),va||Fa(r.fullPath)}))},o=va?"popstate":"hashchange";window.addEventListener(o,r),this.listeners.push((function(){window.removeEventListener(o,r)}))}},t.prototype.push=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){ja(e.fullPath),ia(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this,o=this.current;this.transitionTo(e,(function(e){Fa(e.fullPath),ia(r.router,e,o,!1),t&&t(e)}),n)},t.prototype.go=function(e){window.history.go(e)},t.prototype.ensureURL=function(e){var t=this.current.fullPath;Ha()!==t&&(e?ja(t):Fa(t))},t.prototype.getCurrentLocation=function(){return Ha()},t}(Ea);function Ra(){var e=Ha();return"/"===e.charAt(0)||(Fa("/"+e),!1)}function Ha(){var e=window.location.href,t=e.indexOf("#");return t<0?"":e=e.slice(t+1)}function Wa(e){var t=window.location.href,n=t.indexOf("#");return(n>=0?t.slice(0,n):t)+"#"+e}function ja(e){va?ma(Wa(e)):window.location.hash=e}function Fa(e){va?fa(Wa(e)):window.location.replace(Wa(e))}var $a=function(e){function t(t,n){e.call(this,t,n),this.stack=[],this.index=-1}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.push=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index+1).concat(e),r.index++,t&&t(e)}),n)},t.prototype.replace=function(e,t,n){var r=this;this.transitionTo(e,(function(e){r.stack=r.stack.slice(0,r.index).concat(e),t&&t(e)}),n)},t.prototype.go=function(e){var t=this,n=this.index+e;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,(function(){var e=t.current;t.index=n,t.updateRoute(r),t.router.afterHooks.forEach((function(t){t&&t(r,e)}))}),(function(e){Da(e,ga.duplicated)&&(t.index=n)}))}},t.prototype.getCurrentLocation=function(){var e=this.stack[this.stack.length-1];return e?e.fullPath:"/"},t.prototype.ensureURL=function(){},t}(Ea),Ma=function(e){void 0===e&&(e={}),this.app=null,this.apps=[],this.options=e,this.beforeHooks=[],this.resolveHooks=[],this.afterHooks=[],this.matcher=Ki(e.routes||[],this);var t=e.mode||"hash";switch(this.fallback="history"===t&&!va&&!1!==e.fallback,this.fallback&&(t="hash"),Vi||(t="abstract"),this.mode=t,t){case"history":this.history=new Ia(this,e.base);break;case"hash":this.history=new Oa(this,e.base,this.fallback);break;case"abstract":this.history=new $a(this,e.base);break;default:0}},za={currentRoute:{configurable:!0}};Ma.prototype.match=function(e,t,n){return this.matcher.match(e,t,n)},za.currentRoute.get=function(){return this.history&&this.history.current},Ma.prototype.init=function(e){var t=this;if(this.apps.push(e),e.$once("hook:destroyed",(function(){var n=t.apps.indexOf(e);n>-1&&t.apps.splice(n,1),t.app===e&&(t.app=t.apps[0]||null),t.app||t.history.teardown()})),!this.app){this.app=e;var n=this.history;if(n instanceof Ia||n instanceof Oa){var r=function(e){n.setupListeners(),function(e){var r=n.current,o=t.options.scrollBehavior;va&&o&&"fullPath"in e&&ia(t,e,r,!1)}(e)};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen((function(e){t.apps.forEach((function(t){t._route=e}))}))}},Ma.prototype.beforeEach=function(e){return Qa(this.beforeHooks,e)},Ma.prototype.beforeResolve=function(e){return Qa(this.resolveHooks,e)},Ma.prototype.afterEach=function(e){return Qa(this.afterHooks,e)},Ma.prototype.onReady=function(e,t){this.history.onReady(e,t)},Ma.prototype.onError=function(e){this.history.onError(e)},Ma.prototype.push=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.push(e,t,n)}));this.history.push(e,t,n)},Ma.prototype.replace=function(e,t,n){var r=this;if(!t&&!n&&"undefined"!=typeof Promise)return new Promise((function(t,n){r.history.replace(e,t,n)}));this.history.replace(e,t,n)},Ma.prototype.go=function(e){this.history.go(e)},Ma.prototype.back=function(){this.go(-1)},Ma.prototype.forward=function(){this.go(1)},Ma.prototype.getMatchedComponents=function(e){var t=e?e.matched?e:this.resolve(e).route:this.currentRoute;return t?[].concat.apply([],t.matched.map((function(e){return Object.keys(e.components).map((function(t){return e.components[t]}))}))):[]},Ma.prototype.resolve=function(e,t,n){var r=Mi(e,t=t||this.history.current,n,this),o=this.match(r,t),i=o.redirectedFrom||o.fullPath;return{location:r,route:o,href:function(e,t,n){var r="hash"===n?"#"+t:t;return e?Di(e+"/"+r):r}(this.history.base,i,this.mode),normalizedTo:r,resolved:o}},Ma.prototype.getRoutes=function(){return this.matcher.getRoutes()},Ma.prototype.addRoute=function(e,t){this.matcher.addRoute(e,t),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},Ma.prototype.addRoutes=function(e){this.matcher.addRoutes(e),this.history.current!==vi&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(Ma.prototype,za);var qa=Ma;function Qa(e,t){return e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}}Ma.install=function e(t){if(!e.installed||zi!==t){e.installed=!0,zi=t;var n=function(e){return void 0!==e},r=function(e,t){var r=e.$options._parentVnode;n(r)&&n(r=r.data)&&n(r=r.registerRouteInstance)&&r(e,t)};t.mixin({beforeCreate:function(){n(this.$options.router)?(this._routerRoot=this,this._router=this.$options.router,this._router.init(this),t.util.defineReactive(this,"_route",this._router.history.current)):this._routerRoot=this.$parent&&this.$parent._routerRoot||this,r(this,this)},destroyed:function(){r(this)}}),Object.defineProperty(t.prototype,"$router",{get:function(){return this._routerRoot._router}}),Object.defineProperty(t.prototype,"$route",{get:function(){return this._routerRoot._route}}),t.component("RouterView",wi),t.component("RouterLink",Qi);var o=t.config.optionMergeStrategies;o.beforeRouteEnter=o.beforeRouteLeave=o.beforeRouteUpdate=o.created}},Ma.version="3.6.5",Ma.isNavigationFailure=Da,Ma.NavigationFailureType=ga,Ma.START_LOCATION=vi,Vi&&window.Vue&&window.Vue.use(Ma);n(94);n(120);var Ga={NotFound:()=>n.e(77).then(n.bind(null,667)),Layout:()=>Promise.all([n.e(0),n.e(3),n.e(16)]).then(n.bind(null,666)),Homepage:()=>Promise.all([n.e(0),n.e(17)]).then(n.bind(null,668))},Va={"v-128c2a25":()=>n.e(54).then(n.bind(null,671)),"v-03334e4d":()=>n.e(55).then(n.bind(null,672)),"v-68028296":()=>n.e(78).then(n.bind(null,673)),"v-3b19ebb6":()=>n.e(79).then(n.bind(null,674)),"v-9b4e0776":()=>n.e(80).then(n.bind(null,675)),"v-c3e4e676":()=>n.e(81).then(n.bind(null,676)),"v-4c4d56f6":()=>n.e(82).then(n.bind(null,677)),"v-4d775b7a":()=>n.e(56).then(n.bind(null,678)),"v-61d8fd52":()=>n.e(83).then(n.bind(null,679)),"v-bc3ce3b6":()=>n.e(36).then(n.bind(null,680)),"v-64599034":()=>n.e(12).then(n.bind(null,681)),"v-9d2d2936":()=>n.e(57).then(n.bind(null,682)),"v-bac53276":()=>n.e(84).then(n.bind(null,683)),"v-0516060b":()=>n.e(85).then(n.bind(null,684)),"v-6762cd1e":()=>n.e(26).then(n.bind(null,685)),"v-a46e67b2":()=>n.e(48).then(n.bind(null,686)),"v-a39385f6":()=>n.e(86).then(n.bind(null,687)),"v-9909a134":()=>n.e(87).then(n.bind(null,688)),"v-3e89bcce":()=>n.e(58).then(n.bind(null,689)),"v-5c41b537":()=>n.e(88).then(n.bind(null,690)),"v-af48c69a":()=>n.e(89).then(n.bind(null,691)),"v-43a641c1":()=>n.e(59).then(n.bind(null,692)),"v-28bb6fe9":()=>n.e(20).then(n.bind(null,693)),"v-8e93b036":()=>n.e(60).then(n.bind(null,694)),"v-1ce314c7":()=>n.e(21).then(n.bind(null,695)),"v-11279236":()=>n.e(90).then(n.bind(null,696)),"v-ba716776":()=>n.e(23).then(n.bind(null,697)),"v-17b4e927":()=>n.e(42).then(n.bind(null,698)),"v-9ed60e36":()=>n.e(24).then(n.bind(null,699)),"v-784e0e36":()=>n.e(37).then(n.bind(null,700)),"v-f5865886":()=>n.e(18).then(n.bind(null,701)),"v-1aba0945":()=>n.e(91).then(n.bind(null,702)),"v-6423130d":()=>n.e(61).then(n.bind(null,703)),"v-4a79bbe7":()=>n.e(62).then(n.bind(null,704)),"v-7afc10f6":()=>n.e(92).then(n.bind(null,705)),"v-30d086c5":()=>n.e(93).then(n.bind(null,706)),"v-45023d5a":()=>n.e(94).then(n.bind(null,707)),"v-af8f8776":()=>n.e(95).then(n.bind(null,708)),"v-8a00b836":()=>n.e(96).then(n.bind(null,709)),"v-41065f05":()=>n.e(97).then(n.bind(null,710)),"v-d21f2f34":()=>n.e(63).then(n.bind(null,711)),"v-5762b925":()=>n.e(49).then(n.bind(null,712)),"v-180c16e5":()=>n.e(98).then(n.bind(null,713)),"v-39c48f76":()=>n.e(99).then(n.bind(null,714)),"v-762b62cf":()=>n.e(100).then(n.bind(null,715)),"v-49909ce5":()=>n.e(32).then(n.bind(null,716)),"v-3ec65b5a":()=>n.e(101).then(n.bind(null,717)),"v-dc719dd2":()=>n.e(102).then(n.bind(null,718)),"v-10e3317f":()=>n.e(103).then(n.bind(null,719)),"v-b64dbc36":()=>n.e(104).then(n.bind(null,720)),"v-f2be4ef6":()=>n.e(105).then(n.bind(null,721)),"v-3d044e45":()=>n.e(106).then(n.bind(null,722)),"v-ede35016":()=>n.e(107).then(n.bind(null,723)),"v-7daf4329":()=>n.e(108).then(n.bind(null,724)),"v-6f03bcc5":()=>n.e(50).then(n.bind(null,725)),"v-8ade6c04":()=>n.e(64).then(n.bind(null,726)),"v-19638485":()=>n.e(109).then(n.bind(null,727)),"v-06e5e8b6":()=>n.e(7).then(n.bind(null,728)),"v-3a2a5ff4":()=>n.e(110).then(n.bind(null,729)),"v-bcc9c0f6":()=>n.e(111).then(n.bind(null,730)),"v-52901cc5":()=>n.e(112).then(n.bind(null,731)),"v-aeaaf052":()=>n.e(33).then(n.bind(null,732)),"v-e159d7f6":()=>n.e(34).then(n.bind(null,733)),"v-2d316036":()=>n.e(113).then(n.bind(null,734)),"v-67ccefa5":()=>n.e(114).then(n.bind(null,735)),"v-3d266a05":()=>n.e(115).then(n.bind(null,736)),"v-bf626e76":()=>n.e(116).then(n.bind(null,737)),"v-92a19676":()=>n.e(117).then(n.bind(null,738)),"v-195b101b":()=>n.e(118).then(n.bind(null,739)),"v-b69e09ee":()=>n.e(119).then(n.bind(null,740)),"v-14b9fcf5":()=>n.e(120).then(n.bind(null,741)),"v-6dcde349":()=>n.e(11).then(n.bind(null,742)),"v-1e8449a5":()=>n.e(121).then(n.bind(null,743)),"v-5a7c8936":()=>n.e(122).then(n.bind(null,744)),"v-0fd6afca":()=>n.e(27).then(n.bind(null,745)),"v-02bea796":()=>n.e(43).then(n.bind(null,746)),"v-b4e335b6":()=>n.e(44).then(n.bind(null,747)),"v-dec9d2fe":()=>n.e(28).then(n.bind(null,748)),"v-42e075f7":()=>n.e(31).then(n.bind(null,749)),"v-78e9ef70":()=>n.e(123).then(n.bind(null,750)),"v-0763789a":()=>n.e(35).then(n.bind(null,751)),"v-1eb7e25b":()=>n.e(65).then(n.bind(null,752)),"v-0c2701b6":()=>n.e(124).then(n.bind(null,753)),"v-65060acd":()=>n.e(51).then(n.bind(null,754)),"v-7900ca36":()=>n.e(29).then(n.bind(null,755)),"v-51796845":()=>n.e(66).then(n.bind(null,756)),"v-2ad91fe5":()=>n.e(13).then(n.bind(null,757)),"v-3526ef36":()=>n.e(52).then(n.bind(null,758)),"v-9b2edb34":()=>n.e(67).then(n.bind(null,759)),"v-60c4a545":()=>n.e(125).then(n.bind(null,760)),"v-21ea7c46":()=>n.e(68).then(n.bind(null,761)),"v-7a7299c2":()=>n.e(126).then(n.bind(null,762)),"v-1a5789ad":()=>n.e(69).then(n.bind(null,763)),"v-6761eaa9":()=>n.e(70).then(n.bind(null,764)),"v-25de27bb":()=>n.e(127).then(n.bind(null,765)),"v-78fb4ca5":()=>n.e(128).then(n.bind(null,766)),"v-20a8c736":()=>n.e(129).then(n.bind(null,767)),"v-eee9bb82":()=>n.e(130).then(n.bind(null,768)),"v-6a07ad05":()=>n.e(71).then(n.bind(null,769)),"v-e3db5fd8":()=>n.e(131).then(n.bind(null,770)),"v-2352e414":()=>n.e(132).then(n.bind(null,771)),"v-88980e76":()=>n.e(38).then(n.bind(null,772)),"v-8d0f1fc6":()=>n.e(9).then(n.bind(null,773)),"v-15132f85":()=>n.e(30).then(n.bind(null,774)),"v-e98912f6":()=>n.e(39).then(n.bind(null,775)),"v-15dab665":()=>n.e(72).then(n.bind(null,776)),"v-49efd338":()=>n.e(73).then(n.bind(null,777)),"v-68f6ac6a":()=>n.e(40).then(n.bind(null,778)),"v-f5202af6":()=>n.e(74).then(n.bind(null,779)),"v-40e08a05":()=>n.e(134).then(n.bind(null,780)),"v-0597b005":()=>n.e(5).then(n.bind(null,781)),"v-21fce50b":()=>n.e(135).then(n.bind(null,782)),"v-7c2268b6":()=>n.e(136).then(n.bind(null,783)),"v-50ea01b4":()=>n.e(137).then(n.bind(null,784)),"v-937bc12e":()=>n.e(14).then(n.bind(null,785)),"v-9c5e78fe":()=>n.e(10).then(n.bind(null,786)),"v-784978e6":()=>n.e(138).then(n.bind(null,787)),"v-604d19c6":()=>n.e(139).then(n.bind(null,788)),"v-36032c85":()=>n.e(140).then(n.bind(null,789)),"v-31f01d3e":()=>n.e(141).then(n.bind(null,790)),"v-d4151eb6":()=>n.e(75).then(n.bind(null,791)),"v-63822f36":()=>n.e(142).then(n.bind(null,792)),"v-dae82c60":()=>n.e(76).then(n.bind(null,793)),"v-0e38183b":()=>n.e(4).then(n.bind(null,794)),"v-315abc86":()=>n.e(15).then(n.bind(null,795)),"v-5bcac676":()=>n.e(41).then(n.bind(null,796)),"v-13a93ebf":()=>n.e(22).then(n.bind(null,797)),"v-8c111c76":()=>n.e(143).then(n.bind(null,798)),"v-7d101341":()=>n.e(8).then(n.bind(null,799)),"v-53d8e985":()=>n.e(144).then(n.bind(null,800)),"v-faa5f0f6":()=>n.e(6).then(n.bind(null,801)),"v-a6ea6734":()=>n.e(53).then(n.bind(null,802)),"v-51df4a0d":()=>n.e(25).then(n.bind(null,803)),"v-1dfa3141":()=>n.e(19).then(n.bind(null,804)),"v-dde32bd4":()=>n.e(133).then(n.bind(null,805))};function Ua(e){const t=Object.create(null);return function(n){return t[n]||(t[n]=e(n))}}const Xa=/-(\w)/g,Ka=Ua(e=>e.replace(Xa,(e,t)=>t?t.toUpperCase():"")),Ja=/\B([A-Z])/g,Ya=Ua(e=>e.replace(Ja,"-$1").toLowerCase()),Za=Ua(e=>e.charAt(0).toUpperCase()+e.slice(1));function el(e,t){if(!t)return;if(e(t))return e(t);return t.includes("-")?e(Za(Ka(t))):e(Za(t))||e(Ya(t))}const tl=Object.assign({},Ga,Va),nl=e=>tl[e],rl=e=>Va[e],ol=e=>Ga[e],il=e=>Gn.component(e);function al(e){return el(rl,e)}function ll(e){return el(ol,e)}function sl(e){return el(nl,e)}function cl(e){return el(il,e)}function ul(...e){return Promise.all(e.filter(e=>e).map(async e=>{if(!cl(e)&&sl(e)){const t=await sl(e)();Gn.component(e,t.default)}}))}function pl(e,t){"undefined"!=typeof window&&window.__VUEPRESS__&&(window.__VUEPRESS__[e]=t)}var dl=n(87),hl=n.n(dl),vl=n(88),ml=n.n(vl),fl={created(){if(this.siteMeta=this.$site.headTags.filter(([e])=>"meta"===e).map(([e,t])=>t),this.$ssrContext){const t=this.getMergedMetaTags();this.$ssrContext.title=this.$title,this.$ssrContext.lang=this.$lang,this.$ssrContext.pageMeta=(e=t)?e.map(e=>{let t="{t+=` ${n}="${ml()(e[n])}"`}),t+">"}).join("\n "):"",this.$ssrContext.canonicalLink=yl(this.$canonicalUrl)}var e},mounted(){this.currentMetaTags=[...document.querySelectorAll("meta")],this.updateMeta(),this.updateCanonicalLink()},methods:{updateMeta(){document.title=this.$title,document.documentElement.lang=this.$lang;const e=this.getMergedMetaTags();this.currentMetaTags=bl(e,this.currentMetaTags)},getMergedMetaTags(){const e=this.$page.frontmatter.meta||[];return hl()([{name:"description",content:this.$description}],e,this.siteMeta,wl)},updateCanonicalLink(){gl(),this.$canonicalUrl&&document.head.insertAdjacentHTML("beforeend",yl(this.$canonicalUrl))}},watch:{$page(){this.updateMeta(),this.updateCanonicalLink()}},beforeDestroy(){bl(null,this.currentMetaTags),gl()}};function gl(){const e=document.querySelector("link[rel='canonical']");e&&e.remove()}function yl(e=""){return e?``:""}function bl(e,t){if(t&&[...t].filter(e=>e.parentNode===document.head).forEach(e=>document.head.removeChild(e)),e)return e.map(e=>{const t=document.createElement("meta");return Object.keys(e).forEach(n=>{t.setAttribute(n,e[n])}),document.head.appendChild(t),t})}function wl(e){for(const t of["name","property","itemprop"])if(e.hasOwnProperty(t))return e[t]+t;return JSON.stringify(e)}var Pl=n(89),Cl={mounted(){window.addEventListener("scroll",this.onScroll)},methods:{onScroll:n.n(Pl)()((function(){this.setActiveHash()}),300),setActiveHash(){const e=[].slice.call(document.querySelectorAll(".sidebar-link")),t=[].slice.call(document.querySelectorAll(".header-anchor")).filter(t=>e.some(e=>e.hash===t.hash)),n=Math.max(window.pageYOffset,document.documentElement.scrollTop,document.body.scrollTop),r=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight),o=window.innerHeight+n;for(let e=0;e=i.parentElement.offsetTop+10&&(!a||n{this.$nextTick(()=>{this.$vuepress.$set("disableScrollBehavior",!1)})})}}}},beforeDestroy(){window.removeEventListener("scroll",this.onScroll)}},Dl=n(21),kl=n.n(Dl),Sl={mounted(){kl.a.configure({showSpinner:!1}),this.$router.beforeEach((e,t,n)=>{e.path===t.path||Gn.component(e.name)||kl.a.start(),n()}),this.$router.afterEach(()=>{kl.a.done(),this.isSidebarOpen=!1})}},xl={props:{parent:Object,code:String,options:{align:String,color:String,backgroundTransition:Boolean,backgroundColor:String,successText:String,staticIcon:Boolean}},data:()=>({success:!1,originalBackground:null,originalTransition:null}),computed:{alignStyle(){let e={};return e[this.options.align]="7.5px",e},iconClass(){return this.options.staticIcon?"":"hover"}},mounted(){this.originalTransition=this.parent.style.transition,this.originalBackground=this.parent.style.background},beforeDestroy(){this.parent.style.transition=this.originalTransition,this.parent.style.background=this.originalBackground},methods:{hexToRgb(e){let t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null},copyToClipboard(e){if(navigator.clipboard)navigator.clipboard.writeText(this.code).then(()=>{this.setSuccessTransitions()},()=>{});else{let e=document.createElement("textarea");document.body.appendChild(e),e.value=this.code,e.select(),document.execCommand("Copy"),e.remove(),this.setSuccessTransitions()}},setSuccessTransitions(){if(clearTimeout(this.successTimeout),this.options.backgroundTransition){this.parent.style.transition="background 350ms";let e=this.hexToRgb(this.options.backgroundColor);this.parent.style.background=`rgba(${e.r}, ${e.g}, ${e.b}, 0.1)`}this.success=!0,this.successTimeout=setTimeout(()=>{this.options.backgroundTransition&&(this.parent.style.background=this.originalBackground,this.parent.style.transition=this.originalTransition),this.success=!1},500)}}},Tl=(n(225),n(9)),Al=Object(Tl.a)(xl,(function(){var e=this,t=e._self._c;return t("div",{staticClass:"code-copy"},[t("svg",{class:e.iconClass,style:e.alignStyle,attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24"},on:{click:e.copyToClipboard}},[t("path",{attrs:{fill:"none",d:"M0 0h24v24H0z"}}),e._v(" "),t("path",{attrs:{fill:e.options.color,d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4l6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z"}})]),e._v(" "),t("span",{class:e.success?"success":"",style:e.alignStyle},[e._v("\n "+e._s(e.options.successText)+"\n ")])])}),[],!1,null,"49140617",null).exports,_l=(n(226),{updated(){this.update()},methods:{update(){setTimeout(()=>{document.querySelectorAll('div[class*="language-"] pre').forEach(e=>{if(e.classList.contains("code-copy-added"))return;let t=new(Gn.extend(Al));t.options={align:"bottom",color:"#8F979E",backgroundTransition:!1,backgroundColor:"#0075b8",successText:"Copied!",staticIcon:!0},t.code=e.innerText,t.parent=e,t.$mount(),e.classList.add("code-copy-added"),e.appendChild(t.$el)})},100)}}}),El=(n(227),Object.assign||function(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{},r=window.Promise||function(e){function t(){}e(t,t)},o=function(e){var t=e.target;t!==S?-1!==b.indexOf(t)&&m({target:t}):v()},i=function(){if(!P&&k.original){var e=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0;Math.abs(C-e)>D.scrollOffset&&setTimeout(v,150)}},a=function(e){var t=e.key||e.keyCode;"Escape"!==t&&"Esc"!==t&&27!==t||v()},l=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e;if(e.background&&(S.style.background=e.background),e.container&&e.container instanceof Object&&(t.container=El({},D.container,e.container)),e.template){var n=Bl(e.template)?e.template:document.querySelector(e.template);t.template=n}return D=El({},D,t),b.forEach((function(e){e.dispatchEvent(Hl("medium-zoom:update",{detail:{zoom:x}}))})),x},s=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(El({},D,t))},c=function(){for(var e=arguments.length,t=Array(e),n=0;n0?t.reduce((function(e,t){return[].concat(e,Nl(t))}),[]):b;return r.forEach((function(e){e.classList.remove("medium-zoom-image"),e.dispatchEvent(Hl("medium-zoom:detach",{detail:{zoom:x}}))})),b=b.filter((function(e){return-1===r.indexOf(e)})),x},p=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.addEventListener("medium-zoom:"+e,t,n)})),w.push({type:"medium-zoom:"+e,listener:t,options:n}),x},d=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return b.forEach((function(r){r.removeEventListener("medium-zoom:"+e,t,n)})),w=w.filter((function(n){return!(n.type==="medium-zoom:"+e&&n.listener.toString()===t.toString())})),x},h=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target,n=function(){var e={width:document.documentElement.clientWidth,height:document.documentElement.clientHeight,left:0,top:0,right:0,bottom:0},t=void 0,n=void 0;if(D.container)if(D.container instanceof Object)t=(e=El({},e,D.container)).width-e.left-e.right-2*D.margin,n=e.height-e.top-e.bottom-2*D.margin;else{var r=(Bl(D.container)?D.container:document.querySelector(D.container)).getBoundingClientRect(),o=r.width,i=r.height,a=r.left,l=r.top;e=El({},e,{width:o,height:i,left:a,top:l})}t=t||e.width-2*D.margin,n=n||e.height-2*D.margin;var s=k.zoomedHd||k.original,c=Il(s)?t:s.naturalWidth||t,u=Il(s)?n:s.naturalHeight||n,p=s.getBoundingClientRect(),d=p.top,h=p.left,v=p.width,m=p.height,f=Math.min(c,t)/v,g=Math.min(u,n)/m,y=Math.min(f,g),b="scale("+y+") translate3d("+((t-v)/2-h+D.margin+e.left)/y+"px, "+((n-m)/2-d+D.margin+e.top)/y+"px, 0)";k.zoomed.style.transform=b,k.zoomedHd&&(k.zoomedHd.style.transform=b)};return new r((function(e){if(t&&-1===b.indexOf(t))e(x);else{if(k.zoomed)e(x);else{if(t)k.original=t;else{if(!(b.length>0))return void e(x);var r=b;k.original=r[0]}if(k.original.dispatchEvent(Hl("medium-zoom:open",{detail:{zoom:x}})),C=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0,P=!0,k.zoomed=Rl(k.original),document.body.appendChild(S),D.template){var o=Bl(D.template)?D.template:document.querySelector(D.template);k.template=document.createElement("div"),k.template.appendChild(o.content.cloneNode(!0)),document.body.appendChild(k.template)}if(document.body.appendChild(k.zoomed),window.requestAnimationFrame((function(){document.body.classList.add("medium-zoom--opened")})),k.original.classList.add("medium-zoom-image--hidden"),k.zoomed.classList.add("medium-zoom-image--opened"),k.zoomed.addEventListener("click",v),k.zoomed.addEventListener("transitionend",(function t(){P=!1,k.zoomed.removeEventListener("transitionend",t),k.original.dispatchEvent(Hl("medium-zoom:opened",{detail:{zoom:x}})),e(x)})),k.original.getAttribute("data-zoom-src")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("srcset"),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.src=k.zoomed.getAttribute("data-zoom-src"),k.zoomedHd.onerror=function(){clearInterval(i),console.warn("Unable to reach the zoom image target "+k.zoomedHd.src),k.zoomedHd=null,n()};var i=setInterval((function(){k.zoomedHd.complete&&(clearInterval(i),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",v),document.body.appendChild(k.zoomedHd),n())}),10)}else if(k.original.hasAttribute("srcset")){k.zoomedHd=k.zoomed.cloneNode(),k.zoomedHd.removeAttribute("sizes"),k.zoomedHd.removeAttribute("loading");var a=k.zoomedHd.addEventListener("load",(function(){k.zoomedHd.removeEventListener("load",a),k.zoomedHd.classList.add("medium-zoom-image--opened"),k.zoomedHd.addEventListener("click",v),document.body.appendChild(k.zoomedHd),n()}))}else n()}}}))},v=function(){return new r((function(e){if(!P&&k.original){P=!0,document.body.classList.remove("medium-zoom--opened"),k.zoomed.style.transform="",k.zoomedHd&&(k.zoomedHd.style.transform=""),k.template&&(k.template.style.transition="opacity 150ms",k.template.style.opacity=0),k.original.dispatchEvent(Hl("medium-zoom:close",{detail:{zoom:x}})),k.zoomed.addEventListener("transitionend",(function t(){k.original.classList.remove("medium-zoom-image--hidden"),document.body.removeChild(k.zoomed),k.zoomedHd&&document.body.removeChild(k.zoomedHd),document.body.removeChild(S),k.zoomed.classList.remove("medium-zoom-image--opened"),k.template&&document.body.removeChild(k.template),P=!1,k.zoomed.removeEventListener("transitionend",t),k.original.dispatchEvent(Hl("medium-zoom:closed",{detail:{zoom:x}})),k.original=null,k.zoomed=null,k.zoomedHd=null,k.template=null,e(x)}))}else e(x)}))},m=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.target;return k.original?v():h({target:t})},f=function(){return D},g=function(){return b},y=function(){return k.original},b=[],w=[],P=!1,C=0,D=n,k={original:null,zoomed:null,zoomedHd:null,template:null};"[object Object]"===Object.prototype.toString.call(t)?D=t:(t||"string"==typeof t)&&c(t),D=El({margin:0,background:"#fff",scrollOffset:40,container:null,template:null},D);var S=Ol(D.background);document.addEventListener("click",o),document.addEventListener("keyup",a),document.addEventListener("scroll",i),window.addEventListener("resize",v);var x={open:h,close:v,toggle:m,update:l,clone:s,attach:c,detach:u,on:p,off:d,getOptions:f,getImages:g,getZoomedImage:y};return x},jl=[fl,Cl,Sl,_l,{data:()=>({zoom:null}),mounted(){this.updateZoom()},updated(){this.updateZoom()},methods:{updateZoom(){setTimeout(()=>{this.zoom&&this.zoom.detach(),this.zoom=Wl(".theme-default-content :not(a) > img",void 0)},1e3)}}}],Fl={name:"GlobalLayout",computed:{layout(){const e=this.getLayout();return pl("layout",e),Gn.component(e)}},methods:{getLayout(){if(this.$page.path){const e=this.$page.frontmatter.layout;return e&&(this.$vuepress.getLayoutAsyncComponent(e)||this.$vuepress.getVueComponent(e))?e:"Layout"}return"NotFound"}}},$l=Object(Tl.a)(Fl,(function(){return(0,this._self._c)(this.layout,{tag:"component"})}),[],!1,null,null,null).exports;!function(e,t,n){switch(t){case"components":e[t]||(e[t]={}),Object.assign(e[t],n);break;case"mixins":e[t]||(e[t]=[]),e[t].push(...n);break;default:throw new Error("Unknown option name.")}}($l,"mixins",jl);const Ml=[{name:"v-128c2a25",path:"/AdvancedForms/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-128c2a25").then(n)}},{path:"/AdvancedForms/index.html",redirect:"/AdvancedForms/"},{path:"/AdvancedForms.html",redirect:"/AdvancedForms/"},{name:"v-03334e4d",path:"/Apps/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-03334e4d").then(n)}},{path:"/Apps/index.html",redirect:"/Apps/"},{path:"/Apps.html",redirect:"/Apps/"},{name:"v-68028296",path:"/BTCPayServer/LocalDevSetup/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-68028296").then(n)}},{path:"/BTCPayServer/LocalDevSetup/index.html",redirect:"/BTCPayServer/LocalDevSetup/"},{path:"/BTCPayServer/LocalDevSetup.html",redirect:"/BTCPayServer/LocalDevSetup/"},{name:"v-3b19ebb6",path:"/BTCPayServer/Security/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3b19ebb6").then(n)}},{path:"/BTCPayServer/Security/index.html",redirect:"/BTCPayServer/Security/"},{path:"/BTCPayServer/Security.html",redirect:"/BTCPayServer/Security/"},{name:"v-9b4e0776",path:"/BTCPayServer/db-migration/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9b4e0776").then(n)}},{path:"/BTCPayServer/db-migration/index.html",redirect:"/BTCPayServer/db-migration/"},{path:"/BTCPayServer/db-migration.html",redirect:"/BTCPayServer/db-migration/"},{name:"v-c3e4e676",path:"/BTCPayServer/greenfield-authorization/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-c3e4e676").then(n)}},{path:"/BTCPayServer/greenfield-authorization/index.html",redirect:"/BTCPayServer/greenfield-authorization/"},{path:"/BTCPayServer/greenfield-authorization.html",redirect:"/BTCPayServer/greenfield-authorization/"},{name:"v-4c4d56f6",path:"/BTCPayServer/greenfield-development/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-4c4d56f6").then(n)}},{path:"/BTCPayServer/greenfield-development/index.html",redirect:"/BTCPayServer/greenfield-development/"},{path:"/BTCPayServer/greenfield-development.html",redirect:"/BTCPayServer/greenfield-development/"},{name:"v-4d775b7a",path:"/BTCPayVsOthers/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-4d775b7a").then(n)}},{path:"/BTCPayVsOthers/index.html",redirect:"/BTCPayVsOthers/"},{path:"/BTCPayVsOthers.html",redirect:"/BTCPayVsOthers/"},{name:"v-61d8fd52",path:"/ColdCardWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-61d8fd52").then(n)}},{path:"/ColdCardWallet/index.html",redirect:"/ColdCardWallet/"},{path:"/ColdCardWallet.html",redirect:"/ColdCardWallet/"},{name:"v-bc3ce3b6",path:"/Community/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-bc3ce3b6").then(n)}},{path:"/Community/index.html",redirect:"/Community/"},{path:"/Community.html",redirect:"/Community/"},{name:"v-64599034",path:"/Configurator/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-64599034").then(n)}},{path:"/Configurator/index.html",redirect:"/Configurator/"},{name:"v-9d2d2936",path:"/ConnectWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9d2d2936").then(n)}},{path:"/ConnectWallet/index.html",redirect:"/ConnectWallet/"},{path:"/ConnectWallet.html",redirect:"/ConnectWallet/"},{name:"v-bac53276",path:"/Contribute/Design/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-bac53276").then(n)}},{path:"/Contribute/Design/index.html",redirect:"/Contribute/Design/"},{path:"/Contribute/Design.html",redirect:"/Contribute/Design/"},{name:"v-0516060b",path:"/Contribute/Dev/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0516060b").then(n)}},{path:"/Contribute/Dev/index.html",redirect:"/Contribute/Dev/"},{path:"/Contribute/Dev.html",redirect:"/Contribute/Dev/"},{name:"v-6762cd1e",path:"/Contribute/DevCode/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6762cd1e").then(n)}},{path:"/Contribute/DevCode/index.html",redirect:"/Contribute/DevCode/"},{path:"/Contribute/DevCode.html",redirect:"/Contribute/DevCode/"},{name:"v-a46e67b2",path:"/Contribute/DevTest/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-a46e67b2").then(n)}},{path:"/Contribute/DevTest/index.html",redirect:"/Contribute/DevTest/"},{path:"/Contribute/DevTest.html",redirect:"/Contribute/DevTest/"},{name:"v-a39385f6",path:"/Contribute/Misc/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-a39385f6").then(n)}},{path:"/Contribute/Misc/index.html",redirect:"/Contribute/Misc/"},{path:"/Contribute/Misc.html",redirect:"/Contribute/Misc/"},{name:"v-9909a134",path:"/Contribute/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9909a134").then(n)}},{path:"/Contribute/index.html",redirect:"/Contribute/"},{name:"v-3e89bcce",path:"/Contribute/Translate/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3e89bcce").then(n)}},{path:"/Contribute/Translate/index.html",redirect:"/Contribute/Translate/"},{path:"/Contribute/Translate.html",redirect:"/Contribute/Translate/"},{name:"v-5c41b537",path:"/Contribute/Write/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-5c41b537").then(n)}},{path:"/Contribute/Write/index.html",redirect:"/Contribute/Write/"},{path:"/Contribute/Write.html",redirect:"/Contribute/Write/"},{name:"v-af48c69a",path:"/Contribute/WriteBlog/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-af48c69a").then(n)}},{path:"/Contribute/WriteBlog/index.html",redirect:"/Contribute/WriteBlog/"},{path:"/Contribute/WriteBlog.html",redirect:"/Contribute/WriteBlog/"},{name:"v-43a641c1",path:"/Contribute/WriteDocs/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-43a641c1").then(n)}},{path:"/Contribute/WriteDocs/index.html",redirect:"/Contribute/WriteDocs/"},{path:"/Contribute/WriteDocs.html",redirect:"/Contribute/WriteDocs/"},{name:"v-28bb6fe9",path:"/Contribute/WriteSoftware/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-28bb6fe9").then(n)}},{path:"/Contribute/WriteSoftware/index.html",redirect:"/Contribute/WriteSoftware/"},{path:"/Contribute/WriteSoftware.html",redirect:"/Contribute/WriteSoftware/"},{name:"v-8e93b036",path:"/CreateStore/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-8e93b036").then(n)}},{path:"/CreateStore/index.html",redirect:"/CreateStore/"},{path:"/CreateStore.html",redirect:"/CreateStore/"},{name:"v-1ce314c7",path:"/CreateWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1ce314c7").then(n)}},{path:"/CreateWallet/index.html",redirect:"/CreateWallet/"},{path:"/CreateWallet.html",redirect:"/CreateWallet/"},{name:"v-11279236",path:"/CustomIntegration/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-11279236").then(n)}},{path:"/CustomIntegration/index.html",redirect:"/CustomIntegration/"},{path:"/CustomIntegration.html",redirect:"/CustomIntegration/"},{name:"v-ba716776",path:"/Dashboard/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-ba716776").then(n)}},{path:"/Dashboard/index.html",redirect:"/Dashboard/"},{path:"/Dashboard.html",redirect:"/Dashboard/"},{name:"v-17b4e927",path:"/Deployment/Azure/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-17b4e927").then(n)}},{path:"/Deployment/Azure/index.html",redirect:"/Deployment/Azure/"},{path:"/Deployment/Azure.html",redirect:"/Deployment/Azure/"},{name:"v-9ed60e36",path:"/Deployment/AzurePennyPinching/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9ed60e36").then(n)}},{path:"/Deployment/AzurePennyPinching/index.html",redirect:"/Deployment/AzurePennyPinching/"},{path:"/Deployment/AzurePennyPinching.html",redirect:"/Deployment/AzurePennyPinching/"},{name:"v-784e0e36",path:"/Deployment/Clovyr/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-784e0e36").then(n)}},{path:"/Deployment/Clovyr/index.html",redirect:"/Deployment/Clovyr/"},{path:"/Deployment/Clovyr.html",redirect:"/Deployment/Clovyr/"},{name:"v-f5865886",path:"/Deployment/DreamlabNetwork/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-f5865886").then(n)}},{path:"/Deployment/DreamlabNetwork/index.html",redirect:"/Deployment/DreamlabNetwork/"},{path:"/Deployment/DreamlabNetwork.html",redirect:"/Deployment/DreamlabNetwork/"},{name:"v-1aba0945",path:"/Deployment/DynamicDNS/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1aba0945").then(n)}},{path:"/Deployment/DynamicDNS/index.html",redirect:"/Deployment/DynamicDNS/"},{path:"/Deployment/DynamicDNS.html",redirect:"/Deployment/DynamicDNS/"},{name:"v-6423130d",path:"/Deployment/GoogleCloud/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6423130d").then(n)}},{path:"/Deployment/GoogleCloud/index.html",redirect:"/Deployment/GoogleCloud/"},{path:"/Deployment/GoogleCloud.html",redirect:"/Deployment/GoogleCloud/"},{name:"v-4a79bbe7",path:"/Deployment/Hack0/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-4a79bbe7").then(n)}},{path:"/Deployment/Hack0/index.html",redirect:"/Deployment/Hack0/"},{path:"/Deployment/Hack0.html",redirect:"/Deployment/Hack0/"},{name:"v-7afc10f6",path:"/Deployment/Hardware/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7afc10f6").then(n)}},{path:"/Deployment/Hardware/index.html",redirect:"/Deployment/Hardware/"},{path:"/Deployment/Hardware.html",redirect:"/Deployment/Hardware/"},{name:"v-30d086c5",path:"/Deployment/HardwareAsAService/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-30d086c5").then(n)}},{path:"/Deployment/HardwareAsAService/index.html",redirect:"/Deployment/HardwareAsAService/"},{path:"/Deployment/HardwareAsAService.html",redirect:"/Deployment/HardwareAsAService/"},{name:"v-45023d5a",path:"/Deployment/LightningInABox/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-45023d5a").then(n)}},{path:"/Deployment/LightningInABox/index.html",redirect:"/Deployment/LightningInABox/"},{path:"/Deployment/LightningInABox.html",redirect:"/Deployment/LightningInABox/"},{name:"v-af8f8776",path:"/Deployment/LunaNode/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-af8f8776").then(n)}},{path:"/Deployment/LunaNode/index.html",redirect:"/Deployment/LunaNode/"},{path:"/Deployment/LunaNode.html",redirect:"/Deployment/LunaNode/"},{name:"v-8a00b836",path:"/Deployment/ManualDeployment/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-8a00b836").then(n)}},{path:"/Deployment/ManualDeployment/index.html",redirect:"/Deployment/ManualDeployment/"},{path:"/Deployment/ManualDeployment.html",redirect:"/Deployment/ManualDeployment/"},{name:"v-41065f05",path:"/Deployment/ManualDeploymentExtended/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-41065f05").then(n)}},{path:"/Deployment/ManualDeploymentExtended/index.html",redirect:"/Deployment/ManualDeploymentExtended/"},{path:"/Deployment/ManualDeploymentExtended.html",redirect:"/Deployment/ManualDeploymentExtended/"},{name:"v-d21f2f34",path:"/Deployment/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-d21f2f34").then(n)}},{path:"/Deployment/index.html",redirect:"/Deployment/"},{name:"v-5762b925",path:"/Deployment/RaspberryPi4/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-5762b925").then(n)}},{path:"/Deployment/RaspberryPi4/index.html",redirect:"/Deployment/RaspberryPi4/"},{path:"/Deployment/RaspberryPi4.html",redirect:"/Deployment/RaspberryPi4/"},{name:"v-180c16e5",path:"/Deployment/ReverseProxyToTor/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-180c16e5").then(n)}},{path:"/Deployment/ReverseProxyToTor/index.html",redirect:"/Deployment/ReverseProxyToTor/"},{path:"/Deployment/ReverseProxyToTor.html",redirect:"/Deployment/ReverseProxyToTor/"},{name:"v-39c48f76",path:"/Deployment/ReverseSSHtunnel/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-39c48f76").then(n)}},{path:"/Deployment/ReverseSSHtunnel/index.html",redirect:"/Deployment/ReverseSSHtunnel/"},{path:"/Deployment/ReverseSSHtunnel.html",redirect:"/Deployment/ReverseSSHtunnel/"},{name:"v-762b62cf",path:"/Deployment/ThirdPartyHosting/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-762b62cf").then(n)}},{path:"/Deployment/ThirdPartyHosting/index.html",redirect:"/Deployment/ThirdPartyHosting/"},{path:"/Deployment/ThirdPartyHosting.html",redirect:"/Deployment/ThirdPartyHosting/"},{name:"v-49909ce5",path:"/Deployment/voltagecloud/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-49909ce5").then(n)}},{path:"/Deployment/voltagecloud/index.html",redirect:"/Deployment/voltagecloud/"},{path:"/Deployment/voltagecloud.html",redirect:"/Deployment/voltagecloud/"},{name:"v-3ec65b5a",path:"/Deployment/webdeployment/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3ec65b5a").then(n)}},{path:"/Deployment/webdeployment/index.html",redirect:"/Deployment/webdeployment/"},{path:"/Deployment/webdeployment.html",redirect:"/Deployment/webdeployment/"},{name:"v-dc719dd2",path:"/Development/Altcoins/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-dc719dd2").then(n)}},{path:"/Development/Altcoins/index.html",redirect:"/Development/Altcoins/"},{path:"/Development/Altcoins.html",redirect:"/Development/Altcoins/"},{name:"v-10e3317f",path:"/Development/GreenFieldExample-NodeJS/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-10e3317f").then(n)}},{path:"/Development/GreenFieldExample-NodeJS/index.html",redirect:"/Development/GreenFieldExample-NodeJS/"},{path:"/Development/GreenFieldExample-NodeJS.html",redirect:"/Development/GreenFieldExample-NodeJS/"},{name:"v-b64dbc36",path:"/Development/GreenFieldExample/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-b64dbc36").then(n)}},{path:"/Development/GreenFieldExample/index.html",redirect:"/Development/GreenFieldExample/"},{path:"/Development/GreenFieldExample.html",redirect:"/Development/GreenFieldExample/"},{name:"v-f2be4ef6",path:"/Development/GreenfieldExample-PHP/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-f2be4ef6").then(n)}},{path:"/Development/GreenfieldExample-PHP/index.html",redirect:"/Development/GreenfieldExample-PHP/"},{path:"/Development/GreenfieldExample-PHP.html",redirect:"/Development/GreenfieldExample-PHP/"},{name:"v-3d044e45",path:"/Development/InvoiceMetadata/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3d044e45").then(n)}},{path:"/Development/InvoiceMetadata/index.html",redirect:"/Development/InvoiceMetadata/"},{path:"/Development/InvoiceMetadata.html",redirect:"/Development/InvoiceMetadata/"},{name:"v-ede35016",path:"/Development/LocalDev/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-ede35016").then(n)}},{path:"/Development/LocalDev/index.html",redirect:"/Development/LocalDev/"},{path:"/Development/LocalDev.html",redirect:"/Development/LocalDev/"},{name:"v-7daf4329",path:"/Development/LocalDevelopment/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7daf4329").then(n)}},{path:"/Development/LocalDevelopment/index.html",redirect:"/Development/LocalDevelopment/"},{path:"/Development/LocalDevelopment.html",redirect:"/Development/LocalDevelopment/"},{name:"v-6f03bcc5",path:"/Development/Plugins/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6f03bcc5").then(n)}},{path:"/Development/Plugins/index.html",redirect:"/Development/Plugins/"},{path:"/Development/Plugins.html",redirect:"/Development/Plugins/"},{name:"v-8ade6c04",path:"/Development/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-8ade6c04").then(n)}},{path:"/Development/index.html",redirect:"/Development/"},{name:"v-19638485",path:"/Development/TestnetDemo/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-19638485").then(n)}},{path:"/Development/TestnetDemo/index.html",redirect:"/Development/TestnetDemo/"},{path:"/Development/TestnetDemo.html",redirect:"/Development/TestnetDemo/"},{name:"v-06e5e8b6",path:"/Development/Theme/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-06e5e8b6").then(n)}},{path:"/Development/Theme/index.html",redirect:"/Development/Theme/"},{path:"/Development/Theme.html",redirect:"/Development/Theme/"},{name:"v-3a2a5ff4",path:"/Docker/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3a2a5ff4").then(n)}},{path:"/Docker/index.html",redirect:"/Docker/"},{name:"v-bcc9c0f6",path:"/Docker/backup-restore/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-bcc9c0f6").then(n)}},{path:"/Docker/backup-restore/index.html",redirect:"/Docker/backup-restore/"},{path:"/Docker/backup-restore.html",redirect:"/Docker/backup-restore/"},{name:"v-52901cc5",path:"/Docker/chatwoot/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-52901cc5").then(n)}},{path:"/Docker/chatwoot/index.html",redirect:"/Docker/chatwoot/"},{path:"/Docker/chatwoot.html",redirect:"/Docker/chatwoot/"},{name:"v-aeaaf052",path:"/Docker/cloudflare-tunnel/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-aeaaf052").then(n)}},{path:"/Docker/cloudflare-tunnel/index.html",redirect:"/Docker/cloudflare-tunnel/"},{path:"/Docker/cloudflare-tunnel.html",redirect:"/Docker/cloudflare-tunnel/"},{name:"v-e159d7f6",path:"/Docker/fastsync/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-e159d7f6").then(n)}},{path:"/Docker/fastsync/index.html",redirect:"/Docker/fastsync/"},{path:"/Docker/fastsync.html",redirect:"/Docker/fastsync/"},{name:"v-2d316036",path:"/Docker/fireflyiii/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-2d316036").then(n)}},{path:"/Docker/fireflyiii/index.html",redirect:"/Docker/fireflyiii/"},{path:"/Docker/fireflyiii.html",redirect:"/Docker/fireflyiii/"},{name:"v-67ccefa5",path:"/Docker/joinmarket/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-67ccefa5").then(n)}},{path:"/Docker/joinmarket/index.html",redirect:"/Docker/joinmarket/"},{path:"/Docker/joinmarket.html",redirect:"/Docker/joinmarket/"},{name:"v-3d266a05",path:"/Docker/lightning-terminal/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3d266a05").then(n)}},{path:"/Docker/lightning-terminal/index.html",redirect:"/Docker/lightning-terminal/"},{path:"/Docker/lightning-terminal.html",redirect:"/Docker/lightning-terminal/"},{name:"v-bf626e76",path:"/Docker/ndlc/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-bf626e76").then(n)}},{path:"/Docker/ndlc/index.html",redirect:"/Docker/ndlc/"},{path:"/Docker/ndlc.html",redirect:"/Docker/ndlc/"},{name:"v-92a19676",path:"/Docker/pihole/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-92a19676").then(n)}},{path:"/Docker/pihole/index.html",redirect:"/Docker/pihole/"},{path:"/Docker/pihole.html",redirect:"/Docker/pihole/"},{name:"v-195b101b",path:"/Docker/tallycoin-connect/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-195b101b").then(n)}},{path:"/Docker/tallycoin-connect/index.html",redirect:"/Docker/tallycoin-connect/"},{path:"/Docker/tallycoin-connect.html",redirect:"/Docker/tallycoin-connect/"},{name:"v-b69e09ee",path:"/Drupal/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-b69e09ee").then(n)}},{path:"/Drupal/index.html",redirect:"/Drupal/"},{path:"/Drupal.html",redirect:"/Drupal/"},{name:"v-14b9fcf5",path:"/ElectrumPersonalServer/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-14b9fcf5").then(n)}},{path:"/ElectrumPersonalServer/index.html",redirect:"/ElectrumPersonalServer/"},{path:"/ElectrumPersonalServer.html",redirect:"/ElectrumPersonalServer/"},{name:"v-6dcde349",path:"/ElectrumWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6dcde349").then(n)}},{path:"/ElectrumWallet/index.html",redirect:"/ElectrumWallet/"},{path:"/ElectrumWallet.html",redirect:"/ElectrumWallet/"},{name:"v-1e8449a5",path:"/ElectrumX/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1e8449a5").then(n)}},{path:"/ElectrumX/index.html",redirect:"/ElectrumX/"},{path:"/ElectrumX.html",redirect:"/ElectrumX/"},{name:"v-5a7c8936",path:"/FAQ/Altcoin/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-5a7c8936").then(n)}},{path:"/FAQ/Altcoin/index.html",redirect:"/FAQ/Altcoin/"},{path:"/FAQ/Altcoin.html",redirect:"/FAQ/Altcoin/"},{name:"v-0fd6afca",path:"/FAQ/Apps/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0fd6afca").then(n)}},{path:"/FAQ/Apps/index.html",redirect:"/FAQ/Apps/"},{path:"/FAQ/Apps.html",redirect:"/FAQ/Apps/"},{name:"v-02bea796",path:"/FAQ/Deployment/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-02bea796").then(n)}},{path:"/FAQ/Deployment/index.html",redirect:"/FAQ/Deployment/"},{path:"/FAQ/Deployment.html",redirect:"/FAQ/Deployment/"},{name:"v-b4e335b6",path:"/FAQ/General/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-b4e335b6").then(n)}},{path:"/FAQ/General/index.html",redirect:"/FAQ/General/"},{path:"/FAQ/General.html",redirect:"/FAQ/General/"},{name:"v-dec9d2fe",path:"/FAQ/Integrations/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-dec9d2fe").then(n)}},{path:"/FAQ/Integrations/index.html",redirect:"/FAQ/Integrations/"},{path:"/FAQ/Integrations.html",redirect:"/FAQ/Integrations/"},{name:"v-42e075f7",path:"/FAQ/LightningNetwork/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-42e075f7").then(n)}},{path:"/FAQ/LightningNetwork/index.html",redirect:"/FAQ/LightningNetwork/"},{path:"/FAQ/LightningNetwork.html",redirect:"/FAQ/LightningNetwork/"},{name:"v-78e9ef70",path:"/FAQ/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-78e9ef70").then(n)}},{path:"/FAQ/index.html",redirect:"/FAQ/"},{name:"v-0763789a",path:"/FAQ/ServerSettings/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0763789a").then(n)}},{path:"/FAQ/ServerSettings/index.html",redirect:"/FAQ/ServerSettings/"},{path:"/FAQ/ServerSettings.html",redirect:"/FAQ/ServerSettings/"},{name:"v-1eb7e25b",path:"/FAQ/Stores/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1eb7e25b").then(n)}},{path:"/FAQ/Stores/index.html",redirect:"/FAQ/Stores/"},{path:"/FAQ/Stores.html",redirect:"/FAQ/Stores/"},{name:"v-0c2701b6",path:"/FAQ/Synchronization/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0c2701b6").then(n)}},{path:"/FAQ/Synchronization/index.html",redirect:"/FAQ/Synchronization/"},{path:"/FAQ/Synchronization.html",redirect:"/FAQ/Synchronization/"},{name:"v-65060acd",path:"/FAQ/Wallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-65060acd").then(n)}},{path:"/FAQ/Wallet/index.html",redirect:"/FAQ/Wallet/"},{path:"/FAQ/Wallet.html",redirect:"/FAQ/Wallet/"},{name:"v-7900ca36",path:"/Forms/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7900ca36").then(n)}},{path:"/Forms/index.html",redirect:"/Forms/"},{path:"/Forms.html",redirect:"/Forms/"},{name:"v-51796845",path:"/Guide/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-51796845").then(n)}},{path:"/Guide/index.html",redirect:"/Guide/"},{path:"/Guide.html",redirect:"/Guide/"},{name:"v-2ad91fe5",path:"/HardwareWalletIntegration/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-2ad91fe5").then(n)}},{path:"/HardwareWalletIntegration/index.html",redirect:"/HardwareWalletIntegration/"},{path:"/HardwareWalletIntegration.html",redirect:"/HardwareWalletIntegration/"},{name:"v-3526ef36",path:"/Invoices/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-3526ef36").then(n)}},{path:"/Invoices/index.html",redirect:"/Invoices/"},{path:"/Invoices.html",redirect:"/Invoices/"},{name:"v-9b2edb34",path:"/LNDhubAPI/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9b2edb34").then(n)}},{path:"/LNDhubAPI/index.html",redirect:"/LNDhubAPI/"},{name:"v-60c4a545",path:"/LNbank/LNDhub/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-60c4a545").then(n)}},{path:"/LNbank/LNDhub/index.html",redirect:"/LNbank/LNDhub/"},{path:"/LNbank/LNDhub.html",redirect:"/LNbank/LNDhub/"},{name:"v-21ea7c46",path:"/LNbank/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-21ea7c46").then(n)}},{path:"/LNbank/index.html",redirect:"/LNbank/"},{name:"v-7a7299c2",path:"/LNbank/Troubleshooting/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7a7299c2").then(n)}},{path:"/LNbank/Troubleshooting/index.html",redirect:"/LNbank/Troubleshooting/"},{path:"/LNbank/Troubleshooting.html",redirect:"/LNbank/Troubleshooting/"},{name:"v-1a5789ad",path:"/LedgerWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1a5789ad").then(n)}},{path:"/LedgerWallet/index.html",redirect:"/LedgerWallet/"},{path:"/LedgerWallet.html",redirect:"/LedgerWallet/"},{name:"v-6761eaa9",path:"/LightningNetwork/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6761eaa9").then(n)}},{path:"/LightningNetwork/index.html",redirect:"/LightningNetwork/"},{path:"/LightningNetwork.html",redirect:"/LightningNetwork/"},{name:"v-25de27bb",path:"/LightningNetwork_PaymentChannels/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-25de27bb").then(n)}},{path:"/LightningNetwork_PaymentChannels/index.html",redirect:"/LightningNetwork_PaymentChannels/"},{path:"/LightningNetwork_PaymentChannels.html",redirect:"/LightningNetwork_PaymentChannels/"},{name:"v-78fb4ca5",path:"/Magento/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-78fb4ca5").then(n)}},{path:"/Magento/index.html",redirect:"/Magento/"},{path:"/Magento.html",redirect:"/Magento/"},{name:"v-20a8c736",path:"/NBXplorer/API/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-20a8c736").then(n)}},{path:"/NBXplorer/API/index.html",redirect:"/NBXplorer/API/"},{path:"/NBXplorer/API.html",redirect:"/NBXplorer/API/"},{name:"v-eee9bb82",path:"/NBXplorer/Postgres-Migration/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-eee9bb82").then(n)}},{path:"/NBXplorer/Postgres-Migration/index.html",redirect:"/NBXplorer/Postgres-Migration/"},{path:"/NBXplorer/Postgres-Migration.html",redirect:"/NBXplorer/Postgres-Migration/"},{name:"v-6a07ad05",path:"/NBXplorer/Postgres-Schema/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-6a07ad05").then(n)}},{path:"/NBXplorer/Postgres-Schema/index.html",redirect:"/NBXplorer/Postgres-Schema/"},{path:"/NBXplorer/Postgres-Schema.html",redirect:"/NBXplorer/Postgres-Schema/"},{name:"v-e3db5fd8",path:"/NBXplorer/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-e3db5fd8").then(n)}},{path:"/NBXplorer/index.html",redirect:"/NBXplorer/"},{name:"v-2352e414",path:"/Nostr/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-2352e414").then(n)}},{path:"/Nostr/index.html",redirect:"/Nostr/"},{name:"v-88980e76",path:"/Notifications/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-88980e76").then(n)}},{path:"/Notifications/index.html",redirect:"/Notifications/"},{path:"/Notifications.html",redirect:"/Notifications/"},{name:"v-8d0f1fc6",path:"/OpenCart/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-8d0f1fc6").then(n)}},{path:"/OpenCart/index.html",redirect:"/OpenCart/"},{path:"/OpenCart.html",redirect:"/OpenCart/"},{name:"v-15132f85",path:"/Payjoin/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-15132f85").then(n)}},{path:"/Payjoin/index.html",redirect:"/Payjoin/"},{path:"/Payjoin.html",redirect:"/Payjoin/"},{name:"v-e98912f6",path:"/PaymentRequests/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-e98912f6").then(n)}},{path:"/PaymentRequests/index.html",redirect:"/PaymentRequests/"},{path:"/PaymentRequests.html",redirect:"/PaymentRequests/"},{name:"v-15dab665",path:"/Payouts/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-15dab665").then(n)}},{path:"/Payouts/index.html",redirect:"/Payouts/"},{path:"/Payouts.html",redirect:"/Payouts/"},{name:"v-49efd338",path:"/PodServer/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-49efd338").then(n)}},{path:"/PodServer/index.html",redirect:"/PodServer/"},{name:"v-68f6ac6a",path:"/PrestaShop/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-68f6ac6a").then(n)}},{path:"/PrestaShop/index.html",redirect:"/PrestaShop/"},{path:"/PrestaShop.html",redirect:"/PrestaShop/"},{name:"v-f5202af6",path:"/RegisterAccount/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-f5202af6").then(n)}},{path:"/RegisterAccount/index.html",redirect:"/RegisterAccount/"},{path:"/RegisterAccount.html",redirect:"/RegisterAccount/"},{name:"v-40e08a05",path:"/Reporting/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-40e08a05").then(n)}},{path:"/Reporting/index.html",redirect:"/Reporting/"},{path:"/Reporting.html",redirect:"/Reporting/"},{name:"v-0597b005",path:"/Shopify/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0597b005").then(n)}},{path:"/Shopify/index.html",redirect:"/Shopify/"},{path:"/Shopify.html",redirect:"/Shopify/"},{name:"v-21fce50b",path:"/Shopware/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-21fce50b").then(n)}},{path:"/Shopware/index.html",redirect:"/Shopware/"},{path:"/Shopware.html",redirect:"/Shopware/"},{name:"v-7c2268b6",path:"/Support/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7c2268b6").then(n)}},{path:"/Support/index.html",redirect:"/Support/"},{path:"/Support.html",redirect:"/Support/"},{name:"v-50ea01b4",path:"/TicketTailor/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-50ea01b4").then(n)}},{path:"/TicketTailor/index.html",redirect:"/TicketTailor/"},{name:"v-937bc12e",path:"/Transmuter/DCA/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-937bc12e").then(n)}},{path:"/Transmuter/DCA/index.html",redirect:"/Transmuter/DCA/"},{path:"/Transmuter/DCA.html",redirect:"/Transmuter/DCA/"},{name:"v-9c5e78fe",path:"/Transmuter/EmailReceiptsPreset/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-9c5e78fe").then(n)}},{path:"/Transmuter/EmailReceiptsPreset/index.html",redirect:"/Transmuter/EmailReceiptsPreset/"},{path:"/Transmuter/EmailReceiptsPreset.html",redirect:"/Transmuter/EmailReceiptsPreset/"},{name:"v-784978e6",path:"/Transmuter/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-784978e6").then(n)}},{path:"/Transmuter/index.html",redirect:"/Transmuter/"},{name:"v-604d19c6",path:"/Trocador/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-604d19c6").then(n)}},{path:"/Trocador/index.html",redirect:"/Trocador/"},{name:"v-36032c85",path:"/Troubleshooting/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-36032c85").then(n)}},{path:"/Troubleshooting/index.html",redirect:"/Troubleshooting/"},{path:"/Troubleshooting.html",redirect:"/Troubleshooting/"},{name:"v-31f01d3e",path:"/TryItOut/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-31f01d3e").then(n)}},{path:"/TryItOut/index.html",redirect:"/TryItOut/"},{path:"/TryItOut.html",redirect:"/TryItOut/"},{name:"v-d4151eb6",path:"/UseCase/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-d4151eb6").then(n)}},{path:"/UseCase/index.html",redirect:"/UseCase/"},{path:"/UseCase.html",redirect:"/UseCase/"},{name:"v-63822f36",path:"/Vault/HowToVerify/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-63822f36").then(n)}},{path:"/Vault/HowToVerify/index.html",redirect:"/Vault/HowToVerify/"},{path:"/Vault/HowToVerify.html",redirect:"/Vault/HowToVerify/"},{name:"v-dae82c60",path:"/Vault/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-dae82c60").then(n)}},{path:"/Vault/index.html",redirect:"/Vault/"},{name:"v-0e38183b",path:"/VirtueMart/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-0e38183b").then(n)}},{path:"/VirtueMart/index.html",redirect:"/VirtueMart/"},{path:"/VirtueMart.html",redirect:"/VirtueMart/"},{name:"v-315abc86",path:"/Wabisabi/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-315abc86").then(n)}},{path:"/Wabisabi/index.html",redirect:"/Wabisabi/"},{name:"v-5bcac676",path:"/Walkthrough/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-5bcac676").then(n)}},{path:"/Walkthrough/index.html",redirect:"/Walkthrough/"},{path:"/Walkthrough.html",redirect:"/Walkthrough/"},{name:"v-13a93ebf",path:"/Wallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-13a93ebf").then(n)}},{path:"/Wallet/index.html",redirect:"/Wallet/"},{path:"/Wallet.html",redirect:"/Wallet/"},{name:"v-8c111c76",path:"/WalletSetup/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-8c111c76").then(n)}},{path:"/WalletSetup/index.html",redirect:"/WalletSetup/"},{path:"/WalletSetup.html",redirect:"/WalletSetup/"},{name:"v-7d101341",path:"/WasabiWallet/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-7d101341").then(n)}},{path:"/WasabiWallet/index.html",redirect:"/WasabiWallet/"},{path:"/WasabiWallet.html",redirect:"/WasabiWallet/"},{name:"v-53d8e985",path:"/WhatsNext/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-53d8e985").then(n)}},{path:"/WhatsNext/index.html",redirect:"/WhatsNext/"},{path:"/WhatsNext.html",redirect:"/WhatsNext/"},{name:"v-faa5f0f6",path:"/WooCommerce/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-faa5f0f6").then(n)}},{path:"/WooCommerce/index.html",redirect:"/WooCommerce/"},{path:"/WooCommerce.html",redirect:"/WooCommerce/"},{name:"v-a6ea6734",path:"/Zapier/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-a6ea6734").then(n)}},{path:"/Zapier/index.html",redirect:"/Zapier/"},{name:"v-51df4a0d",path:"/PullPayments/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-51df4a0d").then(n)}},{path:"/PullPayments/index.html",redirect:"/PullPayments/"},{path:"/PullPayments.html",redirect:"/PullPayments/"},{name:"v-1dfa3141",path:"/Refund/",component:$l,beforeEnter:(e,t,n)=>{ul("Layout","v-1dfa3141").then(n)}},{path:"/Refund/index.html",redirect:"/Refund/"},{path:"/Refund.html",redirect:"/Refund/"},{name:"v-dde32bd4",path:"/",component:$l,beforeEnter:(e,t,n)=>{ul("Homepage","v-dde32bd4").then(n)}},{path:"/index.html",redirect:"/"},{path:"*",component:$l}],zl={title:"BTCPay Server",description:"BTCPay Server Official Documentation",base:"/",headTags:[["meta",{name:"viewport",content:"width=device-width,initial-scale=1.0"}],["link",{rel:"stylesheet",href:"/styles/btcpayserver-variables.css"}]],pages:[{title:"Forms",frontmatter:{},regularPath:"/AdvancedForms.html",relativePath:"AdvancedForms.md",key:"v-128c2a25",path:"/AdvancedForms/",headers:[{level:2,title:"Well-known field names",slug:"well-known-field-names"},{level:2,title:"Mirror fields",slug:"mirror-fields"},{level:2,title:"Pre-filling form values",slug:"pre-filling-form-values"}]},{title:"BTCPay Server Apps",frontmatter:{description:"Apps allow users an easy way to extend BTCPay Server.",tags:["BTCPay Server","Apps","Point of Sale","Crowdfunding","Payment Button"]},regularPath:"/Apps.html",relativePath:"Apps.md",key:"v-03334e4d",path:"/Apps/",headers:[{level:2,title:"Point of Sale App",slug:"point-of-sale-app"},{level:2,title:"Crowdfunding App",slug:"crowdfunding-app"},{level:2,title:"Payment Button",slug:"payment-button"},{level:3,title:"Payment Button for React Developers",slug:"payment-button-for-react-developers"}]},{title:"Tooling",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver/edit/master/docs/LocalDevSetup.md",externalRepo:"https://github.com/btcpayserver/btcpayserver"},regularPath:"/BTCPayServer/LocalDevSetup.html",relativePath:"BTCPayServer/LocalDevSetup.md",key:"v-68028296",path:"/BTCPayServer/LocalDevSetup/",headers:[{level:2,title:"How to manually test payments",slug:"how-to-manually-test-payments"},{level:3,title:"Using the test bitcoin-cli",slug:"using-the-test-bitcoin-cli"},{level:3,title:"Using Polar to test Lightning payments",slug:"using-polar-to-test-lightning-payments"},{level:3,title:"Using the test litecoin-cli",slug:"using-the-test-litecoin-cli"},{level:3,title:"Using the test lightning-cli",slug:"using-the-test-lightning-cli"},{level:3,title:"Alternative Lightning testing: Using Polar to test Lightning payments",slug:"alternative-lightning-testing-using-polar-to-test-lightning-payments"},{level:2,title:"FAQ",slug:"faq"},{level:3,title:"docker-compose up dev failed or tests are not passing, what should I do?",slug:"docker-compose-up-dev-failed-or-tests-are-not-passing-what-should-i-do"},{level:3,title:"How to run the Altcoin environment?",slug:"how-to-run-the-altcoin-environment"},{level:3,title:"How to run the Selenium test with a browser?",slug:"how-to-run-the-selenium-test-with-a-browser"},{level:3,title:"Session not created: This version of ChromeDriver only supports Chrome version 88",slug:"session-not-created-this-version-of-chromedriver-only-supports-chrome-version-88"}]},{title:"Reporting a potential Vulnerability.",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver/edit/master/SECURITY.md",externalRepo:"https://github.com/btcpayserver/btcpayserver"},regularPath:"/BTCPayServer/Security.html",relativePath:"BTCPayServer/Security.md",key:"v-3b19ebb6",path:"/BTCPayServer/Security/"},{title:"Migration from SQLite and MySQL to Postgres",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver/edit/master/docs/db-migration.md",externalRepo:"https://github.com/btcpayserver/btcpayserver"},regularPath:"/BTCPayServer/db-migration.html",relativePath:"BTCPayServer/db-migration.md",key:"v-9b4e0776",path:"/BTCPayServer/db-migration/",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Procedure",slug:"procedure"},{level:2,title:"Known issues",slug:"known-issues"}]},{title:"GreenField API Authorization Flow",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver/edit/master/docs/greenfield-authorization.md",externalRepo:"https://github.com/btcpayserver/btcpayserver"},regularPath:"/BTCPayServer/greenfield-authorization.html",relativePath:"BTCPayServer/greenfield-authorization.md",key:"v-c3e4e676",path:"/BTCPayServer/greenfield-authorization/",headers:[{level:2,title:"Basic auth",slug:"basic-auth"},{level:2,title:"API Keys",slug:"api-keys"}]},{title:"GreenField API Development Documentation",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver/edit/master/docs/greenfield-development.md",externalRepo:"https://github.com/btcpayserver/btcpayserver"},regularPath:"/BTCPayServer/greenfield-development.html",relativePath:"BTCPayServer/greenfield-development.md",key:"v-4c4d56f6",path:"/BTCPayServer/greenfield-development/",headers:[{level:2,title:"Adding new API endpoints",slug:"adding-new-api-endpoints"},{level:2,title:"Updating existing API endpoints",slug:"updating-existing-api-endpoints"},{level:3,title:"Scenario 1: Changing a property type on the model",slug:"scenario-1-changing-a-property-type-on-the-model"},{level:3,title:"Scenario 2: Removing a property on the model",slug:"scenario-2-removing-a-property-on-the-model"},{level:3,title:"Scenario 3: Adding a property on the model",slug:"scenario-3-adding-a-property-on-the-model"},{level:2,title:"Technical specifics",slug:"technical-specifics"},{level:3,title:"Detecting missing properties in a JSON model.",slug:"detecting-missing-properties-in-a-json-model"}]},{title:"BTCPay Server vs. Others",frontmatter:{},regularPath:"/BTCPayVsOthers.html",relativePath:"BTCPayVsOthers.md",key:"v-4d775b7a",path:"/BTCPayVsOthers/",headers:[{level:2,title:"Features",slug:"features"},{level:2,title:"Cost",slug:"cost"},{level:2,title:"Security",slug:"security"},{level:2,title:"Privacy",slug:"privacy"},{level:2,title:"Censorship-Resistance",slug:"censorship-resistance"},{level:2,title:"Decentralized",slug:"decentralized"},{level:2,title:"Fiat",slug:"fiat"},{level:2,title:"Can't find this information for other payment processors?",slug:"cant-find-this-information-for-other-payment-processors"}]},{title:"Connecting Coldcard Wallet to BTCPay Server",frontmatter:{},regularPath:"/ColdCardWallet.html",relativePath:"ColdCardWallet.md",key:"v-61d8fd52",path:"/ColdCardWallet/",headers:[{level:2,title:"Coldcard Wallet Setup",slug:"coldcard-wallet-setup"},{level:3,title:"Quick Setup",slug:"quick-setup"},{level:3,title:"Spending from BTCPay Server wallet with Coldcard (PSBT)",slug:"spending-from-btcpay-server-wallet-with-coldcard-psbt"}]},{title:"Community",frontmatter:{},regularPath:"/Community.html",relativePath:"Community.md",key:"v-bc3ce3b6",path:"/Community/"},{title:"Deploy BTCPay with Configurator",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-configurator/edit/master/README.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-configurator"},regularPath:"/Configurator/",relativePath:"Configurator/README.md",key:"v-64599034",path:"/Configurator/",headers:[{level:2,title:"Option 1: Add as an external service to BTCPay",slug:"option-1-add-as-an-external-service-to-btcpay"},{level:2,title:"Option 2: Build locally with Docker",slug:"option-2-build-locally-with-docker"},{level:2,title:"Export Manual Configuration",slug:"export-manual-configuration"},{level:2,title:"Privacy & Security Concerns",slug:"privacy-security-concerns"}]},{title:"Connect an existing wallet",frontmatter:{},regularPath:"/ConnectWallet.html",relativePath:"ConnectWallet.md",key:"v-9d2d2936",path:"/ConnectWallet/",headers:[{level:2,title:"Connect an existing wallet",slug:"connect-an-existing-wallet"},{level:3,title:"Connect hardware wallet",slug:"connect-hardware-wallet"},{level:3,title:"Import Wallet file",slug:"import-wallet-file"},{level:3,title:"Enter extended public key",slug:"enter-extended-public-key"},{level:3,title:"Scan wallet QR code",slug:"scan-wallet-qr-code"},{level:3,title:"Enter wallet seed",slug:"enter-wallet-seed"}]},{title:"Design BTCPay Server",frontmatter:{},regularPath:"/Contribute/Design.html",relativePath:"Contribute/Design.md",key:"v-bac53276",path:"/Contribute/Design/",headers:[{level:2,title:"Why designing matters",slug:"why-designing-matters"}]},{title:"Coding BTCPay Server",frontmatter:{},regularPath:"/Contribute/Dev.html",relativePath:"Contribute/Dev.md",key:"v-0516060b",path:"/Contribute/Dev/",headers:[{level:2,title:"Why coding matters",slug:"why-coding-matters"},{level:2,title:"Where to start",slug:"where-to-start"},{level:3,title:"Setup Developer Environment",slug:"setup-developer-environment"},{level:3,title:"Local BTCPay Development",slug:"local-btcpay-development"},{level:3,title:"Local BTCPay Testing",slug:"local-btcpay-testing"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Videos",slug:"videos"}]},{title:"Setup Developer Environment",frontmatter:{},regularPath:"/Contribute/DevCode.html",relativePath:"Contribute/DevCode.md",key:"v-6762cd1e",path:"/Contribute/DevCode/",headers:[{level:2,title:"Developer Resources",slug:"developer-resources"},{level:2,title:"Windows Setup Software",slug:"windows-setup-software"},{level:2,title:"Git Setup",slug:"git-setup"},{level:3,title:"Fork BTCPay Server Repository",slug:"fork-btcpay-server-repository"},{level:3,title:"Clone BTCPay Server Repository",slug:"clone-btcpay-server-repository"},{level:3,title:"Create a Development Feature Branch",slug:"create-a-development-feature-branch"},{level:2,title:"Local BTCPay Setup",slug:"local-btcpay-setup"},{level:3,title:"Bitcoin Regtest Network Setup",slug:"bitcoin-regtest-network-setup"},{level:3,title:"Build Local BTCPay Server in Browser Mode",slug:"build-local-btcpay-server-in-browser-mode"},{level:3,title:"Visual Studio Setup",slug:"visual-studio-setup"},{level:3,title:"Build Local BTCPay Server in Debug Mode",slug:"build-local-btcpay-server-in-debug-mode"},{level:3,title:"Visual Studio Code Changes In Your Local BTCPay Server",slug:"visual-studio-code-changes-in-your-local-btcpay-server"},{level:2,title:"Git Maintenance",slug:"git-maintenance"},{level:3,title:"Sync Forked BTCPay Server Repository",slug:"sync-forked-btcpay-server-repository"},{level:3,title:"Commit Code To Make Pull Request",slug:"commit-code-to-make-pull-request"},{level:3,title:"Create a Branch of a Pull Request",slug:"create-a-branch-of-a-pull-request"},{level:3,title:"Delete Local Branch",slug:"delete-local-branch"},{level:2,title:"Working with Docker Containers",slug:"working-with-docker-containers"},{level:2,title:"Greenfield API Development",slug:"greenfield-api-development"},{level:2,title:"Working with the Database",slug:"working-with-the-database"},{level:2,title:"Questions",slug:"questions"}]},{title:"Testing BTCPay Server",frontmatter:{},regularPath:"/Contribute/DevTest.html",relativePath:"Contribute/DevTest.md",key:"v-a46e67b2",path:"/Contribute/DevTest/",headers:[{level:2,title:"Setup Regtest Network and Local BTCPay Server",slug:"setup-regtest-network-and-local-btcpay-server"},{level:2,title:"Using Docker Images for Mainnet Testing",slug:"using-docker-images-for-mainnet-testing"},{level:2,title:"Create Invoice",slug:"create-invoice"},{level:2,title:"Pay Invoice",slug:"pay-invoice"},{level:2,title:"Testers FAQ",slug:"testers-faq"},{level:3,title:"Start Debugging gives Error: No connection could be made because the target machine actively refused it. 127.0.0.1:39372",slug:"start-debugging-gives-error-no-connection-could-be-made-because-the-target-machine-actively-refused-it-12700139372"},{level:3,title:"Regtest payments are not showing as confirmed?",slug:"regtest-payments-are-not-showing-as-confirmed"},{level:3,title:"Which branch should be tested for major releases?",slug:"which-branch-should-be-tested-for-major-releases"},{level:3,title:"Can I mark an invoice as paid?",slug:"can-i-mark-an-invoice-as-paid"}]},{title:"Contributing to BTCPay Server in other ways",frontmatter:{},regularPath:"/Contribute/Misc.html",relativePath:"Contribute/Misc.md",key:"v-a39385f6",path:"/Contribute/Misc/",headers:[{level:2,title:"Create Videos & Graphics",slug:"create-videos-graphics"},{level:2,title:"Hosting Providers",slug:"hosting-providers"},{level:2,title:"Contribute to the Directory",slug:"contribute-to-the-directory"},{level:2,title:"Project Discussions",slug:"project-discussions"},{level:2,title:"Community",slug:"community"},{level:2,title:"Spreading the word",slug:"spreading-the-word"}]},{title:"How to contribute to BTCPay Server?",frontmatter:{},regularPath:"/Contribute/",relativePath:"Contribute/README.md",key:"v-9909a134",path:"/Contribute/"},{title:"Translating BTCPay Server",frontmatter:{},regularPath:"/Contribute/Translate.html",relativePath:"Contribute/Translate.md",key:"v-3e89bcce",path:"/Contribute/Translate/",headers:[{level:2,title:"Why translations matter",slug:"why-translations-matter"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Step 1: View Existing Translations",slug:"step-1-view-existing-translations"},{level:2,title:"Step 2: Start New Translation",slug:"step-2-start-new-translation"},{level:2,title:"Step 3: Translation",slug:"step-3-translation"},{level:2,title:"Translation Tips",slug:"translation-tips"},{level:3,title:"Variables",slug:"variables"},{level:3,title:"Notifications",slug:"notifications"},{level:2,title:"Get help, ask questions",slug:"get-help-ask-questions"}]},{title:"Documenting BTCPay Server",frontmatter:{},regularPath:"/Contribute/Write.html",relativePath:"Contribute/Write.md",key:"v-5c41b537",path:"/Contribute/Write/",headers:[{level:2,title:"Why documentation matters",slug:"why-documentation-matters"},{level:2,title:"BTCPay Documentation",slug:"btcpay-documentation"},{level:2,title:"BTCPay Blog",slug:"btcpay-blog"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Recommended software",slug:"recommended-software"},{level:3,title:"Text Editor",slug:"text-editor"},{level:3,title:"Version Control",slug:"version-control"}]},{title:"Contribute to the blog",frontmatter:{},regularPath:"/Contribute/WriteBlog.html",relativePath:"Contribute/WriteBlog.md",key:"v-af48c69a",path:"/Contribute/WriteBlog/"},{title:"Contribute to the documentation",frontmatter:{},regularPath:"/Contribute/WriteDocs.html",relativePath:"Contribute/WriteDocs.md",key:"v-43a641c1",path:"/Contribute/WriteDocs/"},{title:"Contribute to the software stack",frontmatter:{},regularPath:"/Contribute/WriteSoftware.html",relativePath:"Contribute/WriteSoftware.md",key:"v-28bb6fe9",path:"/Contribute/WriteSoftware/",headers:[{level:2,title:"Step 1",slug:"step-1"},{level:2,title:"Step 2",slug:"step-2"},{level:2,title:"Step 3",slug:"step-3"},{level:2,title:"Step 4",slug:"step-4"},{level:2,title:"Step 5",slug:"step-5"}]},{title:"(2) Create a store",frontmatter:{},regularPath:"/CreateStore.html",relativePath:"CreateStore.md",key:"v-8e93b036",path:"/CreateStore/",headers:[{level:2,title:"Creating a Store in BTCPay Server",slug:"creating-a-store-in-btcpay-server"},{level:2,title:"Customizing your BTCPay Store Settings",slug:"customizing-your-btcpay-store-settings"}]},{title:"Create a new wallet",frontmatter:{},regularPath:"/CreateWallet.html",relativePath:"CreateWallet.md",key:"v-1ce314c7",path:"/CreateWallet/",headers:[{level:3,title:"Hot Wallet",slug:"hot-wallet"},{level:3,title:"Watch-only wallet",slug:"watch-only-wallet"}]},{title:"Using the BTCPay API for Custom Integration",frontmatter:{},regularPath:"/CustomIntegration.html",relativePath:"CustomIntegration.md",key:"v-11279236",path:"/CustomIntegration/",headers:[{level:2,title:"Official Client Libraries",slug:"official-client-libraries"},{level:2,title:"Accessing the API Manually",slug:"accessing-the-api-manually"},{level:2,title:"Pairing process",slug:"pairing-process"},{level:3,title:"Client side pairing",slug:"client-side-pairing"},{level:3,title:"Server side pairing",slug:"server-side-pairing"},{level:2,title:"Note",slug:"note"},{level:2,title:"Modal Checkout",slug:"modal-checkout"}]},{title:"Dashboard",frontmatter:{},regularPath:"/Dashboard.html",relativePath:"Dashboard.md",key:"v-ba716776",path:"/Dashboard/",headers:[{level:2,title:"Dashboard tiles",slug:"dashboard-tiles"},{level:3,title:"Wallet Balance",slug:"wallet-balance"},{level:3,title:"Transaction activity",slug:"transaction-activity"},{level:3,title:"Lightning Balance",slug:"lightning-balance"},{level:3,title:"Lightning Services",slug:"lightning-services"},{level:3,title:"Recent Transactions",slug:"recent-transactions"},{level:3,title:"Recent invoices",slug:"recent-invoices"},{level:3,title:"Current active crowdfund",slug:"current-active-crowdfund"}]},{title:"Azure Deployment",frontmatter:{},regularPath:"/Deployment/Azure.html",relativePath:"Deployment/Azure.md",key:"v-17b4e927",path:"/Deployment/Azure/",headers:[{level:2,title:"One-click setup",slug:"one-click-setup"}]},{title:"How to penny-pinch your Azure deployment",frontmatter:{},regularPath:"/Deployment/AzurePennyPinching.html",relativePath:"Deployment/AzurePennyPinching.md",key:"v-9ed60e36",path:"/Deployment/AzurePennyPinching/",headers:[{level:2,title:"How much am I spending now?",slug:"how-much-am-i-spending-now"},{level:2,title:"What is my current configuration",slug:"what-is-my-current-configuration"},{level:2,title:"Selecting a new Virtual Machine",slug:"selecting-a-new-virtual-machine"},{level:3,title:"FAQ: B1MS does not appear in the list",slug:"faq-b1ms-does-not-appear-in-the-list-"}]},{title:"Clovyr BTCPay Server web deployment.",frontmatter:{},regularPath:"/Deployment/Clovyr.html",relativePath:"Deployment/Clovyr.md",key:"v-784e0e36",path:"/Deployment/Clovyr/",headers:[{level:2,title:"1. Visit the Clovyer BTCPay Server launch page",slug:"1-visit-the-clovyer-btcpay-server-launch-page"},{level:2,title:"2. Account creation",slug:"2-account-creation"},{level:2,title:"3. Accessing BTCPay Server",slug:"3-accessing-btcpay-server"},{level:2,title:"4. Start your first store.",slug:"4-start-your-first-store"},{level:2,title:"5. Welcome to your BTCPay Server dashboard",slug:"5-welcome-to-your-btcpay-server-dashboard"},{level:2,title:"6. Billing",slug:"6-billing"}]},{title:"Dream Lab Network BTCPay Server web deployment.",frontmatter:{},regularPath:"/Deployment/DreamlabNetwork.html",relativePath:"Deployment/DreamlabNetwork.md",key:"v-f5865886",path:"/Deployment/DreamlabNetwork/",headers:[{level:2,title:"1. Pick the server that fits your needs",slug:"1-pick-the-server-that-fits-your-needs"},{level:2,title:"2. Configure your BTCPay Server",slug:"2-configure-your-btcpay-server"},{level:3,title:"Hostname",slug:"hostname"},{level:3,title:"Configurable Options",slug:"configurable-options"},{level:3,title:"Addition Information",slug:"addition-information"},{level:3,title:"Review & Checkout",slug:"review-checkout"},{level:2,title:"3. Client Area Dream Lab Network",slug:"3-client-area-dream-lab-network"},{level:2,title:"4. Start your first store.",slug:"4-start-your-first-store"},{level:2,title:"5. Welcome to your BTCPay Server dashboard",slug:"5-welcome-to-your-btcpay-server-dashboard"}]},{title:"Dynamic DNS Service",frontmatter:{},regularPath:"/Deployment/DynamicDNS.html",relativePath:"Deployment/DynamicDNS.md",key:"v-1aba0945",path:"/Deployment/DynamicDNS/",headers:[{level:2,title:"Motivation",slug:"motivation"},{level:2,title:"How to use",slug:"how-to-use"},{level:3,title:"Step 1: Create the domain",slug:"step-1-create-the-domain"},{level:3,title:"Step 2: Configure Dynamic DNS on BTCPay Server",slug:"step-2-configure-dynamic-dns-on-btcpay-server"},{level:3,title:"Step 3: Configure your BTCPay docker install to provide HTTPS certificates",slug:"step-3-configure-your-btcpay-docker-install-to-provide-https-certificates"}]},{title:"Google Cloud Deployment",frontmatter:{},regularPath:"/Deployment/GoogleCloud.html",relativePath:"Deployment/GoogleCloud.md",key:"v-6423130d",path:"/Deployment/GoogleCloud/",headers:[{level:2,title:"Google Cloud shell setup",slug:"google-cloud-shell-setup"}]},{title:"Hack0",frontmatter:{},regularPath:"/Deployment/Hack0.html",relativePath:"Deployment/Hack0.md",key:"v-4a79bbe7",path:"/Deployment/Hack0/",headers:[{level:2,title:"Hardware specification (for distributors)",slug:"hardware-specification-for-distributors"},{level:2,title:"Factory installation (for distributors)",slug:"factory-installation-for-distributors"},{level:2,title:"End user setup",slug:"end-user-setup"},{level:2,title:"FAQ",slug:"faq"},{level:3,title:"How to connect via SSH to your hack0?",slug:"how-to-connect-via-ssh-to-your-hack0"}]},{title:"Hardware Deployment",frontmatter:{},regularPath:"/Deployment/Hardware.html",relativePath:"Deployment/Hardware.md",key:"v-7afc10f6",path:"/Deployment/Hardware/"},{title:"Hardware As A Service",frontmatter:{},regularPath:"/Deployment/HardwareAsAService.html",relativePath:"Deployment/HardwareAsAService.md",key:"v-30d086c5",path:"/Deployment/HardwareAsAService/"},{title:"Hardware Deployment",frontmatter:{},regularPath:"/Deployment/LightningInABox.html",relativePath:"Deployment/LightningInABox.md",key:"v-45023d5a",path:"/Deployment/LightningInABox/"},{title:"Deploying BTCPay - LunaNode Web-Wizard",frontmatter:{},regularPath:"/Deployment/LunaNode.html",relativePath:"Deployment/LunaNode.md",key:"v-af8f8776",path:"/Deployment/LunaNode/",headers:[{level:2,title:"1. Create the account and add credits",slug:"1-create-the-account-and-add-credits"},{level:2,title:"2. Create the API Key",slug:"2-create-the-api-key"},{level:2,title:"3. Web-Wizard Deployment",slug:"3-web-wizard-deployment"},{level:2,title:"4. Additional customization (optional)",slug:"4-additional-customization-optional"}]},{title:"Minimal manual setup",frontmatter:{},regularPath:"/Deployment/ManualDeployment.html",relativePath:"Deployment/ManualDeployment.md",key:"v-8a00b836",path:"/Deployment/ManualDeployment/",headers:[{level:2,title:"Warning: Not recommended to use in production",slug:"warning-not-recommended-to-use-in-production"},{level:2,title:"Typical manual installation",slug:"typical-manual-installation"},{level:3,title:"1) Install Bitcoin Core 0.19.1",slug:"1-install-bitcoin-core-0191"},{level:3,title:"2) Install .NET 6.0 SDK",slug:"2-install-net-60-sdk"},{level:3,title:"3) Install NBXplorer",slug:"3-install-nbxplorer"},{level:3,title:"4) Install BTCPayServer",slug:"4-install-btcpayserver"},{level:3,title:"5) Run bitcoind",slug:"5-run-bitcoind"},{level:3,title:"6) Run NBXplorer",slug:"6-run-nbxplorer"},{level:3,title:"7) Run BTCPay Server",slug:"7-run-btcpay-server"},{level:2,title:"Testnet Specific Deployments",slug:"testnet-specific-deployments"},{level:3,title:"Run bitcoind in testnet mode",slug:"run-bitcoind-in-testnet-mode"},{level:3,title:"Run NBXplorer in testnet mode",slug:"run-nbxplorer-in-testnet-mode"},{level:3,title:"Run BTCPayServer in testnet mode",slug:"run-btcpayserver-in-testnet-mode"},{level:2,title:"Additional links",slug:"additional-links"}]},{title:"Extended Manual Setup",frontmatter:{},regularPath:"/Deployment/ManualDeploymentExtended.html",relativePath:"Deployment/ManualDeploymentExtended.md",key:"v-41065f05",path:"/Deployment/ManualDeploymentExtended/",headers:[{level:2,title:"Installation Steps Overview",slug:"installation-steps-overview"},{level:3,title:"Security",slug:"security"},{level:2,title:"Unprivileged user",slug:"unprivileged-user"},{level:3,title:"Prerequisites",slug:"prerequisites"},{level:3,title:"Application Components",slug:"application-components"},{level:2,title:"Postgresql",slug:"postgresql"},{level:2,title:"Tor",slug:"tor"},{level:2,title:"NGINX and Let's Encrypt",slug:"nginx-and-lets-encrypt"},{level:2,title:"Bitcoin Core",slug:"bitcoin-core"},{level:2,title:"NBXplorer",slug:"nbxplorer"},{level:2,title:"BTCPay Server",slug:"btcpay-server"},{level:2,title:"Lightning Network Daemon (LND)",slug:"lightning-network-daemon-lnd"},{level:2,title:"Ride The Lightning (RTL)",slug:"ride-the-lightning-rtl"},{level:2,title:"The End",slug:"the-end"},{level:3,title:"Questions",slug:"questions"}]},{title:"Choosing a Deployment Method",frontmatter:{},regularPath:"/Deployment/",relativePath:"Deployment/README.md",key:"v-d21f2f34",path:"/Deployment/",headers:[{level:2,title:"To choose one that will best suit your needs, consider the following:",slug:"to-choose-one-that-will-best-suit-your-needs-consider-the-following"}]},{title:"Raspberry Pi Deployment",frontmatter:{},regularPath:"/Deployment/RaspberryPi4.html",relativePath:"Deployment/RaspberryPi4.md",key:"v-5762b925",path:"/Deployment/RaspberryPi4/",headers:[{level:2,title:"Required Hardware",slug:"required-hardware"},{level:3,title:"Raspberry Pi 4",slug:"raspberry-pi-4"},{level:3,title:"Data Storage options",slug:"data-storage-options"},{level:3,title:"Power Adapter options",slug:"power-adapter-options"},{level:3,title:"Case and Cooling options",slug:"case-and-cooling-options"},{level:2,title:"Quickstart",slug:"quickstart"},{level:3,title:"Setting up the Raspberry Pi",slug:"setting-up-the-raspberry-pi"},{level:2,title:"Detailed Step by Step Instructions",slug:"detailed-step-by-step-instructions"},{level:3,title:"Upgrade the OS packages to latest",slug:"upgrade-the-os-packages-to-latest"},{level:3,title:"Configuring the storage",slug:"configuring-the-storage"},{level:3,title:"Install Docker",slug:"install-docker"},{level:3,title:"Create mount for Docker volumes",slug:"create-mount-for-docker-volumes"},{level:3,title:"Configuring the firewall",slug:"configuring-the-firewall"},{level:3,title:"Setup BTCPay Server",slug:"setup-btcpay-server"},{level:3,title:"FastSync (optional)",slug:"fastsync-optional"}]},{title:"Reverse proxy to Tor",frontmatter:{},regularPath:"/Deployment/ReverseProxyToTor.html",relativePath:"Deployment/ReverseProxyToTor.md",key:"v-180c16e5",path:"/Deployment/ReverseProxyToTor/",headers:[{level:2,title:"Advantages",slug:"advantages"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"VPS Setup",slug:"vps-setup"},{level:3,title:"Socat setup",slug:"socat-setup"},{level:3,title:"Webserver setup",slug:"webserver-setup"},{level:2,title:"Do all this in a Docker container",slug:"do-all-this-in-a-docker-container"},{level:3,title:"SocaTor = SOCAT + TOR",slug:"socator-socat-tor"},{level:3,title:"Usage",slug:"usage"},{level:2,title:"Use that Docker container in a Kubernetes Cluster using these manifests",slug:"use-that-docker-container-in-a-kubernetes-cluster-using-these-manifests"},{level:2,title:"Resources",slug:"resources"}]},{title:"Forward ports with a reverse SSH tunnel",frontmatter:{},regularPath:"/Deployment/ReverseSSHtunnel.html",relativePath:"Deployment/ReverseSSHtunnel.md",key:"v-39c48f76",path:"/Deployment/ReverseSSHtunnel/",headers:[{level:2,title:"Advantages",slug:"advantages"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Setup",slug:"setup"},{level:3,title:"On the host (your BTCPay Server instance)",slug:"on-the-host-your-btcpay-server-instance"},{level:3,title:"On the VPS",slug:"on-the-vps"},{level:3,title:"Back to the host (your BTCPay Server instance)",slug:"back-to-the-host-your-btcpay-server-instance"},{level:2,title:"Monitoring",slug:"monitoring"},{level:2,title:"Resources",slug:"resources"}]},{title:"Third-party hosting",frontmatter:{},regularPath:"/Deployment/ThirdPartyHosting.html",relativePath:"Deployment/ThirdPartyHosting.md",key:"v-762b62cf",path:"/Deployment/ThirdPartyHosting/",headers:[{level:2,title:"Advantages and disadvantages",slug:"advantages-and-disadvantages"},{level:3,title:"Pros",slug:"pros"},{level:3,title:"Cons",slug:"cons"},{level:2,title:"Concerns For Use",slug:"concerns-for-use"},{level:3,title:"Security Concerns",slug:"security-concerns"},{level:3,title:"Privacy Concerns",slug:"privacy-concerns"},{level:3,title:"Trust Concerns",slug:"trust-concerns"},{level:2,title:"Third Party Hosting FAQ",slug:"third-party-hosting-faq"},{level:2,title:"Where is the list of BTCPay third-party hosts?",slug:"where-is-the-list-of-btcpay-third-party-hosts"},{level:2,title:"How can one become a third-party host?",slug:"how-can-one-become-a-third-party-host"},{level:2,title:"Are there any limitations in features when using a third-party host?",slug:"are-there-any-limitations-in-features-when-using-a-third-party-host"},{level:2,title:"Can I enable the use of my Lightning Network node to others?",slug:"can-i-enable-the-use-of-my-lightning-network-node-to-others"},{level:2,title:"What does the trusted third-party host know about their users?",slug:"what-does-the-trusted-third-party-host-know-about-their-users"}]},{title:"Voltage Cloud BTCPay Server web deployment",frontmatter:{},regularPath:"/Deployment/voltagecloud.html",relativePath:"Deployment/voltagecloud.md",key:"v-49909ce5",path:"/Deployment/voltagecloud/",headers:[{level:2,title:"1. Sign up and top up your account.",slug:"1-sign-up-and-top-up-your-account"},{level:2,title:"2. What node suits you?",slug:"2-what-node-suits-you"},{level:2,title:"3. Node dashboard",slug:"3-node-dashboard"},{level:2,title:"4. BTCPay server node",slug:"4-btcpay-server-node"},{level:2,title:"5. Finnish initial deployment.",slug:"5-finnish-initial-deployment"},{level:2,title:"6. Welcome to your BTCPay Server dashboard",slug:"6-welcome-to-your-btcpay-server-dashboard"}]},{title:"Introduction to Web Deployments",frontmatter:{},regularPath:"/Deployment/webdeployment.html",relativePath:"Deployment/webdeployment.md",key:"v-3ec65b5a",path:"/Deployment/webdeployment/",headers:[{level:2,title:"Known web deployments.",slug:"known-web-deployments"},{level:3,title:"LunaNode web-wizard.",slug:"lunanode-web-wizard"},{level:3,title:"Voltage Cloud",slug:"voltage-cloud"},{level:3,title:"DreamLab Network Solutions",slug:"dreamlab-network-solutions"},{level:3,title:"Clovyr",slug:"clovyr"},{level:2,title:"Missing deployments?",slug:"missing-deployments"}]},{title:"How to add an Altcoin",frontmatter:{},regularPath:"/Development/Altcoins.html",relativePath:"Development/Altcoins.md",key:"v-dc719dd2",path:"/Development/Altcoins/",headers:[{level:2,title:"How can I add an altcoin to BTCPayServer?",slug:"how-can-i-add-an-altcoin-to-btcpayserver"}]},{title:"Greenfield API example with Node.JS (JavaScript)",frontmatter:{},regularPath:"/Development/GreenFieldExample-NodeJS.html",relativePath:"Development/GreenFieldExample-NodeJS.md",key:"v-10e3317f",path:"/Development/GreenFieldExample-NodeJS/",headers:[{level:2,title:"Create a new user",slug:"create-a-new-user"},{level:2,title:"Create a new API key",slug:"create-a-new-api-key"},{level:2,title:"Create a new store",slug:"create-a-new-store"},{level:2,title:"Webhook implementation with Node.JS + Express",slug:"webhook-implementation-with-nodejs-express"}]},{title:"Greenfield API example with cURL",frontmatter:{},regularPath:"/Development/GreenFieldExample.html",relativePath:"Development/GreenFieldExample.md",key:"v-b64dbc36",path:"/Development/GreenFieldExample/",headers:[{level:2,title:"Create a new user",slug:"create-a-new-user"},{level:2,title:"Create a new API key",slug:"create-a-new-api-key"},{level:2,title:"Create a new store",slug:"create-a-new-store"},{level:2,title:"Create a new API key with limiting permissions on the new store, for example read only",slug:"create-a-new-api-key-with-limiting-permissions-on-the-new-store-for-example-read-only"},{level:2,title:"Read store information",slug:"read-store-information"}]},{title:"Greenfield API examples with PHP",frontmatter:{},regularPath:"/Development/GreenfieldExample-PHP.html",relativePath:"Development/GreenfieldExample-PHP.md",key:"v-f2be4ef6",path:"/Development/GreenfieldExample-PHP/",headers:[{level:2,title:"Create a new user",slug:"create-a-new-user"},{level:2,title:"Create a new API key",slug:"create-a-new-api-key"},{level:2,title:"Create a new store",slug:"create-a-new-store"},{level:2,title:"Create a simple invoice",slug:"create-a-simple-invoice"},{level:2,title:"Webhook implementation and validation with PHP",slug:"webhook-implementation-and-validation-with-php"}]},{title:"Invoice metadata",frontmatter:{},regularPath:"/Development/InvoiceMetadata.html",relativePath:"Development/InvoiceMetadata.md",key:"v-3d044e45",path:"/Development/InvoiceMetadata/",headers:[{level:2,title:"Well-known properties",slug:"well-known-properties"},{level:2,title:"Examples",slug:"examples"}]},{title:"Local development",frontmatter:{},regularPath:"/Development/LocalDev.html",relativePath:"Development/LocalDev.md",key:"v-ede35016",path:"/Development/LocalDev/",headers:[{level:2,title:"Prerequisites",slug:"prerequisites"},{level:2,title:"Dependencies",slug:"dependencies"},{level:2,title:"Which IDE?",slug:"which-ide"},{level:2,title:"Build configuration",slug:"build-configuration"},{level:2,title:"Launch profiles",slug:"launch-profiles"},{level:2,title:"Running tests",slug:"running-tests"},{level:2,title:"Altcoin support development",slug:"altcoin-support-development"},{level:2,title:"HTTPS support for local development",slug:"https-support-for-local-development"},{level:2,title:"Videos",slug:"videos"}]},{title:"Local development",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-doc/edit/master/docs/Development/LocalDev.md"},regularPath:"/Development/LocalDevelopment.html",relativePath:"Development/LocalDevelopment.md",key:"v-7daf4329",path:"/Development/LocalDevelopment/",headers:[{level:2,title:"Prerequisites",slug:"prerequisites"},{level:2,title:"Dependencies",slug:"dependencies"},{level:2,title:"Which IDE?",slug:"which-ide"},{level:2,title:"Build configuration",slug:"build-configuration"},{level:2,title:"Launch profiles",slug:"launch-profiles"},{level:2,title:"Running tests",slug:"running-tests"},{level:2,title:"Altcoin support development",slug:"altcoin-support-development"},{level:2,title:"HTTPS support for local development",slug:"https-support-for-local-development"},{level:2,title:"Videos",slug:"videos"},{level:2,title:"How to manually test payments",slug:"how-to-manually-test-payments"},{level:3,title:"Using the test bitcoin-cli",slug:"using-the-test-bitcoin-cli"},{level:3,title:"Using Polar to test Lightning payments",slug:"using-polar-to-test-lightning-payments"},{level:3,title:"Using the test litecoin-cli",slug:"using-the-test-litecoin-cli"},{level:3,title:"Using the test lightning-cli",slug:"using-the-test-lightning-cli"},{level:3,title:"Alternative Lightning testing: Using Polar to test Lightning payments",slug:"alternative-lightning-testing-using-polar-to-test-lightning-payments"},{level:2,title:"FAQ",slug:"faq"},{level:3,title:"docker-compose up dev failed or tests are not passing, what should I do?",slug:"docker-compose-up-dev-failed-or-tests-are-not-passing-what-should-i-do"},{level:3,title:"How to run the Altcoin environment?",slug:"how-to-run-the-altcoin-environment"},{level:3,title:"How to run the Selenium test with a browser?",slug:"how-to-run-the-selenium-test-with-a-browser"},{level:3,title:"Session not created: This version of ChromeDriver only supports Chrome version 88",slug:"session-not-created-this-version-of-chromedriver-only-supports-chrome-version-88"}]},{title:"Plugins",frontmatter:{},regularPath:"/Development/Plugins.html",relativePath:"Development/Plugins.md",key:"v-6f03bcc5",path:"/Development/Plugins/",headers:[{level:2,title:"Setup of a new plugin",slug:"setup-of-a-new-plugin"},{level:3,title:"Plugin reference",slug:"plugin-reference"},{level:2,title:"Coding a plugin",slug:"coding-a-plugin"},{level:3,title:"Assets",slug:"assets"},{level:3,title:"Database",slug:"database"},{level:3,title:"UI Extension Points",slug:"ui-extension-points"},{level:3,title:"Actions and Filters",slug:"actions-and-filters"},{level:3,title:"Authorization and Permissions",slug:"authorization-and-permissions"},{level:3,title:"API",slug:"api"},{level:2,title:"Publishing the plugin",slug:"publishing-the-plugin"},{level:2,title:"Resources",slug:"resources"}]},{title:"Architecture",frontmatter:{},regularPath:"/Development/",relativePath:"Development/README.md",key:"v-8ade6c04",path:"/Development/"},{title:"Testnet demo",frontmatter:{},regularPath:"/Development/TestnetDemo.html",relativePath:"Development/TestnetDemo.md",key:"v-19638485",path:"/Development/TestnetDemo/",headers:[{level:2,title:"Questions",slug:"questions"}]},{title:"Customizing themes",frontmatter:{},regularPath:"/Development/Theme.html",relativePath:"Development/Theme.md",key:"v-06e5e8b6",path:"/Development/Theme/",headers:[{level:2,title:"Built-in themes",slug:"built-in-themes"},{level:2,title:"1. Custom themes",slug:"1-custom-themes"},{level:3,title:"Developing and extending a custom theme",slug:"developing-and-extending-a-custom-theme"},{level:2,title:"2. Bootstrap themes",slug:"2-bootstrap-themes"},{level:2,title:"Checkout page themes",slug:"checkout-page-themes"},{level:3,title:"Andreas M. Antonopolous",slug:"andreas-m-antonopolous"},{level:3,title:"Bitcoin Fortune Cookie",slug:"bitcoin-fortune-cookie"},{level:3,title:"Bitma.tk",slug:"bitmatk"},{level:3,title:"Blockstream",slug:"blockstream"},{level:3,title:"Coincards",slug:"coincards"},{level:3,title:"CryptoCloaks",slug:"cryptocloaks"},{level:3,title:"Human Rights Foundation",slug:"human-rights-foundation"},{level:3,title:"Shiftcrypto",slug:"shiftcrypto"},{level:3,title:"Wears My Liberty",slug:"wears-my-liberty"},{level:3,title:"Bitcoin People",slug:"bitcoin-people"}]},{title:"Introduction",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/README.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/",relativePath:"Docker/README.md",key:"v-3a2a5ff4",path:"/Docker/",headers:[{level:2,title:"Generated docker-compose",slug:"generated-docker-compose"},{level:2,title:"Again, what does btcpay-setup.sh do?",slug:"again-what-does-btcpay-setupsh-do"},{level:2,title:"Overview of files generated by btcpay-setup.sh",slug:"overview-of-files-generated-by-btcpay-setupsh"},{level:2,title:"How can I modify my environment?",slug:"how-can-i-modify-my-environment"},{level:2,title:"I deployed before btcpay-setup.sh existed (before May 17, 2018), can I migrate to this new system?",slug:"i-deployed-before-btcpay-setupsh-existed-before-may-17-2018-can-i-migrate-to-this-new-system"},{level:2,title:"I'm getting an error on Windows: Cannot create container for service docker: Mount denied?",slug:"im-getting-an-error-on-windows-cannot-create-container-for-service-docker-mount-denied"},{level:2,title:"How I can prune my node(s)?",slug:"how-i-can-prune-my-nodes"},{level:2,title:"How can I customize the generated docker-compose file?",slug:"how-can-i-customize-the-generated-docker-compose-file"},{level:2,title:"Can I run BTCPay Server on ports other than 80 and 443?",slug:"can-i-run-btcpay-server-on-ports-other-than-80-and-443"},{level:2,title:"Can I offload HTTPS termination?",slug:"can-i-offload-https-termination"},{level:2,title:"How can I back up my BTCPay Server?",slug:"how-can-i-back-up-my-btcpay-server"},{level:2,title:"How can I connect to the database?",slug:"how-can-i-connect-to-the-database"},{level:2,title:"How do I upgrade my BTCPay Server docker?",slug:"how-do-i-upgrade-my-btcpay-server-docker"}]},{title:"Backup & Restore",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/backup-restore.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/backup-restore.html",relativePath:"Docker/backup-restore.md",key:"v-bcc9c0f6",path:"/Docker/backup-restore/",headers:[{level:2,title:"Remarks and Considerations",slug:"remarks-and-considerations"},{level:3,title:"Lightning channel backup",slug:"lightning-channel-backup"},{level:2,title:"How does the backup work?",slug:"how-does-the-backup-work"},{level:3,title:"Set a backup passphrase",slug:"set-a-backup-passphrase"},{level:3,title:"Automation by crontab",slug:"automation-by-crontab"},{level:2,title:"How to restore?",slug:"how-to-restore"}]},{title:"Chatwoot support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/chatwoot.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/chatwoot.html",relativePath:"Docker/chatwoot.md",key:"v-52901cc5",path:"/Docker/chatwoot/",headers:[{level:2,title:"How to use",slug:"how-to-use"}]},{title:"Cloudflare tunnel support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/cloudflare-tunnel.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/cloudflare-tunnel.html",relativePath:"Docker/cloudflare-tunnel.md",key:"v-aeaaf052",path:"/Docker/cloudflare-tunnel/",headers:[{level:2,title:"How to use?",slug:"how-to-use"},{level:2,title:"Recommended additional step",slug:"recommended-additional-step"},{level:2,title:"Known error",slug:"known-error"},{level:3,title:"Error 503",slug:"error-503"}]},{title:"Fast sync Bitcoin for BTCPay Server",frontmatter:{},regularPath:"/Docker/fastsync.html",relativePath:"Docker/fastsync.md",key:"v-e159d7f6",path:"/Docker/fastsync/",headers:[{level:2,title:"What problem does Fast Sync solve?",slug:"what-problem-does-fast-sync-solve"},{level:2,title:"How does Fast Sync solve the problem?",slug:"how-does-fast-sync-solve-the-problem"},{level:2,title:"What are the downsides of Fast Sync?",slug:"what-are-the-downsides-of-fast-sync"},{level:3,title:"Malicious UTXO Set",slug:"malicious-utxo-set"},{level:3,title:"Lightning Network routing issues",slug:"lightning-network-routing-issues"},{level:2,title:"How to verify that the UTXO Set snapshot follows the consensus?",slug:"how-to-verify-that-the-utxo-set-snapshot-follows-the-consensus"},{level:3,title:"If you trust the owner of this repository....",slug:"if-you-trust-the-owner-of-this-repository"},{level:3,title:"Don't trust, verify!",slug:"dont-trust-verify-"},{level:3,title:"If you trust someone else...",slug:"if-you-trust-someone-else"},{level:2,title:"FAQ",slug:"faq"},{level:3,title:"Can I add my signature to this repository?",slug:"can-i-add-my-signature-to-this-repository"},{level:3,title:"Where can I download UTXO set snapshots",slug:"where-can-i-download-utxo-set-snapshots"},{level:3,title:"How can I create my own snapshot?",slug:"how-can-i-create-my-own-snapshot"},{level:3,title:"How can I do this for my altcoin?",slug:"how-can-i-do-this-for-my-altcoin"},{level:3,title:"Do you plan to destroy Bitcoin?",slug:"do-you-plan-to-destroy-bitcoin"},{level:3,title:"Why you don't just: Make BTCPayServer rely on SPV",slug:"why-you-dont-just-make-btcpayserver-rely-on-spv"},{level:3,title:"Why you don't just: Make BTCPayServer rely on an external trusted node",slug:"why-you-dont-just-make-btcpayserver-rely-on-an-external-trusted-node"}]},{title:"Firefly III support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/fireflyiii.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/fireflyiii.html",relativePath:"Docker/fireflyiii.md",key:"v-2d316036",path:"/Docker/fireflyiii/",headers:[{level:2,title:"How to use",slug:"how-to-use"}]},{title:"Joinmarket support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/joinmarket.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/joinmarket.html",relativePath:"Docker/joinmarket.md",key:"v-67ccefa5",path:"/Docker/joinmarket/",headers:[{level:2,title:"How to use",slug:"how-to-use"},{level:2,title:"How to change joinmarket configuration?",slug:"how-to-change-joinmarket-configuration"},{level:2,title:"Managing your wallet",slug:"managing-your-wallet"},{level:2,title:"Getting command prompt into the container",slug:"getting-command-prompt-into-the-container"},{level:2,title:"Managing the services such as yield generators",slug:"managing-the-services-such-as-yield-generators"},{level:2,title:"OB-Watcher",slug:"ob-watcher"},{level:2,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:"Error: Failed to load wallet, you need to remove the lock file",slug:"error-failed-to-load-wallet-you-need-to-remove-the-lock-file"},{level:3,title:"Read the logs of services",slug:"read-the-logs-of-services"}]},{title:"Lightning Terminal (LiT)",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/lightning-terminal.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/lightning-terminal.html",relativePath:"Docker/lightning-terminal.md",key:"v-3d266a05",path:"/Docker/lightning-terminal/",headers:[{level:2,title:"Installation",slug:"installation"},{level:2,title:"Troubleshooting",slug:"troubleshooting"}]},{title:"NDLC support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/ndlc.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/ndlc.html",relativePath:"Docker/ndlc.md",key:"v-bf626e76",path:"/Docker/ndlc/",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"How to use",slug:"how-to-use"}]},{title:"Pi-Hole support",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/pihole.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/pihole.html",relativePath:"Docker/pihole.md",key:"v-92a19676",path:"/Docker/pihole/",headers:[{level:2,title:"How to use",slug:"how-to-use"},{level:2,title:"Using the dashboard",slug:"using-the-dashboard"}]},{title:"Tallycoin Connect",frontmatter:{editLink:"https://github.com/btcpayserver/btcpayserver-docker/edit/master/docs/tallycoin-connect.md",externalRepo:"https://github.com/btcpayserver/btcpayserver-docker"},regularPath:"/Docker/tallycoin-connect.html",relativePath:"Docker/tallycoin-connect.md",key:"v-195b101b",path:"/Docker/tallycoin-connect/",headers:[{level:2,title:"Installation",slug:"installation"},{level:2,title:"Troubleshooting",slug:"troubleshooting"}]},{title:"Drupal Commerce 2.x integration",frontmatter:{},regularPath:"/Drupal.html",relativePath:"Drupal.md",key:"v-b69e09ee",path:"/Drupal/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Module installation and configuration",slug:"module-installation-and-configuration"},{level:3,title:"Quick walkthrough screencast",slug:"quick-walkthrough-screencast"},{level:3,title:"Quick walkthrough steps",slug:"quick-walkthrough-steps"}]},{title:"Electrum Personal Server (EPS) integration",frontmatter:{},regularPath:"/ElectrumPersonalServer.html",relativePath:"ElectrumPersonalServer.md",key:"v-14b9fcf5",path:"/ElectrumPersonalServer/",headers:[{level:2,title:"About Tor support",slug:"about-tor-support"},{level:2,title:"How to enable Electrum Personal Server (EPS) in BTCPay:",slug:"how-to-enable-electrum-personal-server-eps-in-btcpay"},{level:2,title:"How to connect Electrum Wallet to EPS",slug:"how-to-connect-electrum-wallet-to-eps"},{level:3,title:"Reflection on what has been achieved:",slug:"reflection-on-what-has-been-achieved"},{level:3,title:"Troubleshooting:",slug:"troubleshooting"}]},{title:"Connecting Electrum Wallet to BTCPay Server",frontmatter:{},regularPath:"/ElectrumWallet.html",relativePath:"ElectrumWallet.md",key:"v-6dcde349",path:"/ElectrumWallet/",headers:[{level:2,title:"Electrum Wallet Setup",slug:"electrum-wallet-setup"},{level:3,title:"Quick Setup",slug:"quick-setup"},{level:2,title:"Step by Step",slug:"step-by-step"},{level:3,title:"Alternative Setup",slug:"alternative-setup"},{level:3,title:"Configuring the Gap Limit in Electrum",slug:"configuring-the-gap-limit-in-electrum"}]},{title:"ElectrumX",frontmatter:{},regularPath:"/ElectrumX.html",relativePath:"ElectrumX.md",key:"v-1e8449a5",path:"/ElectrumX/",headers:[{level:2,title:"How to integrate ElectrumX into your BTCPay Server and connect your Electrum Wallet to it for your complete privacy",slug:"how-to-integrate-electrumx-into-your-btcpay-server-and-connect-your-electrum-wallet-to-it-for-your-complete-privacy"},{level:3,title:"(only available in BTCPay docker version)",slug:"only-available-in-btcpay-docker-version"},{level:2,title:"Section 2.1 Enable Your Own ElectrumX Server (fully integrated with your BTCPay Server's full bitcoin node)",slug:"section-21-enable-your-own-electrumx-server-fully-integrated-with-your-btcpay-servers-full-bitcoin-node"},{level:3,title:"Prerequisites (mandatory):",slug:"prerequisites-mandatory"},{level:3,title:"How will enabling ElectrumX Server affect an existing BTCPay implementation?:",slug:"how-will-enabling-electrumx-server-affect-an-existing-btcpay-implementation"},{level:3,title:"Steps to enable ElectrumX Server in BTCPay:",slug:"steps-to-enable-electrumx-server-in-btcpay"},{level:2,title:"Section 2.2 Connect your Electrum Wallet (Desktop or Android) to your ElectrumX Server",slug:"section-22-connect-your-electrum-wallet-desktop-or-android-to-your-electrumx-server"},{level:3,title:"Connect to ElectrumX from Electrum Wallet on your Mac/PC/Linux Machine:",slug:"connect-to-electrumx-from-electrum-wallet-on-your-macpclinux-machine"},{level:3,title:"Reflection on what has been achieved:",slug:"reflection-on-what-has-been-achieved"},{level:3,title:"Troubleshooting:",slug:"troubleshooting"}]},{title:"Altcoins FAQ",frontmatter:{},regularPath:"/FAQ/Altcoin.html",relativePath:"FAQ/Altcoin.md",key:"v-5a7c8936",path:"/FAQ/Altcoin/",headers:[{level:2,title:"Which coins does BTCPay Server support?",slug:"which-coins-does-btcpay-server-support"},{level:2,title:"Can an XYZ coin be added in BTCPay?",slug:"can-an-xyz-coin-be-added-in-btcpay"},{level:2,title:"How to add an altcoin in BTCPay?",slug:"how-to-add-an-altcoin-in-btcpay"},{level:2,title:"How to add an altcoin to an existing BTCPay deployment?",slug:"how-to-add-an-altcoin-to-an-existing-btcpay-deployment"},{level:2,title:"How to remove a coin from BTCPay?",slug:"how-to-remove-a-coin-from-btcpay"}]},{title:"Apps FAQ",frontmatter:{},regularPath:"/FAQ/Apps.html",relativePath:"FAQ/Apps.md",key:"v-0fd6afca",path:"/FAQ/Apps/",headers:[{level:2,title:"What are the Apps in BTCPay?",slug:"what-are-the-apps-in-btcpay"},{level:2,title:"Is there a limit on the number of Apps I can create?",slug:"is-there-a-limit-on-the-number-of-apps-i-can-create"},{level:2,title:"Is there a Point of Sale feature in BTCPay?",slug:"is-there-a-point-of-sale-feature-in-btcpay"},{level:2,title:"How can I use BTCPay in a physical store?",slug:"how-can-i-use-btcpay-in-a-physical-store"},{level:2,title:"How to customize the appearance of Point of Sale App in BTCPay",slug:"how-to-customize-the-appearance-of-point-of-sale-app-in-btcpay"},{level:2,title:"What is a Payment Button?",slug:"what-is-a-payment-button"},{level:2,title:"How to create a Pay Button with a custom amount?",slug:"how-to-create-a-pay-button-with-a-custom-amount"},{level:2,title:"How to map a domain name to an app?",slug:"how-to-map-a-domain-name-to-an-app"},{level:2,title:"How to redirect to another site after payment?",slug:"how-to-redirect-to-another-site-after-payment"},{level:2,title:"How to integrate WooCommerce Store into a BTCPay Crowdfund app?",slug:"how-to-integrate-woocommerce-store-into-a-btcpay-crowdfund-app"},{level:3,title:"Requirements",slug:"requirements"},{level:3,title:"Instructions",slug:"instructions"}]},{title:"Deployment FAQ",frontmatter:{},regularPath:"/FAQ/Deployment.html",relativePath:"FAQ/Deployment.md",key:"v-02bea796",path:"/FAQ/Deployment/",headers:[{level:2,title:"General Deployment",slug:"general-deployment"},{level:3,title:"How much does it cost to run BTCPay Server?",slug:"how-much-does-it-cost-to-run-btcpay-server"},{level:3,title:"What are the minimal requirements for BTCPay?",slug:"what-are-the-minimal-requirements-for-btcpay"},{level:3,title:"What is the easiest method to deploy a self-hosted BTCPay Server?",slug:"what-is-the-easiest-method-to-deploy-a-self-hosted-btcpay-server"},{level:3,title:"How to choose a proper deployment method?",slug:"how-to-choose-a-proper-deployment-method"},{level:3,title:"Can I run BTCPay on my own hardware?",slug:"can-i-run-btcpay-on-my-own-hardware"},{level:3,title:"Can I deploy BTCPay on my existing VPS?",slug:"can-i-deploy-btcpay-on-my-existing-vps"},{level:3,title:"Are there free hosts where I can test?",slug:"are-there-free-hosts-where-i-can-test"},{level:3,title:"After initial deployment, I can't register and I don't have a login yet?",slug:"after-initial-deployment-i-cant-register-and-i-dont-have-a-login-yet"},{level:3,title:"How do I activate Tor on my BTCPay Server?",slug:"how-do-i-activate-tor-on-my-btcpay-server"},{level:3,title:"How do I disable Tor on my BTCPay Server?",slug:"how-do-i-disable-tor-on-my-btcpay-server"},{level:3,title:"Why activate Tor? Does it mean that nobody knows who I am?",slug:"why-activate-tor-does-it-mean-that-nobody-knows-who-i-am"},{level:3,title:"How to access the .onion address without clearnet?",slug:"how-to-access-the-onion-address-without-clearnet"},{level:3,title:"How can I modify or deactivate environment variables?",slug:"how-can-i-modify-or-deactivate-environment-variables"},{level:3,title:"How can I run BTCPay on testnet?",slug:"how-can-i-run-btcpay-on-testnet"},{level:3,title:"Can I start BTCPay only when I'm expecting a payment?",slug:"can-i-start-btcpay-only-when-im-expecting-a-payment"},{level:3,title:"Can I connect to my BTCPay Bitcoin P2P on port 8333?",slug:"can-i-connect-to-my-btcpay-bitcoin-p2p-on-port-8333"},{level:3,title:"How can I renew my SSL certificate?",slug:"how-can-i-renew-my-ssl-certificate"},{level:3,title:"Can I use an existing Nginx server as a reverse proxy with SSL termination?",slug:"can-i-use-an-existing-nginx-server-as-a-reverse-proxy-with-ssl-termination"},{level:2,title:"How to change your BTCPay Server domain name?",slug:"how-to-change-your-btcpay-server-domain-name"},{level:3,title:"Setting up DNS Records",slug:"setting-up-dns-records"},{level:3,title:"Change domain name in BTCPay Server settings",slug:"change-domain-name-in-btcpay-server-settings"},{level:3,title:"Change domain on command line",slug:"change-domain-on-command-line"},{level:2,title:"Web-deployment",slug:"web-deployment"},{level:3,title:"Can I run BTCPay on my home computer?",slug:"can-i-run-btcpay-on-my-home-computer"},{level:3,title:"LunaNode web-deployment",slug:"lunanode-web-deployment"},{level:2,title:"Manual Deployment",slug:"manual-deployment"},{level:3,title:"How do I completely uninstall BTCPay from a Linux environment (Docker version)",slug:"how-do-i-completely-uninstall-btcpay-from-a-linux-environment-docker-version"},{level:3,title:"How to deploy BTCPay Server alongside existing Bitcoin node?",slug:"how-to-deploy-btcpay-server-alongside-existing-bitcoin-node"},{level:3,title:"With the docker deployment, how to use a different volume for the data?",slug:"with-the-docker-deployment-how-to-use-a-different-volume-for-the-data"},{level:3,title:"I get 503 Service Temporarily Unavailable nginx",slug:"i-get-503-service-temporarily-unavailable-nginx"}]},{title:"General FAQ",frontmatter:{tags:["refund","merchant refund"]},regularPath:"/FAQ/General.html",relativePath:"FAQ/General.md",key:"v-b4e335b6",path:"/FAQ/General/",headers:[{level:2,title:"What is BTCPay Server?",slug:"what-is-btcpay-server"},{level:2,title:"Why should I choose BTCPay over other processors?",slug:"why-should-i-choose-btcpay-over-other-processors"},{level:2,title:"Why is everyone so excited about BTCPay?",slug:"why-is-everyone-so-excited-about-btcpay"},{level:2,title:"Who can use BTCPay?",slug:"who-can-use-btcpay"},{level:2,title:"How to install BTCPay Server?",slug:"how-to-install-btcpay-server"},{level:2,title:"Where to find BTCPay video tutorials?",slug:"where-to-find-btcpay-video-tutorials"},{level:2,title:"Do I need to have an online store to use BTCPay Server?",slug:"do-i-need-to-have-an-online-store-to-use-btcpay-server"},{level:2,title:"Why can't I just give my Bitcoin address to a buyer?",slug:"why-cant-i-just-give-my-bitcoin-address-to-a-buyer"},{level:2,title:"How does BTCPay create a new address for each invoice?",slug:"how-does-btcpay-create-a-new-address-for-each-invoice"},{level:2,title:"Does BTCPay need my private key?",slug:"does-btcpay-need-my-private-key"},{level:2,title:"Does BTCPay Server support crypto to fiat conversion?",slug:"does-btcpay-server-support-crypto-to-fiat-conversion"},{level:2,title:"What if I have a problem paying an invoice?",slug:"what-if-i-have-a-problem-paying-an-invoice"},{level:2,title:"What if I have a problem with a paid invoice?",slug:"what-if-i-have-a-problem-with-a-paid-invoice"},{level:2,title:"Where can I get help and support?",slug:"where-can-i-get-help-and-support"},{level:2,title:"How can I contribute to BTCPay?",slug:"how-can-i-contribute-to-btcpay"},{level:2,title:"How can I use the BTCPay Server API?",slug:"how-can-i-use-the-btcpay-server-api"},{level:2,title:"How to create a webhook ?",slug:"how-to-create-a-webhook-"},{level:2,title:"Webhook format is not bitpay compatible?",slug:"webhook-format-is-not-bitpay-compatible"},{level:2,title:"How can I backup my BTCPay Server?",slug:"how-can-i-backup-my-btcpay-server"},{level:2,title:"How can I charge for using my BTCPay Server instance?",slug:"how-can-i-charge-for-using-my-btcpay-server-instance"},{level:2,title:'Stuck synching: "NBXplorer is synchronizing"',slug:"stuck-synching-nbxplorer-is-synchronizing-"}]},{title:"Integrations FAQ",frontmatter:{},regularPath:"/FAQ/Integrations.html",relativePath:"FAQ/Integrations.md",key:"v-dec9d2fe",path:"/FAQ/Integrations/",headers:[{level:2,title:"General Integrations FAQ",slug:"general-integrations-faq"},{level:3,title:"What e-commerce integrations are available?",slug:"what-e-commerce-integrations-are-available"},{level:3,title:"How to use WooCommerce store with BTCPay?",slug:"how-to-use-woocommerce-store-with-btcpay"},{level:3,title:"How to use BTCPay with Drupal?",slug:"how-to-use-btcpay-with-drupal"},{level:3,title:"How to use BTCPay with Prestashop?",slug:"how-to-use-btcpay-with-prestashop"},{level:3,title:"Does BTCPay have a Shopify plugin?",slug:"does-btcpay-have-a-shopify-plugin"},{level:3,title:"Can I use BTCPay without an integration?",slug:"can-i-use-btcpay-without-an-integration"},{level:2,title:"WooCommerce FAQ",slug:"woocommerce-faq"},{level:3,title:"How to upgrade to the new BTCPay for WooCommerce V2 plugin?",slug:"how-to-upgrade-to-the-new-btcpay-for-woocommerce-v2-plugin"},{level:3,title:"How to configure order status in WooCommerce?",slug:"how-to-configure-order-status-in-woocommerce"},{level:3,title:"How to customize e-mail confirmations in WooCommerce?",slug:"how-to-customize-e-mail-confirmations-in-woocommerce"},{level:3,title:"Error: If you use an alternative order numbering system, please see class-wc-gateway-btcpay.php to apply a search filter",slug:"error-if-you-use-an-alternative-order-numbering-system-please-see-class-wc-gateway-btcpayphp-to-apply-a-search-filter"},{level:3,title:"How to configure Additional Token Support / Separate Payment Gateways",slug:"how-to-configure-additional-token-support-separate-payment-gateways"}]},{title:"Lightning Network FAQ",frontmatter:{},regularPath:"/FAQ/LightningNetwork.html",relativePath:"FAQ/LightningNetwork.md",key:"v-42e075f7",path:"/FAQ/LightningNetwork/",headers:[{level:2,title:"Lightning Network General FAQ",slug:"lightning-network-general-faq"},{level:3,title:"How many users can use Lightning Network in BTCPay?",slug:"how-many-users-can-use-lightning-network-in-btcpay"},{level:3,title:"How to find node info and open a direct channel with a store using BTCPay?",slug:"how-to-find-node-info-and-open-a-direct-channel-with-a-store-using-btcpay"},{level:3,title:"As a merchant, do I need to open direct channels?",slug:"as-a-merchant-do-i-need-to-open-direct-channels"},{level:3,title:"How can I get inbound capacity to my node?",slug:"how-can-i-get-inbound-capacity-to-my-node"},{level:3,title:"I previously installed BTCPayServer without lightning, can I enable it?",slug:"i-previously-installed-btcpayserver-without-lightning-can-i-enable-it"},{level:3,title:"Can I use a pruned node with LN in BTCPay?",slug:"can-i-use-a-pruned-node-with-ln-in-btcpay"},{level:3,title:"Can I use my existing LN node with BTCPay?",slug:"can-i-use-my-existing-ln-node-with-btcpay"},{level:3,title:"How to change from Core Lightning (CLN) to LND or vice-versa?",slug:"how-to-change-from-core-lightning-cln-to-lnd-or-vice-versa"},{level:3,title:'I switched Lightning Network implementation, but getting "no payment available" error',slug:"i-switched-lightning-network-implementation-but-getting-no-payment-available-error"},{level:3,title:'I get "WARNING: The LIGHTNING_ALIAS variable is not set. Defaulting to a blank string" when starting container',slug:"i-get-warning-the-lightning-alias-variable-is-not-set-defaulting-to-a-blank-string-when-starting-container"},{level:3,title:"How to display my Lightning Node information so that others can connect to me?",slug:"how-to-display-my-lightning-node-information-so-that-others-can-connect-to-me"},{level:3,title:"Where can I find recovery seed backup for my Lightning Network wallet in BTCPay Server?",slug:"where-can-i-find-recovery-seed-backup-for-my-lightning-network-wallet-in-btcpay-server"},{level:3,title:"How to disable on-chain payments and use LN payments only?",slug:"how-to-disable-on-chain-payments-and-use-ln-payments-only"},{level:3,title:"How to see my Lightning Network version?",slug:"how-to-see-my-lightning-network-version"},{level:3,title:"How to redirect a Lightning Address?",slug:"how-to-redirect-a-lightning-address"},{level:2,title:"Lightning Network LND FAQ",slug:"lightning-network-lnd-faq"},{level:3,title:"How to restart my LND?",slug:"how-to-restart-my-lnd"},{level:3,title:"How to rescan the LND on-chain wallet?",slug:"how-to-rescan-the-lnd-on-chain-wallet"},{level:3,title:"How to see LND logs?",slug:"how-to-see-lnd-logs"},{level:3,title:"What’s the default directory of LND in BTCPay?",slug:"what-s-the-default-directory-of-lnd-in-btcpay"},{level:3,title:"Which macaroon needs to be provided for external nodes?",slug:"which-macaroon-needs-to-be-provided-for-external-nodes"},{level:3,title:"LND connection issues after an update",slug:"lnd-connection-issues-after-an-update"},{level:3,title:"How to change my LND Node alias?",slug:"how-to-change-my-lnd-node-alias"},{level:3,title:"How to edit lnd.conf?",slug:"how-to-edit-lndconf"},{level:3,title:"How to connect to a LND watchtower?",slug:"how-to-connect-to-a-lnd-watchtower"},{level:3,title:"How to run a LND watchtower?",slug:"how-to-run-a-lnd-watchtower"},{level:3,title:"How to install ThunderHub?",slug:"how-to-install-thunderhub"},{level:2,title:"Lightning Network Core Lightning (CLN) FAQ",slug:"lightning-network-core-lightning-cln-faq"},{level:3,title:"How to restart my Core Lightning (CLN)?",slug:"how-to-restart-my-core-lightning-cln"},{level:3,title:"How to announce an IPv6 address?",slug:"how-to-announce-an-ipv6-address"},{level:2,title:"Lightning Network Questions and Support",slug:"lightning-network-questions-and-support"}]},{title:"Frequently Asked Questions and Common Issues",frontmatter:{},regularPath:"/FAQ/",relativePath:"FAQ/README.md",key:"v-78e9ef70",path:"/FAQ/",headers:[{level:2,title:"General FAQ",slug:"general-faq"},{level:2,title:"Deployment FAQ",slug:"deployment-faq"},{level:3,title:"General Deployment FAQ",slug:"general-deployment-faq"},{level:3,title:"Web Deployment FAQ",slug:"web-deployment-faq"},{level:3,title:"Manual Deployment FAQ",slug:"manual-deployment-faq"},{level:2,title:"Synchronization FAQ",slug:"synchronization-faq"},{level:2,title:"Integrations FAQ",slug:"integrations-faq"},{level:3,title:"Integrations General",slug:"integrations-general"},{level:3,title:"WooCommerce FAQ",slug:"woocommerce-faq"},{level:2,title:"Server Settings FAQ",slug:"server-settings-faq"},{level:3,title:"Maintenance FAQ",slug:"maintenance-faq"},{level:3,title:"Theme / Customization FAQ",slug:"theme-customization-faq"},{level:3,title:"Policies FAQ",slug:"policies-faq"},{level:3,title:"Services FAQ",slug:"services-faq"},{level:3,title:"Files FAQ",slug:"files-faq"},{level:2,title:"Stores FAQ",slug:"stores-faq"},{level:2,title:"Wallet FAQ",slug:"wallet-faq"},{level:2,title:"Apps FAQ",slug:"apps-faq"},{level:2,title:"Lightning Network FAQ",slug:"lightning-network-faq"},{level:3,title:"Lightning Network General FAQ",slug:"lightning-network-general-faq"},{level:3,title:"Lightning Network LND FAQ",slug:"lightning-network-lnd-faq"},{level:3,title:"Lightning Network Core Lightning (CLN) FAQ",slug:"lightning-network-core-lightning-cln-faq"},{level:2,title:"Altcoins FAQ",slug:"altcoins-faq"}]},{title:"Server Settings FAQ",frontmatter:{},regularPath:"/FAQ/ServerSettings.html",relativePath:"FAQ/ServerSettings.md",key:"v-0763789a",path:"/FAQ/ServerSettings/",headers:[{level:2,title:"Maintenance",slug:"maintenance"},{level:3,title:"How to update BTCPay Server?",slug:"how-to-update-btcpay-server"},{level:3,title:"How to restart BTCPay Server?",slug:"how-to-restart-btcpay-server"},{level:3,title:"How to SSH into my BTCPay running on VPS?",slug:"how-to-ssh-into-my-btcpay-running-on-vps"},{level:3,title:"How to see, as an admin, what's running on my BTCPay Server?",slug:"how-to-see-as-an-admin-whats-running-on-my-btcpay-server"},{level:3,title:"How can I see my BTCPay Server version?",slug:"how-can-i-see-my-btcpay-server-version"},{level:3,title:"How can I check my BTCPay Server version via terminal?",slug:"how-can-i-check-my-btcpay-server-version-via-terminal"},{level:3,title:"What is BTCPay SSH key file?",slug:"what-is-btcpay-ssh-key-file"},{level:3,title:"Forgot BTCPay Admin password?",slug:"forgot-btcpay-admin-password"},{level:3,title:"How to add a new user by invite?",slug:"how-to-add-a-new-user-by-invite"},{level:3,title:"How to disable U2F and 2FA for a user?",slug:"how-to-disable-u2f-and-2fa-for-a-user"},{level:3,title:"How to configure SMTP settings in BTCPay?",slug:"how-to-configure-smtp-settings-in-btcpay"},{level:3,title:"Error: Maintenance feature requires access to SSH properly configured in BTCPayServer configuration",slug:"error-maintenance-feature-requires-access-to-ssh-properly-configured-in-btcpayserver-configuration"},{level:3,title:"Error: Your local changes to the following files would be overwritten by merge",slug:"error-your-local-changes-to-the-following-files-would-be-overwritten-by-merge"},{level:3,title:"Error: BTCPAY_SSHKEYFILE is not set when running the docker install, or unable to update through Server Settings / Maintenance",slug:"error-btcpay-sshkeyfile-is-not-set-when-running-the-docker-install-or-unable-to-update-through-server-settings-maintenance"},{level:2,title:"Theme / Customization",slug:"theme-customization"},{level:3,title:"How to customize my BTCPay theme style?",slug:"how-to-customize-my-btcpay-theme-style"},{level:3,title:"How to modify the checkout page?",slug:"how-to-modify-the-checkout-page"},{level:3,title:"How to add Google Analytics code to BTCPay?",slug:"how-to-add-google-analytics-code-to-btcpay"},{level:2,title:"Policies",slug:"policies"},{level:3,title:"How to allow registration on my BTCPay Server?",slug:"how-to-allow-registration-on-my-btcpay-server"},{level:3,title:"How to hide my BTCPay Server from Search Engines?",slug:"how-to-hide-my-btcpay-server-from-search-engines"},{level:2,title:"Services",slug:"services"},{level:3,title:"How to remotely connect to my BTCPay full node?",slug:"how-to-remotely-connect-to-my-btcpay-full-node"},{level:2,title:"Files",slug:"files"},{level:3,title:"How to upload files to BTCPay?",slug:"how-to-upload-files-to-btcpay"}]},{title:"Stores FAQ",frontmatter:{},regularPath:"/FAQ/Stores.html",relativePath:"FAQ/Stores.md",key:"v-1eb7e25b",path:"/FAQ/Stores/",headers:[{level:2,title:"How to create a store in BTCPay Server?",slug:"how-to-create-a-store-in-btcpay-server"},{level:2,title:"How many stores can I create?",slug:"how-many-stores-can-i-create"},{level:2,title:"Why are invoices without payment showing as complete?",slug:"why-are-invoices-without-payment-showing-as-complete"},{level:2,title:"Add network fee to invoice (vary with mining fees)?",slug:"add-network-fee-to-invoice-vary-with-mining-fees"},{level:2,title:"Allow anyone to create invoice",slug:"allow-anyone-to-create-invoice"},{level:2,title:"Invoice expires if the full amount has not been paid after ... minutes",slug:"invoice-expires-if-the-full-amount-has-not-been-paid-after-minutes"},{level:2,title:"Payment invalid if transactions fails to confirm ... minutes after invoice expiration",slug:"payment-invalid-if-transactions-fails-to-confirm-minutes-after-invoice-expiration"},{level:2,title:"Consider the invoice confirmed when the payment transaction",slug:"consider-the-invoice-confirmed-when-the-payment-transaction"},{level:2,title:"Consider the invoice confirmed with RBF flag on 0-conf setup",slug:"consider-the-invoice-confirmed-with-rbf-flag-on-0-conf-setup"},{level:2,title:"Consider the invoice paid even if the paid amount is ... % less than expected",slug:"consider-the-invoice-paid-even-if-the-paid-amount-is-less-than-expected"},{level:2,title:"How to disable email on invoices",slug:"how-to-disable-email-on-invoices"},{level:2,title:"How to denominate invoices in sats",slug:"how-to-denominate-invoices-in-sats"},{level:2,title:"How to redirect store invoices after payment?",slug:"how-to-redirect-store-invoices-after-payment"},{level:2,title:"Can I delete invoices from BTCPay?",slug:"can-i-delete-invoices-from-btcpay"},{level:2,title:"How to collect additional buyer information?",slug:"how-to-collect-additional-buyer-information"},{level:2,title:"How to change the exchange rate provider for invoices?",slug:"how-to-change-the-exchange-rate-provider-for-invoices"},{level:2,title:"Getting GetRatesAsync was called on coinaverage error",slug:"getting-getratesasync-was-called-on-coinaverage-error"},{level:2,title:"What is a payment request?",slug:"what-is-a-payment-request"},{level:2,title:"What is the difference between a payment request and invoice?",slug:"what-is-the-difference-between-a-payment-request-and-invoice"}]},{title:"Synchronization FAQ",frontmatter:{},regularPath:"/FAQ/Synchronization.html",relativePath:"FAQ/Synchronization.md",key:"v-0c2701b6",path:"/FAQ/Synchronization/",headers:[{level:2,title:"Why does BTCPay sync?",slug:"why-does-btcpay-sync"},{level:2,title:"Can I skip the synchronization?",slug:"can-i-skip-the-synchronization"},{level:2,title:"How do I know that BTCPay synced completely?",slug:"how-do-i-know-that-btcpay-synced-completely"},{level:2,title:"How can I check the block height of my bitcoin node?",slug:"how-can-i-check-the-block-height-of-my-bitcoin-node"},{level:2,title:"BTCPay Server takes forever to synchronize",slug:"btcpay-server-takes-forever-to-synchronize"},{level:3,title:"Cause 1: Not enough CPU",slug:"cause-1-not-enough-cpu"},{level:3,title:"Cause 2: Using swap memory",slug:"cause-2-using-swap-memory"},{level:2,title:"BTCPay Server keeps showing that my node is always starting",slug:"btcpay-server-keeps-showing-that-my-node-is-always-starting"},{level:3,title:"Cause 1: You do not have enough RAM",slug:"cause-1-you-do-not-have-enough-ram"},{level:3,title:"Cause 2: You do not have enough storage",slug:"cause-2-you-do-not-have-enough-storage"},{level:3,title:"Cause 3: You accidentally disabled pruning",slug:"cause-3-you-accidentally-disabled-pruning"},{level:3,title:"Cause 4: Your bitcoin data directory is corrupted",slug:"cause-4-your-bitcoin-data-directory-is-corrupted"},{level:3,title:"Cause 5: Your last wallet synchronisation goes beyond pruned data",slug:"cause-5-your-last-wallet-synchronisation-goes-beyond-pruned-data"},{level:2,title:"I'm running a full node and have a synched blockchain, can BTCPay use it so that it doesn't have to do a full sync?",slug:"im-running-a-full-node-and-have-a-synched-blockchain-can-btcpay-use-it-so-that-it-doesnt-have-to-do-a-full-sync"},{level:2,title:"How to enable Bitcoin node pruning?",slug:"how-to-enable-bitcoin-node-pruning"},{level:2,title:"How to disable Bitcoin node pruning?",slug:"how-to-disable-bitcoin-node-pruning"}]},{title:"Wallet FAQ",frontmatter:{},regularPath:"/FAQ/Wallet.html",relativePath:"FAQ/Wallet.md",key:"v-65060acd",path:"/FAQ/Wallet/",headers:[{level:2,title:"What is BTCPay Server wallet?",slug:"what-is-btcpay-server-wallet"},{level:2,title:"How to set up my wallet with BTCPay Server?",slug:"how-to-set-up-my-wallet-with-btcpay-server"},{level:2,title:"Can I use a hardware wallet with BTCPay Server?",slug:"can-i-use-a-hardware-wallet-with-btcpay-server"},{level:2,title:"Is there address re-use for separate stores using same xpub?",slug:"is-there-address-re-use-for-separate-stores-using-same-xpub"},{level:2,title:"Do I have to use BTCPay Server wallet?",slug:"do-i-have-to-use-btcpay-server-wallet"},{level:2,title:"Why is sending a transaction using Trezor failing?",slug:"why-is-sending-a-transaction-using-trezor-failing"},{level:2,title:"Missing payments in my software or hardware wallet",slug:"missing-payments-in-my-software-or-hardware-wallet"},{level:3,title:"The gap limit problem",slug:"the-gap-limit-problem"},{level:3,title:"The gap limit solution",slug:"the-gap-limit-solution"},{level:2,title:"What is a derivation scheme?",slug:"what-is-a-derivation-scheme"},{level:2,title:"What is a Replace-By-Fee (RBF) transaction?",slug:"what-is-a-replace-by-fee-rbf-transaction"},{level:2,title:"Does BTCPay Server use mempoolfullrbf=1 ?",slug:"does-btcpay-server-use-mempoolfullrbf-1-"},{level:2,title:"How to add custom labels and comments to transactions?",slug:"how-to-add-custom-labels-and-comments-to-transactions"},{level:2,title:"I don't see Lightning network payments in BTCPay wallet?",slug:"i-dont-see-lightning-network-payments-in-btcpay-wallet"},{level:2,title:"Is there a mobile app for BTCPay Server wallet?",slug:"is-there-a-mobile-app-for-btcpay-server-wallet"}]},{title:"Forms",frontmatter:{},regularPath:"/Forms.html",relativePath:"Forms.md",key:"v-7900ca36",path:"/Forms/",headers:[{level:2,title:"Setting up your store's first Custom form.",slug:"setting-up-your-stores-first-custom-form"},{level:2,title:"Create a custom form.",slug:"create-a-custom-form"},{level:2,title:"Public Forms",slug:"public-forms"},{level:2,title:"Adjust invoice amounts based on user input",slug:"adjust-invoice-amounts-based-on-user-input"},{level:3,title:"Charging extra based on shipping method",slug:"charging-extra-based-on-shipping-method"},{level:3,title:"Promo codes",slug:"promo-codes"},{level:3,title:"Showing user input on the receipt",slug:"showing-user-input-on-the-receipt"},{level:2,title:"Support",slug:"support"}]},{title:"BTCPay Server Documentation",frontmatter:{},regularPath:"/Guide.html",relativePath:"Guide.md",key:"v-51796845",path:"/Guide/",headers:[{level:2,title:"What is BTCPay Server?",slug:"what-is-btcpay-server"},{level:2,title:"How BTCPay Server works?",slug:"how-btcpay-server-works"},{level:2,title:"Features",slug:"features"},{level:2,title:"Getting started",slug:"getting-started"},{level:2,title:"Get involved",slug:"get-involved"},{level:2,title:"Support",slug:"support"}]},{title:"Hardware Wallet Integration",frontmatter:{},regularPath:"/HardwareWalletIntegration.html",relativePath:"HardwareWalletIntegration.md",key:"v-2ad91fe5",path:"/HardwareWalletIntegration/",headers:[{level:2,title:"Getting Started",slug:"getting-started"},{level:3,title:"Spending funds",slug:"spending-funds"},{level:2,title:"Advanced Settings",slug:"advanced-settings"},{level:2,title:"Supported Hardware Wallets",slug:"supported-hardware-wallets"}]},{title:"What is an invoice in BTCPay Server?",frontmatter:{description:"Learn what are invoices and how to manage them in BTCPay Server.",tags:["Invoices","Payment request","Bitcoin invoices","Invoice status","Managing bitcoin invoices","Bitcoin invoicing"]},regularPath:"/Invoices.html",relativePath:"Invoices.md",key:"v-3526ef36",path:"/Invoices/",headers:[{level:2,title:"Invoice statuses",slug:"invoice-statuses"},{level:3,title:"Invoice details",slug:"invoice-details"},{level:3,title:"Invoice filtering",slug:"invoice-filtering"},{level:3,title:"Invoice export",slug:"invoice-export"},{level:2,title:"Refunding an invoice",slug:"refunding-an-invoice"},{level:2,title:"Archiving invoices",slug:"archiving-invoices"}]},{title:"LNDhub API",frontmatter:{editLink:"https://github.com/dennisreimann/btcpayserver-plugin-lndhub-api/edit/master/README.md",externalRepo:"https://github.com/dennisreimann/btcpayserver-plugin-lndhub-api"},regularPath:"/LNDhubAPI/",relativePath:"LNDhubAPI/README.md",key:"v-9b2edb34",path:"/LNDhubAPI/",headers:[{level:2,title:"Importing the wallet",slug:"importing-the-wallet"},{level:3,title:"BlueWallet",slug:"bluewallet"},{level:3,title:"Zeus",slug:"zeus"},{level:3,title:"Alby",slug:"alby"},{level:2,title:"Support this plugin",slug:"support-this-plugin"}]},{title:"LNDhub Compatibility",frontmatter:{editLink:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank/edit/master/docs/LNDhub.md",externalRepo:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank"},regularPath:"/LNbank/LNDhub.html",relativePath:"LNbank/LNDhub.md",key:"v-60c4a545",path:"/LNbank/LNDhub/",headers:[{level:2,title:"Importing the wallet",slug:"importing-the-wallet"},{level:3,title:"BlueWallet",slug:"bluewallet"},{level:3,title:"Zeus",slug:"zeus"},{level:3,title:"Alby",slug:"alby"}]},{title:"LNbank",frontmatter:{editLink:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank/edit/master/README.md",externalRepo:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank"},regularPath:"/LNbank/",relativePath:"LNbank/README.md",key:"v-21ea7c46",path:"/LNbank/",headers:[{level:2,title:"Use cases",slug:"use-cases"},{level:2,title:"Technicalities",slug:"technicalities"},{level:2,title:"Caveats",slug:"caveats"},{level:2,title:"Features and Compatibility",slug:"features-and-compatibility"},{level:2,title:"How to activate and use LNbank",slug:"how-to-activate-and-use-lnbank"},{level:3,title:"Server admin",slug:"server-admin"},{level:3,title:"User",slug:"user"},{level:2,title:"Support this plugin",slug:"support-this-plugin"}]},{title:"Troubleshooting",frontmatter:{editLink:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank/edit/master/docs/Troubleshooting.md",externalRepo:"https://github.com/dennisreimann/btcpayserver-plugin-lnbank"},regularPath:"/LNbank/Troubleshooting.html",relativePath:"LNbank/Troubleshooting.md",key:"v-7a7299c2",path:"/LNbank/Troubleshooting/",headers:[{level:2,title:"Debugging connection problems",slug:"debugging-connection-problems"},{level:3,title:"DNS problems",slug:"dns-problems"},{level:3,title:"For Cloudflare users",slug:"for-cloudflare-users"},{level:3,title:"Using cURL for debugging",slug:"using-curl-for-debugging"},{level:2,title:"Manual deployment",slug:"manual-deployment"}]},{title:"Connecting Ledger Wallet to BTCPay Server",frontmatter:{},regularPath:"/LedgerWallet.html",relativePath:"LedgerWallet.md",key:"v-1a5789ad",path:"/LedgerWallet/",headers:[{level:2,title:"Ledger Nano S Wallet Setup",slug:"ledger-nano-s-wallet-setup"},{level:3,title:"Requirements",slug:"requirements"},{level:3,title:"Quick Setup",slug:"quick-setup"},{level:3,title:"Spending from BTCPay Server wallet with Ledger",slug:"spending-from-btcpay-server-wallet-with-ledger"}]},{title:"Lightning Network (LN) and BTCPay Server",frontmatter:{},regularPath:"/LightningNetwork.html",relativePath:"LightningNetwork.md",key:"v-6761eaa9",path:"/LightningNetwork/",headers:[{level:2,title:"Overview",slug:"overview"},{level:2,title:"Choosing the Lightning Network implementation",slug:"choosing-the-lightning-network-implementation"},{level:2,title:"Lightning node configuration in BTCPay Server",slug:"lightning-node-configuration-in-btcpay-server"},{level:3,title:"Connecting your internal Lightning Node",slug:"connecting-your-internal-lightning-node"},{level:3,title:"Connecting an external Lightning Node in BTCPay Server",slug:"connecting-an-external-lightning-node-in-btcpay-server"},{level:2,title:"Getting started with BTCPay Server and LND",slug:"getting-started-with-btcpay-server-and-lnd"},{level:3,title:"Control your LND using Ride The Lightning (RTL)",slug:"control-your-lnd-using-ride-the-lightning-rtl"},{level:3,title:"Control your LND using Zap",slug:"control-your-lnd-using-zap"},{level:3,title:"Control your LND using Lightning Joule",slug:"control-your-lnd-using-lightning-joule"},{level:3,title:"Control your LND via the command-line: lncli",slug:"control-your-lnd-via-the-command-line-lncli"},{level:2,title:"Getting started with BTCPay Server and Core Lightning (CLN)",slug:"getting-started-with-btcpay-server-and-core-lightning-cln"},{level:3,title:"Control your CLN using Ride The Lightning (RTL)",slug:"control-your-cln-using-ride-the-lightning-rtl"},{level:3,title:"Control your CLN via the command-line: lightning-cli",slug:"control-your-cln-via-the-command-line-lightning-cli"},{level:2,title:"Lightning node backup",slug:"lightning-node-backup"},{level:3,title:"Funding your on-chain wallet",slug:"funding-your-on-chain-wallet"}]},{title:"Opening and operating payment channels",frontmatter:{},regularPath:"/LightningNetwork_PaymentChannels.html",relativePath:"LightningNetwork_PaymentChannels.md",key:"v-25de27bb",path:"/LightningNetwork_PaymentChannels/"},{title:"BTCPay Magento Integration",frontmatter:{},regularPath:"/Magento.html",relativePath:"Magento.md",key:"v-78fb4ca5",path:"/Magento/",headers:[{level:2,title:"Magento 1",slug:"magento-1"},{level:2,title:"Magento 2",slug:"magento-2"}]},{title:"API Specification",frontmatter:{editLink:"https://github.com/dgarage/NBXplorer/edit/master/docs/API.md",externalRepo:"https://github.com/dgarage/NBXplorer"},regularPath:"/NBXplorer/API.html",relativePath:"NBXplorer/API.md",key:"v-20a8c736",path:"/NBXplorer/API/",headers:[{level:2,title:"Table of content",slug:"table-of-content"},{level:2,title:"Configuration",slug:"configuration"},{level:2,title:"Authentication",slug:"authentication"},{level:2,title:"Derivation Scheme Format",slug:"derivation-scheme-format"},{level:2,title:"Track a derivation scheme",slug:"track-a-derivation-scheme"},{level:2,title:"Track a specific address",slug:"track-a-specific-address"},{level:2,title:"Query transactions associated to a derivationScheme",slug:"query-transactions-associated-to-a-derivationscheme"},{level:2,title:"Query transactions associated to a specific address",slug:"query-transactions-associated-to-a-specific-address"},{level:2,title:"Query a single transaction associated to a address or derivation scheme",slug:"query-a-single-transaction-associated-to-a-address-or-derivation-scheme"},{level:2,title:"Get current balance",slug:"get-current-balance"},{level:2,title:"Get a transaction",slug:"get-a-transaction"},{level:2,title:"Get connection status to the chain",slug:"get-connection-status-to-the-chain"},{level:2,title:"Get a new unused address",slug:"get-a-new-unused-address"},{level:2,title:"Get scriptPubKey information of a Derivation Scheme",slug:"get-scriptpubkey-information-of-a-derivation-scheme"},{level:2,title:"Get available Unspent Transaction Outputs (UTXOs)",slug:"get-available-unspent-transaction-outputs-utxos"},{level:2,title:"Get available Unspent Transaction Outputs of a specific address",slug:"get-available-unspent-transaction-outputs-of-a-specific-address"},{level:2,title:"Notifications via websocket",slug:"notifications-via-websocket"},{level:2,title:"Broadcast a transaction",slug:"broadcast-a-transaction"},{level:2,title:"Rescan a transaction",slug:"rescan-a-transaction"},{level:2,title:"Get fee rate",slug:"get-fee-rate"},{level:2,title:"Scan UTXO Set",slug:"scan-utxo-set"},{level:2,title:"Get scan status",slug:"get-scan-status"},{level:2,title:"Wipe derivation scheme transactions",slug:"wipe-derivation-scheme-transactions"},{level:2,title:"Query event stream",slug:"query-event-stream"},{level:2,title:"Query event stream (from most recent)",slug:"query-event-stream-from-most-recent"},{level:2,title:"Create Partially Signed Bitcoin Transaction",slug:"create-partially-signed-bitcoin-transaction"},{level:2,title:"Update Partially Signed Bitcoin Transaction",slug:"update-partially-signed-bitcoin-transaction"},{level:2,title:"Attach metadata to a derivation scheme",slug:"attach-metadata-to-a-derivation-scheme"},{level:2,title:"Detach metadata from a derivation scheme",slug:"detach-metadata-from-a-derivation-scheme"},{level:2,title:"Retrieve metadata from a derivation scheme",slug:"retrieve-metadata-from-a-derivation-scheme"},{level:2,title:"Manual pruning",slug:"manual-pruning"},{level:2,title:"Generate a wallet",slug:"generate-a-wallet"},{level:2,title:"Node RPC Proxy",slug:"node-rpc-proxy"},{level:2,title:"Health check",slug:"health-check"},{level:2,title:"Liquid integration",slug:"liquid-integration"},{level:3,title:"Liquid Confidential Addresses",slug:"liquid-confidential-addresses"},{level:3,title:"Liquid Transactions support",slug:"liquid-transactions-support"}]},{title:"Migration from DBTrie backend to Postgres backend",frontmatter:{editLink:"https://github.com/dgarage/NBXplorer/edit/master/docs/Postgres-Migration.md",externalRepo:"https://github.com/dgarage/NBXplorer"},regularPath:"/NBXplorer/Postgres-Migration.html",relativePath:"NBXplorer/Postgres-Migration.md",key:"v-eee9bb82",path:"/NBXplorer/Postgres-Migration/"},{title:"Documentation of SQL Schema",frontmatter:{editLink:"https://github.com/dgarage/NBXplorer/edit/master/docs/Postgres-Schema.md",externalRepo:"https://github.com/dgarage/NBXplorer"},regularPath:"/NBXplorer/Postgres-Schema.html",relativePath:"NBXplorer/Postgres-Schema.md",key:"v-6a07ad05",path:"/NBXplorer/Postgres-Schema/",headers:[{level:2,title:"Using wallets tables",slug:"using-wallets-tables"},{level:2,title:"Making your own indexer",slug:"making-your-own-indexer"},{level:2,title:"Views and functions",slug:"views-and-functions"},{level:3,title:"Function: to_btc",slug:"function-to-btc"},{level:3,title:"Function: getwalletsrecent",slug:"function-get-wallets-recent"},{level:3,title:"View: utxos",slug:"view-utxos"},{level:3,title:"View: descriptorsscriptsunused",slug:"view-descriptors-scripts-unused"},{level:3,title:"View: wallets_utxos",slug:"view-wallets-utxos"},{level:3,title:"View: wallets_balances",slug:"view-wallets-balances"},{level:3,title:"Materialized view: wallets_history",slug:"materialized-view-wallets-history"},{level:3,title:"Function: getwalletshistogram",slug:"function-get-wallets-histogram"},{level:3,title:"Function: nbxv1getwallet_id",slug:"function-nbxv1-get-wallet-id"},{level:3,title:"Function: nbxv1getdescriptor_id",slug:"function-nbxv1-get-descriptor-id"}]},{title:"NBXplorer",frontmatter:{editLink:"https://github.com/dgarage/NBXplorer/edit/master/README.md",externalRepo:"https://github.com/dgarage/NBXplorer"},regularPath:"/NBXplorer/",relativePath:"NBXplorer/README.md",key:"v-e3db5fd8",path:"/NBXplorer/",headers:[{level:2,title:"Prerequisite",slug:"prerequisite"},{level:2,title:"API Specification",slug:"api-specification"},{level:2,title:"How to build and run?",slug:"how-to-build-and-run"},{level:2,title:"How to use the API?",slug:"how-to-use-the-api"},{level:2,title:"With Docker",slug:"with-docker"},{level:2,title:"How to develop on it?",slug:"how-to-develop-on-it"},{level:2,title:"How to configure?",slug:"how-to-configure"},{level:3,title:"Configuration file",slug:"configuration-file"},{level:3,title:"Command line parameters",slug:"command-line-parameters"},{level:3,title:"Environment variables",slug:"environment-variables"},{level:2,title:"How to Run",slug:"how-to-run"},{level:3,title:"Command Line",slug:"command-line"},{level:2,title:"Important Note",slug:"important-note"},{level:2,title:"How to query?",slug:"how-to-query"},{level:3,title:"Using Postman",slug:"using-postman"},{level:2,title:"Message Brokers",slug:"message-brokers"},{level:3,title:"Azure Service Bus",slug:"azure-service-bus"},{level:3,title:"Queues",slug:"queues"},{level:3,title:"Topics",slug:"topics"},{level:3,title:"RabbitMq",slug:"rabbitmq"},{level:2,title:"Client API",slug:"client-api"},{level:2,title:"How to run the tests?",slug:"how-to-run-the-tests"},{level:2,title:"How to add support to my altcoin",slug:"how-to-add-support-to-my-altcoin"},{level:2,title:"Licence",slug:"licence"},{level:2,title:"Special thanks",slug:"special-thanks"}]},{title:"BTCPay Server NIP05 Support",frontmatter:{editLink:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.NIP05/edit/master/docs/readme.md",externalRepo:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.NIP05"},regularPath:"/Nostr/",relativePath:"Nostr/readme.md",key:"v-2352e414",path:"/Nostr/",headers:[{level:2,title:"Usage",slug:"usage"}]},{title:"Notifications",frontmatter:{},regularPath:"/Notifications.html",relativePath:"Notifications.md",key:"v-88980e76",path:"/Notifications/",headers:[{level:2,title:"Notification Alerts",slug:"notification-alerts"},{level:2,title:"Server Emails",slug:"server-emails"},{level:2,title:"Store Emails",slug:"store-emails"},{level:3,title:"SMTP Email Setup",slug:"smtp-email-setup"},{level:2,title:"Forgot Password Email",slug:"forgot-password-email"},{level:2,title:"New User Confirmation Email",slug:"new-user-confirmation-email"},{level:2,title:"New User Invitation Email",slug:"new-user-invitation-email"},{level:2,title:"Custom Emails",slug:"custom-emails"},{level:2,title:"Email rules",slug:"email-rules"}]},{title:"OpenCart integration",frontmatter:{description:"How to integrate BTCPay Server into your OpenCart store.",tags:["OpenCart","Plugin","eCommerce"]},regularPath:"/OpenCart.html",relativePath:"OpenCart.md",key:"v-8d0f1fc6",path:"/OpenCart/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"1. Install BTCPay extension",slug:"1-install-btcpay-extension"},{level:3,title:"1.1 Install the extension from OpenCart admin dashboard",slug:"11-install-the-extension-from-opencart-admin-dashboard"},{level:3,title:"1.2 Download and install the extension from Marketplace or GitHub",slug:"12-download-and-install-the-extension-from-marketplace-or-github"},{level:3,title:"1.3 Install the extension",slug:"13-install-the-extension"},{level:2,title:"2. Connecting OpenCart and BTCPay Server",slug:"2-connecting-opencart-and-btcpay-server"},{level:3,title:"2.1 Configure BTCPay Server extension in OpenCart",slug:"21-configure-btcpay-server-extension-in-opencart"},{level:3,title:"2.2 Create an API key and configure permissions",slug:"22-create-an-api-key-and-configure-permissions"},{level:2,title:"3. Test the checkout",slug:"3-test-the-checkout"},{level:2,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:"Enable debug mode",slug:"enable-debug-mode"},{level:2,title:"The order states do not update, although the invoice has been paid.",slug:"the-order-states-do-not-update-although-the-invoice-has-been-paid"},{level:2,title:"I have trouble with using the extension or some other related questions.",slug:"i-have-trouble-with-using-the-extension-or-some-other-related-questions"}]},{title:"BTCPay Server Payjoin Guide",frontmatter:{},regularPath:"/Payjoin.html",relativePath:"Payjoin.md",key:"v-15132f85",path:"/Payjoin/",headers:[{level:2,title:"Enabling Payjoin as a merchant",slug:"enabling-payjoin-as-a-merchant"},{level:2,title:"Paying to Payjoin as a user",slug:"paying-to-payjoin-as-a-user"},{level:2,title:"Why did a payjoin not happen?",slug:"why-did-a-payjoin-not-happen"},{level:2,title:"Supported wallets",slug:"supported-wallets"}]},{title:"Payment Requests",frontmatter:{},regularPath:"/PaymentRequests.html",relativePath:"PaymentRequests.md",key:"v-e98912f6",path:"/PaymentRequests/",headers:[{level:2,title:"Payment Requests Video",slug:"payment-requests-video"},{level:2,title:"Customize Your Payment Requests",slug:"customize-your-payment-requests"},{level:2,title:"Create a Payment Request",slug:"create-a-payment-request"},{level:2,title:"Paid Request for Payment",slug:"paid-request-for-payment"},{level:2,title:"Customize Payment Requests",slug:"customize-payment-requests"}]},{title:"Payouts",frontmatter:{},regularPath:"/Payouts.html",relativePath:"Payouts.md",key:"v-15dab665",path:"/Payouts/",headers:[{level:2,title:"How does it work?",slug:"how-does-it-work"},{level:3,title:"Example",slug:"example"},{level:2,title:"Using Greenfield API",slug:"using-greenfield-api"}]},{title:"PodServer",frontmatter:{editLink:"https://github.com/dennisreimann/btcpayserver-plugin-podserver/edit/master/README.md",externalRepo:"https://github.com/dennisreimann/btcpayserver-plugin-podserver"},regularPath:"/PodServer/",relativePath:"PodServer/README.md",key:"v-49efd338",path:"/PodServer/",headers:[{level:2,title:"Use cases",slug:"use-cases"},{level:2,title:"Technicalities",slug:"technicalities"},{level:2,title:"Features and Compatibility",slug:"features-and-compatibility"},{level:2,title:"Notes",slug:"notes"},{level:2,title:"How to activate and use PodServer",slug:"how-to-activate-and-use-podserver"},{level:3,title:"Server admin",slug:"server-admin"},{level:3,title:"User",slug:"user"},{level:2,title:"Support this plugin",slug:"support-this-plugin"}]},{title:"Prestashop integration",frontmatter:{},regularPath:"/PrestaShop.html",relativePath:"PrestaShop.md",key:"v-68f6ac6a",path:"/PrestaShop/",headers:[{level:2,title:"Server Requirements",slug:"server-requirements"},{level:2,title:"Install BTCPay Plugin",slug:"install-btcpay-plugin"},{level:2,title:"Connecting the store",slug:"connecting-the-store"},{level:3,title:"Create the API key yourself",slug:"create-the-api-key-yourself"},{level:2,title:"3. Contribute",slug:"3-contribute"},{level:2,title:"PrestaShop Support",slug:"prestashop-support"}]},{title:"(1) Register account",frontmatter:{},regularPath:"/RegisterAccount.html",relativePath:"RegisterAccount.md",key:"v-f5202af6",path:"/RegisterAccount/",headers:[{level:2,title:"Account Registration",slug:"account-registration"},{level:3,title:"Configuring e-mail",slug:"configuring-e-mail"},{level:3,title:"Two-factor authentication",slug:"two-factor-authentication"}]},{title:"Reporting in BTCPay",frontmatter:{},regularPath:"/Reporting.html",relativePath:"Reporting.md",key:"v-40e08a05",path:"/Reporting/"},{title:"How to accept Bitcoin in Shopify",frontmatter:{},regularPath:"/Shopify.html",relativePath:"Shopify.md",key:"v-0597b005",path:"/Shopify/",headers:[{level:2,title:"Prerequisites:",slug:"prerequisites"},{level:2,title:"Setting up BTCPay Server with Shopify",slug:"setting-up-btcpay-server-with-shopify"}]},{title:"Shopware integration",frontmatter:{},regularPath:"/Shopware.html",relativePath:"Shopware.md",key:"v-21fce50b",path:"/Shopware/",headers:[{level:2,title:"Plugin for Shopware 6",slug:"plugin-for-shopware-6"},{level:2,title:"Plugin for Shopware 5",slug:"plugin-for-shopware-5"}]},{title:"Support",frontmatter:{},regularPath:"/Support.html",relativePath:"Support.md",key:"v-7c2268b6",path:"/Support/",headers:[{level:2,title:"Free support",slug:"free-support"},{level:2,title:"Paid support",slug:"paid-support"}]},{title:"TicketTailor plugin for BTCPayServer",frontmatter:{editLink:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.TicketTailor/edit/master/README.md",externalRepo:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.TicketTailor"},regularPath:"/TicketTailor/",relativePath:"TicketTailor/README.md",key:"v-50ea01b4",path:"/TicketTailor/",headers:[{level:2,title:"Installation",slug:"installation"},{level:2,title:"Flow",slug:"flow"},{level:2,title:"Additional Configuration",slug:"additional-configuration"},{level:2,title:"Secret Tickets",slug:"secret-tickets"}]},{title:"Dollar Cost Averaging Automation",frontmatter:{editLink:"https://github.com/btcpayserver/btcTransmuter/edit/master/docs/DCA.md",externalRepo:"https://github.com/btcpayserver/btcTransmuter"},regularPath:"/Transmuter/DCA.html",relativePath:"Transmuter/DCA.md",key:"v-937bc12e",path:"/Transmuter/DCA/",headers:[{level:2,title:"Dollar Cost Averaging Automation",slug:"dollar-cost-averaging-automation"},{level:2,title:"Why use Transmuter instead of dedicated DCA services?",slug:"why-use-transmuter-instead-of-dedicated-dca-services"},{level:2,title:"Setup",slug:"setup"}]},{title:"BTCPay Email Receipts - Ticket Sale Guide",frontmatter:{editLink:"https://github.com/btcpayserver/btcTransmuter/edit/master/docs/EmailReceiptsPreset.md",externalRepo:"https://github.com/btcpayserver/btcTransmuter"},regularPath:"/Transmuter/EmailReceiptsPreset.html",relativePath:"Transmuter/EmailReceiptsPreset.md",key:"v-9c5e78fe",path:"/Transmuter/EmailReceiptsPreset/",headers:[{level:2,title:"How the Ticket Sale System Works",slug:"how-the-ticket-sale-system-works"},{level:2,title:"BTCPay POS App Setup",slug:"btcpay-pos-app-setup"},{level:2,title:"Transmuter Email Receipts Setup",slug:"transmuter-email-receipts-setup"}]},{title:"BtcTransmuter Docs",frontmatter:{editLink:"https://github.com/btcpayserver/btcTransmuter/edit/master/README.md",externalRepo:"https://github.com/btcpayserver/btcTransmuter"},regularPath:"/Transmuter/",relativePath:"Transmuter/README.md",key:"v-784978e6",path:"/Transmuter/",headers:[{level:2,title:"Introduction - What is BtcTransmuter?",slug:"introduction-what-is-btctransmuter"},{level:2,title:"How does it work?",slug:"how-does-it-work"},{level:2,title:"Can I use this in production",slug:"can-i-use-this-in-production"},{level:2,title:"How do I deploy?",slug:"how-do-i-deploy"},{level:2,title:"What extensions are provided?",slug:"what-extensions-are-provided"},{level:2,title:"What preset recipes are provided?",slug:"what-preset-recipes-are-provided"},{level:2,title:"How do I write an extension?",slug:"how-do-i-write-an-extension"},{level:3,title:"Adding a Trigger",slug:"adding-a-trigger"},{level:3,title:"Adding an Action",slug:"adding-an-action"},{level:3,title:"Adding an External Service",slug:"adding-an-external-service"}]},{title:"Trocador",frontmatter:{editLink:"https://github.com/saltrafael/trocador-plugin/edit/master/README.md",externalRepo:"https://github.com/saltrafael/trocador-plugin"},regularPath:"/Trocador/",relativePath:"Trocador/README.md",key:"v-604d19c6",path:"/Trocador/",headers:[{level:2,title:"Use Cases and Features",slug:"use-cases-and-features"},{level:2,title:"Caveats",slug:"caveats"},{level:2,title:"Compatibility",slug:"compatibility"},{level:2,title:"How to activate",slug:"how-to-activate"}]},{title:"Troubleshooting an issue in BTCPay Server",frontmatter:{},regularPath:"/Troubleshooting.html",relativePath:"Troubleshooting.md",key:"v-36032c85",path:"/Troubleshooting/",headers:[{level:2,title:"1. Replicating the issue",slug:"1-replicating-the-issue"},{level:3,title:"1.1 Updating the server",slug:"11-updating-the-server"},{level:3,title:"1.2 Restarting the server",slug:"12-restarting-the-server"},{level:3,title:"1.3 Restarting a service",slug:"13-restarting-a-service"},{level:2,title:"2. Looking through the logs",slug:"2-looking-through-the-logs"},{level:3,title:"2.1 BTCPay Logs",slug:"21-btcpay-logs"},{level:3,title:"2.2 Lightning Network Logs",slug:"22-lightning-network-logs"},{level:3,title:"2.2.1 - Lightning Network LND - Docker",slug:"221-lightning-network-lnd-docker"},{level:3,title:"2.2.2 - Lightning Network Core Lightning (CLN) - Docker",slug:"222-lightning-network-core-lightning-cln-docker"},{level:2,title:"2.3 - Bitcoin Node Logs",slug:"23-bitcoin-node-logs"},{level:2,title:"3. Finding a solution yourself (Google, FAQ, GitHub issues)",slug:"3-finding-a-solution-yourself-google-faq-github-issues"},{level:3,title:"3.1 BTCPay FAQ",slug:"31-btcpay-faq"},{level:3,title:"3.2 GitHub",slug:"32-github"},{level:3,title:"3.3 Mattermost",slug:"33-mattermost"},{level:2,title:"4. Asking for help",slug:"4-asking-for-help"},{level:3,title:"4.1 Asking the community (general problems)",slug:"41-asking-the-community-general-problems"},{level:3,title:"4.2 Opening an Issue on GitHub (advanced problems)",slug:"42-opening-an-issue-on-github-advanced-problems"},{level:3,title:"4.3 Premium Support",slug:"43-premium-support"},{level:3,title:"4.4 Lightning Network Support",slug:"44-lightning-network-support"}]},{title:"Try out BTCPay server",frontmatter:{},regularPath:"/TryItOut.html",relativePath:"TryItOut.md",key:"v-31f01d3e",path:"/TryItOut/",headers:[{level:2,title:"Our mainnet demo server",slug:"our-mainnet-demo-server"},{level:2,title:"Our Testnet demo server",slug:"our-testnet-demo-server"},{level:2,title:"Third-party hosts",slug:"third-party-hosts"},{level:2,title:"Start testing",slug:"start-testing"},{level:3,title:"BTCPay Server in action",slug:"btcpay-server-in-action"},{level:2,title:"Questions",slug:"questions"}]},{title:"Who can use BTCPay Server?",frontmatter:{description:"Who uses BTCPay Server and why? What are the benefits of using BTCPay Server over other payment gateways?",tags:["Use-case","Target-audience","BTCPay users","benefits"]},regularPath:"/UseCase.html",relativePath:"UseCase.md",key:"v-d4151eb6",path:"/UseCase/",headers:[{level:2,title:"Merchants",slug:"merchants"},{level:3,title:"Online stores",slug:"online-stores"},{level:3,title:"Physical stores",slug:"physical-stores"},{level:2,title:"Self-sovereign individuals",slug:"self-sovereign-individuals"},{level:2,title:"Freelancers & bill pay",slug:"freelancers-bill-pay"},{level:2,title:"Charities & non-profits",slug:"charities-non-profits"},{level:2,title:"Developers",slug:"developers"},{level:2,title:"Local communities",slug:"local-communities"},{level:2,title:"Cryptocurrency exchanges",slug:"cryptocurrency-exchanges"},{level:2,title:"Hosting providers",slug:"hosting-providers"}]},{title:"How to verify release signatures",frontmatter:{editLink:"https://github.com/btcpayserver/BTCPayServer.Vault/edit/master/docs/HowToVerify.md",externalRepo:"https://github.com/btcpayserver/BTCPayServer.Vault"},regularPath:"/Vault/HowToVerify.html",relativePath:"Vault/HowToVerify.md",key:"v-63822f36",path:"/Vault/HowToVerify/",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Checking PGP signatures",slug:"checking-pgp-signatures"},{level:3,title:"Importing Nicolas Dorier pgp keys (only first time)",slug:"importing-nicolas-dorier-pgp-keys-only-first-time"},{level:3,title:"Checking the actual PGP signature",slug:"checking-the-actual-pgp-signature"}]},{frontmatter:{editLink:"https://github.com/btcpayserver/BTCPayServer.Vault/edit/master/README.md",externalRepo:"https://github.com/btcpayserver/BTCPayServer.Vault"},regularPath:"/Vault/",relativePath:"Vault/README.md",key:"v-dae82c60",path:"/Vault/",headers:[{level:2,title:"Why BTCPayServer Vault",slug:"why-btcpayserver-vault"},{level:2,title:"How to install",slug:"how-to-install"},{level:3,title:"Direct download",slug:"direct-download"},{level:3,title:"Via brew (macOS only)",slug:"via-brew-macos-only"},{level:2,title:"How does BTCPayServer Vault work",slug:"how-does-btcpayserver-vault-work"},{level:2,title:"Is it safe?",slug:"is-it-safe"},{level:2,title:"How to build?",slug:"how-to-build"},{level:2,title:"Documentation",slug:"documentation"},{level:2,title:"Licence",slug:"licence"},{level:2,title:"Special thanks",slug:"special-thanks"}]},{title:"Joomla VirtueMart integration",frontmatter:{description:"How to integrate BTCPay Server into your Joomla VirtueMart store.",tags:["VirtueMart","Joomla","Plugin","eCommerce"]},regularPath:"/VirtueMart.html",relativePath:"VirtueMart.md",key:"v-0e38183b",path:"/VirtueMart/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"1. Install BTCPay Plugin",slug:"1-install-btcpay-plugin"},{level:3,title:"1.1 Install plugin from Joomla Admin Dashboard (recommended)",slug:"11-install-plugin-from-joomla-admin-dashboard-recommended"},{level:3,title:"1.2 Download and install plugin from JED or GitHub",slug:"12-download-and-install-plugin-from-jed-or-github"},{level:3,title:"1.3 Enable the plugin",slug:"13-enable-the-plugin"},{level:2,title:"2. Connecting VirtueMart and BTCPay Server",slug:"2-connecting-virtuemart-and-btcpay-server"},{level:3,title:"2.1 Add BTCPay payment gateway in VirtueMart",slug:"21-add-btcpay-payment-gateway-in-virtuemart"},{level:3,title:"2.2 Create an API key and configure permissions",slug:"22-create-an-api-key-and-configure-permissions"},{level:3,title:"2.3 Create a webhook on BTCPay Server",slug:"23-create-a-webhook-on-btcpay-server"},{level:2,title:"3. Test the checkout",slug:"3-test-the-checkout"},{level:2,title:"Customizing VirtueMart BTCPay payment method settings",slug:"customizing-virtuemart-btcpay-payment-method-settings"},{level:3,title:"Section: BTCPay Server connection settings",slug:"section-btcpay-server-connection-settings"},{level:3,title:"Section: Order states mapping",slug:"section-order-states-mapping"},{level:3,title:"Section: Restrictions",slug:"section-restrictions"},{level:3,title:"Section Discounts and fees",slug:"section-discounts-and-fees"},{level:2,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:'Error on checkout "There was an error processing the payment on BTCPay Server. Please try again and contact us if the problem persists."',slug:"error-on-checkout-there-was-an-error-processing-the-payment-on-btcpay-server-please-try-again-and-contact-us-if-the-problem-persists-"},{level:2,title:"The order states do not update although the invoice has been paid",slug:"the-order-states-do-not-update-although-the-invoice-has-been-paid"},{level:2,title:"I have troubles with using the plugin or some other related questions",slug:"i-have-troubles-with-using-the-plugin-or-some-other-related-questions"}]},{title:"The BTCPay Server Coinjoin plugin",frontmatter:{editLink:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.Wabisabi/edit/master/docs/readme.md",externalRepo:"https://github.com/Kukks/BTCPayServerPlugins/tree/master/Plugins/BTCPayServer.Plugins.Wabisabi"},regularPath:"/Wabisabi/",relativePath:"Wabisabi/readme.md",key:"v-315abc86",path:"/Wabisabi/",headers:[{level:2,title:"Installation",slug:"installation"},{level:2,title:"Usage",slug:"usage"},{level:2,title:"Spending privately",slug:"spending-privately"},{level:2,title:"Pleb mode vs Scientist mode",slug:"pleb-mode-vs-scientist-mode"},{level:2,title:"Additional Coordinators",slug:"additional-coordinators"},{level:2,title:"Running a coordinator",slug:"running-a-coordinator"}]},{title:"BTCPay Server Walkthrough",frontmatter:{},regularPath:"/Walkthrough.html",relativePath:"Walkthrough.md",key:"v-5bcac676",path:"/Walkthrough/",headers:[{level:2,title:"Store",slug:"store"},{level:2,title:"Notifications",slug:"notifications"},{level:2,title:"Dashboard",slug:"dashboard"},{level:2,title:"Wallets",slug:"wallets"},{level:3,title:"Bitcoin",slug:"bitcoin"},{level:3,title:"Lightning",slug:"lightning"},{level:2,title:"Payments",slug:"payments"},{level:3,title:"Invoices",slug:"invoices"},{level:3,title:"Payment Requests",slug:"payment-requests"},{level:3,title:"Pull Payments",slug:"pull-payments"},{level:3,title:"Payouts",slug:"payouts"},{level:3,title:"Pay Button",slug:"pay-button"},{level:2,title:"Apps",slug:"apps"},{level:2,title:"Plugins",slug:"plugins"},{level:2,title:"Server settings",slug:"server-settings"},{level:2,title:"Account",slug:"account"},{level:2,title:"Join The BTCPay Community",slug:"join-the-btcpay-community"}]},{title:"BTCPay Server Wallet",frontmatter:{},regularPath:"/Wallet.html",relativePath:"Wallet.md",key:"v-13a93ebf",path:"/Wallet/",headers:[{level:2,title:"Wallet features",slug:"wallet-features"},{level:3,title:"Transactions",slug:"transactions"},{level:3,title:"Send",slug:"send"},{level:3,title:"Receive",slug:"receive"},{level:3,title:"Pull Payments",slug:"pull-payments"},{level:3,title:"Payouts",slug:"payouts"},{level:3,title:"Re-scan",slug:"re-scan"},{level:3,title:"Settings",slug:"settings"}]},{title:"(3) Wallet Setup",frontmatter:{},regularPath:"/WalletSetup.html",relativePath:"WalletSetup.md",key:"v-8c111c76",path:"/WalletSetup/"},{title:"Connecting Wasabi Wallet to BTCPay Server",frontmatter:{},regularPath:"/WasabiWallet.html",relativePath:"WasabiWallet.md",key:"v-7d101341",path:"/WasabiWallet/",headers:[{level:2,title:"Wasabi Wallet Setup",slug:"wasabi-wallet-setup"},{level:2,title:"Quick Setup",slug:"quick-setup"},{level:2,title:"Step by Step",slug:"step-by-step"},{level:2,title:"Setup store wallet",slug:"setup-store-wallet"},{level:3,title:"Connecting Wasabi to BTCPay Server Full Node (If you're self-hosting BTCPay)",slug:"connecting-wasabi-to-btcpay-server-full-node-if-youre-self-hosting-btcpay"},{level:3,title:"Configuring the Gap Limit in Wasabi",slug:"configuring-the-gap-limit-in-wasabi"}]},{title:"(4) What's Next?",frontmatter:{},regularPath:"/WhatsNext.html",relativePath:"WhatsNext.md",key:"v-53d8e985",path:"/WhatsNext/",headers:[{level:2,title:"Creating the Point of Sale App",slug:"creating-the-point-of-sale-app"},{level:2,title:"Creating the Crowdfund App",slug:"creating-the-crowdfund-app"},{level:2,title:"Creating the Payment Request",slug:"creating-the-payment-request"},{level:2,title:"Creating the Pay Button",slug:"creating-the-pay-button"},{level:2,title:"Connecting your BTCPay store to your e-commerce platform",slug:"connecting-your-btcpay-store-to-your-e-commerce-platform"},{level:2,title:"Connecting Additional BTCPay Services",slug:"connecting-additional-btcpay-services"},{level:2,title:"Join The BTCPay Community",slug:"join-the-btcpay-community"}]},{title:"WooCommerce integration",frontmatter:{description:"How to integrate BTCPay Server into your WooCommerce store.",tags:["WooCommerce","WordPress","Plugin","eCommerce"]},regularPath:"/WooCommerce.html",relativePath:"WooCommerce.md",key:"v-faa5f0f6",path:"/WooCommerce/",headers:[{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"1. Install BTCPay Plugin",slug:"1-install-btcpay-plugin"},{level:3,title:"1.1 Install plugin from WordPress Admin Dashboard (recommended)",slug:"11-install-plugin-from-wordpress-admin-dashboard-recommended"},{level:3,title:"1.2 Download and install plugin from GitHub",slug:"12-download-and-install-plugin-from-github"},{level:2,title:"2. Connecting WooCommerce and BTCPay Server",slug:"2-connecting-woocommerce-and-btcpay-server"},{level:3,title:"2.1 Connect using the API key wizard (recommended)",slug:"21-connect-using-the-api-key-wizard-recommended"},{level:3,title:"2.2 Connect by manually creating the API key and permissions",slug:"22-connect-by-manually-creating-the-api-key-and-permissions"},{level:2,title:"3. Testing the checkout",slug:"3-testing-the-checkout"},{level:2,title:"4. Customizing BTCPay WooCommerce V2",slug:"4-customizing-btcpay-woocommerce-v2"},{level:3,title:"4.1 Global Settings",slug:"41-global-settings"},{level:3,title:"4.2 Payment Gateway specific",slug:"42-payment-gateway-specific"},{level:2,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:"Error: Call to undefined function BTCPayServer\\Http\\curl_init()",slug:"error-call-to-undefined-function-btcpayserver-http-curl-init"},{level:3,title:"The order states do not update although the invoice has been paid",slug:"the-order-states-do-not-update-although-the-invoice-has-been-paid"},{level:3,title:"I get an error during checkout but not sure what the problem is.",slug:"i-get-an-error-during-checkout-but-not-sure-what-the-problem-is"},{level:3,title:"I have troubles with using the plugin or some other related questions",slug:"i-have-troubles-with-using-the-plugin-or-some-other-related-questions"},{level:3,title:"Create a new API key",slug:"create-a-new-api-key"},{level:3,title:"I messed around with the webhook, how to fix",slug:"i-messed-around-with-the-webhook-how-to-fix"},{level:2,title:"Deploying WooCommerce from BTCPay Server",slug:"deploying-woocommerce-from-btcpay-server"}]},{title:"Easy Automation for BTCPay Server using Zapier.com - No Programming Skills Required",frontmatter:{editLink:"https://github.com/btcpayserver/zapier/edit/master/README.md",externalRepo:"https://github.com/btcpayserver/zapier"},regularPath:"/Zapier/",relativePath:"Zapier/README.md",key:"v-a6ea6734",path:"/Zapier/",headers:[{level:2,title:"Free to Use",slug:"free-to-use"},{level:2,title:"What does it do?",slug:"what-does-it-do"},{level:2,title:"Who is it for?",slug:"who-is-it-for"},{level:2,title:"Some Examples",slug:"some-examples"},{level:2,title:"Getting Started",slug:"getting-started"},{level:2,title:"Requirements",slug:"requirements"},{level:2,title:"Security Considerations",slug:"security-considerations"},{level:2,title:"Which permissions should I choose for my API key?",slug:"which-permissions-should-i-choose-for-my-api-key"},{level:2,title:"How does it work technically?",slug:"how-does-it-work-technically"},{level:2,title:"Troubleshooting",slug:"troubleshooting"},{level:3,title:"I got a 403 Forbidden error, what happened?",slug:"i-got-a-403-forbidden-error-what-happened"},{level:3,title:"I deleted the webhook from my BTCPay Server store by mistake.",slug:"i-deleted-the-webhook-from-my-btcpay-server-store-by-mistake"},{level:2,title:"Source Code, Issues and Feature Requests",slug:"source-code-issues-and-feature-requests"},{level:2,title:"Credits and Support",slug:"credits-and-support"}]},{title:"Pull payments",frontmatter:{},regularPath:"/PullPayments.html",relativePath:"PullPayments.md",key:"v-51df4a0d",path:"/PullPayments/",headers:[{level:2,title:"Introduction",slug:"introduction"},{level:2,title:"Concept",slug:"concept"},{level:2,title:"Greenfield API",slug:"greenfield-api"},{level:2,title:"User interface",slug:"user-interface"},{level:3,title:"Create a pull payment",slug:"create-a-pull-payment"},{level:3,title:"Approve and pay a payout",slug:"approve-and-pay-a-payout"},{level:2,title:"Additional use cases for the Pull Payments feature",slug:"additional-use-cases-for-the-pull-payments-feature"}]},{title:"Refunds",frontmatter:{},regularPath:"/Refund.html",relativePath:"Refund.md",key:"v-1dfa3141",path:"/Refund/",headers:[{level:2,title:"Create a refund",slug:"create-a-refund"},{level:2,title:"Processing refund",slug:"processing-refund"}]},{frontmatter:{layout:"Homepage",heroImage:"/img/btcpay-logo.svg",heroText:"BTCPay Server Documentation",tagline:"Start Accepting Bitcoin Payments With 0% Fees & No Third-party",features:[{title:"User Guide",details:"Guide for users and merchants using BTCPay Server.",actionText:"User Docs ❯",actionLink:"/Guide/"},{title:"Deployment",details:"Setting up and maintaining your BTCPay Server.",actionText:"Deployment Docs ❯",actionLink:"/Deployment/"},{title:"Development",details:"Docs for developers building on BTCPay Server.",actionText:"Developers Docs ❯",actionLink:"/Development/"}],footer:"Content Released under MIT license."},regularPath:"/",relativePath:"README.md",key:"v-dde32bd4",path:"/"}],themeConfig:{domain:"https://docs.btcpayserver.org",logo:"/img/btcpay-logo.svg",displayAllHeaders:!1,repo:"btcpayserver/btcpayserver-doc",docsDir:"docs",editLinks:!0,notSatisfiedLinks:!0,sidebarDepth:0,algolia:{indexName:"btcpayserver",appId:"EJBX059GO6",apiKey:"534cbeda78baf7eeb4767d555f2585d4",algoliaOptions:{typoTolerance:"min"},autocompleteOptions:{openOnFocus:!0}},nav:[{text:"User Guide",link:"/Guide/"},{text:"Deployment",link:"/Deployment/"},{text:"Developers",link:"/Development/"},{text:"Contribute",link:"/Contribute/"},{text:"FAQ",link:"/FAQ/"}],social:[{text:"Website",link:"https://btcpayserver.org/",rel:"noopener noreferrer website"},{text:"Chat",link:"https://chat.btcpayserver.org/",rel:"noopener noreferrer chat"},{text:"GitHub",link:"https://github.com/btcpayserver/",rel:"noopener noreferrer github"},{text:"Twitter",link:"https://twitter.com/BtcpayServer",rel:"noopener noreferrer twitter"}],sidebar:{"/Development":[{title:"Greenfield API",collapsable:!1,children:[["https://docs.btcpayserver.org/API/Greenfield/v1","Greenfield API v1",{type:"external"}],"/BTCPayServer/greenfield-authorization","/Development/GreenFieldExample","/Development/GreenFieldExample-NodeJS","/Development/GreenfieldExample-PHP"]},{title:"Development",collapsable:!1,children:["/Development/","/Development/LocalDevelopment",["/BTCPayServer/greenfield-development","Greenfield API Development"],"/Development/Plugins","/Development/Altcoins","/Development/InvoiceMetadata","/Development/Theme"]},{title:"NBXplorer",collapsable:!1,children:[["/NBXplorer/","Overview"],"/NBXplorer/API",["/NBXplorer/Postgres-Schema","Postgres Schema"],["/NBXplorer/Postgres-Migration","Postgres Migration"]]},{title:"More",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"BTCPay Server Vault",path:"/Vault/",children:["/Vault/HowToVerify"]},["/BTCPayServer/Security","Security Disclosures"],["/Development/TestnetDemo","Testnet deployment"]]}],"/Contribute":[{title:"Contribute",path:"/Contribute/",collapsable:!1,children:[{title:"Code",path:"/Contribute/Dev",collapsable:!1,children:["/Contribute/DevCode","/Contribute/DevTest"]},{title:"Write",path:"/Contribute/Write",collapsable:!1,children:[["/Contribute/WriteSoftware","Software Stack"],["/Contribute/WriteDocs","Documentation"],["/Contribute/WriteBlog","Blog"]]},["/Contribute/Design","Design"],["/Contribute/Translate","Translate"],["/Contribute/Misc","Miscellaneous"]]}],"/Vault":[{title:"Greenfield API",collapsable:!1,children:[["https://docs.btcpayserver.org/API/Greenfield/v1","Greenfield API v1",{type:"external"}],"/BTCPayServer/greenfield-authorization","/Development/GreenFieldExample","/Development/GreenFieldExample-NodeJS","/Development/GreenfieldExample-PHP"]},{title:"Development",collapsable:!1,children:["/Development/","/Development/LocalDevelopment",["/BTCPayServer/greenfield-development","Greenfield API Development"],"/Development/Plugins","/Development/Altcoins","/Development/InvoiceMetadata","/Development/Theme"]},{title:"NBXplorer",collapsable:!1,children:[["/NBXplorer/","Overview"],"/NBXplorer/API",["/NBXplorer/Postgres-Schema","Postgres Schema"],["/NBXplorer/Postgres-Migration","Postgres Migration"]]},{title:"More",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"BTCPay Server Vault",path:"/Vault/",children:["/Vault/HowToVerify"]},["/BTCPayServer/Security","Security Disclosures"],["/Development/TestnetDemo","Testnet deployment"]]}],"/BTCPayServer":[{title:"Greenfield API",collapsable:!1,children:[["https://docs.btcpayserver.org/API/Greenfield/v1","Greenfield API v1",{type:"external"}],"/BTCPayServer/greenfield-authorization","/Development/GreenFieldExample","/Development/GreenFieldExample-NodeJS","/Development/GreenfieldExample-PHP"]},{title:"Development",collapsable:!1,children:["/Development/","/Development/LocalDevelopment",["/BTCPayServer/greenfield-development","Greenfield API Development"],"/Development/Plugins","/Development/Altcoins","/Development/InvoiceMetadata","/Development/Theme"]},{title:"NBXplorer",collapsable:!1,children:[["/NBXplorer/","Overview"],"/NBXplorer/API",["/NBXplorer/Postgres-Schema","Postgres Schema"],["/NBXplorer/Postgres-Migration","Postgres Migration"]]},{title:"More",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"BTCPay Server Vault",path:"/Vault/",children:["/Vault/HowToVerify"]},["/BTCPayServer/Security","Security Disclosures"],["/Development/TestnetDemo","Testnet deployment"]]}],"/NBXplorer":[{title:"Greenfield API",collapsable:!1,children:[["https://docs.btcpayserver.org/API/Greenfield/v1","Greenfield API v1",{type:"external"}],"/BTCPayServer/greenfield-authorization","/Development/GreenFieldExample","/Development/GreenFieldExample-NodeJS","/Development/GreenfieldExample-PHP"]},{title:"Development",collapsable:!1,children:["/Development/","/Development/LocalDevelopment",["/BTCPayServer/greenfield-development","Greenfield API Development"],"/Development/Plugins","/Development/Altcoins","/Development/InvoiceMetadata","/Development/Theme"]},{title:"NBXplorer",collapsable:!1,children:[["/NBXplorer/","Overview"],"/NBXplorer/API",["/NBXplorer/Postgres-Schema","Postgres Schema"],["/NBXplorer/Postgres-Migration","Postgres Migration"]]},{title:"More",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"BTCPay Server Vault",path:"/Vault/",children:["/Vault/HowToVerify"]},["/BTCPayServer/Security","Security Disclosures"],["/Development/TestnetDemo","Testnet deployment"]]}],"/Configurator":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/Deployment":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/Docker":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/ElectrumX":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/ElectrumPersonalServer":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/Transmuter":[{title:"Deployment",collapsable:!1,children:["/Deployment/","/Deployment/ThirdPartyHosting","/Configurator/"]},{title:"Docker",collapsable:!1,children:[["/Docker/","Introduction"],{title:"Web/Cloud Deployment",path:"/Deployment/webdeployment",collapsable:!1,children:[["/Deployment/LunaNode","Luna Node"],["/Deployment/voltagecloud","Voltage Cloud"],["/Deployment/Clovyr","Clovyr"],["/Deployment/DreamlabNetwork","Dream Lab Network"],{title:"Azure",path:"/Deployment/Azure",children:[["/Deployment/AzurePennyPinching","Reducing Cost on Azure"]]},{title:"Google Cloud",path:"/Deployment/GoogleCloud"}]},{title:"Hardware Deployment",path:"/Deployment/Hardware",collapsable:!1,children:[{title:"Raspberry Pi Deployment",path:"/Deployment/RaspberryPi4"},{title:"Hack0 Deployment",path:"/Deployment/Hack0"},{title:"LightningInABox Deployment",path:"/Deployment/LightningInABox"},["/Deployment/DynamicDNS","Dynamic DNS"],["/Docker/cloudflare-tunnel","Exposing on clearnet with Cloudflare"],["/Deployment/ReverseSSHtunnel","Exposing on clearnet with a reverse SSH Tunnel"],["/Deployment/ReverseProxyToTor","Exposing on Tor"],{title:"Hardware As A Service",path:"/Deployment/HardwareAsAService"}]},{title:"Docker Plugins",children:[{title:"Transmuter",path:"/Transmuter/",children:[["/Transmuter/DCA","Dollar Cost Average Preset"],["/Transmuter/EmailReceiptsPreset","Email Receipts Preset"]]},["/ElectrumX","Electrum X"],["/ElectrumPersonalServer","Electrum Personal Server"],"/Docker/joinmarket","/Docker/pihole","/Docker/fireflyiii","/Docker/ndlc","/Docker/lightning-terminal","/Docker/tallycoin-connect","/Docker/cloudflare-tunnel"]},{title:"FastSync",path:"/Docker/fastsync"},{title:"Backup & Restore",path:"/Docker/backup-restore"}]},{title:"Manual Deployment",collapsable:!1,children:["/Deployment/ManualDeployment","/Deployment/ManualDeploymentExtended"]}],"/FAQ/":[{title:"FAQ and common issues",path:"/FAQ/",collapsable:!1,children:["General","Deployment","Synchronization","Integrations","ServerSettings","Stores","Wallet","Apps","LightningNetwork","Altcoin"]}],"/":[{title:"Learn",collapsable:!1,children:[["/Guide","Introduction"],["/TryItOut","Try it out"],["/Walkthrough","Walkthrough"],["/UseCase","Use Case"],["/BTCPayVsOthers","BTCPay Server vs. Others"]]},{title:"Getting Started",collapsable:!1,children:["/RegisterAccount","/CreateStore",{title:"(3) Wallet Setup",path:"/WalletSetup",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"Connect Wallet",path:"/ConnectWallet"},{title:"Create Wallet",path:"/CreateWallet"},{title:"Lightning Network",path:"/LightningNetwork"}]},["/WhatsNext","(4) What's Next?"]]},{title:"Features",collapsable:!1,children:[["/Dashboard","Dashboard"],{title:"Wallet",path:"/Wallet",children:[["/HardwareWalletIntegration","Hardware Wallet Integration"]]},["/Invoices","Invoices"],["/PaymentRequests","Payment Requests"],{title:"Pull Payments",path:"/PullPayments",children:[["/Refund","Refunds"]]},["/Payouts","Payouts"],{title:"Form Builder",path:"/Forms",children:[["/AdvancedForms","Advanced Forms"]]},["/Apps","Apps"],["/Reporting","Reporting"],{title:"Payjoin",path:"/Payjoin",children:[["https://github.com/bitcoin/bips/blob/master/bip-0078.mediawiki","Payjoin specification",{type:"external"}]]}]},{title:"Integrations",collapsable:!1,children:[["/WooCommerce","WooCommerce"],["/Shopify","Shopify"],["/Magento","Magento"],["/PrestaShop","PrestaShop"],["/OpenCart","OpenCart"],["/Drupal","Drupal"],["/Zapier/","Zapier"],["/Shopware","Shopware"],["/VirtueMart","VirtueMart"],["/CustomIntegration","Custom Integration"]]},{title:"Plugins",collapsable:!1,initialOpenGroupIndex:-1,children:[{title:"LNbank",path:"/LNbank/",children:[["/LNbank/LNDhub","LNDhub Compatibility"],["/LNbank/Troubleshooting","Troubleshooting"]]},["/LNDhubAPI/","LNDhub API"],["/Nostr/","Nostr"],["/PodServer/","PodServer"],["/TicketTailor/","TicketTailor"],["/Trocador/","Trocador"],["/Wabisabi/","Wabisabi Coinjoin"]]},{title:"Support and Community",collapsable:!1,initialOpenGroupIndex:-1,children:[["/Troubleshooting","Troubleshooting an issue"],["/Support","Support"],["/Community","Community"]]}]}}},ql=n(228),{COLOR_MODES:Ql,STORE_ATTR:Gl,setColorMode:Vl}=n(91),Ul=e=>"Enter"===e.code||13===(e.keyCode||e.which),Xl=e=>{const t=e.target.matches("#algolia-search-input")&&Ul(e);(e.target.matches(".ds-dropdown-menu *")||t)&&document.getElementById("algolia-search-input").blur(),e.target.matches(".ytEmbed")&&(e.preventDefault(),(e=>{const t=e.querySelector("iframe[data-src]");if(t){const e=t.getAttribute("data-src");t.setAttribute("src",e)}})(e.target))};if("undefined"==typeof process||"server"!==process.env.VUE_ENV){const e=window.matchMedia("(prefers-color-scheme: dark)").matches?Ql[1]:Ql[0],t=window.localStorage.getItem(Gl);Vl(Ql.includes(t)?t:e)}n(229);Gn.component("Badge",()=>Promise.all([n.e(0),n.e(45)]).then(n.bind(null,806))),Gn.component("CodeBlock",()=>Promise.all([n.e(0),n.e(46)]).then(n.bind(null,669))),Gn.component("CodeGroup",()=>Promise.all([n.e(0),n.e(47)]).then(n.bind(null,670)));n(230);var Kl=[({router:e})=>{"undefined"!=typeof process&&"server"===process.env.VUE_ENV||(e.onReady(()=>{const{app:t}=e;ql.forEach(t=>e.addRoute(t)),document.addEventListener("click",Xl),document.addEventListener("keyup",e=>{Ul(e)&&Xl(e)})}),e.afterEach(e=>{const{hash:t}=e;t.length>1&&setTimeout(()=>{const e=t.substring(1),n=document.getElementById(e);n&&n.scrollIntoView()},500)}))},{},({Vue:e})=>{e.mixin({computed:{$dataBlock(){return this.$options.__data__block__}}})},{},{},({Vue:e})=>{e.component("CodeCopy",Al)}],Jl=[];class Yl extends class{constructor(){this.store=new Gn({data:{state:{}}})}$get(e){return this.store.state[e]}$set(e,t){Gn.set(this.store.state,e,t)}$emit(...e){this.store.$emit(...e)}$on(...e){this.store.$on(...e)}}{}Object.assign(Yl.prototype,{getPageAsyncComponent:al,getLayoutAsyncComponent:ll,getAsyncComponent:sl,getVueComponent:cl});var Zl={install(e){const t=new Yl;e.$vuepress=t,e.prototype.$vuepress=t}};function es(e,t){const n=t.toLowerCase();return e.options.routes.some(e=>e.path.toLowerCase()===n)}var ts={props:{pageKey:String,slotKey:{type:String,default:"default"}},render(e){const t=this.pageKey||this.$parent.$page.key;return pl("pageKey",t),Gn.component(t)||Gn.component(t,al(t)),Gn.component(t)?e(t):e("")}},ns={functional:!0,props:{slotKey:String,required:!0},render:(e,{props:t,slots:n})=>e("div",{class:["content__"+t.slotKey]},n()[t.slotKey])},rs={computed:{openInNewWindowTitle(){return this.$themeLocaleConfig.openNewWindowText||"(opens new window)"}}},os=(n(231),n(232),Object(Tl.a)(rs,(function(){var e=this._self._c;return e("span",[e("svg",{staticClass:"icon outbound",attrs:{xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",x:"0px",y:"0px",viewBox:"0 0 100 100",width:"15",height:"15"}},[e("path",{attrs:{fill:"currentColor",d:"M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"}}),this._v(" "),e("polygon",{attrs:{fill:"currentColor",points:"45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"}})]),this._v(" "),e("span",{staticClass:"sr-only"},[this._v(this._s(this.openInNewWindowTitle))])])}),[],!1,null,null,null).exports),is={functional:!0,render(e,{parent:t,children:n}){if(t._isMounted)return n;t.$once("hook:mounted",()=>{t.$forceUpdate()})}};Gn.config.productionTip=!1,Gn.use(qa),Gn.use(Zl),Gn.mixin(function(e,t,n=Gn){!function(e){e.locales&&Object.keys(e.locales).forEach(t=>{e.locales[t].path=t});Object.freeze(e)}(t),n.$vuepress.$set("siteData",t);const r=new(e(n.$vuepress.$get("siteData"))),o=Object.getOwnPropertyDescriptors(Object.getPrototypeOf(r)),i={};return Object.keys(o).reduce((e,t)=>(t.startsWith("$")&&(e[t]=o[t].get),e),i),{computed:i}}(e=>class{setPage(e){this.__page=e}get $site(){return e}get $themeConfig(){return this.$site.themeConfig}get $frontmatter(){return this.$page.frontmatter}get $localeConfig(){const{locales:e={}}=this.$site;let t,n;for(const r in e)"/"===r?n=e[r]:0===this.$page.path.indexOf(r)&&(t=e[r]);return t||n||{}}get $siteTitle(){return this.$localeConfig.title||this.$site.title||""}get $canonicalUrl(){const{canonicalUrl:e}=this.$page.frontmatter;return"string"==typeof e&&e}get $title(){const e=this.$page,{metaTitle:t}=this.$page.frontmatter;if("string"==typeof t)return t;const n=this.$siteTitle,r=e.frontmatter.home?null:e.frontmatter.title||e.title;return n?r?r+" | "+n:n:r||"VuePress"}get $description(){const e=function(e){if(e){const t=e.filter(e=>"description"===e.name)[0];if(t)return t.content}}(this.$page.frontmatter.meta);return e||(this.$page.frontmatter.description||this.$localeConfig.description||this.$site.description||"")}get $lang(){return this.$page.frontmatter.lang||this.$localeConfig.lang||"en-US"}get $localePath(){return this.$localeConfig.path||"/"}get $themeLocaleConfig(){return(this.$site.themeConfig.locales||{})[this.$localePath]||{}}get $page(){return this.__page?this.__page:function(e,t){for(let n=0;nn||(e.hash?!Gn.$vuepress.$get("disableScrollBehavior")&&{selector:decodeURIComponent(e.hash)}:{x:0,y:0})});!function(e){e.beforeEach((t,n,r)=>{if(es(e,t.path))r();else if(/(\/|\.html)$/.test(t.path))if(/\/$/.test(t.path)){const n=t.path.replace(/\/$/,"")+".html";es(e,n)?r(n):r()}else r();else{const n=t.path+"/",o=t.path+".html";es(e,o)?r(o):es(e,n)?r(n):r()}})}(n);const r={};try{await Promise.all(Kl.filter(e=>"function"==typeof e).map(t=>t({Vue:Gn,options:r,router:n,siteData:zl,isServer:e})))}catch(e){console.error(e)}return{app:new Gn(Object.assign(r,{router:n,render:e=>e("div",{attrs:{id:"app"}},[e("RouterView",{ref:"layout"}),e("div",{class:"global-ui"},Jl.map(t=>e(t)))])})),router:n}}(!1).then(({app:e,router:t})=>{t.onReady(()=>{e.$mount("#app")})})}]); \ No newline at end of file diff --git a/index.html b/index.html index 4a677c7098..da50d9d81a 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,7 @@ - + @@ -23,7 +23,7 @@ Deployment Docs ❯

    Development

    Docs for developers building on BTCPay Server.

    Developers Docs ❯ -

    Our Supporters

    The BTCPay Server Project is proudly supported by these entities through the BTCPay Server Foundation.

    If you'd like to support the project, please visit the donation page.

    - + diff --git a/sitemap.xml b/sitemap.xml index a6d0ff243c..acb792cbd6 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://docs.btcpayserver.org/AdvancedForms/dailyhttps://docs.btcpayserver.org/Apps/dailyhttps://docs.btcpayserver.org/BTCPayServer/LocalDevSetup/dailyhttps://docs.btcpayserver.org/BTCPayServer/Security/dailyhttps://docs.btcpayserver.org/BTCPayServer/db-migration/dailyhttps://docs.btcpayserver.org/BTCPayServer/greenfield-authorization/dailyhttps://docs.btcpayserver.org/BTCPayServer/greenfield-development/dailyhttps://docs.btcpayserver.org/BTCPayVsOthers/dailyhttps://docs.btcpayserver.org/ColdCardWallet/dailyhttps://docs.btcpayserver.org/Community/dailyhttps://docs.btcpayserver.org/Configurator/dailyhttps://docs.btcpayserver.org/ConnectWallet/dailyhttps://docs.btcpayserver.org/Contribute/Design/dailyhttps://docs.btcpayserver.org/Contribute/Dev/dailyhttps://docs.btcpayserver.org/Contribute/DevCode/dailyhttps://docs.btcpayserver.org/Contribute/DevTest/dailyhttps://docs.btcpayserver.org/Contribute/Misc/dailyhttps://docs.btcpayserver.org/Contribute/dailyhttps://docs.btcpayserver.org/Contribute/Translate/dailyhttps://docs.btcpayserver.org/Contribute/Write/dailyhttps://docs.btcpayserver.org/Contribute/WriteBlog/dailyhttps://docs.btcpayserver.org/Contribute/WriteDocs/dailyhttps://docs.btcpayserver.org/CreateStore/dailyhttps://docs.btcpayserver.org/CreateWallet/dailyhttps://docs.btcpayserver.org/CustomIntegration/dailyhttps://docs.btcpayserver.org/Contribute/WriteSoftware/dailyhttps://docs.btcpayserver.org/Dashboard/dailyhttps://docs.btcpayserver.org/Deployment/Azure/dailyhttps://docs.btcpayserver.org/Deployment/AzurePennyPinching/dailyhttps://docs.btcpayserver.org/Deployment/Clovyr/dailyhttps://docs.btcpayserver.org/Deployment/DreamlabNetwork/dailyhttps://docs.btcpayserver.org/Deployment/DynamicDNS/dailyhttps://docs.btcpayserver.org/Deployment/GoogleCloud/dailyhttps://docs.btcpayserver.org/Deployment/Hack0/dailyhttps://docs.btcpayserver.org/Deployment/Hardware/dailyhttps://docs.btcpayserver.org/Deployment/LightningInABox/dailyhttps://docs.btcpayserver.org/Deployment/LunaNode/dailyhttps://docs.btcpayserver.org/Deployment/HardwareAsAService/dailyhttps://docs.btcpayserver.org/Deployment/ManualDeployment/dailyhttps://docs.btcpayserver.org/Deployment/ManualDeploymentExtended/dailyhttps://docs.btcpayserver.org/Deployment/dailyhttps://docs.btcpayserver.org/Deployment/RaspberryPi4/dailyhttps://docs.btcpayserver.org/Deployment/ReverseProxyToTor/dailyhttps://docs.btcpayserver.org/Deployment/ReverseSSHtunnel/dailyhttps://docs.btcpayserver.org/Deployment/ThirdPartyHosting/dailyhttps://docs.btcpayserver.org/Deployment/voltagecloud/dailyhttps://docs.btcpayserver.org/Deployment/webdeployment/dailyhttps://docs.btcpayserver.org/Development/Altcoins/dailyhttps://docs.btcpayserver.org/Development/GreenFieldExample-NodeJS/dailyhttps://docs.btcpayserver.org/Development/GreenFieldExample/dailyhttps://docs.btcpayserver.org/Development/GreenfieldExample-PHP/dailyhttps://docs.btcpayserver.org/Development/InvoiceMetadata/dailyhttps://docs.btcpayserver.org/Development/LocalDev/dailyhttps://docs.btcpayserver.org/Development/LocalDevelopment/dailyhttps://docs.btcpayserver.org/Development/Plugins/dailyhttps://docs.btcpayserver.org/Development/dailyhttps://docs.btcpayserver.org/Development/TestnetDemo/dailyhttps://docs.btcpayserver.org/Development/Theme/dailyhttps://docs.btcpayserver.org/Docker/dailyhttps://docs.btcpayserver.org/Docker/backup-restore/dailyhttps://docs.btcpayserver.org/Docker/chatwoot/dailyhttps://docs.btcpayserver.org/Docker/cloudflare-tunnel/dailyhttps://docs.btcpayserver.org/Docker/fastsync/dailyhttps://docs.btcpayserver.org/Docker/fireflyiii/dailyhttps://docs.btcpayserver.org/Docker/lightning-terminal/dailyhttps://docs.btcpayserver.org/Docker/joinmarket/dailyhttps://docs.btcpayserver.org/Docker/ndlc/dailyhttps://docs.btcpayserver.org/Docker/pihole/dailyhttps://docs.btcpayserver.org/Docker/tallycoin-connect/dailyhttps://docs.btcpayserver.org/Drupal/dailyhttps://docs.btcpayserver.org/ElectrumPersonalServer/dailyhttps://docs.btcpayserver.org/ElectrumWallet/dailyhttps://docs.btcpayserver.org/ElectrumX/dailyhttps://docs.btcpayserver.org/FAQ/Altcoin/dailyhttps://docs.btcpayserver.org/FAQ/Apps/dailyhttps://docs.btcpayserver.org/FAQ/Deployment/dailyhttps://docs.btcpayserver.org/FAQ/General/dailyhttps://docs.btcpayserver.org/FAQ/Integrations/dailyhttps://docs.btcpayserver.org/FAQ/LightningNetwork/dailyhttps://docs.btcpayserver.org/FAQ/dailyhttps://docs.btcpayserver.org/FAQ/ServerSettings/dailyhttps://docs.btcpayserver.org/FAQ/Stores/dailyhttps://docs.btcpayserver.org/FAQ/Synchronization/dailyhttps://docs.btcpayserver.org/FAQ/Wallet/dailyhttps://docs.btcpayserver.org/Forms/dailyhttps://docs.btcpayserver.org/Guide/dailyhttps://docs.btcpayserver.org/HardwareWalletIntegration/dailyhttps://docs.btcpayserver.org/LNDhubAPI/dailyhttps://docs.btcpayserver.org/Invoices/dailyhttps://docs.btcpayserver.org/LNbank/LNDhub/dailyhttps://docs.btcpayserver.org/LNbank/dailyhttps://docs.btcpayserver.org/LNbank/Troubleshooting/dailyhttps://docs.btcpayserver.org/LedgerWallet/dailyhttps://docs.btcpayserver.org/LightningNetwork/dailyhttps://docs.btcpayserver.org/LightningNetwork_PaymentChannels/dailyhttps://docs.btcpayserver.org/Magento/dailyhttps://docs.btcpayserver.org/NBXplorer/API/dailyhttps://docs.btcpayserver.org/NBXplorer/Postgres-Migration/dailyhttps://docs.btcpayserver.org/NBXplorer/Postgres-Schema/dailyhttps://docs.btcpayserver.org/NBXplorer/dailyhttps://docs.btcpayserver.org/Nostr/dailyhttps://docs.btcpayserver.org/Notifications/dailyhttps://docs.btcpayserver.org/OpenCart/dailyhttps://docs.btcpayserver.org/Payjoin/dailyhttps://docs.btcpayserver.org/PaymentRequests/dailyhttps://docs.btcpayserver.org/Payouts/dailyhttps://docs.btcpayserver.org/PodServer/dailyhttps://docs.btcpayserver.org/PrestaShop/dailyhttps://docs.btcpayserver.org/RegisterAccount/dailyhttps://docs.btcpayserver.org/Reporting/dailyhttps://docs.btcpayserver.org/Shopify/dailyhttps://docs.btcpayserver.org/Shopware/dailyhttps://docs.btcpayserver.org/Support/dailyhttps://docs.btcpayserver.org/TicketTailor/dailyhttps://docs.btcpayserver.org/Transmuter/DCA/dailyhttps://docs.btcpayserver.org/Transmuter/EmailReceiptsPreset/dailyhttps://docs.btcpayserver.org/Transmuter/dailyhttps://docs.btcpayserver.org/Trocador/dailyhttps://docs.btcpayserver.org/Troubleshooting/dailyhttps://docs.btcpayserver.org/TryItOut/dailyhttps://docs.btcpayserver.org/UseCase/dailyhttps://docs.btcpayserver.org/Vault/HowToVerify/dailyhttps://docs.btcpayserver.org/Vault/dailyhttps://docs.btcpayserver.org/VirtueMart/dailyhttps://docs.btcpayserver.org/Wabisabi/dailyhttps://docs.btcpayserver.org/Walkthrough/dailyhttps://docs.btcpayserver.org/Wallet/dailyhttps://docs.btcpayserver.org/WalletSetup/dailyhttps://docs.btcpayserver.org/WasabiWallet/dailyhttps://docs.btcpayserver.org/WhatsNext/dailyhttps://docs.btcpayserver.org/WooCommerce/dailyhttps://docs.btcpayserver.org/Zapier/dailyhttps://docs.btcpayserver.org/Refund/dailyhttps://docs.btcpayserver.org/dailyhttps://docs.btcpayserver.org/PullPayments/daily \ No newline at end of file +https://docs.btcpayserver.org/AdvancedForms/dailyhttps://docs.btcpayserver.org/Apps/dailyhttps://docs.btcpayserver.org/BTCPayServer/LocalDevSetup/dailyhttps://docs.btcpayserver.org/BTCPayServer/Security/dailyhttps://docs.btcpayserver.org/BTCPayServer/db-migration/dailyhttps://docs.btcpayserver.org/BTCPayServer/greenfield-authorization/dailyhttps://docs.btcpayserver.org/BTCPayServer/greenfield-development/dailyhttps://docs.btcpayserver.org/BTCPayVsOthers/dailyhttps://docs.btcpayserver.org/ColdCardWallet/dailyhttps://docs.btcpayserver.org/Community/dailyhttps://docs.btcpayserver.org/Configurator/dailyhttps://docs.btcpayserver.org/ConnectWallet/dailyhttps://docs.btcpayserver.org/Contribute/Design/dailyhttps://docs.btcpayserver.org/Contribute/Dev/dailyhttps://docs.btcpayserver.org/Contribute/DevCode/dailyhttps://docs.btcpayserver.org/Contribute/DevTest/dailyhttps://docs.btcpayserver.org/Contribute/Misc/dailyhttps://docs.btcpayserver.org/Contribute/dailyhttps://docs.btcpayserver.org/Contribute/Translate/dailyhttps://docs.btcpayserver.org/Contribute/Write/dailyhttps://docs.btcpayserver.org/Contribute/WriteBlog/dailyhttps://docs.btcpayserver.org/Contribute/WriteDocs/dailyhttps://docs.btcpayserver.org/Contribute/WriteSoftware/dailyhttps://docs.btcpayserver.org/CreateStore/dailyhttps://docs.btcpayserver.org/CreateWallet/dailyhttps://docs.btcpayserver.org/CustomIntegration/dailyhttps://docs.btcpayserver.org/Dashboard/dailyhttps://docs.btcpayserver.org/Deployment/Azure/dailyhttps://docs.btcpayserver.org/Deployment/AzurePennyPinching/dailyhttps://docs.btcpayserver.org/Deployment/Clovyr/dailyhttps://docs.btcpayserver.org/Deployment/DreamlabNetwork/dailyhttps://docs.btcpayserver.org/Deployment/DynamicDNS/dailyhttps://docs.btcpayserver.org/Deployment/GoogleCloud/dailyhttps://docs.btcpayserver.org/Deployment/Hack0/dailyhttps://docs.btcpayserver.org/Deployment/Hardware/dailyhttps://docs.btcpayserver.org/Deployment/HardwareAsAService/dailyhttps://docs.btcpayserver.org/Deployment/LightningInABox/dailyhttps://docs.btcpayserver.org/Deployment/LunaNode/dailyhttps://docs.btcpayserver.org/Deployment/ManualDeployment/dailyhttps://docs.btcpayserver.org/Deployment/ManualDeploymentExtended/dailyhttps://docs.btcpayserver.org/Deployment/dailyhttps://docs.btcpayserver.org/Deployment/RaspberryPi4/dailyhttps://docs.btcpayserver.org/Deployment/ReverseProxyToTor/dailyhttps://docs.btcpayserver.org/Deployment/ReverseSSHtunnel/dailyhttps://docs.btcpayserver.org/Deployment/ThirdPartyHosting/dailyhttps://docs.btcpayserver.org/Deployment/voltagecloud/dailyhttps://docs.btcpayserver.org/Deployment/webdeployment/dailyhttps://docs.btcpayserver.org/Development/Altcoins/dailyhttps://docs.btcpayserver.org/Development/GreenFieldExample-NodeJS/dailyhttps://docs.btcpayserver.org/Development/GreenFieldExample/dailyhttps://docs.btcpayserver.org/Development/GreenfieldExample-PHP/dailyhttps://docs.btcpayserver.org/Development/InvoiceMetadata/dailyhttps://docs.btcpayserver.org/Development/LocalDev/dailyhttps://docs.btcpayserver.org/Development/LocalDevelopment/dailyhttps://docs.btcpayserver.org/Development/Plugins/dailyhttps://docs.btcpayserver.org/Development/dailyhttps://docs.btcpayserver.org/Development/TestnetDemo/dailyhttps://docs.btcpayserver.org/Development/Theme/dailyhttps://docs.btcpayserver.org/Docker/dailyhttps://docs.btcpayserver.org/Docker/backup-restore/dailyhttps://docs.btcpayserver.org/Docker/chatwoot/dailyhttps://docs.btcpayserver.org/Docker/cloudflare-tunnel/dailyhttps://docs.btcpayserver.org/Docker/fastsync/dailyhttps://docs.btcpayserver.org/Docker/fireflyiii/dailyhttps://docs.btcpayserver.org/Docker/joinmarket/dailyhttps://docs.btcpayserver.org/Docker/lightning-terminal/dailyhttps://docs.btcpayserver.org/Docker/ndlc/dailyhttps://docs.btcpayserver.org/Docker/pihole/dailyhttps://docs.btcpayserver.org/Docker/tallycoin-connect/dailyhttps://docs.btcpayserver.org/Drupal/dailyhttps://docs.btcpayserver.org/ElectrumPersonalServer/dailyhttps://docs.btcpayserver.org/ElectrumWallet/dailyhttps://docs.btcpayserver.org/ElectrumX/dailyhttps://docs.btcpayserver.org/FAQ/Altcoin/dailyhttps://docs.btcpayserver.org/FAQ/Apps/dailyhttps://docs.btcpayserver.org/FAQ/Deployment/dailyhttps://docs.btcpayserver.org/FAQ/General/dailyhttps://docs.btcpayserver.org/FAQ/Integrations/dailyhttps://docs.btcpayserver.org/FAQ/LightningNetwork/dailyhttps://docs.btcpayserver.org/FAQ/dailyhttps://docs.btcpayserver.org/FAQ/ServerSettings/dailyhttps://docs.btcpayserver.org/FAQ/Stores/dailyhttps://docs.btcpayserver.org/FAQ/Synchronization/dailyhttps://docs.btcpayserver.org/FAQ/Wallet/dailyhttps://docs.btcpayserver.org/Forms/dailyhttps://docs.btcpayserver.org/Guide/dailyhttps://docs.btcpayserver.org/HardwareWalletIntegration/dailyhttps://docs.btcpayserver.org/Invoices/dailyhttps://docs.btcpayserver.org/LNDhubAPI/dailyhttps://docs.btcpayserver.org/LNbank/LNDhub/dailyhttps://docs.btcpayserver.org/LNbank/dailyhttps://docs.btcpayserver.org/LNbank/Troubleshooting/dailyhttps://docs.btcpayserver.org/LedgerWallet/dailyhttps://docs.btcpayserver.org/LightningNetwork/dailyhttps://docs.btcpayserver.org/LightningNetwork_PaymentChannels/dailyhttps://docs.btcpayserver.org/Magento/dailyhttps://docs.btcpayserver.org/NBXplorer/API/dailyhttps://docs.btcpayserver.org/NBXplorer/Postgres-Migration/dailyhttps://docs.btcpayserver.org/NBXplorer/Postgres-Schema/dailyhttps://docs.btcpayserver.org/NBXplorer/dailyhttps://docs.btcpayserver.org/Nostr/dailyhttps://docs.btcpayserver.org/Notifications/dailyhttps://docs.btcpayserver.org/OpenCart/dailyhttps://docs.btcpayserver.org/Payjoin/dailyhttps://docs.btcpayserver.org/PaymentRequests/dailyhttps://docs.btcpayserver.org/Payouts/dailyhttps://docs.btcpayserver.org/PodServer/dailyhttps://docs.btcpayserver.org/PrestaShop/dailyhttps://docs.btcpayserver.org/RegisterAccount/dailyhttps://docs.btcpayserver.org/Reporting/dailyhttps://docs.btcpayserver.org/Shopify/dailyhttps://docs.btcpayserver.org/Shopware/dailyhttps://docs.btcpayserver.org/Support/dailyhttps://docs.btcpayserver.org/TicketTailor/dailyhttps://docs.btcpayserver.org/Transmuter/DCA/dailyhttps://docs.btcpayserver.org/Transmuter/EmailReceiptsPreset/dailyhttps://docs.btcpayserver.org/Transmuter/dailyhttps://docs.btcpayserver.org/Trocador/dailyhttps://docs.btcpayserver.org/Troubleshooting/dailyhttps://docs.btcpayserver.org/TryItOut/dailyhttps://docs.btcpayserver.org/UseCase/dailyhttps://docs.btcpayserver.org/Vault/HowToVerify/dailyhttps://docs.btcpayserver.org/Vault/dailyhttps://docs.btcpayserver.org/VirtueMart/dailyhttps://docs.btcpayserver.org/Wabisabi/dailyhttps://docs.btcpayserver.org/Walkthrough/dailyhttps://docs.btcpayserver.org/Wallet/dailyhttps://docs.btcpayserver.org/WalletSetup/dailyhttps://docs.btcpayserver.org/WasabiWallet/dailyhttps://docs.btcpayserver.org/WhatsNext/dailyhttps://docs.btcpayserver.org/WooCommerce/dailyhttps://docs.btcpayserver.org/Zapier/dailyhttps://docs.btcpayserver.org/PullPayments/dailyhttps://docs.btcpayserver.org/Refund/dailyhttps://docs.btcpayserver.org/daily \ No newline at end of file