From d7a5f7e359b673a3d8c776433becbdb0313db0bf Mon Sep 17 00:00:00 2001 From: postscriptum Date: Sat, 14 Feb 2026 09:11:46 +0200 Subject: [PATCH] add tor/i2p config examples --- ...y-radicle-na-prykladi-overleynykh-merez.md | 131 +++++++++++++++++- 1 file changed, 130 insertions(+), 1 deletion(-) diff --git a/post/rozhortannia-veb-infrastruktury-radicle-na-prykladi-overleynykh-merez.md b/post/rozhortannia-veb-infrastruktury-radicle-na-prykladi-overleynykh-merez.md index 0a2ddd1..04009dc 100644 --- a/post/rozhortannia-veb-infrastruktury-radicle-na-prykladi-overleynykh-merez.md +++ b/post/rozhortannia-veb-infrastruktury-radicle-na-prykladi-overleynykh-merez.md @@ -317,4 +317,133 @@ sudo ufw allow from 0400::/7 to 505:6847:c778:61a1:5c6d:e802:d291:8191 port 8780 Якщо встановлено Alfis DNS: * http://ygg.ua.srv:8780 -* http://myc.ua.srv:8780 \ No newline at end of file +* http://myc.ua.srv:8780 + +## Анонімні мережі + +Веб сервіс Radicle є цілком сумісним з мережами на базі анонімних проксі I2P і Tor. Нюансом є лише обмеження політики [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/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](https://devzone.org.ua/post/vstanovlennia-routera-i2p-z-pidkliuchenniam-cherez-yggdrasil), до конфігурації тунелів додаються два HTTP сервери: + +``` /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](https://github.com/PurpleI2P/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` + +Перевіряємо: + +http://k7cfad745uretan7iihkwo6x24ut6mgbhq4ccxjqkzetgbtfknbq.b32.i2p + +### Tor + +Я користуюсь більш сучасною реалізацією роутера - [Arti](https://devzone.org.ua/post/vstanovlennia-onion-routera-arti-z-pidkliuchenniam-do-merezi-tor-cherez-yggdrasil). Підходів налаштування "прихованого сервісу" для Radicle тут може буде декілька. Можна створити окремі `onion_services` на `80` порт, але я поки використовую підхід зі спільним доменом на різних портах: + +``` /path/to/config.toml +[onion_services."radicle"] +#enabled = true +proxy_ports = [ + # radicle-explorer (WebUI) + ["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 в мульти-мережному середовищі](https://devzone.org.ua/post/rozhortannia-sida-radicle-v-multy-mereznomu-seredovyshchi) + +Після збереження налаштувань і перезапуску роутера, для отримання адреси `.onion` виконуємо команду: + +``` bash +$ su arti -s /bin/bash \ + -c 'arti hss -c /path/to/config.toml --nickname radicle onion-address' +... +tus2sol3kcykzh6dw4adgma3yzvzex7nsizlbdjmizgeines74chk7yd.onion +``` + +І додаємо результат до конфігурації експлорера у відповідному неймспейсі Nginx: + +``` /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 +``` \ No newline at end of file