Install HORNET using Docker
This guide represents the recommended setup to run a HORNET node. It includes everything required to setup a public node accessible by wallets and applications:
- HORNET
- Traefik - Reverse proxy using SSL certificates to secure access to the node API and dashboard.
- Prometheus - Metrics scraper configured to collect all metrics from HORNET and INX extensions.
- Grafana - Data visualizer that can be used to display the metrics collected by Prometheus.
- inx-dashboard - Node dashboard.
- inx-indexer - Indexer extension for wallets and applications.
- inx-mqtt - MQTT extension providing the Event API.
- inx-participation - Participation extension providing on-tangle-voting.
- inx-poi - Extension to generate proofs of inclusionThe process of adding blocks in the Tangle. It is based on Acceptance..
- inx-spammer - Network spammer.
- wasp - L2 Node for IOTA Smart Contracts.
Requirements
- A recent release of Docker enterprise or community edition. Avoid using the Docker version shipped with your OS since these are mostly out of date. You can find installation instructions in the official Docker documentation.
- Docker Compose CLI plugin.
- A registered domain name pointing to the public IP address of your server. (optional if not using HTTPS)
- Opening up the following ports in your servers firewall:
15600 TCP
- Used for HORNET gossip.14626 UDP
- Used for HORNET autopeering.80 TCP
- Used for HTTP. (can be changed, see below)443 TCP
- Used for HTTPS. (optional if not using HTTPS)4000 TCP/UDP
- Used for Wasp gossip. (optional if not using Wasp)
- curl.
Download the latest release
The commands assume you are using Linux.
Once you have completed all the installation requirements, you can download one of the latest releases, depending on the network you want to join, by running the following command:
- IOTA
- IOTA Testnet
- Shimmer
- Shimmer Testnet
mkdir node-docker-setup && cd node-docker-setup && curl -L https://node-docker-setup.iota.org/iota | tar -zx
mkdir node-docker-setup && cd node-docker-setup && curl -L https://node-docker-setup.iota.org/iota-testnet | tar -zx
mkdir node-docker-setup && cd node-docker-setup && curl -L https://node-docker-setup.iota.org/shimmer | tar -zx
mkdir node-docker-setup && cd node-docker-setup && curl -L https://node-docker-setup.iota.org/shimmer-testnet | tar -zx
Prepare
The commands assume you are using Linux.
1. Generate dashboard credentials
To access your HORNET dashboard, a set of credentials need to be configured. Run the following command to generate a password hash and salt for the dashboard:
docker compose run hornet tools pwd-hash
Copy the output of the command for the next step.
2. Setup your Environment
Copy the env_template
file to .env
using the following command:
cp env_template .env
Modify the .env
file to fit your needs with the editor of your choice.
We are using nano
in the following example:
nano .env
Follow the instructions provided in the file.
With nano
you can save your changes and exit the editor using CTRL+O
and CTRL+X
.
You can configure your node to either use HTTP or HTTPS. For publicly exposed nodes, we heavily recommend using HTTPS.
Activating a Wasp node isn't enough to fully participate in a smart contract chain. You don't need a standalone Wasp node if you're using our ShimmerEVM chain. For setting up your own chain, see our guide for the required steps: Set Up a Chain
- IOTA
- IOTA Testnet
- Shimmer
- Shimmer Testnet
loading...
loading...
loading...
loading...
3. Setup neighbors
Add your HORNET neighbor addresses to the peering.json
file.
This step is recommended, but optional if you are using autopeering. See peering for more information.
4. Create the data
folder
All files used by HORNET, the INX extensions, Wasp, Traefik & co will be stored in a directory called data
.
Docker image runs under user with user id 65532
and group id 65532
, so this directory needs to have the correct permissions to be accessed by the containers.
To create this directory with correct permissions run the contained script:
./prepare_docker.sh
Run
If your are coming from the Running an ISC Access Node
how-to, this guide ends here and you have to continue with the access node setup here.
Starting the node
You can start the HORNET node and INX extensions by running:
docker compose up -d
-d
Instructs Docker to start the containers in the background.
HTTPS
After starting the node you will be able to access your services at the following endpoints:
- API:
https://node.your-domain.com/api/routes
- HORNET Dashboard:
https://node.your-domain.com/dashboard
- Grafana:
https://node.your-domain.com/grafana
(optional if using "monitoring" profile) - Legacy-API:
https://node.your-domain.com/api/core/v0/info
(optional if using "history-legacy" profile) - Chrysalis-API:
https://node.your-domain.com/api/core/v1/info
(optional if using "history-chrysalis" profile) - Wasp API:
https://node.your-domain.com/wasp/api
(optional if using "wasp" profile) - Wasp Dashboard:
https://node.your-domain.com/wasp/dashboard
(optional if using "wasp" profile)
After starting your node for the first time, please change the default grafana credentials
User: admin
Password: admin
You can configure your wallet software to use https://node.your-domain.com
HTTP
After starting the node you will be able to access your services at the following endpoints:
- API:
http://localhost/api/routes
- HORNET Dashboard:
http://localhost/dashboard
- Grafana:
http://localhost/grafana
(optional if using "monitoring" profile) - Legacy-API:
http://localhost/api/core/v0/info
(optional if using "history-legacy" profile) - Chrysalis-API:
http://localhost/api/core/v1/info
(optional if using "history-chrysalis" profile) - Wasp API:
http://localhost/wasp/api
(optional if using "wasp" profile) - Wasp Dashboard:
http://localhost/wasp/dashboard
(optional if using "wasp" profile)
If you changed the default HTTP_PORT
value, you will need to add the port to the urls.
You can configure your wallet software to use http://localhost
Displaying Log Output
You can display the HORNET logs by running:
docker compose logs -f hornet
-f
Instructs Docker to continue displaying the log tostdout
until CTRL+C is pressed.
Stopping the node
You can stop the HORNET node and INX extensions by running:
docker compose down
Tools
To access the tools provided inside HORNET you can use:
docker compose run hornet tool <tool-name>
To see the list of tools included run:
docker compose run hornet tool -h
JWT Auth
To generate a JWT token to be used to access protected routes you can run:
docker compose run hornet tool jwt-api --databasePath data/p2pstore
- If you changed the
restAPI.jwtAuth.salt
value in theconfig.json
, then you need to pass that value as a parameter as--salt <restAPI.jwtAuth.salt value from your config.json>
INX
This setup includes the INX extensions listed at the beginning of this guide.
If you want to disable certain extensions you can comment out the different services in the docker-compose.yml
file and restart the node.
More Information
For more information look at the Github repository