- Notes on upgrading, binaries and compatibility
- Installation on Linux
- Installation on macOS
- Installation on Windows
- Alternative/custom installation
(You can ignore this whole section if starting from scratch).
See here.
If you just want the latest version in a new directory, go to the releases page. Binary executables are not currently being built; that may change in the future.
Otherwise: if you are upgrading from an older version, just update using git: git pull origin master
,
or git fetch; git checkout tags/<tagname>
for a specific tagged release, then rerun the installation
process as described below. This will only work if the latest commit, or the tag,
is actually newer in version number, than what was there already.
To install everything (client and server), install these packages:
sudo apt-get install python3-dev python3-pip git build-essential automake pkg-config libtool libffi-dev libssl-dev libgmp-dev
(+ libsodium-dev
if you can find it, else build after)
(to build libsodium
after):
git clone git://github.com/jedisct1/libsodium.git
cd libsodium
git checkout tags/1.0.18
./autogen.sh
./configure
make check
sudo make install
cd ..
Then install this repo:
git clone https://github.com/Joinmarket-Org/joinmarket-clientserver
cd joinmarket-clientserver
Then:
sudo pip install virtualenv
virtualenv --python=python3 jmvenv
source jmvenv/bin/activate
At this point you should see (jmvenv)
at the beginning of your command prompt.
NOTE: It is very important to have activated virtualenv before running this step. Otherwise,
pip install
will fail, you may be tempted to re-run it withsudo pip install
which will cause problems in the future.
pip install -r requirements/base.txt
If you have installed this "full" version of the client, you can use it with the command line scripts as explained in the scripts README.
-
Install Apple Command Line Tools
xcode-select --install
-
Install Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
-
Install python3 and libsodium
brew install python libsodium
-
Create virtualenv "jmvenv"
pip3 install virtualenv virtualenv jmvenv source jmvenv/bin/activate
At this point you should see
(jmvenv)
at the beginning of your command prompt. -
Clone the joinmarket-clientserver repo.
git clone https://github.com/Joinmarket-Org/joinmarket-clientserver cd joinmarket-clientserver
-
Setup joinmarket-qt
pip install -r requirements/gui.txt
-
Start joinmarket-qt
cd scripts python joinmarket-qt.py
note: Installing JoinMarket on Windows using the following method requires Windows 10 version 1607 or later.
note: a more detailed guide can be found here.
- Open the
Control Panel
and navigate toPrograms
,Programs and Features
,Turn Windows features on or off
. - Select
Windows Subsystem for Linux
and clickOK
. - When asked, choose to restart.
- Open the
Microsoft Store
, search forUbuntu 18.04 LTS
and clickGet
.
note: other distributions are available, but this is the only one tested
- When finished downloading click
Launch
. - A window should pop up, telling your
Installing, this may take a few minutes...
- After installation is done, you'll be asked to provide a
UNIX username
andUNIX password
. This will be the administrator account for the Ubuntu installation. - Finish the installation with updating the software within Ubuntu by typing the command
sudo apt update && sudo apt upgrade -y
. When asked, type the password provided earlier.
At this point you have an (almost) fully featured Linux installation on Windows and you can install JoinMarket using the instructions in the readme file or Installation on Linux section of this file.
If you haven't done so yet, install Bitcoin Core as described here. After starting it for the first time, it will start the Initial Block Download. JoinMarket cannot be used until this is finished. More information on that can be found here.
Bitcoin Core needs to be configured to allow JoinMarket to connect to it. From the Settings
menu choose Options
and click Open Configuration File
. Add server=1
, save and close the file. After that restart Bitcoin Core.
Lastly we must configure JoinMarket to allow it to connect to Bitcoin Core. Refer to this section in the usage guide to generate a joinmarket.cfg
file using scripts/wallet-tool.py
.
Edit your joinmarket.cfg
file (in Ubuntu) and replace the following lines in the section [BLOCKCHAIN]
rpc_user = bitcoin
rpc_password = password
with
#rpc_user = bitcoin
#rpc_password = password
rpc_cookie_file = <path to the Bitcoin Core data directory>/.cookie
The location of the data directory was chosen when Bitcoin Core was first run. The default is C:\Users\<your username>\AppData\Roaming\Bitcoin
. In Ubuntu this would be /mnt/c/Users/<your username>/AppData/Roaming/Bitcoin
. Assuming your username is Alice
the full line would be
rpc_cookie_file = /mnt/c/Users/Alice/AppData/Roaming/Bitcoin/.cookie
note: you need to have installed JoinMarket with Qt support (see this section in the readme file)
- In Ubuntu, install additional dependencies
sudo apt install libgl1-mesa-glx
. - Download and install MobaXterm. This program needs to be running before you can start JoinMarket-Qt. It requires no additional configuration.
- Open WSL-Ubuntu session in MobaXTerm. Go to JoinMarket directory and run
source jmvenv/bin/activate
to activate Python virtualenv. - You can now start JoinMarket-Qt as described here.
If you find that the program crashes with
qt.qpa.plugin: Could not load the Qt platform plugin
, you can add Qt5 dependencies withsudo apt install qtbase5-dev
and try again.
Just do
python setupall.py --daemon
Then, you can run the daemon on its own with
cd scripts; python joinmarketd.py <port number>
The reason for doing this may be either (1) to run command-line scripts provided here, but in a separate process from the daemon; or, (2) to run a separate (e.g. wallet plugin) codebase to do the bitcoin operations.
In the former case you will need still to install the local packages:
python setupall.py --client-bitcoin
and then edit your joinmarket.cfg
section DAEMON
, setting no_daemon = 0
.
The latter case applies to the Electrum plugin (not currently operational), see here.
There, you need to install the client code (without Joinmarket's bitcoin):
python setupall.py --client-only
If you are a developer or you plan on modifying the code (for example to add customizations),
do not run the python setupall.py
commands above. Instead run:
python setupall.py --develop
The normal installation (--daemon
or --client-bitcoin
) would install the JoinMarket
packages to the virtualenv's site-packages
directory. This would mean any changes you make to
the local code would not have effect until the packages are reinstalled.
Using --develop
causes a .egg-link
file to be added to site-packages
for each package.
The .egg-link
file acts like a symlink pointing to the local code. This means any changes you
make to the code will have effect immediately.