Repository navigation
Releases: NodeFlow-dev/nodeflow
Release list
NodeFlow 2.3.0
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
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
-
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 применяет сам образ. -
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
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 — каждый запрос завершался 500desired firewall listener plan is incomplete. Теперь план файрвола берёт порты изlistener_tcp_portsручной ревизии (вычисляются по строкамbind). Для старых ручных ревизий без этого поля текущие порты сохраняются, ничего не закрывается.
Обновление с 2.0.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, столбец можно оставить. -
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
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-пуле; - табуляция в имени маршрута.
- IPv4 с ведущими нулями (
- Ручная директива длиной 509–512 байт сохранялась, но потом ломала рендер конфига всей ноды (
invalid_route_set, 422). Лимит длины строки теперь считается без отступа, ранее рендерившиеся конфиги не меняются. - Имя ноды длиннее 200 символов возвращало 500 (или обрывало задание установки ноды). Теперь 400 с понятной ошибкой, поля ввода ограничены 200 символами.
- Загрузка релиза Agent проверяет формат версии до отправки файла (до 64 МиБ), а не после.
- Добавлен контрактный тест редактор ↔ API: 4685 вариантов маршрутов, которые разрешает редактор, проходят через проверку и рендерер Panel, а сохранённые без изменений маршруты дают тот же конфиг байт в байт.
Обновление с 2.0.0
-
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. -
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
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
-
Резервная копия. Установщик сам делает
pg_dumpи архив/opt/nodeflow(включая.env,tls/,pki/) в/var/backups/nodeflow/. При ручном обновлении сделайте это заранее. -
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. -
Node Agent. Установщик публикует в Panel подписанные релизы Agent 2.0.0 для amd64 и arm64. В «Настройки → Node Agent» выберите ноду и нажмите «Обновить до 2.0.0» (или «Обновить» на странице ноды). Updater атомарно заменит бинарник и вернёт прежний, если новый Agent не запустится.
-
Один раз на каждой ноде, установленной версией 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...NodeFlow 1.0.8
NodeFlow 1.0.8
Главное изменение релиза — DNS-пулы для доменных TCP/SNI-маршрутов.
Что нового
- В редактор маршрута добавлен режим DNS-пул для доменного назначения.
- HAProxy использует все разрешённые A/AAAA-адреса домена и распределяет новые подключения между доступными backend'ами с помощью consistent source-IP hashing.
- При недоступности одного адреса новые подключения направляются на оставшиеся рабочие backend'ы. Уже установленные TCP-соединения не переносятся между серверами.
- В Panel отображается фактическое число разрешённых backend'ов — например,
2/2, без учёта пустых резервных слотов HAProxyserver-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
Что нового
- Оптимизирован renderer
Assets
- Install kit — Panel, документация, reverse-proxy примеры и Node Agent.
- Node Agent linux/amd64
NodeFlow v1.0.5
Что нового
- Шейпер 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 — первый релиз
Первый релиз NodeFlow
NodeFlow — единая панель управления HAProxy-инфраструктурой. Управляйте нодами, маршрутами, трафиком и состоянием серверов через веб-интерфейс.
В релиз вошли мониторинг нод и маршрутов, управление TCP/SNI-маршрутами, учёт трафика, ревизии конфигурации HAProxy, безопасное применение изменений и bootstrap новых серверов.
Проект проходит первую публичную обкатку. Баг-репорты, идеи и предложения по интерфейсу оставляйте в Issues.
Подробности установки — в README.