add i2p and tor config examples

This commit is contained in:
postscriptum 2026-02-14 08:55:08 +02:00
parent 70fa43a941
commit be58c872a5

View file

@ -318,4 +318,139 @@ sudo ufw allow from 0400::/7 to 505:6847:c778:61a1:5c6d:e802:d291:8191 port 8780
Якщо встановлено Alfis DNS: Якщо встановлено Alfis DNS:
=> http://ygg.ua.srv:8780 => http://ygg.ua.srv:8780
=> http://myc.ua.srv:8780 => http://myc.ua.srv:8780
## Анонімні мережі
Веб сервіс Radicle є цілком сумісним з мережами на базі анонімних проксі I2P і Tor. Нюансом є лише обмеження політики CORS у випадку, якщо спробуєте відвідати сіди I2P/Tor перебуваючи на сервері наприклад IPv6. Але якщо підняти окрему копію експлорера без "солянки", то користувачі зможуть переглядати та клонувати репозиторії анонімно.
Особисто я використовую наступну структуру файлової системи з релевантними для кожної теки файлами `config.json`:
``` bash
mkdir -p /var/www/radicle/yggdrasil \
/var/www/radicle/i2p \
/var/www/radicle/mycelium \
/var/www/radicle/tor
```
* з відповідними налаштуваннями `root` в Nginx
### I2P
На прикладі i2pd, до конфігурації тунелів додаються два HTTP сервери:
* JSON/API
* Radicle explorer
``` /var/lib/i2pd/tunnels.conf
[radicle-explorer]
type = http
host = ::1
port = 8780
inport = 80
keys = radicle-explorer.dat
[radicle-api]
type = http
host = 202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148
port = 8788
inport = 8788
keys = radicle-api.dat
```
* в Nginx, хост `::1` лінкується на корінь `/var/www/radicle/i2p`
* для IPv4 можна замість `::1` використовувати `127.0.0.1`
Після перезапуску роутера i2pd, засобами i2pd-tools отримуються згенеровані адреси B32:
``` bash
$ keyinfo /var/lib/i2pd/radicle-explorer.dat
k7cfad745uretan7iihkwo6x24ut6mgbhq4ccxjqkzetgbtfknbq.b32.i2p
$ keyinfo /var/lib/i2pd/radicle-explorer.dat
cfwfe2k6dropbymtddz225mbugzs5tfsmvng23zsebf6iw3cj2xa.b32.i2p
```
Додаємо адресу `radicle-api` до `preferredSeeds`:
``` /var/www/radicle/i2p/config.json
"preferredSeeds": [
{
"hostname": "cfwfe2k6dropbymtddz225mbugzs5tfsmvng23zsebf6iw3cj2xa.b32.i2p",
"port": 8788,
"scheme": "http"
}
]
```
* зверніть увагу на порт `8788`: в I2P він може не використовуватись через наявність окремого "домену" і порт можна приховати з URL, вказавши значення аналогічне `defaultLocalHttpdPort`
Перевіряємо роботу `radicle-explorer`:
=> http://k7cfad745uretan7iihkwo6x24ut6mgbhq4ccxjqkzetgbtfknbq.b32.i2p
### Tor
Я користуюсь більш сучасною реалізацією роутера - Arti, детальніше про нього було написано тут:
=> arti-onion-router-with-tor-connection-over-yggdrasil.gmi Встановлення Onion-роутера Arti з підключенням до мережі Tor через Yggdrasil
Підходів налаштування "прихованого сервісу" Radicle може буде декілька. Можна створити окремі `onion_services` на `80` порт, але я поки використовую підхід зі спільним доменом на різних портах:
``` /path/to/config.toml
[onion_services."radicle"]
#enabled = true
proxy_ports = [
# radicle-explorer (Web UI)
["80", "[::1]:8781"],
# radicle-httpd (JSON/API)
["8788", "[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:8788"],
# radicle-node (public seed)
# ["8776", "[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:8776"],
["*", "destroy"]
]
```
* Веб-інтерфейс оголошую на тому ж локальному IP `::1`, як і I2P, через що змінюю порт на будь-який вільний типу `8781` (можна також засетапити окремий локальний IP `::2` але це вимагатиме додаткових кроків з перманентними правилами `ip`)
* `radicle-node` - в контексті гайду не розглядається, утім ви можете його розкоментувати, користуючись гайдом:
=> radicle-multi-network-seed-deployment.gmi Розгортання сіда Radicle в мульти-мережному середовищі
Після збереження налаштувань і перезапуску роутера, для отримання адреси `.onion` виконуємо команду:
``` bash
$ su arti -s /bin/bash \
-c 'arti hss -c /path/to/config.toml --nickname radicle onion-address'
...
tus2sol3kcykzh6dw4adgma3yzvzex7nsizlbdjmizgeines74chk7yd.onion
```
І додаємо її до конфігурації експлорера у відповідному неймспейсі:
``` /var/www/radicle/tor/config.json
"preferredSeeds": [
{
"hostname": "tus2sol3kcykzh6dw4adgma3yzvzex7nsizlbdjmizgeines74chk7yd.onion",
"port": 8788,
"scheme": "http"
}
]
```
Пробуємо підключитись і отримати приклади команд на клонування репозиторіїв по HTTP:
=> http://tus2sol3kcykzh6dw4adgma3yzvzex7nsizlbdjmizgeines74chk7yd.onion
### Проксі для клієнта Git
Використання I2P і Tor - передбачає підключення клієнтських застосунків через проксі локального або віддаленого роутера. Це стосується й команди `git`. Щоб клонувати репозиторії Radicle засобами HTTP на прикладі I2P, потрібно до профілю Git додати наступний рядок:
``` bash
git config http.proxy http://127.0.0.1:4444
```
* вкажіть `--global` для глобального використання проксі
Таким чином, клонування репозиторію `heartwood` з цього інстансу відбувається командою:
``` bash
git clone http://cfwfe2k6dropbymtddz225mbugzs5tfsmvng23zsebf6iw3cj2xa.b32.i2p:8788/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git heartwood
```
Відповідно, користувачі Tor оперуватимуть вже адресами `.onion`, використовуючи проксі з портом `9150` або `9050`, в залежності від обраного ними роутера:
``` bash
git clone http://tus2sol3kcykzh6dw4adgma3yzvzex7nsizlbdjmizgeines74chk7yd.onion:8788/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git heartwood
```