Проблема логи захламляют память
Единый менеджер проектов для роутеров Keenetic — аналог пакетного менеджера для сетевых утилит (VPN, DNS, прокси и т.д.), работающий поверх Entware.
Менеджер ничего не знает о конкретных проектах: он лишь находит
модули в modules/*/info.json и управляет ими через стандартный набор
скриптов. Добавить новый проект — значит просто добавить папку модуля,
без изменения кода самого менеджера.
- Установка
- Запуск
- Структура репозитория
- Готовые модули
- Как добавить свой проект (модуль)
- Проверка на демо-модуле
- Диагностика и резервное копирование
- Самообновление менеджера
- Удаление
- Частые проблемы
- Ограничения окружения
Требуется роутер Keenetic с установленным Entware.
curl -fsSL https://raw.githubusercontent.com/phenomenonRT/keentools/refs/heads/main/install.sh | shСкрипт сам скачает архив репозитория с GitHub, проверит opkg, доустановит
curl/jq, распакует всё в /opt/etc/keentools и добавит команды
keentools/kt.
# находясь в папке keentools/:
sh install.shВ этом случае install.sh обнаружит, что рядом уже лежат keentools.sh и
lib/, и просто скопирует их в /opt/etc/keentools без скачивания.
Повторный запуск
install.sh(по ссылке или локально) — это также безопасный способ переустановить/починить KeenTools:state/иconfig/при этом не трогаются, обновляются только файлы самого менеджера.
keentools
# короткий алиас:
kt
# или напрямую, без команд из /opt/bin:
sh /opt/etc/keentools/keentools.shПри первом запуске, если ни один проект не установлен, менеджер сразу покажет каталог доступных модулей.
keentools/
├── keentools.sh # точка входа, всё меню
├── install.sh # bootstrap-установщик на роутер
├── VERSION # версия менеджера (для самообновления)
├── lib/
│ ├── common.sh # цвета, логи, ввод, сравнение версий
│ ├── config.sh # чтение/запись settings.conf
│ ├── modules.sh # обнаружение и управление модулями
│ ├── deps.sh # проверка/установка зависимостей (opkg)
│ ├── backup.sh # резервное копирование / восстановление
│ ├── diagnostics.sh # диагностика (интернет, DNS, Entware, USB...)
│ └── update.sh # самообновление менеджера + обновление модулей
├── modules/
│ ├── _template/ # шаблон для новых модулей — скопируйте эту папку
│ └── example-service/ # рабочий демо-модуль для проверки меню
└── config/ # создаётся автоматически при первом запуске
После установки менеджер разворачивает на роутере ещё несколько каталогов (создаются автоматически, в репозитории их нет):
/opt/etc/keentools/
├── state/ # метки "модуль установлен" + версии (для check.sh-модулей может не использоваться)
├── config/settings.conf # настройки менеджера (см. пункт "S" в главном меню)
├── backups/ # архивы резервных копий (keentools_backup_*.tar.gz)
└── logs/keentools.log # журнал действий менеджера
В каталоге modules/ уже есть несколько рабочих модулей — их можно
ставить прямо из меню [I] Установить проект:
- example-service — демо-сервис без зависимостей, ничего не меняет в системе. Нужен только для проверки, что сам менеджер работает (установка/запуск/остановка/статус/лог/удаление).
- standard-menu-demo — пример проекта со стандартным меню. В этом
проекте отсутствует
restart.sh, благодаря чему в меню наглядно продемонстрировано автоматическое скрытие нереализованного компонента «Перезапустить». - custom-menu-demo — пример проекта с собственным меню
(
modules/custom-menu-demo/menu.sh). При открытии этого модуля управление полностью передаётся его внутреннему меню. - AWG-Manager — интеграция с AWG-Manager:
графический интерфейс для управления AmneziaWG-туннелями на роутерах
Keenetic. Установка/обновление идут через официальный установщик
проекта (
wget -qO- http://repo.hoaxisr.ru/install.sh | sh), удаление — черезopkg remove awg-managerс очисткой конфигурации/данных/логов, запуск/остановка/статус — через его Entware-init-скриптS99awg-manager. - HydraRoute — интеграция с HydraRoute Neo:
раздельная маршрутизация трафика по доменам/CIDR через туннели на
роутерах Keenetic. Установка/удаление идут через официальные скрипты
проекта (
install-neo.sh,hr-uninstall.sh), обновление — черезopkg upgrade hrneo. - pac-server — интеграция с pac-server:
Go-сервер для создания, редактирования и раздачи нескольких PAC-файлов
через веб-интерфейс. Установка/обновление/удаление идут через
официальный
install.sh/uninstall.shпроекта, статус и запуск/остановка — через его Entware-init-скриптS99pac-server. - MagiTrickle — интеграция с MagiTrickle:
точечная маршрутизация трафика по доменным именам через DNS с
веб-интерфейсом на порту 8080. Установка идёт по официальной
инструкции для Entware (добавление репозитория пакетов +
opkg install magitrickle), обновление — черезopkg install magitrickle, запуск/остановка/статус — через Entware-init-скриптS99magitrickle.
Список актуальных модулей всегда можно посмотреть прямо в меню
[I] Установить проект — туда попадает всё, что лежит в modules/*/info.json.
- Скопируйте
modules/_templateвmodules/<ваш-проект>. - Заполните
info.json(имя, версия, автор, описание, зависимости, опциональноupdate_urlна JSON с полемversionдля автообновлений). - Замените заглушки в
install.sh,uninstall.sh,start.sh,stop.sh,update.sh,status.shна реальную логику вашего проекта. - При желании добавьте
configure.sh(интерактивная настройка) иlog.sh(вывод логов) — они опциональны. - Если факт установки лучше определять по реальному состоянию системы
(пакет/бинарь/init.d-скрипт), а не по внутренней метке менеджера —
добавьте
check.sh(см.modules/_template/check.sh). - Если стандартное меню модуля не подходит — добавьте
menu.sh, и менеджер полностью передаст управление ему (см.modules/_template/menu.sh).
Важно про status.sh: код возврата должен быть 0 (запущен),
1 (остановлен) или 2 (неизвестно) — от этого зависит цветной
индикатор ●/○ в главном меню.
Модуль получает через окружение:
KT_HOME— корень установки KeenToolsKT_MODULE_DIR— папка именно этого модуля
Чтобы убедиться, что менеджер работает, установите example-service —
он не требует зависимостей и не трогает реальную систему: просто пишет
строку в свой лог каждые 5 секунд, пока запущен. Хорошо подходит для
проверки установки/запуска/остановки/статуса/лога/удаления до того,
как вы подключите настоящие проекты (HydraRoute, Xray,
Sing-box, AdGuard Home и т.д.) — для них нужно будет написать реальные
install.sh/start.sh/... на основе официальных инструкций каждого
проекта.
В пункте главного меню [A] О программе доступны:
- Диагностика — быстрая проверка интернета, DNS, наличия Entware,
точки монтирования USB (
/opt), модуля WireGuard и прав на каталог установки. Удобно запускать сразу после установки менеджера или при проблемах с сетью. - Резервное копирование — упаковывает
state/,config/,VERSIONиmodules/*/info.json+modules/*/data/в архивbackups/keentools_backup_<дата>_<время>.tar.gz. Восстановление доступно там же и само создаёт "подстраховочный" бэкап текущего состояния перед заменой файлов.
Резервная копия создаётся автоматически и перед самообновлением менеджера (см. ниже) — это позволяет автоматически откатиться, если скачанная версия окажется битой.
По умолчанию менеджер сам проверяет обновления прямо в GitHub-репозитории
проекта (phenomenonRT/keentools, ветка main) — ничего дополнительно
настраивать не нужно. Если хотите использовать своё зеркало для проверки
версии, укажите в Настройках свой KT_REPO_URL — он должен отдавать:
<KT_REPO_URL>/VERSION
<KT_REPO_URL>/CHANGELOG.txt (опционально)
Сам архив обновления в любом случае скачивается с GitHub (codeload),
так как раздать архив всего репозитория через "сырые" файлы нельзя. При
недоступности GitHub менеджер по очереди пробует зеркала из
KT_GITHUB_MIRRORS (настраиваются в разделе [S] Настройки).
Обновление идёт поэтапно: скачивание архива ветки → резервная копия
текущей версии → проверка целостности скачанного keentools.sh →
замена файлов → повторная проверка целостности уже установленного
файла → автоматический откат на резервную копию при любой ошибке на
этих этапах (см. lib/update.sh).
Удалять можно как отдельный модуль (проект), так и весь KeenTools целиком.
Проще всего — прямо из меню: выберите установленный модуль в главном
меню менеджера → Удалить → подтвердите. Менеджер вызовет
uninstall.sh этого модуля и снимет с него внутреннюю метку
"установлен".
Без интерактивного меню то же самое можно сделать одной командой:
sh /opt/etc/keentools/keentools.sh
# в меню: выбрать номер модуля → пункт "Удалить"Учтите: uninstall.sh у некоторых модулей делает не только "чистку
локальных данных". Например, у HydraRoute uninstall.sh вызывает
opkg remove hrneo, а uninstall_all.sh дополнительно скачивает и
выполняет официальный скрипт удаления проекта с git.zerrolabs.org —
перед удалением стоит свериться с документацией конкретного проекта,
если сомневаетесь, что именно он удалит.
У самого менеджера нет отдельного uninstall.sh — он не устанавливает
ничего за пределами своей собственной папки и /opt/bin/keentools,
/opt/bin/kt, поэтому удаление сводится к ручной очистке этих путей.
-
(Рекомендуется) Сначала удалите через меню модуля все установленные проекты — это корректно остановит их фоновые процессы и выполнит их собственную логику удаления (см. выше).
-
Удалите папку установки менеджера и обе команды-обёртки:
rm -rf /opt/etc/keentools rm -f /opt/bin/keentools /opt/bin/kt
Это удалит вообще всё: сам менеджер, все модули (
modules/), настройки (config/settings.conf), журнал (logs/keentools.log) и все резервные копии (backups/). -
Если перед удалением хотите на всякий случай сохранить резервную копию настроек и данных модулей — сначала сделайте бэкап через меню
[A] О программе → Резервное копированиеи скопируйте получившийся файл из/opt/etc/keentools/backups/куда-нибудь за пределы/opt/etc/keentools(например, на флешку или на компьютер), а уже потом выполняйтеrm -rfиз шага 2.
Команды
keentools/ktпосле удаления перестанут существовать сразу; если какой-то модуль ставил собственные пакеты черезopkg(какHydraRoute) — самopkg-пакетrm -rf /opt/etc/keentoolsне затронет, его нужно удалять отдельно (opkg remove <пакет>) или черезuninstall.sh/uninstall_all.shсоответствующего модуля до общей очистки.
- Команда
keentools/ktне найдена — проверьте, что/opt/binесть в$PATH(echo $PATH), и что установщик вывел[✔] Добавлены команды: keentools, kt. Если/opt/binпри установке ещё не существовал — запускайте менеджер напрямую:sh /opt/etc/keentools/keentools.sh. - "Обнаружен рекурсивный запуск... похоже, повреждён" — значит файл
/opt/etc/keentools/keentools.shна самом деле содержит код скрипта-обёртки, а не сам менеджер (обычно из-за прерванного обновления/установки). Переустановите менеджер командой из раздела Установка — она содержит встроенную проверку целостности и не даст такой ситуации повториться. - Модуль не запускается / статус "неизвестно" — загляните в лог
модуля (пункт "Посмотреть лог" в его меню, если у модуля есть
log.sh) и в общий журнал менеджера ([L] Логив главном меню). - Не хватает
curl/jq— установите вручную:opkg update && opkg install curl jq, затем запустите менеджер заново.
Если ни один пункт не помог — запустите диагностику
([A] О программе → Диагностика), она быстро покажет, в чём именно
проблема (интернет, DNS, Entware, USB, права доступа).
Все скрипты написаны на POSIX sh (BusyBox ash), без bash-специфики
(нет массивов, [[ ]], local используется как поддерживаемый ash'ем).
Это сделано специально, так как на Keenetic/Entware интерпретатор —
BusyBox ash, а не bash.