cgeek 🇫🇷

Install a Duniter node

This document is a little guide to install & deploy your own Duniter instance to either:

Table of contents

  1. Desktop version
  2. Server version
  1. Ubuntu/Debian 64 bits
    1. Download package
    2. Install Duniter
    3. Start application
  2. Gentoo 64 bits
  3. YunoHost
  4. Other distributions
  5. Docker
    1. Volumes
    2. Using a keyfile
  6. Manual building
  7. Automatic startup

Desktop or server

There are two versions of Duniter. Choose the wich most fits your needs.

Desktop version

A desktop machine will make it easier for you to manage your Duniter instance thanks to a graphical interface.

Your instance will be up as long as you keep your computer and Duniter software on. If you close your software or shut down your computer, Duniter will be able to resync with the network when you restart it.

Server version

For the most advanced users, a server install allows you to have a node up 100% of the time since a server is made to run forever.

You will control your instance using command line tools, but if you want you could also access the graphical interface using a web browser.

Once you are done with the installation, you can follow the command line user's guide.

GNU/Linux

Ubuntu/Debian 64 bits

Download package

Go to the release page to get a link to the last stable release.

Choose the file you need:

Install Duniter

In order to process installation:

Note: you can also use the dpkg command line to install the package. Example:

sudo dpkg -i duniter-*-linux-x64.deb

Start application

In order to start the desktop version:

Note: it is also possible to start bureau version with the duniter-desktop command. Using the command or the GUI is equivalent.

To launch the daemon (server version):

duniter start

You can follow the command line user's guide in order to use your server node.

The server version node for Ubuntu/Debian is usable with automatic startup (Systemd).

Gentoo 64 bits

In order to install Duniter on Gentoo, there is a package in the overlay sveyret-overlay. A README file can be found in this overlay to help you and add it to the Portage tree.

You will then be able to install the package net-p2p/duniter:

emerge -av net-p2p/duniter

The following USE flags allow you to decide what will be built:

FlagDescription
desktopBuild and install the desktop version instead of the server one
guiAdd the GUI (mandatory for desktop version, add the web interface for server version)

The server version node for Gentoo can also be automatically started.

YunoHost

A YunoHost package is available (server version only).

Other distributions

For other distributions, there is a binary file containing the desktop version.

  1. Go to the release page to get a link to the last stable release and download the duniter-desktop file with .tar.gz extension.

  2. Extract the tarball: tar zxvf duniter-*.tar.gz.

  3. Go to the extracted directory and run Duniter with ./nw.

Docker

Note: Docker must be installed on your computer in order to create a Duniter container.

Note: only the Duniter server version exists on a Docker image.

To get the image of the last version:

docker pull duniter/duniter

It is then possible to create the container with:

docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --name duniter duniter/duniter

Without any other option, the container will automatically execute duniter direct_webstart. The -d in the command line make the container being executed in the background (daemon). The --name option is used to give a unique name to the container, which will then be easier to use for the next commands. The -p options are used to connect in-container ports with the host ones:

Note : do not use both daemon options for Duniter and Docker (for example: docker run -d duniter/duniter webstart) or the container will immediately stop.

Once the node is started, it is accessable either using web UI, going to http://localhost:9220, either using command line:

docker exec -it duniter duniter sync g1.duniter.fr:443

In the above command, the first duniter is the name given to the container at creation time, while the second one is the executed command.

You can stop and restart the container using standard Docker commands:

docker stop duniter
docker start duniter

Volumes

The container creates 2 Docker volumes. The first one is attached to /etc/duniter and contains the Duniter configuration (see the keyfile chapter below). The other one is attached to the Duniter home directory /var/lib/duniter. This is the place the Duniter database will be stored.

You can specify where these directories must be mounted. This would be usefull in order for the data to persist even if, for example, you delete your container because you want to get a new version of the image.

For example, if you want the database to be stored on a duniter-db Docker volume, you may create the container using this command:

docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --mount type=volume,src=duniter-db,dst=/var/lib/duniter --name duniter duniter/duniter

