Fully Noded Server brings a one click sovereign Bitcoin Core experience to newbs and pros alike. Install FN-Server on a dedicated Mac to make managing Bitcoin Core easy, connect your wallets seamlessly and more privately.
The problem?
Holding your own keys isn’t enough, you also need to run your own node to verify your balance really exists without involving a third party. Really.
Installing and configuring Bitcoin Core can be challenging and time consuming, let alone additional services.
The solution?
Run local network requests to bitcoind and simple bash scripts via a UI to install, configure and manage various Bitcoin related services in a “one click” manner.
What does it do?
- Installs Brew and Xcode command line tools so that we can build things from source.
- Installs any version of Bitcoin Core and Join Market using the GitHub api and https://bitcoincore.org/bin.
- Open debug logs, config files, the order book, data directories and more.
- In JM you can increase a wallets gap limit, start & stop the wallet daemon, rescan for a wallets balance and “Quick Connect” FN-Join Market via https over an onion or localhost.
- In Bitcoin Core you can start & stop each network, run them simultaneously, reindex, authorize additional RPC users, refresh RPC credentials, and connect Fully Noded wallets, Unify and any RPC enabled wallet such as Sparrow.
Installs and configures Core Lightning exposed for RPC usage with LNSocket and CLNREST (the RUST version) via onion.*Removed from UI temporarily to fix an install bug.
How is Fully Noded Server different than other node packages?
The big change being made is how Fully Noded recommends users connect to their nodes, FN-Server has incorporated that change, any node package can easily mimic our updated flow for authorizing RPC users and connecting.
Fully Noded was a pioneer in allowing users to take advantage of the Bitcoin Core RPC API via an integrated Tor over onion in 2018. Many popular node packages such as Nodl, MyNode, Start9, Umbrella and more support the original “Quick Connect” model which consists of a url string in QR code format containing the address and RPC credentials to access your node.
This isn’t ideal as the QR code holds the RPC password in plain text. If a user isn’t taking advantage of Tor authentication then the url contents could allow an attacker to get full access to your node. FN-Server uses the same standard but fills in dummy RPC credentials so that the RPC command would be rejected with a 401 response.
Clients (Fully Noded wallets for example) ought to prompt the user to create a new, more secure RPC password and export the RPC authentication string to be added to their server. This is more secure than storing a password in plain text in your bitcoin.conf file. The key take away being only the client has knowledge of the RPC password, previously the server was creating it which is inherently less secure.
How does it work?
FN-Server upon first launch will check if your machine has brew and Xcode command line tools installed, if not you will be prompted to install these dependencies. From there a data directory for FN-Server will be created at your home folder ~/.fullynoded where FN-Server saves its Bitcoin Core and Join Market binaries, its debug log and some scripts, this folder can be deleted at anytime (without effecting your Bitcoin Core data) to be prompted to install different versions of Bitcoin Core and Join Market, a future release will include the ability to run multiple versions via the UI and update.
Once the dependencies are satisfied FN-Server will prompt you to install Bitcoin Core regardless of whether Bitcoin Core already exists. FN-Server defaults to the data directory for Bitcoin Core at ~/Library/Application Support/Bitcoin, the user may edit the data directory location for Bitcoin Core and have the option to prune or fully index the blockchain.
The user picks a specific version of Bitcoin Core, FN-Server then attempts to download its binaries from https://bitcoincore.org/bin, verifies the sha256 hashes and unpacks the tarball. Users may gpg verify the Bitcoin Core binary by clicking the “verify” button at any point in time.
Once successfully installed you can access the full features of FN-Server, it has two primary ways of controlling your node. The first is via Swift code issuing RPC commands to localhost where we interact with the RPC API directly. The second is via various bash scripts which allow the user to avoid the command line, simplifying core functionialty for managing your node and funds.
Join Market is similar except that it comes with its own install script which FN-Server utilizes. Users need to make sure Python 3.10 is installed and visible at /Library/Frameworks/Python.framework/Versions, follow this guide for help installing Python. In a future release FN-Server will check this for the user and ideally automate the install.
Join Market works in the same way as Bitcoin Core, FN-Server polls the Join Market API locally to check its status and uses Swift code to call Join Market scripts. When a user triggers FN-Server to launch a Join Market or install script everything the script does should be visible, if the user closes the terminal the process is aborted. Generally FN-Server can be closed without affecting any open terminal processes.
Once Bitcoin Core and or Join Market are running you can quit FN-Server, Bitcoin Core and Join Market will continue running independently. You can open and close FN-Server at will and it will not affect any ongoing processes except Tor.
Tor is integrated into FN-Server and automatically starts, it requires no special attention, you can restart Tor by restarting FN-Server or toggling it on and off. If FN-Server quits then your services will not be reachable remotely however they will be running locally. To troubleshoot slow Tor connections it can be useful to restart Tor on FN-Server. Once up and running it can remain so for years with no further action, just lock your computer screen, unplug the monitor and let it run. For now all of the advanced wallet functionality can be done with Fully Noded wallets and other RPC clients.
What’s next?
Expand Join Market functionality to include the tumbler and yield generator. The goal is to support Core Lightning, LND and potentially others in the future (Fulcrum perhaps?). Core Lightning support was already built out, currently I am working on an installation bug so have hidden it from the UI to allow testers/users put full focus on Bitcoin Core and Join Market.
If you are interested in testing the software please do provide feedback! You can find everything you need at www.fullynoded.app to get started.
