Docker Setup
Use this guide to install and configure an full node locally using Docker.
These instructions are for setting up a full node for network participation. If you just need a local development environment, you should instead follow the instructions in Create a Local IOTA Network to create a local full node, validators, and faucet.
Hardware requirements
- Mainnet
- Testnet
- RAM: 64 GB
- CPU: 8 physical cores / 16 vCPUs
- Storage: 512 GB NVMe SSD (or more depending on pruning settings)
- Network Uplink: 1 Gbps
- RAM: 32 GB
- CPU: 4 physical cores / 8 vCPUs
- Storage: 512 GB NVMe SSD (or more depending on pruning settings)
- Network Uplink: 1 Gbps
Software requirements
Before you begin, ensure you have the following:
- Docker installed.
- Docker Compose installed.
Make sure to open these ports in your firewall configuration.
(These are the defaults, but may vary for a custom setup)
Protocol/Port | Reachability | Purpose | Description |
---|---|---|---|
TCP/8080 | Outbound | Validator/transaction interface | full nodes connect to validators to collect partial signatures for transactions |
UDP/8084 | Inbound/Outbound | Peer-to-peer state sync interface | nodes sync their state with each other |
TCP/9000 | Inbound | JSON RPC endpoint / Web socket (optional) | API for interaction with the network |
TCP/9184 | Localhost | Prometheus metrics scraping | for local monitoring only |
Download the Full Node Docker Setup
In a directory of your choice, run the following:
- Mainnet
- Testnet
- Devnet
mkdir iota-fullnode-docker-setup && cd iota-fullnode-docker-setup && curl -L https://fullnode-docker-setup.iota.org/mainnet | tar -zx
mkdir iota-fullnode-docker-setup && cd iota-fullnode-docker-setup && curl -L https://fullnode-docker-setup.iota.org/testnet | tar -zx
mkdir iota-fullnode-docker-setup && cd iota-fullnode-docker-setup && curl -L https://fullnode-docker-setup.iota.org/devnet | tar -zx
The command will perform the following steps:
- creates and changes into the
iota-fullnode-docker-setup
directory - downloads the zipped configuration for the specific network, containing the docker-compose and node configuration files, and unzips them
You can modify the node configuration file (data/config/fullnode.yaml
) according to your needs.
Prepare your Full Node
Run the following command in the same directory:
./prepare.sh
This script will perform the following steps:
- download the latest docker images specified in the docker-compose.yaml
- download the network specific snapshot files that are needed to sync the node from genesis
Configure P2P Settings
Configure the P2P settings in your fullnode.yaml
file by following these steps:
- Update the external address:
p2p-config:
external-address: /dns/<YOUR-DOMAIN>/udp/8084
Replace <YOUR-DOMAIN>
with your public hostname.
In case you don't have a public hostname, you can alternatively use a public IPv4 like /ip4/1.2.3.4/udp/8084/
or IPv6 like /ip6/2001:db8::1234:5678/udp/8084
This address must be accessible from the internet.
Start your Full Node
In the same directory, start your node by running:
docker compose up -d
You can check the logs of the full node by running:
docker compose logs -f
These commands assume you are using Docker Compose V2. In Docker Compose V1, the docker compose
command uses a dash (docker-compose
). If you use Docker Compose V1, replace the space in each docker compose
command with a dash (docker-compose
). For more information, see Docker Compose V2.
Stop the Full Node
Run the following command to stop the full node when you finish using it:
docker compose stop
Check your Installation
Check your Full Node Configuration
By default, the configuration file fullnode.yaml
is located at <your-fullnode-install-path>/data/config/
.
If you changed your local configuration you can always go back to the default Full Node Configuration.
Try reaching your Full Node on the RPC endpoint
Your full node serves the read endpoints of the IOTA JSON-RPC API at: http://127.0.0.1:9000
.
Register a new iota client environment with your node's RPC endpoint
iota client new-env --alias=local --rpc http://127.0.0.1:9000
iota client switch --env local
The instructions for building/installing the iota client are here
Then query the chain identifier from the RPC endpoint:
iota client chain-identifier