Samourai Dojo is a free and open source (FOSS), non custodial, full node wallet server. Its goal is to extend the services that a bitcoin full node provides to applications like Samourai Wallet, Sentinel, Whirlpool, etc.
Due to the nature of FOSS our software and can be built, run, and hosted completely independently of the our software development team.
Initially developed by Samourai Wallet for its backend infrastructure, Dojo is now made available as a self contained software package, MyDojo, designed for users with medium technical ability. It can be used to manage a single wallet or thousands of them.
MyDojo is offered as a set of pre configured Docker containers that can run on a x86-64 Linux environment and semi-automates the end-to-end process of installation and configuration. A single command is all it takes to begin the entire process of installing the needed components, securing the networking, and downloading the blockchain. Once the initial block download is complete you can pair your Samourai Wallet to your new Dojo by simply scanning a QR code.
MyDojo improves your privacy by completely bypassing default Samourai Wallet hosted servers. Additionally, MyDojo has a strong focus on network privacy.
Thanks to the effort of open source contributors and Bitcoin companies, Dojo is already available under multiple forms addressing different audiences:
While some knowledge of the Linux environment is a plus, MyDojo is great for anyone who isn’t afraid of tinkering with a computer. Dojo has a great and supportive community, part of which can be found in this Telegram group.
Users who like to play with different hardware architectures may prefer Ronin Dojo, a fork of Dojo for Raspberry Pi4 and Odroid N2 that also provides an improved UI. Another similar option is myNode.
Users who prefer plug-n-play solutions will definitely enjoy the convenience offered by RoninDojo.
You have made up your mind. MyDojo is what you want. Here are a few recommended readings that will teach you everything you need to know for installing and running MyDojo:
The following section will introduce you to some key concepts regarding Dojo and MyDojo full bitcoin stack.
A server application designed to serve light clients like Samourai Wallet and Sentinel. The Dojo server implements a set of features extending the capabilities of a local Bitcoin full node.
A fully packaged, pre-configured and extensible server stack built around the Dojo server and allowing to install and to manage your own Dojo with just a few commands. MyDojo plays the role of a base camp for mobile users (from a single to thousands of users).
Docker is an open platform automating the deployment of software applications inside loosely isolated sandboxes called containers by providing an additional layer of abstraction and automation of OS-level virtualization on Linux.
Docker allows to script the deployment of a single application as-well as the deployment of a complex stack composed of multiple components communicating through a dedicated network.
The Host Machine is the computer hosting MyDojo.
MyDojo is designed to take care of your privacy even at a network level. To achieve this goal, all communications between MyDojo and others applications pass through the Tor network.
A Linux shell script allowing to manage MyDojo. It’s your main entry point for most interactions with MyDojo.
A web interface accessible through Tor and used for maintenance operations on a wallet managed by MyDojo.
------------------ -------------------- --------------- -----------------------
| Mobile Wallets | | Bitcoin full nodes | | Whirlpool GUI | | Whirlpool Coordinator |
------------------ -------------------- --------------- -----------------------
|_______________________|____________________|_______________________|
|
-------------
| |
---------------------- | Tor network |
| | |
| ------------
| |
| | (Tor hidden services)
_____ | ____________________________ | _________________________________________
| | | | |
| | | --------- dmznet |
| | | -----------| Tor |------------------------ |
| | | | --------- | |
| | --------- | |
| | | nginx | - - - - - - - - - - - - - - - - - - - - - -|- - - - - - |
| | --------- | |
| | | | | | |
| | --- | ---------------------------- | |
| | | | | | | |
| ----------- | ---------- ---------- ---------- |
| | whirlpool | | | Nodejs |----------| Explorer |------| Bitcoind | |
| ----------- | ---------- ---------- ---------- |
| | | | | | |
| | | ------- | | |
| | | | | | |
| | ---------- | ---------- | |
| | | MySQL | ----| Indexer |----------- |
| | ---------- ---------- |
| whirlnet | dojonet |
|_________________|______________________________________________________________|
Host machine
This section will introduce you to the components that make up the MyDojo software package.
A Docker container running a Bitcoin full node (Bitcoin Core). This is the base layer connecting MyDojo to the Bitcoin network.
A Docker container running a NodeJS application server hosting the Dojo server. This container is the core of MyDojo.
The Dojo server is composed of 4 modules:
A Docker container running a MySQL database storing the data used by the Dojo server.
A Docker container running a Tor server hosting several Tor hidden services (bitcoin full node, MyDojo REST API, blocks explorer) and acting a SOCKS proxy for outgoing requests.
The Tor container acts as a gateway between MyDojo and its clients. All communications pass through this component.
A Docker container running a NGINX web server.
An optional Docker container running an instance of addrindexrs, an indexer of Bitcoin addresses allowing to quickly retrieve the complete history of an address.
An optional Docker container running a block explorer (BTC RPC Explorer).
The main requirements for the host machine running MyDojo are
Install Docker and Docker Compose on the host machine (be sure to run a recent version supporting v3.2
of docker-compose files, i.e. Docker Engine v17.04.0+).