124 lines
5.3 KiB
Markdown
124 lines
5.3 KiB
Markdown
# RNS Page Node
|
||
|
||
[English](README.md)
|
||
|
||
Простой способ для раздачи страниц и файлов через сеть [Reticulum](https://reticulum.network/). Прямая замена для узлов [NomadNet](https://github.com/markqvist/NomadNet), которые в основном служат для раздачи страниц и файлов.
|
||
|
||
## Особенности
|
||
|
||
- Раздача страниц и файлов через RNS
|
||
- Поддержка динамических страниц с переменными окружения
|
||
- Разбор данных форм и параметров запросов
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
# 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
|
||
|
||
```
|
||
## Использование
|
||
```bash
|
||
# будет использовать текущий каталог для страниц и файлов
|
||
rns-page-node
|
||
```
|
||
|
||
или с параметрами командной строки:
|
||
```bash
|
||
rns-page-node --node-name "Page Node" --pages-dir ./pages --files-dir ./files --identity-dir ./node-config --announce-interval 360
|
||
```
|
||
|
||
или с файлом конфигурации:
|
||
```bash
|
||
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
|
||
```bash
|
||
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-доступа
|
||
```bash
|
||
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`.
|
||
|
||
## Сборка
|
||
```bash
|
||
make build
|
||
```
|
||
|
||
Сборка wheels:
|
||
```bash
|
||
make wheel
|
||
```
|
||
|
||
### Сборка Wheels в Docker
|
||
```bash
|
||
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](https://github.com/markqvist/NomadNet), которая лицензирована под GNU General Public License v3.0 (GPL-3.0). Как производная работа, этот проект также распространяется на условиях GPL-3.0. Полный текст лицензии смотрите в файле [LICENSE](LICENSE). |