======I2P======
I2P (Invisible Internet Project or Invisible Internet Protocol) -- anonymous overlay decentralized peer-to-peer network. Overlay -- works on top of other networks, for example, the regular Internet; decentralized -- distributed, without a single point of failure: one node falls, half of the network, or 3 users remain in the entire network -- I2P will still function. I2P is a peer-to-peer network because all participants have equal rights and opportunities: each user of the hidden network builds his tunnels through other participants and is himself a potential link in the chain of another user. At the same time, natural network activity does not compromise the subscriber in front of the home provider or participants in the hidden network.
{{ i2p:i2p-over-ygg.jpg?440}} I2P outperforms [[https://torproject.org|Tor]] by anonymity parameters, but does not have an output proxy to the regular Internet by default. The I2P network is completely decentralized and open source. There are two web clients: Java (first released in 2003) and i2pd in C ++ (first released in 2014). The C ++ I2P router outperforms its predecessor in speed and stability and is highly recommended. The main discussion of i2pd development is on the #dev channel on the [[social_media:ilita_network|ILITA]]. When working through Yggdrasil, the I2P network does not form a separate segment, but remains unified: users from the regular Internet are also available. A schematic of the interaction of Yggdrasil-only routers with other network participants is shown in the illustration.
Details about the mechanism of operation of the I2P network and the history of the appearance of the alternative i2pd client are described in the video (en): [[https://www.youtube.com/watch?v=95hSAMEwrlM|YouTube.com]],
[[https://open.tube/videos/watch/58fb286f-4251-44ad-883e-98c53ea9987d|Open.Tube]], [[http://[324:9de3:fea4:f6ac::ace]/files/video/english/4_I2P_and_I2Pd/About_I2P.mp4|Intranet repository]].
======Installing======
The easiest and most correct option is to download the package for your operating system from the official [[https://github.com/PurpleI2P/i2pd/releases|releases page]]. Also i2pd exists in the standard repositories of some unix-like operating systems like Debian or Ubuntu, and is available for installation via the short line ''sudo apt-get install i2pd'', but this installation method is not recommended, since there are always very outdated versions in the default repositories.\\
However, there is an up-to-date community repository, adding which to your system, you can forget about rotten packages and update in a familiar and convenient way. For comprehensive installation information, see [[https://i2pd.readthedocs.io/en/latest/user-guide/install/|documentation]] i2pd.\\ Below are instructions for Debian and Ubuntu using the user ''R4SAS'' repository in the clearnet:
# Ubuntu
sudo add-apt-repository ppa:purplei2p/i2pd
sudo apt-get update
sudo apt-get install i2pd
# Debian
sudo apt-get install apt-transport-https
wget -q -O - https://repo.i2pd.xyz/.help/add_repo | sudo bash -s -
apt-get update
sudo apt-get install i2pd
The same, but with access via Yggdrasil, i.e. intranet repository:
# Debian
wget -q -O - http://[321:c99a:91a1:cd2c::4]/.help-ygg/add_repo | sudo bash -s -
sudo apt-get update
sudo apt-get install i2pd
The community supports a Firefox-based I2P browser similar in concept to the Tor browser. You can download the browser from [[https://github.com/PurpleI2P/i2pdbrowser/releases|releases page]] of the corresponding git repository of the PurpleI2P team (distributed only for Windows). The package of a portable browser may not contain the latest version of i2pd, so you will probably need to manually replace the executable file ''i2pd.exe'' to use the current version.
======I2P over Yggdrasil======
Starting from version 2.36.0 i2pd has a mode of operation that excludes connections via the regular Internet. Below is an example of a router configuration that communicates with a hidden I2P network exclusively through other Yggdrasil routers. By default, the configuration file is located in ''/etc/i2pd/i2pd.conf'' or ''~/.i2pd/i2pd.conf'', and for Windows OS: ''%AppData%\i2pd\i2pd.conf''. For the I2P router to work in "Portable" mode, when all data is stored in the directory with the executable file, you need to create the "i2pd.conf" file in the same folder where the program binary file is located.
daemon=true # note: remove it if you running on Windows!
ipv4=false
ipv6=false
ssu=false
ntcp2.enabled=false
meshnets.yggdrasil=true
If you want the I2P router to publish the address from [[yggdrasil:subnet_setting|your Yggdrasil subnet]] used on the device, add the line:
meshnets.yggaddress=your_local_yggdrasil_address
At the first start, i2pd will contact the start server inside the Yggdrasil network, which will give away several routers sufficient to get started. Then, the router's network base will start automatically replenishing. Thus, the use of I2P will do without a single call to the clearnet.
=====Autostart=====
An I2P router (i2pd) at system startup (in the example Debian) can start earlier than the Yggdrasil service. This leads to a forced manual restart of i2pd. The yggdrasil interface is not detected by the I2P router until the Yggdrasil service starts. There are two main ways to solve this problem (use whichever you like):
**1)** After starting Yggdrasil, set the delay before starting the dependent services:
- mkdir /etc/systemd/system/i2pd.service.d
- nano /etc/systemd/system/i2pd.service.d/override.conf
- [Unit]
After=network.target yggdrasil.service
//Ctrl+O -- save changes to the file, Ctrl+X - exit from nano editor//
- mkdir /etc/systemd/system/yggdrasil.service.d
- nano /etc/systemd/system/yggdrasil.service.d/override.conf
- [Service]
# adding post-up delay to bring up yggdrasil tunnel interface before starting other services which depends on ygg
ExecStartPost=/bin/sleep 5
//Ctrl+O -- save changes to the file, Ctrl+X - exit from nano editor//
**2)** Set i2pd start timer:
- Create file ''/etc/systemd/system/i2pd.timer'' sudo nano /etc/systemd/system/i2pd.timer
- Complete the timer file as follows: [Unit]
Description=i2pd service timer
After=yggdrasil.service
[Timer]
OnActiveSec=10
[Install]
WantedBy=multi-user.target
//Ctrl+O -- save changes to the file, Ctrl+X - exit from nano editor//
- sudo systemctl disable i2pd.service
- sudo systemctl enable i2pd.timer
======Network support======
How can the average user contribute to the development of the I2P network? This question is asked by many enthusiasts. And here's the answer:
- Enable all existing network interfaces for greater network connectivity ipv4=true
ipv6=true
meshnets.yggdrasil=true
- And also enable the floodfill mode - a kind of I2P dispatcher (the load on the processor and network channel may periodically increase): floodfill=true
Please note that these settings are primarily relevant for server administrators or home users who have a dedicated IP address. In any case, keeping the I2P router on for as long as possible is a good contribution to the overall power of the network. A network client running even on a smartphone (!) Can receive "probe" tunnels created by other participants to explore the network and have extremely low traffic.
======References======
[[http://[324:71e:281a:9ed3::ace]/ygg-i2p/|Monitoring]] the number of Yggdrasil routers in the I2P network\\
[[https://github.com/PurpleI2P/|Git repository]]\\
[[https://github.com/PurpleI2P/i2pd/releases|Releases page]] for download i2pd\\
[[https://i2pd.readthedocs.io/en/latest/|Documentation]]\\
[[https://geti2p.net/ru/|Java-router]] (client without Yggdrasil support)