If you prefer the database to be stored on the host directory ~/duniter/data, you have to be carreful of the rights given to this directory. The commands to be executed are then:

chown -R 1111:1111 ~/duniter/data
docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --mount type=bind,src=~/duniter/data,dst=/var/lib/duniter --name duniter duniter/duniter

Note: some of the above commands need “root” access, usage of sudo may be required.

Using a keyfile

If the file /etc/duniter/keys.yml is found on the container, it is used as keyfile for the node identity. For this file is visible by Duniter, it must be granted appropriate access rights. If the file keys.yml is for example on the host in the ~/duniter/conf directory, here are the commands to execute for it is used:

chown -R 1111:1111 ~/duniter/conf
chmod -R 644 ~/duniter/conf
docker run -d -p127.0.0.1:9220:9220 -p10901:10901 -p20901:20901 --mount type=bind,src=~/duniter/conf,dst=/etc/duniter --name duniter duniter/duniter

Note: some of the above commands need “root” access, usage of sudo may be required.

Manual building

Server version of Duniter can be compiled on the majority of Linux machines (32 bits or 64 bits) in just a few steps (first two should only be done once):

** Prerequisites **

At least, packages git and build-essential are required, you can install them by:

sudo apt-get update && sudo apt-get install git build-essential

1. Node.js install

A tool can be used to install the wanted Node.js version and change as needed: its name is nvm.

You may install nvm with:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | bash

You can then install Node.js:

nvm install 8.9.1

Note: for version older than Duniter 1.6, required Node.js version is 6.

2. Yarn install

Yarn may be installed by:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update && sudo apt-get install yarn

3. Downloading Duniter

Go to the release page to get a link to the last stable release and download the Source code (tar.gz) file.

4. Start the installation from the uncompressed folder duniter/:

Note: do not launch these commands as root. This won't work, we know it.

cd duniter
yarn

5. Use the Duniter commands by prefixing duniter with bin/. Example:

bin/duniter --version

6. Add web interface (not added by default), to add direct_webstart et webstart commands:

bin/duniter plug duniter-ui@1.6.x

Note: for Duniter 1.5.9 ou below:

bin/duniter plug duniter-ui@1.4.x
sed -i "s/duniter\//..\/..\/..\/..\//g" node_modules/duniter-ui/server/controller/webmin.js

Automatic startup

Automatic startup is only available on server versions.

Since version 1.6.15, automatic statup scripts are delivered for distribution based on Systemd or OpenRC.

In order for the node to be automatically launched at computer startup, execute the following command with administrator rights (sudo):

By default, the server will start as duniter user in the directory /var/lib/duniter.

You can customize the service behavior:

Adjustable environment variables for this service are:

VariableTypeDescription
DUNITER_WEBSystemdMust be empty for classical startup, or web to start the web interface
DUNITER_WEBOpenRCStart web interface if the value is defined an evaluate to true (yes, for example)
DUNITER_HOMEallServer file location, default: /var/lib/duniter/.config/duniter
DUNITER_DATAallName (location) of the database, default: duniter_default
DUNITER_KEYSOpenRCIf this variable is defined, it must indicate the location of a key file for node identity
DUNITER_WEB_HOSTOpenRCThis variable allow to modify default host name for web interface
DUNITER_WEB_PORTOpenRCThis variable allow to modify default port for web interface
DUNITER_GROUPOpenRCName of the group with which node is executed, default: duniter
DUNITER_USEROpenRCName of the user with which node is executed, default: duniter
DUNITER_OPTSSystemdAny other option to be given to command line at startup
DUNITER_SSD_OPTIONSOpenRCAny other option to be given to start-stop-daemon command line

Note: up to version 1.6.17 (Systemd) or 1.6.22 (OpenRC), default value for DUNITER_HOME was /var/lib/duniter.

Windows

There is no Windows-specific version anymore. To deploy a node on a Windows machine, there are two possibilites:

MacOS

There is no specific MacOS version. However, you still can build the server version.