How to Setup an IOTA Full Node Using Docker
Back to Blog

How to Setup an IOTA Full Node Using Docker

8 min read
Read in Deutsch

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 temporarily.

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 IOTA's IRI (full node, IOTA Reference Implementation) because of the 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 in the next few days.

Installing Docker

First you need Docker installed on your host. You can find good tutorials for all operating systems here. After you have 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 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.

IOTA full node (IRI) Docker image

registry.gitlab.com/encircle360/iri:latest

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 the _JAVA_OPTIONS environment variable. You can find all possible configuration variables here.

Run an IOTA full node via Docker

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

We recommend using an external volume for the RocksDB / Tangle database so that it is possible to restart and upgrade the node container.

Run with persistent volume

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 a Database Dump to Accelerate Syncing (Optional)

To speed up being ready to use your node, you can download and import a database dump instead of waiting for a full sync. IOTA.partners provides database snapshots you can download here.

After downloading the dump, unarchive it into your Tangle/RocksDB database directory or mount it as volume into /iri/db within your IRI Docker container. You should do this while IRI isn't running: stop the container, replace the directory, and start the container with the environment variable REVALIDATE=true. The revalidation is needed once after importing a foreign database dump. After it's done, remove the environment variable or set it to false.

Inspecting the Node

To inspect the node and get some visual information whether your node is syncing with your neighbors, you can use IPM (IOTA Peer Manager). IPM uses the IRI HTTP API to collect statistics and visualize them. You can find it here.

IOTA Peer Manager Dashboard

Changelog

  • 19-12-2017 — Upgraded IRI to 1.4.1.4; new Docker image is also live (tag: latest)
Patrick Hütter

Written by

Patrick Hütter

Founder & Software Architect

Software architect, engineer and entrepreneur. Patrick has been building products and platforms for over a decade — from enterprise backends and cloud-native infrastructure to AI-powered applications. As founder of encircle360, he combines deep technical expertise with entrepreneurial vision, driving open source projects that create real impact.