Full Node Configuration
The IOTA full node configuration file is a YAML file named fullnode.yaml
, located in your iota install folder (if you used docker) or in /opt/iota/config
(if you used systemd).
You can modify it to configure your IOTA node.
To simplify the setup process, you can use the default configuration file:
- Mainnet
- Testnet
- Devnet
---
# Database Configuration
# Important: update this value to the location you want IOTA to store its database
db-path: "/opt/iota/db"
# Genesis Configuration
# Important: update these to the location where the genesis and migration files are stored
genesis:
genesis-file-location: "/opt/iota/config/genesis.blob"
migration-tx-data-path: "/opt/iota/config/migration.blob"
# Pruning Configuration (see https://docs.iota.org/operator/full-node/configs/pruning)
authority-store-pruning-config:
# Use 18446744073709551615 to disable object versions pruning
num-epochs-to-retain: 1
# Use 18446744073709551615 to disable transaction pruning
num-epochs-to-retain-for-checkpoints: 2
# Network Configuration
# This address is also used for web socket connections
json-rpc-address: "0.0.0.0:9000"
p2p-config:
listen-address: "0.0.0.0:8084"
external-address: /dns/$HOSTNAME/udp/8084 # Important: update this to your external DNS address
seed-peers:
- address: /dns/access-0.r.mainnet.iota.cafe/udp/8084
peer-id: 66b55de43e925417761f3c66cd734451b5876e1496b961052095bdd8a7732189
- address: /dns/access-1.r.mainnet.iota.cafe/udp/8084
peer-id: 7f8dc46616df5b5640ffd118c6ef640b3f7f5cae8a2bedfa700769e12150a197
- address: /dns/access-2.r.mainnet.iota.cafe/udp/8084
peer-id: c9fbf6fb511fc5243989c7a455d36f277844288b1a1d8453331c200b6ac4d99f
- address: /dns/access-3.r.mainnet.iota.cafe/udp/8084
peer-id: 2c1e05e9bddaf505b70184baf21a188a7c270b1b58f38d55e3aea42d067c5fb6
# State Sync Archive Fallback
state-archive-read-config:
- object-store-config:
object-store: "S3"
aws-endpoint: "https://archive.mainnet.iota.cafe"
aws-virtual-hosted-style-request: true
object-store-connection-limit: 20
no-sign-request: true
concurrency: 5
use-for-pruning-watermark: false
---
# Database Configuration
# Important: update this value to the location you want IOTA to store its database
db-path: "/opt/iota/db"
# Genesis Configuration
# Important: update this to the location where the genesis file is stored
genesis:
genesis-file-location: "/opt/iota/config/genesis.blob"
# Pruning Configuration (see https://docs.iota.org/operator/full-node/configs/pruning)
authority-store-pruning-config:
# Use 18446744073709551615 to disable object versions pruning
num-epochs-to-retain: 1
# Use 18446744073709551615 to disable transaction pruning
num-epochs-to-retain-for-checkpoints: 2
# Network Configuration
# This address is also used for web socket connections
json-rpc-address: "0.0.0.0:9000"
p2p-config:
listen-address: "0.0.0.0:8084"
external-address: /dns/$HOSTNAME/udp/8084 # Important: update this to your external DNS address
seed-peers:
- address: /dns/access-0.r.testnet.iota.cafe/udp/8084
peer-id: 46064108d0b689ed89d1f44153e532bb101ce8f8ca3a3d01ab991d4dea122cfc
- address: /dns/access-1.r.testnet.iota.cafe/udp/8084
peer-id: 8ffd25fa4e86c30c3f8da7092695e8a103462d7a213b815d77d6da7f0a2a52f5
# State Sync Archive Fallback
state-archive-read-config:
- object-store-config:
object-store: "S3"
aws-endpoint: "https://archive.testnet.iota.cafe"
aws-virtual-hosted-style-request: true
object-store-connection-limit: 20
no-sign-request: true
concurrency: 5
use-for-pruning-watermark: false
---
# Database Configuration
# Important: update this value to the location you want IOTA to store its database
db-path: "/opt/iota/db"
# Genesis Configuration
# Important: update these to the location where the genesis and migration files are stored
genesis:
genesis-file-location: "/opt/iota/config/genesis.blob"
migration-tx-data-path: "/opt/iota/config/migration.blob"
# Pruning Configuration (see https://docs.iota.org/operator/full-node/configs/pruning)
authority-store-pruning-config:
# Use 18446744073709551615 to disable object versions pruning
num-epochs-to-retain: 1
# Use 18446744073709551615 to disable transaction pruning
num-epochs-to-retain-for-checkpoints: 2
# Network Configuration
# This address is also used for web socket connections
json-rpc-address: "0.0.0.0:9000"
p2p-config:
listen-address: "0.0.0.0:8084"
external-address: /dns/$HOSTNAME/udp/8084 # Important: update this to your external DNS address
seed-peers:
- address: /dns/access-0.r.devnet.iota.cafe/udp/8084
peer-id: 01589ac910a5993f80fbc34a6e0c8b2041ddc5526a951c838df3037e11ab0188
- address: /dns/access-1.r.devnet.iota.cafe/udp/8084
peer-id: 32875c547ea3b44fa08a711646cedb70fa0c97959d236578131505da09723add
# State Sync Archive Fallback
state-archive-read-config:
- object-store-config:
object-store: "S3"
aws-endpoint: "https://archive.devnet.iota.cafe"
aws-virtual-hosted-style-request: true
object-store-connection-limit: 20
no-sign-request: true
concurrency: 5
use-for-pruning-watermark: false
If you used the installer script, it will have generated that config file for you, with default ports, archive and pruning settings, and also covers peering configuration for the selected network.
Customize your node's configuration
Networking
To synchronize the state, the node needs to establish connections with other nodes that have already joined the network.
Ensure that port 8084
is open and set up an external address for node discovery.
See more useful ports and network configuration options here
Storage and pruning (optional)
To keep disk usage in check or save storage space, you can:
- prune old transaction data (transactions, effects, events, checkpoints)
- prune old object versions
- turn off the built-in blockchain indexer
Learn how to choose and set pruning settings here.
Archival (optional)
If the peers your node syncs with have already pruned data your node needs, your node can fallback onto using archives (files containing historical data).
Learn how to configure archive settings for your node here.
Snapshots (optional)
If your node fails, it can catch up faster from a recent database snapshot (on restart) than replaying all past transactions since genesis. Learn how to configure formal and RocksDB snapshots here.
Data storage paths (optional)
To set paths for data files, change these values in fullnode.yaml
:
# Set a custom path for storing the node's database
db-path: "/db-files/iota-fullnode"
# Set a custom path to the genesis blob
genesis:
genesis-file-location: "/iota-fullnode/genesis.blob"
# Set a custom path for the migration blob
migration-tx-data-path: "/opt/iota/config/migration.blob"
Restart your node after making changes
After changing any of the node's settings, restart your node using:
- Systemd
- Docker
sudo systemctl restart iota-node
docker compose restart