ICT is a project currently developed by CfB (Come_From_Beyond, aka Sergey Ivancheglo), co-founder et co-director of IOTA.
There is currently few information about the exact nature of ICT and its role in IOTA’s ecosystem. One of its main characteristics seems to be that it relies on sharding. That means it should be constituted of many small edge nodes (e.g. Raspberry Pis) that work together and act as it they were one single full node. Anyway, more information and explanation will be given by CfB in due time, once the system finalized. Currently, ICT is still in testing phase. Therefore, we need as many Raspberries as possible to extend the network. So if you have one or two lying around and want to participate keep reading, it is not that difficult.
Preparation of your Raspberry
For this guide, we assume that you have a Pi running and connected to the internet. We also assume you know it’s IP on your local network and you can access it headlessly of directly.
Obtaining a static IP
ICT requires you to use a static IP to connect with your neighbors. Unfortunately, ISP often provied dynamics IP. Therefore, you will need to use a dynamic dns service to have a static way of accessing your dynamic IP. Every few minutes, your Pi will simply report the actual public IP to the dynDNS server so it can trace back to you. If you already have a static IP, this step is obviously not requested.
Start by going on noip.com, or any other dyndns provider of your choice. Create an account the chose a domain name for easier access. Now you need to install some scripts on the raspberry that will send your IP to your dyndns provider. The following commands are for noip. You can see in depth what each line does on their documentation website.
mkdir /home/pi/noip cd /home/pi/noip wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz tar vzxf noip-duc-linux.tar.gz cd noip-2.1.9–1 sudo make sudo make install
After that last line, you have to enter your login and password (the ones that you used for noip.com)
The terminal will then ask you for the time interval between each update. Chose something strictly above 5, otherwise it will complain. Finally, enter
Nto the next question.
You can now run noip using
Opening port for ICT in your home router
ICT requires the port
14265 to be open in your router. Head to its configuration interface (usually details are printed on a label attached to it). Locate the port forwarding or portmapping tab and link port
14265 to your raspberry local IP and its
14265 port as well. Make sure that you use
UDP , otherwise it will not work properly.
Setup of ICT
ICT setup is quite simple, thanks to discord user ixus#6751 that compiled the commands in easy-to-use scripts.
First, we will create a script that will install ICT using
sudo nano setup-ict.sh
Then copy/paste the following in the editor
apt-get --assume-yes install git oracle-java8-jdk git clone https://github.com/Come-from-beyond/Ict.git cd Ict javac src/cfb/ict/*.java PROPERTIES_FILE=”ict.properties” echo “host = 0.0.0.0” > $PROPERTIES_FILE echo “port = 14265” >> $PROPERTIES_FILE echo “” >> $PROPERTIES_FILE echo “//Discord neighbor: <username>#<userid>” >> $PROPERTIES_FILE echo “neighborAHost = ?.?.?.?” >> $PROPERTIES_FILE echo “neighborAPort = 14265” >> $PROPERTIES_FILE echo “” >> $PROPERTIES_FILE echo “//Discord neighbor: <username>#<userid>” >> $PROPERTIES_FILE echo “neighborBHost = ?.?.?.?” >> $PROPERTIES_FILE echo “neighborBPort = 14265” >> $PROPERTIES_FILE echo “” >> $PROPERTIES_FILE echo “//Discord neighbor: <username>#<userid>” >> $PROPERTIES_FILE echo “neighborCHost = ?.?.?.?” >> $PROPERTIES_FILE echo “neighborCPort = 14265” >> $PROPERTIES_FILE
echo “ICT app installed!” echo “Open ‘ict.properties’ and add three neighbor ip-addresses” echo “Extra note: You may need to ensure that your firewall doesn’t block UDP-traffic on port 14265.” echo “Start ICT with command: ‘./run-ict.sh’”
Save by pressing
ctrl + O then
Enter then exit with
ctrl + X . You can now run this install script by using
sudo bash setup-ict.sh