What is the minimal system that would be suitable for this task? What kind of system and OS would you recommend for this?
The answers below this section are from 2017, and largely aren’t relevant anymore. The Iota Foundation has urged users to move on from IRI to a go based solution called Hornet.
The official guide to getting started with Hornet can be found here.
The source code for Hornet can be found here.
Hornet works differently from the older nodes. Some important things to consider from a requirement perspective, is that now the amount of hard drive space doesn’t matter as much. Due to configurable pruning depth, you can simply choose the space you have available instead. I’d think a minimum of 500 GBs to start and then expand from would be good, especially with how cheap storage is these days. A specific size is not mentioned in the getting started guide. Hornet uses less than 500 MBs of RAM, so the requirements are very minimal, the guide recommends a minimum of 8GBs likely to handle growth.
Here are the official minimum requirements from the guide above.
To handle a potential high rate of messages per second, nodes need enough computational power to run reliably, and should have following minimum specs:
- 4 cores or 4 vCPU
- 8 GB RAM
- SSD storage
- A public IP address
The amount of storage you need will depend on whether and how often you plan on pruning old data from your local database.
Hornet exposes different functionality on different ports:
- 15600 TCP - Gossip protocol port
- 14626 UDP - Autopeering port (optional)
- 14265 TCP - REST HTTP API port (optional)
- 8081 TCP - Dashboard (optional)
- 8091 TCP - Faucet website (optional)
- 1883 TCP - MQTT (optional)
The mentioned ports are important for flawless node operation. The REST HTTP API port is optional and is only needed if you want to offer access to your node's API. All ports can be customized inside the config.json file.
You can also run Hornet on something as low powered as a Raspberry Pi 4B. But they still recommend a more powerful machine if you are doing anything more than exploratory work.
Another fairly new node, based on Rust, called Bee is also available. The source code for Bee can be found here if you’d like to learn more. Bee is even less resource intensive, requiring less than 80 MB of RAM for example.
Old IRI recommendations from 2017 - Requirements for a Full Node
I have found macOS to be the easiest to get up and running in the smallest number of steps. Your mileage may vary though.
Linux/macOS/Windows and anything else that can execute the iri jar.
At least 2 or more cores with 64-bit architecture
At least 4 GB or more
At least 50 GB of free space
2 Mbps or better should suffice
24/7 (or close to it)
Static IP Address
Required, visit here to setup
Setup a GUI Full Node
Visit IOTA GUI Full Node guide
Setup a Headless Full Node
These requirements will change as more and more people adopt IOTA.
If you've ever configured a Bittorrent tracker it has similar system requirements to one of those.
What about Raspberry PI? The best model available right now would likely under perform. The CPU and RAM is a little too weak for the java implementation. There are other implementations in progress, requiring less resources though
My personal recommendation:
Operation System: Linux (generally better for server)
RAM: At least 4GB. Better 8GB.
CPU: Quad-Core x86, ARM is not supported at the moment (I hope it will be in the future)
HDD: 150GB - 200GB, not necessary (just to have big buffer for the transaction database)
Internet Connection: 100Mbit/s or more
Why all these recommendations? If you want to have a secure full-node, you need some more neighbors. These neighbors put pressure on your node. If you want to share your full-node with friends, family, you get also more traffic/pressure because of the light-nodes. But: Just try it with the minimal settings and find your perfect setup :)
So the topic with your Raspberry:
There is a list of supported ARM devices.
Some Raspberry boards are supported. I haven't tested them yet. I have other ARM-boards and I cannot compile IRI on them. Probably the list is outdated (2016). The issue is the RocksDB database not IRI itself.
At the moment 28.12.2017: A node should have at least 8 GB RAM. It's better to have more, because the machine, operating system and other services need some memory for themselves. The Java Memory settings should therefore be set one or two GB below the RAM-Size for 8GB e.g. to -Xmx7G
The node shoud have 4 cores.
The node should have a SSD with around 40GB space. The mainnet DB has around 9GB today, but is growing.