Skip to content

Releases: NodeFlow-dev/nodeflow

NodeFlow 2.3.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 01:32
1b4d780

NodeFlow 2.3.0

Panel 2.3.0 · Node Agent 2.3.0 · HAProxy renderer v21

Английский интерфейс с переключателем языка, README на английском и стабильные коды ошибок в API. Миграций нет. Спасибо @ANHELL404 (#21, #23).

Новое

  • Английский интерфейс. Панель переведена на английский (локализации ru/en). Язык переключается в боковой панели и на странице входа; справка по директивам HAProxy тоже доступна на английском.
  • README на английском — README.en.md и английские заметки к релизам 2.2.0 и 2.3.0.
  • Стабильные коды в API. Ошибки копирования маршрутов, применения шаблонов и сообщения линтера HAProxy теперь содержат error_code и message_key с message_params; заметка о сборке из маршрутов — note_key (built_from_routes). Поле message на русском сохранено для совместимости.
  • copy_suffix — параметр копирования маршрута, задающий суффикс имени копии.

Исправления

  • Bootstrap-скрипт установки Agent кладёт бинарник в /usr/local/bin (#21, #23). Спасибо @ANHELL404.

Обновление

  • Миграций нет.
  • Код Agent не менялся — изменён только bootstrap-скрипт, который отдаёт Panel. Обновлять Agent на существующих нодах необязательно; новые установки сразу получают исправленный скрипт.

NodeFlow 2.2.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 00:37
7db18fa

NodeFlow 2.2.0

Panel 2.2.0 · Node Agent 2.2.0 · HAProxy renderer v21

Закрепление клиентов в DNS-пулах с резервными серверами, копирование маршрутов между нодами и библиотека шаблонов. Две миграции (000056, 000057). Agent не менялся. Спасибо @fesevu (#19, #20).

Новое

  • Закрепление клиентов и leastconn в пулах с резервными серверами (#19). Для DNS-пула с резервным (backup) сервером теперь доступны закрепление клиентов (sticky) и распределение leastconn. Новый failover-маршрут по умолчанию создаётся без закрепления.
    • Ограничения: в режиме с резервным сервером leastping/leastconn с допуском (tolerance) больше 0 отклоняются; leastping вместе с закреплением по source тоже отклоняется.
    • Клиент, закреплённый за резервным сервером, остаётся на нём до истечения записи закрепления (expire), даже когда основной сервер вернулся.
  • Копирование маршрутов между нодами (#20). Маршрут можно скопировать на другую ноду. Копия создаётся выключенным черновиком — проверьте порты и адреса и включите её вручную.
  • Библиотека шаблонов маршрутов (#20). Маршрут можно сохранить как шаблон и создавать из него новые маршруты на любой ноде. Шаблоны хранят schema_version. Миграция 000056 (route_templates).

Исправления

  • Рендер старых failover-маршрутов не меняется. Миграция 000057 сохраняет прежнее распределение для маршрутов с устаревшим source_table: такие маршруты один раз публикуются заново с идентичным конфигом HAProxy. Повторное сохранение старого failover-маршрута в UI тоже сохраняет его распределение.
  • Аудит: копирование маршрута (route.copy) и действия с шаблонами (route_template.*) пишутся в журнал аудита.
  • Понятные ошибки и имена копий/шаблонов; диалоги копирования и шаблонов оформлены в стиле панели.

Обновление с 2.1.0

  1. Panel. Повторно запустите установщик:

    curl -fsSL https://raw.githubusercontent.com/NodeFlow-dev/nodeflow/main/install.sh | sudo sh

    Вручную: в /opt/nodeflow/.env укажите NODEFLOW_VERSION=2.2.0 и выполните docker compose pull && docker compose up -d. Миграции 000056 и 000057 применяет сам образ.

  2. Node Agent — необязательно. Код Agent в 2.2.0 не менялся, всё работает с Agent 2.1.x. Для единообразия версий: «Настройки → Node Agent» → «Обновить до 2.2.0».

Обновляетесь с 1.0.x — сначала прочитайте заметки к релизу 2.0.0: там однократный drop-in systemd для pipe-буферов ядра.

Файлы релиза

  • NodeFlow-Panel-2.2.0-Agent-2.2.0-install-kit.tar.gz — install kit.
  • nodeflow-node-agent-2.2.0-linux-amd64, nodeflow-node-agent-2.2.0-linux-arm64 — бинарники Node Agent.

Panel поставляется образом ghcr.io/nodeflow-dev/nodeflow-panel:2.2.0 (linux/amd64 и linux/arm64). SHA-256 каждого файла — поле digest в API релиза; install.sh и install-node.sh сверяют его сами.

NodeFlow 2.1.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 14:24
7959170

NodeFlow 2.1.0

Panel 2.1.0 · Node Agent 2.1.0 · HAProxy renderer v21

Настройки HAProxy для ноды и полноценный редактор haproxy.cfg. Одна аддитивная миграция (000055). Ноды без новых настроек рендерятся байт в байт как в 2.0.1. Идея и первая версия — @fesevu (#15).

Новое

  • Настройки HAProxy ноды. В диалоге настроек ноды (шестерёнка), строкой под переключателем «Логи соединений HAProxy»: maxconn, nbthread, timeout connect, timeout client, timeout server. Пустое поле — значение по умолчанию. Настройки действуют на все маршруты ноды; изменение публикует новую ревизию, Agent применяет её reload без разрыва соединений. Хранятся в nodes.metadata.haproxy_settings. Обновлять Agent не нужно.
  • Редактор конфигурации HAProxy. Кнопка «Конфигурация HAProxy» на странице ноды открывает /nodes/:id/haproxy:
    • редактор Monaco (поставляется с Panel, грузится отдельно только на этой странице), подсветка синтаксиса HAProxy, миникарта, автодополнение;
    • подсказки на русском при наведении: секции, ~120 директив, параметры server/bind, алгоритмы balance, fetch-функции;
    • предупреждения об опасных местах; имена nf_be_*/nf_srv_* помечены «не переименовывать» — от них зависят статистика и квоты;
    • строка состояния: время и «Конфиг валиден» или «N ошибок, M предупреждений» (клик — к первой проблеме), список портов прослушивания;
    • кнопки: «Сохранить» (Ctrl+S), «Всё равно сохранить» (только при ошибках линтера), «Форматировать», «Применить на ноду» (сохраняет и применяет, перед применением — diff с применённым конфигом; при ошибках линтера — дополнительное подтверждение), «История», «Загрузить из маршрутов», «Вернуться к сборке из UI».
  • Проверка конфига. Линтер в браузере на каждое изменение и POST /api/v1/nodes/{id}/config-lint на Panel (задержка 250 мс). Проверка статическая (в образе Panel нет haproxy), списки ключевых слов сверены с исходниками HAProxy 2.8, 3.0 и 3.2. Находит: неизвестные секции, директивы, option, параметры server/bind, виды timeout; директиву не в той секции; лишние ,/; (например, option tcplog,); повторяющиеся имена proxy и серверов; use_backend/default_backend на несуществующий backend; неверные порты, адреса, длительности, значения mode/balance/hash-type/log; несбалансированные .if/.endif; конфиг больше 512 КиБ. Окончательная проверка — по-прежнему haproxy -c на ноде перед применением.
  • Ручное сохранение проверяется на Panel. С ошибками линтера API отвечает 422 config_lint_failed со списком проблем; "force": true сохраняет всё равно. Первая строка # Generated by NodeFlow. Do not edit. заменяется на # Edited manually in NodeFlow advanced editor., в конец добавляется перевод строки (иначе haproxy -c падает с Missing LF on last line).
  • Текст ошибки haproxy -c. Agent 2.1.0 при неудачной проверке отправляет строки [ALERT]/[WARNING] (путь временного файла заменён на haproxy.cfg, без цветовых кодов и строк с password/secret, до 1500 байт). Panel отдаёт их в config-state.last_error_detail, редактор показывает под ошибкой со ссылками на строки. Старые Agent сообщают только validation_failed.
  • «Добавить ноду»: переключатель «Логи соединений HAProxy» сразу в диалоге, значение передаётся в установку ноды.

Исправления

  • Ручной конфиг при политике файрвола apply ломал heartbeat Agent — каждый запрос завершался 500 desired firewall listener plan is incomplete. Теперь план файрвола берёт порты из listener_tcp_ports ручной ревизии (вычисляются по строкам bind). Для старых ручных ревизий без этого поля текущие порты сохраняются, ничего не закрывается.

Обновление с 2.0.1

  1. Panel. Повторно запустите установщик:

    curl -fsSL https://raw.githubusercontent.com/NodeFlow-dev/nodeflow/main/install.sh | sudo sh

    Вручную: в /opt/nodeflow/.env укажите NODEFLOW_VERSION=2.1.0 и выполните docker compose pull && docker compose up -d. Миграция 000055 только добавляет столбец (ADD COLUMN … NULL); откат — вернуть NODEFLOW_VERSION=2.0.1, столбец можно оставить.

  2. Node Agent. «Настройки → Node Agent» → «Обновить до 2.1.0». Нужно только для текста ошибки haproxy -c в редакторе; настройки HAProxy ноды и всё остальное работают с Agent 2.0.x.

Учтите: пока на ноде назначен ручной конфиг, маршруты этой ноды из UI не публикуются (409 advanced_config_active) — до «Вернуться к сборке из UI».

Обновляетесь с 1.0.x — сначала прочитайте заметки к релизу 2.0.0: там однократный drop-in systemd для pipe-буферов ядра.

Файлы релиза

  • NodeFlow-Panel-2.1.0-Agent-2.1.0-install-kit.tar.gz — install kit.
  • nodeflow-node-agent-2.1.0-linux-amd64, nodeflow-node-agent-2.1.0-linux-arm64 — бинарники Node Agent.

Panel поставляется образом ghcr.io/nodeflow-dev/nodeflow-panel:2.1.0 (linux/amd64 и linux/arm64). SHA-256 каждого файла — поле digest в API релиза; install.sh и install-node.sh сверяют его сами.

NodeFlow 2.0.1

Choose a tag to compare

@github-actions github-actions released this 25 Sep 02:06
89007de

NodeFlow 2.0.1

Panel 2.0.1 · Node Agent 2.0.1 · HAProxy renderer v21

Исправительный релиз поверх 2.0.0 и одна новая настройка ноды. Миграций базы данных нет, существующие маршруты и ноды рендерятся байт в байт как в 2.0.0.

Новое

  • «Логи соединений HAProxy» в настройках ноды. Переключатель в диалоге настроек ноды (API: поле haproxy_logs у ноды, хранится в nodes.metadata). По умолчанию включено — конфиг не меняется. Выключено: из haproxy.cfg этой ноды убираются log /dev/log … в global, log global, option tcplog и option dontlognull в defaults и option tcplog у frontend'ов, поэтому rsyslog больше не пишет каждое соединение в /var/log/haproxy.log. Нужно для нод с маленьким диском. Сообщения HAProxy о запуске и ошибках конфигурации по-прежнему попадают в journal. Переключение публикует новую ревизию конфига ноды, Agent применяет её обычным reload без разрыва соединений. Клиенты API, которые не передают поле, не сбрасывают сохранённое значение.

Исправления

  • Маршрут с одним сервером не сохранялся с ошибкой sticky_mode must be source, source_table, leastconn or roundrobin. Редактор отправляет sticky_mode: none для одиночного сервера (и для одного домена в режиме DNS-пула), а проверка одиночных маршрутов не принимала none. Теперь none принимается и означает «без закрепления», как у маршрутов с несколькими серверами. Если открыть и сохранить существующий маршрут из одного сервера с закреплением клиента, из его backend исчезнут строки balance/stick: для одного сервера они ничего не меняли.
  • Редактор маршрутов проверяет поля так же, как API. Раньше редактор пропускал значения, которые API затем отклонял с ошибкой 400:
    • IPv4 с ведущими нулями (01.2.3.4) и некорректные IPv6 (1:::2, :::) в адресе прослушивания, адресах серверов, основном IP, весах IP и доверенных адресах PROXY;
    • имена хостов с числовой последней частью (backend.1, host.0x1f) в SNI и адресах серверов;
    • подсети доверенных адресов вида 10.0.0.0/0 (разрешены только 0.0.0.0/0 и ::/0) и ::ffff:0:0/96;
    • один и тот же IPv6, записанный по-разному, в весах IP;
    • в «Основной + резервные» — резервный DNS-пул (или пул с основным IP) вместе с другими резервными;
    • имя сервера, совпадающее с именами слотов DNS-пула (x и x_1);
    • директивы balance, server, default-server, hash-type, server-template в ручных директивах backend при DNS-пуле;
    • табуляция в имени маршрута.
  • Ручная директива длиной 509–512 байт сохранялась, но потом ломала рендер конфига всей ноды (invalid_route_set, 422). Лимит длины строки теперь считается без отступа, ранее рендерившиеся конфиги не меняются.
  • Имя ноды длиннее 200 символов возвращало 500 (или обрывало задание установки ноды). Теперь 400 с понятной ошибкой, поля ввода ограничены 200 символами.
  • Загрузка релиза Agent проверяет формат версии до отправки файла (до 64 МиБ), а не после.
  • Добавлен контрактный тест редактор ↔ API: 4685 вариантов маршрутов, которые разрешает редактор, проходят через проверку и рендерер Panel, а сохранённые без изменений маршруты дают тот же конфиг байт в байт.

Обновление с 2.0.0

  1. Panel. Повторно запустите установщик:

    curl -fsSL https://raw.githubusercontent.com/NodeFlow-dev/nodeflow/main/install.sh | sudo sh

    Вручную: в /opt/nodeflow/.env укажите NODEFLOW_VERSION=2.0.1 и выполните docker compose pull && docker compose up -d. Миграций нет, откат — вернуть NODEFLOW_VERSION=2.0.0.

  2. Node Agent. «Настройки → Node Agent» → «Обновить до 2.0.1». Код Agent не менялся (обновление выравнивает версию). Переключатель логов работает и с Agent 2.0.0.

Обновляетесь с 1.0.x — сначала прочитайте заметки к релизу 2.0.0: там однократный drop-in systemd для pipe-буферов ядра.

Файлы релиза

  • NodeFlow-Panel-2.0.1-Agent-2.0.1-install-kit.tar.gz — install kit.
  • nodeflow-node-agent-2.0.1-linux-amd64, nodeflow-node-agent-2.0.1-linux-arm64 — бинарники Node Agent.

Panel поставляется образом ghcr.io/nodeflow-dev/nodeflow-panel:2.0.1 (linux/amd64 и linux/arm64). SHA-256 каждого файла — поле digest в API релиза; install.sh и install-node.sh сверяют его сами.

NodeFlow 2.0.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 13:24
26ee139

NodeFlow 2.0.0

Panel 2.0.0 · Node Agent 2.0.0 · HAProxy renderer v21

Первый крупный релиз после 1.0.8. Panel и Node Agent теперь выходят под одной версией. Panel поставляется готовым Docker-образом ghcr.io/nodeflow-dev/nodeflow-panel:2.0.0 (linux/amd64 и linux/arm64), а установщик больше ничего не собирает на сервере.

Главное

  • Несколько серверов на маршрут. До 16 серверов в режимах «Пул» (все активны) и «Основной + резервные» (переключение по порядку). Сервер-домен можно сделать DNS-пулом: HAProxy использует все его A/AAAA-адреса и исключает недоступные. Для DNS-пула в режиме «Основной + резервные» можно задать статичный основной IP (preferred_ip).
  • Фолбэк вместо any_tcp/destination_ip. Один режим «Фолбэк» для всего, что не совпало по SNI; старые значения принимаются и приводятся к fallback автоматически.
  • Алгоритмы балансировки. roundrobin, static-rr, random (1–5 выборок, по умолчанию 2), leastconn («Меньше соединений») и leastping («Меньше задержка», аналог Xray leastLoad). Для leastconn доля клиентов задаётся весом сервера и отдельного IP (например, вес 2 у сервера на 4 ядра против 2 ядер), для leastping есть ещё стоимость — множитель задержки. У обоих есть толерантность (balance_tolerance): серверы с близкой нагрузкой или задержкой считаются равными и делят клиентов по весу. Веса на лету выставляет Node Agent через runtime API HAProxy, без reload. Также: вес сервера, отдельные веса IP DNS-пула (ip_weights), плавный ввод после восстановления (slowstart).
  • Закрепление клиента. source — хеш IP клиента (consistent или map-based, hash-balance-factor, группировка IPv6 по префиксу); source_table — запоминание клиента на sticky_ttl в stick-table, которая переживает reload. Размер таблицы «Авто» подбирается от RAM ноды.
  • PROXY protocol от доверенных адресов. accept_proxy_from принимает IP, подсети и домены (до 32 доменов на маршрут; Node Agent резолвит их A/AAAA и обновляет ACL без reload), есть вариант «от всех». Health-check отправляет PROXY-заголовок (check-send-proxy).
  • Ограничение скорости в ядре. shaper_mode=kernel: лимиты на IP клиента применяет Node Agent через nftables, HAProxy сохраняет zero-copy splice.
  • IPv4-only клиенты. Поле маршрута client_ipv6=false строит таблицы клиентов только для IPv4 — для нод без IPv6.
  • Производительность. Splice-буферы 1 МиБ, если ядро это позволяет (Agent сам настраивает pipe-лимиты), иначе 256 КиБ; меньше аллокаций в heartbeat Agent; gzip, пакетные запросы и индексы в Panel; immutable-кеш статических файлов интерфейса.
  • Prometheus /metrics в Panel: состояние нод, маршруты, соединения, здоровье backend'ов, трафик за месяц, синхронизация ревизий. Выключено по умолчанию; нужен bearer-токен длиной от 32 символов, опционально allowlist адресов. Метрики помечены node (UUID) и node_name.
  • Интерфейс. Новый редактор маршрутов с живым предпросмотром конфигурации HAProxy, страница настроек на всю ширину, блок Node Agent с таблицей подписанных релизов и статус эндпоинта /metrics.
  • Поставка. Multi-arch образ Panel в ghcr.io; миграции БД встроены в образ (panel-api migrate); install.sh ставит и обновляет Panel без git и без сборки; в assets релиза — только install kit и бинарники Node Agent для linux/amd64 и linux/arm64.

Обновление с 1.0.x

  1. Резервная копия. Установщик сам делает pg_dump и архив /opt/nodeflow (включая .env, tls/, pki/) в /var/backups/nodeflow/. При ручном обновлении сделайте это заранее.

  2. Panel. На сервере Panel повторно запустите установщик:

    curl -fsSL https://raw.githubusercontent.com/NodeFlow-dev/nodeflow/main/install.sh | sudo sh

    Найдя /opt/nodeflow/.env, он сохранит .env, tls/, pki/ и Caddy-сниппет, заменит compose.yaml на релизный, выполнит docker compose pull && docker compose up -d, дождётся ответа Panel 2.0.0 и удалит исходники 1.0.x (они остаются в архиве). При сбое возвращаются прежние compose.yaml и .env; дамп БД сохраняется.

    Вручную: возьмите compose.release.yaml из install kit (NodeFlow-Panel-2.0.0-Agent-2.0.0-install-kit.tar.gz) в /opt/nodeflow/compose.yaml, добавьте в .env строку NODEFLOW_VERSION=2.0.0 и выполните docker compose pull && docker compose up -d.

  3. Node Agent. Установщик публикует в Panel подписанные релизы Agent 2.0.0 для amd64 и arm64. В «Настройки → Node Agent» выберите ноду и нажмите «Обновить до 2.0.0» (или «Обновить» на странице ноды). Updater атомарно заменит бинарник и вернёт прежний, если новый Agent не запустится.

  4. Один раз на каждой ноде, установленной версией 1.0.x. Самообновление меняет только бинарник Agent, а systemd-юнит остаётся от 1.0.x и не даёт Agent записать pipe-лимиты ядра. Добавьте drop-in:

    sudo install -d /etc/systemd/system/nodeflow-node-agent.service.d
    printf '[Service]\nReadWritePaths=-/etc/sysctl.d -/proc/sys/fs/pipe-max-size -/proc/sys/fs/pipe-user-pages-soft\n' \
      | sudo tee /etc/systemd/system/nodeflow-node-agent.service.d/20-kernel-pipes.conf
    sudo systemctl daemon-reload && sudo systemctl restart nodeflow-node-agent

    Без drop-in всё работает, но splice остаётся на 256 КиБ. Другой вариант — «Переустановить Node Agent» в меню ноды: Panel 2.0.0 запишет новый юнит с этими правами. Ноды, добавленные Panel 2.0.0, получают их сразу.

Изменения поведения

  • Pipe-лимиты ядра. Agent 2.0.0 при старте и в каждом heartbeat поднимает fs.pipe-max-size до 1048576 (никогда не понижает), ставит fs.pipe-user-pages-soft = 0 и сохраняет их в /etc/sysctl.d/90-nodeflow-pipes.conf. Отключается переменной NODE_AGENT_TUNE_SYSCTL=off в /etc/nodeflow/node-agent.env — тогда Agent только сообщает текущие значения.
  • tune.pipesize 1048576 рендерится только для нод, где Agent подтвердил fs.pipe-max-size ≥ 1 МиБ и fs.pipe-user-pages-soft = 0; иначе 262144.
  • Размер «Авто» stick-table больше не фиксированные 100k: clamp(5 % RAM / 228 Б / N, 100k, 10m), где N — число включённых «Авто»-таблиц на ноде; RAM неизвестна — 1m. Память занимается по мере прихода клиентов. Явно заданные размеры не меняются.
  • Renderer v21. Нода без настроенных pipe-лимитов и без «Авто»-таблиц получает конфиг байт-в-байт как раньше (v20). Когда heartbeat меняет факты ноды (ядро настроено, RAM перешла в другой 256-МиБ-диапазон), Panel сама публикует новую ревизию маршрутов («node facts changed»). Ревизии, созданные администратором вручную, не трогаются.
  • DNS-пул без закрепления снова распределяет клиентов по balance source, как в 1.0.8.
  • Режим закрепления sni удалён: он балансировал целые домены, а не клиентов. Миграция 000052 переводит такие маршруты в source.
  • Функции, требующие нового Agent, отклоняются с кодом 422, пока нода не обновлена: kernel_shaper_requires_agent_1_1, leastping_requires_agent_1_1, ip_weights_requires_agent_1_1, leastconn_tolerance_requires_agent_1_1_1, pp_trusted_domains_requires_agent_1_1_3. Agent 2.0.0 проходит все проверки (версии сравниваются численно).
  • Удалён устаревший веб-интерфейс web/; Panel отдаёт только React-сборку.

Миграции базы данных

Применяются автоматически сервисом migrate в compose.yaml перед стартом Panel.

Миграция Что делает
000026 routes.accept_proxy_from — доверенные источники PROXY protocol
000027 таблица route_servers — несколько серверов на маршрут
000028 sticky_enabled (закрепление по IP)
000029 match_mode = fallback вместо any_tcp/destination_ip
000030 удаление sticky_table_size/sticky_expire
000031 balance_mode, route_servers.dns_pool, route_servers.preferred_ip
000040 индексы производительности (журнал аудита, токены, квоты)
000041 согласование route_servers и balance_mode
000050 shaper_mode (HAProxy или ядро)
000051 sticky_mode, sticky_ttl
000052 balance_algorithm и его параметры; вес, стоимость и ip_weights серверов
000053 произвольный размер таблицы (<n>k/<n>m), до 5 выборок random
000054 client_ipv6

Номера 000032–000039 и 000042–000049 не используются. Автоматического отката миграций нет — поэтому установщик перед обновлением делает pg_dump.

Известные ограничения

  • Домены в «Доверенных адресах» PROXY protocol перерезолвятся с фиксированным интервалом 30 с; TTL DNS-записей не учитывается. При сбое DNS остаётся последний известный набор адресов.
  • Автоматическая установка ноды из Panel поддерживает Ubuntu 24.04 и 26.04 (HAProxy 3.4 из официального репозитория HAProxy Performance) и Debian (пакет haproxy из репозитория дистрибутива, если HAProxy ещё не установлен). На Debian 12 это HAProxy 2.6 — заранее поставьте HAProxy 3.x.
  • Для разработчиков: четыре интеграционных теста PostgreSQL падают на устаревших фикстурах и в CI пока выполняются как неблокирующие; на работу Panel это не влияет.

Файлы релиза

  • NodeFlow-Panel-2.0.0-Agent-2.0.0-install-kit.tar.gz — install kit: install.sh, compose.release.yaml, шаблон nodeflow.env.example, scripts/install-node.sh, scripts/prepare-node-firewall.sh, scripts/init-mtls-pki.sh, scripts/init-update-signing-key.sh, systemd-юнит Agent, инструкции docs/install/ и SHA256SUMS файлов комплекта. Распакуйте и запустите sudo ./install.sh.
  • nodeflow-node-agent-2.0.0-linux-amd64, nodeflow-node-agent-2.0.0-linux-arm64 — бинарники Node Agent для публикации в Panel («Настройки → Node Agent») и для install-node.sh.

Panel (API, веб-интерфейс, миграции и updater нод) поставляется только образом ghcr.io/nodeflow-dev/nodeflow-panel:2.0.0 (digest — на странице пакета в GitHub Packages).

Контрольные суммы

GitHub публикует SHA-256 каждого asset'а (поле digest в API релиза, также видно на странице релиза). install.sh и install-node.sh сверяют с ним каждый скачанный файл и прерываются, если digest отсутствует или не совпадает. Проверка вручную:

curl -fs...
Read more

NodeFlow 1.0.8

Choose a tag to compare

@SHOKOVprod SHOKOVprod released this 24 Aug 23:15
cde1b11

NodeFlow 1.0.8

Главное изменение релиза — DNS-пулы для доменных TCP/SNI-маршрутов.

Что нового

  • В редактор маршрута добавлен режим DNS-пул для доменного назначения.
  • HAProxy использует все разрешённые A/AAAA-адреса домена и распределяет новые подключения между доступными backend'ами с помощью consistent source-IP hashing.
  • При недоступности одного адреса новые подключения направляются на оставшиеся рабочие backend'ы. Уже установленные TCP-соединения не переносятся между серверами.
  • В Panel отображается фактическое число разрешённых backend'ов — например, 2/2, без учёта пустых резервных слотов HAProxy server-template.
  • Пустые слоты со статусом MAINT (resolution) больше не переводят исправную ноду в состояние «Деградирует».
  • HAProxy renderer обновлён до v16.

Совместимость

  • Panel: 1.0.8
  • Node Agent: 1.0.5 — обновление Agent не требуется.

Assets

  • NodeFlow-Panel-1.0.8-Agent-1.0.5-install-kit.tar.gz — Panel, установщик, документация, reverse-proxy примеры и Node Agent.

Перед установкой проверьте контрольную сумму

NodeFlow 1.0.7

Choose a tag to compare

@SHOKOVprod SHOKOVprod released this 22 Aug 11:20
455f8dc

Что нового

  • Оптимизирован renderer

Assets

  • Install kit — Panel, документация, reverse-proxy примеры и Node Agent.
  • Node Agent linux/amd64

NodeFlow v1.0.5

Choose a tag to compare

@SHOKOVprod SHOKOVprod released this 30 Jul 10:58
5b670b5

Что нового

  • Шейпер TCP/SNI-маршрутов с лимитом на IP клиента: upload и download.
  • Жёсткая перезагрузка HAProxy из карточки ноды.
  • Обновлённый preview HAProxy: backend, filter и stick-table используют согласованные имена.
  • Rose — тема Panel по умолчанию для новых установок.

Assets

  • Install kit — Panel, документация, reverse-proxy примеры и Node Agent.
  • Node Agent linux/amd64 — отдельный бинарник и SHA-256.

Перед установкой проверьте checksum из соответствующего файла .sha256.

NodeFlow 1.0.4 — первый релиз

Choose a tag to compare

@SHOKOVprod SHOKOVprod released this 29 Jul 05:04
3c064b6

Первый релиз NodeFlow

NodeFlow — единая панель управления HAProxy-инфраструктурой. Управляйте нодами, маршрутами, трафиком и состоянием серверов через веб-интерфейс.

В релиз вошли мониторинг нод и маршрутов, управление TCP/SNI-маршрутами, учёт трафика, ревизии конфигурации HAProxy, безопасное применение изменений и bootstrap новых серверов.

Проект проходит первую публичную обкатку. Баг-репорты, идеи и предложения по интерфейсу оставляйте в Issues.

Подробности установки — в README.