diff --git a/public/uk/radicle-web-service-deployment.gmi b/public/uk/radicle-web-service-deployment.gmi index ccee9d7..7ed6b55 100644 --- a/public/uk/radicle-web-service-deployment.gmi +++ b/public/uk/radicle-web-service-deployment.gmi @@ -318,4 +318,139 @@ 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 у випадку, якщо спробуєте відвідати сіди 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 +``` \ No newline at end of file