New deployment option where the user runs a bash one-liner on their VPS that connects back to the configurator over HTTP. The configurator sends commands through the tunnel to read server configuration, avoiding outbound SSH entirely. This prevents VPS abuse detection flags from rapid SSH connect/disconnect patterns. Architecture: - IRemoteExecutor interface abstracts command execution over SSH or HTTP tunnel, letting LoadSettings work with either transport - TunnelSession uses System.Threading.Channels for synchronized command/result handoff between configurator and polling agent - TunnelService manages session lifecycle with auto-cleanup - TunnelController serves the agent script and handles poll/result - One-time secret per session prevents unauthorized access - At deploy time, generates a bash script (same as Manual mode) Bump version to 0.0.28. |
||
|---|---|---|
| .github/workflows | ||
| BTCPayServerDockerConfigurator | ||
| docs/img | ||
| .gitignore | ||
| BTCPayServerDockerConfigurator.sln | ||
| Dockerfile | ||
| entrypoint.sh | ||
| LICENSE | ||
| README.md | ||
BTCPay Server Configurator
A web-based wizard for configuring and deploying BTCPay Server via Docker. Deploy directly to a remote server over SSH or generate a bash script for manual deployment.
Use Cases
- Self-hosting migration — Third-party hosts can offer a Configurator instance so users can easily transition to their own server.
- Consulting / managed deployments — Server admins deploying BTCPay on behalf of clients can export or directly deploy configurations.
- Existing server reconfiguration — Admins can modify a running BTCPay Server's settings from the Configurator (admin account required).
Setup
Option 1: Add as an external service to BTCPay
If you already have a BTCPay Server deployed with the opt-add-configurator environment variable:
Server Settings > Services > Other external services > Configurator > See information
Non-admins can access the Configurator at yourbtcpaydomain.com/configurator.
Option 2: Run with Docker
docker run -p 1337:80 ghcr.io/btcpayserver/btcpayserver-configurator
Then open http://localhost:1337 in your browser.
Option 3: Build from source
Requires .NET 10 SDK.
git clone https://github.com/btcpayserver/btcpayserver-configurator.git
cd btcpayserver-configurator
dotnet run --project BTCPayServerDockerConfigurator
Wizard Steps
The configurator walks through 6 steps:
- Destination — Deploy via SSH now, or generate a bash script for later.
- Domain — Set the domain name pointing to your server.
- Chain — Choose Bitcoin network (mainnet/testnet), pruning level, and optional altcoins.
- Lightning — Pick a Lightning implementation: LND, Core Lightning, Eclair, or Phoenixd (optional).
- Advanced — Additional settings like reverse proxy, custom BTCPAY_IMAGE, startup options.
- Summary — Review all selections, then deploy or export the script.
SSH Deployment
When deploying over SSH, the Configurator automates:
- Installing Docker, Docker Compose, and Git
- Configuring BTCPay environment variables
- Setting up systemd for auto-start on reboot
- Adding BTCPay utilities to
/usr/bin - Starting BTCPay Server
Manual Script Export
Choose "Generate Script" in step 1 to get a bash script you can paste into your server terminal later.
Docker Images
Images are published to GitHub Container Registry on every push to master.
| Tag | Description |
|---|---|
latest |
Every master push |
x.y.z |
Versioned release (e.g. 0.0.23) |
x.y |
Major.minor (e.g. 0.0) |
Versioning is driven by the <Version> property in BTCPayServerDockerConfigurator.csproj. When the version is bumped, CI automatically creates a git tag and publishes versioned Docker images.
Privacy & Security
If using someone else's Configurator instance, you will be sharing:
- Your server IP/domain and SSH credentials
- Your server configuration choices
Mitigations:
- Change your SSH password after deployment.
- Use local Docker deployment or export the script without entering your domain — add it when you paste the commands into your terminal.