Specify <yourfamilyname>.family.i2p.net for CN (Common Name) when requested.
Specify <yourfamilyname>.family.i2p.net for the CN (Common Name) when requested.
Once you are done with it place <your-family-name>.key and <your-family-name>.crt to<ip2ddata>/family folder (for exmple ~/.i2pd/family).
Once you are done generating it place <your-family-name>.key and <your-family-name>.crt in the<ip2ddata>/family folder (for example ~/.i2pd/family).
You should provide these two files to other members joining your family.
If you want to register you family and let I2P network recognize it, create pull request for you .crt file into contrib/certificate/family.
It will appear in i2pd and I2P next releases packages. Don't place .key file, it must be shared between you family members only.
If you want to register your family and let the I2P network recognize it, create a pull request for your .crt file into contrib/certificate/family.
Certificates added into the public repository this way will appear in i2pd and I2P next releases packages. Don't place .key file, it must be shared between you family members only.
How to join existing family
---------------------------
@ -31,6 +31,8 @@ Once you and that family agree to do it, they must give you .key and .crt file a
@@ -31,6 +31,8 @@ Once you and that family agree to do it, they must give you .key and .crt file a
Publish your family
-------------------
Run i2pd with parameter 'family=<your-family-name>', make sure you have <your-family-name>.key and <your-family-name>.crt in your 'family' folder.
Run i2pd with the parameters 'family=<your-family-name>', and make sure you have <your-family-name>.key and <your-family-name>.crt in your 'family' folder.
If everything is set properly, you router.info will contain two new fields: 'family' and 'family.sig'.
Otherwise your router will complain on startup with log messages starting with "Family:" prefix and severity 'warn' or 'error'.
If not, your router will complain on startup with log messages starting with "Family:" prefix and severity 'warn' or 'error'.
This chapter explains how to start and manage i2pd daemon under \*nix operation systems.
This chapter explains how to start and manage the i2pd daemon under \*nix operation systems.
After you have built i2pd from source, just run a binary:
After you have built i2pd from source, just run the binary:
./i2pd
@ -14,29 +14,29 @@ To display all available options:
@@ -14,29 +14,29 @@ To display all available options:
./i2pd --help
i2pd can be controlled with signals. Process ID by default is written to file `~/.i2pd/i2pd.pid` or `/var/run/i2pd/i2pd.pid`.
You can use `kill` utility to send signals like this:
i2pd can be controlled with signals. The process ID by is written to the file `~/.i2pd/i2pd.pid` or
`/var/run/i2pd/i2pd.pid` by default. You can use `kill` utility to send signals like this:
kill -INT $( cat /var/run/i2pd/i2pd.pid )
i2pd supports the following signals:
* INT - Graceful shutdown. i2pd will wait for 10 minutes and stop. Send second INT signal to shutdown i2pd immediately.
* INT - Graceful shutdown. i2pd will wait for up to 10 minutes and stop. Send a second INT signal to shutdown i2pd immediately.
* HUP - Reload configuration files.
### systemd unit
Some Linux packages have a systemd control unit, so it is possible to manage i2pd with it.
Some i2pd packages come with a systemd control unit, and for those that use systemd, it is possible to manage i2pd with it.
Start/stop i2pd:
To start/stop i2pd:
sudo systemctl start i2pd.service
sudo systemctl stop i2pd.service --no-block
Stop command initiates a graceful shutdown process, i2pd stops after finishing to route transit tunnels (maximum 10 minutes).
The stop command initiates a graceful shutdown process, i2pd stops after finishing to route transit tunnels (maximum 10 minutes).
Enable/disable i2pd to be started on bootup:
To enable/disable autostart of i2pd upon bootup:
sudo systemctl enable i2pd.service
sudo systemctl disable i2pd.service
@ -45,7 +45,8 @@ Enable/disable i2pd to be started on bootup:
@@ -45,7 +45,8 @@ Enable/disable i2pd to be started on bootup:
Recommended way to run i2pd built from source
---------------------------------------------
This way all i2pd-related files will be stored at `$HOME/dist`.
The following commands display the recommended way to build i2pd from source, without a package manager. Installing i2pd this
way will ensure all i2pd-related files are stored at `$HOME/dist`.
mkdir $HOME/dist
cp i2pd $HOME/dist
@ -53,5 +54,8 @@ This way all i2pd-related files will be stored at `$HOME/dist`.
@@ -53,5 +54,8 @@ This way all i2pd-related files will be stored at `$HOME/dist`.
cp contrib/i2pd.conf $HOME/dist
cd $HOME/dist
ulimit -n 4096 # only on Linux, increasing open file limit
Then, to run i2pd, simply travel to the installation directory and type:
Must contain few mandatory parameters, some optional parameters might be also presented.
Each client tunnel must contain a few mandatory parameters, along with some optional ones.
Example of client tunnel:
Here is an example of a client tunnel:
[irc-out]
type = client
@ -44,8 +45,9 @@ Example of client tunnel:
@@ -44,8 +45,9 @@ Example of client tunnel:
destination = irc.echelon.i2p
keys = irc.dat
If *keys* is empty, transient keys will be created on every restart. If keys file is not found, new keys will be created and stored into specified file. If *keys* is equal to *transient*, new keys will be created, but not stored into a file.
Client tunnels might share same local destination, if keys file contains same identity.
If *keys* is empty, transient keys will be created on every restart. If the keys file is not found, new keys will be created and stored into the specified file.
If *keys* is set to *transient*, new keys will be created, but not stored into a file.
Client tunnels might share the same local destination, if the keys file contains the same identity.
*http* tunnel works same way as server tunnel, but replace 'Host:' field in HTTP header to address provided in configuration.
Also resolves it if necessary.
*http* tunnels are configured just like regular server tunnels, except the the 'Host:' field
must be assigned to the address provided in configuration. i2pd will also resolve it if necessary.
Example of http tunnel:
Here's an example of an http tunnel:
[http-in]
type = http
@ -143,9 +146,9 @@ There are 2 types of UDP tunnels: `udpclient` and `udpserver`
@@ -143,9 +146,9 @@ There are 2 types of UDP tunnels: `udpclient` and `udpserver`
Socks proxy
-----------
Socks proxy interface can be defined in ``tunnels.conf``.
The SOCKS proxy interface can be defined in ``tunnels.conf``.
Example of Socks proxy:
Here's an example of a Socks proxy:
[alt-socks]
type = socks
@ -160,7 +163,7 @@ Example of Socks proxy:
@@ -160,7 +163,7 @@ Example of Socks proxy:
I2CP parameters
---------------
I2CP parameter are common for all tunnel types and specify setting for a local destination.
These I2CP parameter are common for all tunnel types and specify settings for a local destination.
* inbound.length -- number of hops of an inbound tunnel. 3 by default; lower value is faster but dangerous
* outbound.length -- number of hops of an outbound tunnel. 3 by default; lower value is faster but dangerous