Coder Social home page Coder Social logo

btcpayserver / btcpayserver-configurator Goto Github PK

View Code? Open in Web Editor NEW
12.0 12.0 18.0 3.94 MB

An easy UI to configure new and existing BTCPay deployments.

License: MIT License

C# 24.62% HTML 17.12% CSS 57.04% JavaScript 0.39% Shell 0.04% Dockerfile 0.79%

btcpayserver-configurator's Introduction

BTCPay Server

BTCPay Server

Accept Bitcoin payments โ‚ฟ

BTCPay Server is a free and open-source Bitcoin payment processor which allows you to accept bitcoin without fees or intermediaries.

"This is lies, my trust in you is broken, I will make you obsolete" ๐Ÿ’š

View Demo ยท Report a bug ยท Request a feature ยท FAQ

๐Ÿ’ผ Table of Contents

๐ŸŽจ Features

  • Direct, peer-to-peer Bitcoin payments
  • No transaction fees (other than the network fee)
  • No fees, middleman or KYC
  • Non-custodial (complete control over the private key)
  • Enhanced privacy & security
  • Self-hosted
  • SegWit support
  • Lightning Network support (LND, Core Lightning (CLN), Eclair)
  • Tor support
  • Share your instance with friends (multi-tenant)
  • Invoice management and Payment requests
  • Apps: Point of sale, crowdfunding, donation button
  • Full-node reliant wallet with hardware wallet integration and SegWit support
  • Bitcoin-only build, separate community-maintained altcoin build (supported altcoins)

๐Ÿš€ Getting Started

Firstly, decide if you want to host an instance yourself or use a third-party host. If you've chosen to self-host, there are plenty of documented ways to deploy BTCPay Server.

After successful deployment, make sure to check our getting started and walkthrough guides. In case you would like to use Lightning Network, see Lightning guide.

๐Ÿ“— Documentation

Please check out our official website, complete documentation and FAQ for more details.

If you have trouble using BTCPay Server, consider joining communities listed on the official website to get help from other contributors. Only create a GitHub issue for technical issues you can't resolve through other channels or feature requests you've validated with other members of the community.

๐Ÿค Contributing

BTCPay Server is built and maintained entirely by volunteer contributors around the internet. We welcome and appreciate new contributions.

If you're a developer looking to help, but you're not sure where to begin, check the good first issue label, 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 join our community chat or start a GitHub discussion to get early feedback, discuss the best ways to tackle the problem, and ensure there is no work duplication.

There are many other ways to get involved with the project. Check our contribution guidelines. To get the big-picture of the project development, visit our evolving roadmap.

๐Ÿง‘โ€๐Ÿ’ป Developing

To begin developing locally, visit our local development guide. There are also several video-tutorials:

How to build

While the documentation advises using docker-compose, you may want to build BTCPay Server yourself.

First, install .NET SDK v8.0 as specified by the Microsoft website.

On Powershell:

.\build.ps1

On linux:

./build.sh

How to run

Use the run scripts to run BTCPay Server, this example shows how to print the available command-line arguments of BTCPay Server.

On Powershell:

.\run.ps1 --help

On linux:

./run.sh --help

How to debug

If you want to debug, use Jetbrain's Rider or Visual Studio 2022.

You need to run the development time docker-compose as described in the test guide.

You can then run the debugger by using the Launch Profile Docker-Regtest.

If you need to debug ledger wallet interaction, install the development time certificate with:

# Install development time certificate in the trust store
dotnet dev-certs https --trust

Then use the Docker-Regtest-https debug profile.

Other dependencies

For more information, see the documentation: How to deploy a BTCPay Server instance.

๐Ÿงช API

BTCPay Server has two APIs:

The Greenfield API is our brand-new API which is still in development. Once complete, it will allow you to run BTCPay Server headlessly. The Legacy API, is fully compatible with BitPay's API. It has limited features, but allows instant migration from BitPay.

๐Ÿ’š Community

Our community is the โค๏ธ of the project. To chat with other community members in real-time, join our Mattermost chat. We're also on GitHub discussions.

๐Ÿ“ License

BTCPay Server software, logo and designs are provided under MIT License.

๐Ÿ™ Supporters

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

Spiral OpenSats Baillie Gifford Tether Human Rights Foundation LunaNode Wallet of Satoshi Coincards IVPN

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

btcpayserver-configurator's People

Contributors

britttttk avatar cpleonardo avatar dennisreimann avatar kukks avatar pavlenex avatar zaxounette avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

btcpayserver-configurator's Issues

Could not connect with specified SSH details

I'm running the configurator in docker on my desktop ubuntu and try to connect to a VM on a NAS on the same local network. The VM get a dedicated IP address on the localnetwork.
With terminal I can SSH to the server but the configurator cannot and give this error:
fail: BTCPayServerDockerConfigurator.Controllers.ConfiguratorController[0] SSH This machine error Renci.SshNet.Common.SshConnectionException: An established connection was aborted by the server. at Renci.SshNet.Session.WaitOnHandle(WaitHandle waitHandle, TimeSpan timeout) at Renci.SshNet.Session.WaitOnHandle(WaitHandle waitHandle) at Renci.SshNet.Session.Connect() at Renci.SshNet.BaseClient.Connect() at BTCPayServerDockerConfigurator.Models.SSHClientExtensions.<>c__DisplayClass0_0.<ConnectAsync>b__0() in /src/BTCPayServerDockerConfigurator/Models/SSHClientExtensions.cs:line 28 --- End of stack trace from previous location where exception was thrown --- at BTCPayServerDockerConfigurator.Models.SSHClientExtensions.ConnectAsync(SSHSettings sshSettings, CancellationToken cancellationToken) in /src/BTCPayServerDockerConfigurator/Models/SSHClientExtensions.cs:line 44 at BTCPayServerDockerConfigurator.Controllers.ConfiguratorController.TestSSH(SSHSettings ssh) in /src/BTCPayServerDockerConfigurator/Controllers/ConfiguratorController.Deployment.cs:line 123
Any idea why the configurator get a connection aborted by server but not the terminal?

