5.3 KiB
RNS Page Node
Простой способ для раздачи страниц и файлов через сеть Reticulum. Прямая замена для узлов NomadNet, которые в основном служат для раздачи страниц и файлов.
Особенности
- Раздача страниц и файлов через RNS
- Поддержка динамических страниц с переменными окружения
- Разбор данных форм и параметров запросов
Установка
# Pip
# Может потребоваться --break-system-packages
pip install rns-page-node
# Pipx
pipx install rns-page-node
# uv
uv venv
source .venv/bin/activate
uv pip install rns-page-node
# Pipx через Git
pipx install git+https://github.com/Sudo-Ivan/rns-page-node.git
Использование
# будет использовать текущий каталог для страниц и файлов
rns-page-node
или с параметрами командной строки:
rns-page-node --node-name "Page Node" --pages-dir ./pages --files-dir ./files --identity-dir ./node-config --announce-interval 360
или с файлом конфигурации:
rns-page-node /путь/к/config.conf
Файл Конфигурации
Вы можете использовать файл конфигурации для сохранения настроек. См. config.example для примера.
Формат файла конфигурации - простые пары ключ=значение:
# Строки комментариев начинаются с #
node-name=Мой Page Node
pages-dir=./pages
files-dir=./files
identity-dir=./node-config
announce-interval=360
Порядок приоритета: Аргументы командной строки > Файл конфигурации > Значения по умолчанию
Docker/Podman
docker run -it --rm -v ./pages:/app/pages -v ./files:/app/files -v ./node-config:/app/node-config -v ./config:/root/.reticulum ghcr.io/sudo-ivan/rns-page-node:latest
Docker/Podman без root-доступа
mkdir -p ./pages ./files ./node-config ./config
chown -R 1000:1000 ./pages ./files ./node-config ./config
podman run -it --rm -v ./pages:/app/pages -v ./files:/app/files -v ./node-config:/app/node-config -v ./config:/app/config ghcr.io/sudo-ivan/rns-page-node:latest-rootless
Монтирование томов необязательно, вы также можете скопировать страницы и файлы в контейнер с помощью podman cp или docker cp.
Сборка
make build
Сборка wheels:
make wheel
Сборка Wheels в Docker
make docker-wheels
Страницы
Поддержка динамических исполняемых страниц с полным разбором данных запросов. Страницы могут получать:
- Поля форм через переменные окружения
field_* - Переменные ссылок через переменные окружения
var_* - Удаленную идентификацию через переменную окружения
remote_identity - ID соединения через переменную окружения
link_id
Это позволяет создавать форумы, чаты и другие интерактивные приложения, совместимые с клиентами NomadNet.
Параметры
Позиционные аргументы:
node_config Путь к файлу конфигурации rns-page-node
Необязательные аргументы:
-c, --config Путь к файлу конфигурации Reticulum
-n, --node-name Имя узла
-p, --pages-dir Каталог для раздачи страниц
-f, --files-dir Каталог для раздачи файлов
-i, --identity-dir Каталог для сохранения идентификационных данных узла
-a, --announce-interval Интервал анонсирования присутствия узла (в минутах, по умолчанию: 360 = 6 часов)
--page-refresh-interval Интервал обновления страниц (в секундах, 0 = отключено)
--file-refresh-interval Интервал обновления файлов (в секундах, 0 = отключено)
-l, --log-level Уровень логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL)
Лицензия
Этот проект включает части кодовой базы NomadNet, которая лицензирована под GNU General Public License v3.0 (GPL-3.0). Как производная работа, этот проект также распространяется на условиях GPL-3.0. Полный текст лицензии смотрите в файле LICENSE.