Ресид - служебный сервер в сети I2P, предоставляющий актуальную базу пиров при первом запуске роутера i2pd, посредством API.
Подобно BitCoin DNS, инициализация осуществляется путём запроса пиров с «официальных» серверов, указанных в коде роутера или опциональных:
[reseed] # urls = https://reseed.i2p-projekt.de/,https://i2p.mooo.com/netDb/,https://netdb.i2p2.no/ # yggurls = http://[324:71e:281a:9ed3::ace]:7070/,http://[301:65b9:c7cd:9a36::1]:18801/,http://[320:8936:ec1a:31f1::216]/,http://[316:f9e0:f22e:a74f::216]/
либо указывается путь к локальному файлу:
[reseed] file = /path/to/i2pseeds.su3
pyseeder - утилита, позволяющая генерировать API дамп i2pseeds.su3, используя собранную в процессе работы роутера i2pd базу netDb (обычно расположена в /var/lib/i2pd/netDb)
Поскольку в сети I2P ограниченное количество ресидов Yggdrasil, при наличии такой возможности, будет полезно организовать дополнительный сервер.
Для этого, достаточно сгенерировать сетевой дамп в директорию Веб-сервера, например Nginx:
$ YOUR_PASSWORD="Pa55w0rd" $ echo $YOUR_PASSWORD | pyseeder reseed --netdb /path/to/netDb --private-key data/priv_key.pem --outfile /var/www/myhost/i2pseeds.su3 --signer-id user@mail.i2p
База netDb содержит пиры всех адресных типов, перед выполнением команды pyseeder reseed для ресида Yggdrasil полезно отфильтровать (в приоритете) только локальные узлы.
Делается это скриптом y2r.sh , предварительно указав актуальные пути:
Также, перед публикацией сервера, потребуется скопировать лэндинг-файл seed.html в /var/www/myhost/seed.html (или /var/www/myhost/index.html) - в котором скрипт y2r.sh будет обновлять счётчик пиров.
Команду pyseeder reseed и файл y2r.sh удобно последовательно собрать в один общий скрипт и выполнять его по расписанию crontab:
#!/bin/bash cd /path/to/pyseeder # фильтруем NetDb yggdrasil/y2r.sh # генерируем i2pseeds.su3 . venv/bin/activate #YOUR_PASSWORD="Pa55w0rd" #echo $YOUR_PASSWORD | pyseeder reseed --netdb /path/to/netDb --private-key /path/to/priv_key.pem --outfile /var/www/myhost/i2pseeds.su3 --signer-id noreply@localhost pyseeder reseed --no-encryption --netdb /path/to/netDb --private-key /path/to/priv_key.pem --outfile /var/www/myhost/i2pseeds.su3 --signer-id noreply@localhost deactivate
Пример конфигурации файла Nginx есть в репозитории и может иметь следующий вид:
limit_req_zone $binary_remote_addr zone=reseed:512k rate=10r/m; server { root /var/www/myhost; listen [302:68d0:f0d5:b88d::9216]:80; index seed.html; location /i2pseeds.su3 { limit_req zone=reseed burst=5; if ($http_user_agent !~* "Wget/1.11.4" ) { return 403; } } location /user_at_mail.i2p.crt { limit_req zone=reseed; } }
Проверить работоспособность API можно командой:
pyseeder transport.pull --urls http://[302:68d0:f0d5:b88d::9216]/ --outfile /path/to/i2pseeds.su3