Issue with SSH Remote Deployment

I keep getting this error when I try to do a remote deployment for SSH in the BTCPay Configurator interface.

System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
System.Number.ParseInt64(ReadOnlySpan value, NumberStyles styles, NumberFormatInfo info)
long.Parse(string s)
BTCPayServerDockerConfigurator.Models.ServerData+DiskFreeResult.Parse(string res) in ServerData.cs
BTCPayServerDockerConfigurator.Models.ServerData.Load(SshClient ssh) in ServerData.cs
BTCPayServerDockerConfigurator.Controllers.ConfiguratorController.LoadSettingsThroughSSH(DeploymentSettings settings) in ConfiguratorController.Deployment.cs
BTCPayServerDockerConfigurator.Controllers.ConfiguratorController.DeploymentDestination(UpdateSettings<DeploymentSettings, DeploymentAdditionalData> updateSettings) in ConfiguratorController.Deployment.cs
Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor+TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, object controller, object[] arguments)
System.Threading.Tasks.ValueTask.get_Result()
System.Runtime.CompilerServices.ValueTaskAwaiter.GetResult()
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask actionResultValueTask)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|24_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(ref State next, ref Scope scope, ref object state, ref bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, object state, bool isCompleted)
Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)

Unhandled Exception: System.IO.FileNotFoundException: Could not find file '/app/docker-fragments/opt-add-configurator.yml'

Attempting manual install based on https://configurator.kukks.org web developed script.

Here is where it stopped. Apologies, I am a noob, a "Test Minion" if you will. Had to rebuild from a crashed BTCpayserver(I set aside that microSD and Flash drive, hoping it can be revived) so thought I would help test this out. I am on a Rpi4 4g, 64g microSD, 1TB SSD.

Generating /app/Generated/docker-compose.generated.yml

Unhandled Exception: System.IO.FileNotFoundException: Could not find file '/app/docker-fragments/opt-add-configurator.yml'.
at Interop.ThrowExceptionForIoErrno(ErrorInfo errorInfo, String path, Boolean isDirectory, Func2 errorRewriter) at Microsoft.Win32.SafeHandles.SafeFileHandle.Open(String path, OpenFlags flags, Int32 mode) at System.IO.FileStream.OpenHandle(FileMode mode, FileShare share, FileOptions options) at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options) at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize) at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks) at System.IO.File.InternalReadAllText(String path, Encoding encoding) at System.IO.File.ReadAllText(String path) at DockerGenerator.DockerComposeDefinition.ParseDocument(FragmentName fragment) in /source/DockerComposeDefinition.cs:line 273 at DockerGenerator.DockerComposeDefinition.<>c__DisplayClass20_0.<Build>b__9(FragmentName f) in /source/DockerComposeDefinition.cs:line 72 at System.Linq.Enumerable.SelectEnumerableIterator2.ToList()
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at DockerGenerator.DockerComposeDefinition.Build() in /source/DockerComposeDefinition.cs:line 72
at DockerGenerator.Program.Run(DockerComposition composition, String name, String output) in /source/Program.cs:line 88
at DockerGenerator.Program.Main(String[] args) in /source/Program.cs:line 27
Failed to generate the docker-compose
root@raspberrypi:~/btcpayserver-docker#

Cant connect using ssh deployment method

This is the issue I'm getting on the latest version of master. Note: The error doesn't appear for the released version that comes with the opt-add-configurator option in btcpay.

System.InvalidOperationException: Cannot get the value of a token type 'False' as a string.
   at System.Text.Json.Utf8JsonReader.GetString()
   at System.Text.Json.JsonPropertyInfoNotNullable`4.OnRead(ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack)
System.Text.Json.JsonException: The JSON value could not be converted to System.String. Path: $.blockdevices[0].rm | LineNumber: 2 | BytePositionInLine: 50.
 ---> System.InvalidOperationException: Cannot get the value of a token type 'False' as a string.
   at System.Text.Json.Utf8JsonReader.GetString()
   at System.Text.Json.JsonPropertyInfoNotNullable`4.OnRead(ReadStack& state, Utf8JsonReader& reader)
   at System.Text.Json.JsonSerializer.ReadCore(JsonSerializerOptions options, Utf8JsonReader& reader, ReadStack& readStack)
   --- End of inner exception stack trace ---

I tried using: different browsers, hostname as domain & IP, existing settings checkbox enabled & disabled.

UX Improvements

I'll keep this issue for small UX related feedback gathered across multiple sources (Twitter, Mattermost, etc)

  • Merge steps 3 and 4 (On and off-chain)
  • put alts in advanced/geeky
  • add CTA for the last step bellow the gif (gif does not have to be CTA/clickable)
  • typo c-Lightning instead of CLightning

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.