encircle360 Blog

How to setup an IOTA full node using docker

We’re glad to announce that we are now providing officially IOTA public nodes from germany. Our nodes are in ALPHA stage and might restart or resync sometimes if we need to do maintenance. If that is the case just be patient or switch your wallet node temporary. Because our whole infrastructure is orchestrated via docker and orchestration tools like Rancher or Kubernetes it wasn’t easy to use the existing docker image from iotas IRI (full node, iota reference implementation) because of missing possibility to configure the container by docker environment variables. So we decided to fork IRI and contribute a new configuration system and docker image to the IOTA project. We hope that this will be merged into the official IRI repository soon. Andreas Osowski, core developer at the iota project already confirmed that he will check our pull request the next few days.

 

You can find more information regarding our public node here.

Installing Docker

At first you need docker installed on your host. You can find good tutorials for all operating systems here.

After you’ve a running docker installation you’re able to use our IRI docker image to run an IOTA full node.

 

Starting the iota full node via docker

To run a full node you have to find some neighbors which want to synchronize the tangle database (rocksdb) with you. You don’t need neighbors the first time you start your node but you should search for some neighbors after you are ready to have your node in production.

Using our docker image it’s possible to configure all configuration variables by Docker environment variables.

registry.gitlab.com/encircle360/iri:latest

So you can use the NEIGHBORS variable to configure your neighbors directly within your docker run command or orchestration tool. We also created some defaults so that the only thing you need is to configure the NEIGHBORS variable and maybe some java memory options using _JAVA_OPTIONS environment variable. You can find all possible configuration variables here.

Your docker run command could look like this:

docker run -e NEIGHBORS="udp://some-host.tld:14600 tcp://other-host.tld:15600" registry.gitlab.com/encircle360/iri:latest

We recommend to use an external volume for the rocksdb / tangle database so that it is possible to restart and upgrade the node container. To mount a directory from your local filesystem you can run a command like this:

docker run -v /path/to/your/local/db/directory:/iri/db -e NEIGHBORS="udp://some-host.tld:14600 tcp://other-host.tld:15600" registry.gitlab.com/encircle360/iri:latest

Importing database dump to accelerate syncing (optional)

To speed up beeing ready to use your node you can download and import da database dump instead of waiting for a full sync.

IOTA.partners is providing some database snapshots you can download here. After you’ve downloaded the dump, unarchive it into your tangle/rocksdb database directory or mount it as volume into /iri/db within your iri docker container as described above. You should do this while iri isn’t running. So stop the container, replace the directory and start the container with the environment variable REVALIDATE=true again. The revalidation is needed one time after importing a foreign database dump. After the revalidation is done you should remove the environment variable or set it to false so that no revalidation gets done after a container restart.

Inspecting the node

To inspect the node and get some visual information wether you node is syncing with your neighbors you can use ipm. Ipm is a tool which uses the IRI http api to collect statistics and visualize them. You can find it here.

 

Changelog

  • 19-12-2017 Upgraded IRI to 1.4.1.4; New docker image is also live (Tag: latest)
Top
en_USEnglish