Skip to content

Latest commit

 

History

20 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проблема логи захламляют память

KeenTools (Keenetic Project Manager)

Единый менеджер проектов для роутеров Keenetic — аналог пакетного менеджера для сетевых утилит (VPN, DNS, прокси и т.д.), работающий поверх Entware.

Менеджер ничего не знает о конкретных проектах: он лишь находит модули в modules/*/info.json и управляет ими через стандартный набор скриптов. Добавить новый проект — значит просто добавить папку модуля, без изменения кода самого менеджера.

Содержание

Установка

Требуется роутер Keenetic с установленным Entware.

Вариант 1 — одной командой (по ссылке)

curl -fsSL https://raw.githubusercontent.com/phenomenonRT/keentools/refs/heads/main/install.sh | sh

Скрипт сам скачает архив репозитория с GitHub, проверит opkg, доустановит curl/jq, распакует всё в /opt/etc/keentools и добавит команды keentools/kt.

Вариант 2 — локально (репозиторий уже скачан/склонирован)

# находясь в папке 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.

Как добавить свой проект (модуль)

  1. Скопируйте modules/_template в modules/<ваш-проект>.
  2. Заполните info.json (имя, версия, автор, описание, зависимости, опционально update_url на JSON с полем version для автообновлений).
  3. Замените заглушки в install.sh, uninstall.sh, start.sh, stop.sh, update.sh, status.sh на реальную логику вашего проекта.
  4. При желании добавьте configure.sh (интерактивная настройка) и log.sh (вывод логов) — они опциональны.
  5. Если факт установки лучше определять по реальному состоянию системы (пакет/бинарь/init.d-скрипт), а не по внутренней метке менеджера — добавьте check.sh (см. modules/_template/check.sh).
  6. Если стандартное меню модуля не подходит — добавьте menu.sh, и менеджер полностью передаст управление ему (см. modules/_template/menu.sh).

Важно про status.sh: код возврата должен быть 0 (запущен), 1 (остановлен) или 2 (неизвестно) — от этого зависит цветной индикатор ●/○ в главном меню.

Модуль получает через окружение:

  • KT_HOME — корень установки KeenTools
  • KT_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 — перед удалением стоит свериться с документацией конкретного проекта, если сомневаетесь, что именно он удалит.

Полное удаление KeenTools

У самого менеджера нет отдельного uninstall.sh — он не устанавливает ничего за пределами своей собственной папки и /opt/bin/keentools, /opt/bin/kt, поэтому удаление сводится к ручной очистке этих путей.

  1. (Рекомендуется) Сначала удалите через меню модуля все установленные проекты — это корректно остановит их фоновые процессы и выполнит их собственную логику удаления (см. выше).

  2. Удалите папку установки менеджера и обе команды-обёртки:

    rm -rf /opt/etc/keentools
    rm -f /opt/bin/keentools /opt/bin/kt

    Это удалит вообще всё: сам менеджер, все модули (modules/), настройки (config/settings.conf), журнал (logs/keentools.log) и все резервные копии (backups/).

  3. Если перед удалением хотите на всякий случай сохранить резервную копию настроек и данных модулей — сначала сделайте бэкап через меню [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.

About

Проект не закончен. Единый менеджер по управлению проектами для роутеров Keenetic

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages