add custom port notice, return nodes defaults

This commit is contained in:
postscriptum 2026-02-12 17:54:28 +02:00
parent 72f94fdec0
commit aaeaa7ff5e

View file

@ -11,7 +11,7 @@
У даному матеріалі описане розгортання публічного Веб-інтерфейсу для користувачів оверлейних IPv6 мереж Yggdrasil і Mycelium. Мотивація - зробити сідуючий сервер доступним для локальних користувачів, які бажають переглядати репозиторії "всередині" оверлейної мережі та мати можливість забирати код як з `rad clone` так і через шлюз HTTP звичною командою `git clone`. У даному матеріалі описане розгортання публічного Веб-інтерфейсу для користувачів оверлейних IPv6 мереж Yggdrasil і Mycelium. Мотивація - зробити сідуючий сервер доступним для локальних користувачів, які бажають переглядати репозиторії "всередині" оверлейної мережі та мати можливість забирати код як з `rad clone` так і через шлюз HTTP звичною командою `git clone`.
Веб-інфраструктура Radicle ділиться на дві основні частини: бекенд JSON/API (за яку відповідає пакунок radicle-httpd) і асинхронний фронтенд (на базі технологій HTML і JavaScript). Обидва рішення є частиною репозиторію `radicle-explorer`. Веб-інфраструктура Radicle ділиться на дві основні частини: бекенд JSON/API (за яку відповідає пакунок `radicle-httpd`) і статичний асинхронний фронтенд (на базі технологій HTML і JavaScript). Обидва рішення є частиною репозиторію `radicle-explorer`.
## Отримання початкового коду ## Отримання початкового коду
@ -152,9 +152,9 @@ sudo ufw allow from 0400::/7 to 505:6847:c778:61a1:5c6d:e802:d291:8191 port 8788
"nodes": { "nodes": {
"fallbackPublicExplorer": "https://app.radicle.xyz/nodes/$host/$rid$path", "fallbackPublicExplorer": "https://app.radicle.xyz/nodes/$host/$rid$path",
"requiredApiVersion": "~0.18.0", "requiredApiVersion": "~0.18.0",
"defaultHttpdPort": 8788, "defaultHttpdPort": 443,
"defaultLocalHttpdPort": 8788, "defaultLocalHttpdPort": 8080,
"defaultHttpdScheme": "http" "defaultHttpdScheme": "https"
}, },
"source": { "source": {
"commitsPerPage": 30 "commitsPerPage": 30
@ -185,7 +185,17 @@ sudo ufw allow from 0400::/7 to 505:6847:c778:61a1:5c6d:e802:d291:8191 port 8788
] ]
} }
``` ```
* `fallbackPublicExplorer` - це сервер-заглушка, куди у разі помилки підключення `preferredSeeds` буде перенаправлено запити JSON/API (radicle-httpd)
Стандартні поля секції `nodes` - свідомо не зміню, бо в коді клієнта є такі упороті моменти:
``` radicle-explorer/src/views/repos/Header/CloneButton.svelte
$: portFragment =
baseUrl.scheme === config.nodes.defaultHttpdScheme &&
baseUrl.port === config.nodes.defaultHttpdPort
? ""
: `:${baseUrl.port}`;
```
* через що може не працювати внутрішня навігація по сідам а також приклади команд типу `git clone`, виключаючи з URL не типовий для HTTP/80 порт (`8788`) якщо той використовується
### Компіляція ### Компіляція
@ -247,12 +257,3 @@ sudo ufw allow from 0400::/7 to 505:6847:c778:61a1:5c6d:e802:d291:8191 port 8780
=> http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:8780 => http://[202:68d0:f0d5:b88d:1d1a:555e:2f6b:3148]:8780
=> http://[505:6847:c778:61a1:5c6d:e802:d291:8191]:8780 => http://[505:6847:c778:61a1:5c6d:e802:d291:8191]:8780
### Помічені проблеми
Окрім вище згаданих проблем (з міксуванням декількох мереж в рамках спільного для всіх експлорера) можу виділити ще наступні:
* схоже, що реалізація заточена під використання DNS: наприклад в Yggdrasil прийнято користуватись IPv6, але у такому випадку будуть проблеми при прямому переході за посиланням на такі сіди (при навігації засобами JS воно як-ні-як працює) - мабуть, тут як завжди не передбачена проблема з кодуванням квадратних дужок
* порт в налаштуваннях сіда чомусь ігнорується, тому з віджета не можливо отримати правильний приклад команди `git clone`; якщо ви повісите `80` порт на піддомен, то проблему можна обійти, хоча це важко назвати рішенням
Підсумовуючи, саме Веб-експлорер я вважаю сирим для публікації його для широкого загалу, хоча JSON/API та вузол Radicle - виглядають цілком собі готовими до продакшну. Фронтенд я б все-таки поставив на локалхост і підключився до віддаленого сіда, налаштувавши потрібні мені псевдоніми в `/etc/hosts`. Свій інстанс триматиму публічно лише для відкритого тестування цього продукту в рамках подальшої розробки.