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.
TestSSH now returns the live SshClient instead of disposing it,
and LoadSettingsThroughSSH accepts it as a parameter. This halves
the number of SSH connections per form submission, avoiding the
rapid connect/disconnect/reconnect pattern that triggers VPS abuse
detection. Bump version to 0.0.26.
The UTXO snapshot bootstrap was incorrectly restricted to full
(non-pruned) nodes. Inverted the logic in the UI toggle, help text,
and script generation so FastSync is offered only when pruning is
enabled. Bump version to 0.0.25.
- Delete arch-specific Dockerfiles (CI uses multi-platform buildx now)
- Move entrypoint.sh to repo root
- Set ASPNETCORE_HTTP_PORTS=80 so Kestrel listens on port 80 (.NET 8+ defaults to 8080)
- Fix SSH root check to use single exec channel instead of separate su + whoami
- Bump version to 0.0.24
CI now reads <Version> from csproj on master push, creates a git
tag if it doesn't exist, and publishes versioned Docker images
alongside latest. README updated to reflect the 6-step wizard,
GHCR image references, and versioning workflow.
Sets <Version>0.0.23</Version> as source of truth for assembly version.
Git tags (v*) drive versioned Docker image publishing via the existing
semver patterns in the GitHub Actions workflow.
Complete CSS rewrite: Inter + JetBrains Mono fonts, modern dark/light
palette, clean Bootstrap 5 bridge (removed 650+ lines of font-face
bloat). Deploy result tabs restyled with underline indicators.
Fix LoadFromServer checkbox value being overwritten on form round-trip.
Fix SSH config loading for non-standard BTCPay installs by reading
BTCPAY_ENV_FILE and BTCPAY_BASE_DIRECTORY from btcpay-env.sh profile.
Add Bitcoin node detection via bitcoin-cli getblockchaininfo — shows
sync status on Chain settings, disables FastSync for synced nodes.
Fix cloud-init script: single multiline runcmd block instead of
separate entries, skip sudo su lines since cloud-init runs as root.
- Remove Additional Services wizard step (confusing/unused), rewire
Lightning → Advanced flow, renumber steps to 6 total
- Add Cloudflare tunnel docs link on Domain settings page
- Sticky CTA buttons on all steps so they're always visible
- Fix dark mode text visibility for .text-muted elements
- Disable FastSync checkbox when pruning is enabled
- Replace Lightning "None" sad face with clean "Skip for now" card
- Replace phoenixd logo with correct ACINQ Phoenix app icon (transparent PNG)
- Compact header, smaller stepper circles, tighter card images
- Theme toggle button styled with border and hover effect
- Clean up CSS: remove unused Additional Services grid styles
* add an images to img directory
* Add configurator readme
* Apply suggestions from code review
Co-authored-by: Andrew Camilleri <evilkukka@gmail.com>
* add local deployment with Docker
* Update README.md
Co-authored-by: Andrew Camilleri <evilkukka@gmail.com>
* Apply BTCPay design basics
Basics for #8.
* Improve and unify spacings
* Optimize images
* Card fixes
* Add favicon files
Makes use of the [favicons defined in the design system](https://design.btcpayserver.org/resources/favicon/).
* Deployment destination updates
* Use latest design system styles
* Add theme switch