Установка

Как установить Квас Про на роутер Keenetic/Netcraze (Entware) или OpenWrt одной командой — скрипт сделает всё сам.

Квас Про ставится на сам роутер одной командой. Установочный скрипт сам определит платформу и архитектуру, скачает нужный пакет, проверит его целостность, установит, запустит службу и напечатает токен входа. Всё остальное настраивается потом через веб-интерфейс — панель управления, которая открывается в обычном браузере. Терминал больше не понадобится.

Что установщик сообщает на сайт

По завершении установки скрипт отправляет на сайт проекта одну короткую строку: получилось или нет, на каком этапе остановился и по какой причине, версию выпуска и платформу роутера. Ни идентификатора устройства, ни его адреса, ни содержимого настроек в отчёте нет. Это нужно, чтобы поломку установки было видно сразу, а не выяснять её из переписки. Отключить отчёт: --no-report или KVASPRO_NO_REPORT=1. Подробнее — в политике конфиденциальности.

Что потребуется: роутер Keenetic/Netcraze с Entware (это дополнение, которое добавляет роутеру Keenetic/Netcraze возможность ставить программы) или устройство с предустановленной OpenWrt, и доступ к нему по SSH (защищённый входв командную строку роутера). Требования к самому роутеру — память, процессор, свободное место — собраны на странице Требования к оборудованию, а подходящие модели перечислены на странице Модели роутеров. Остальные вспомогательные пакеты — sha256sum, tar, gzip, sing-box — скрипт проверит и доустановит сам.

Установка

Всё делается одной командой установки. Если curl (программа для скачивания по сети) на роутере ещё не установлен — добавьте его: opkg install curl.

curl -fsSL https://kvaspro.su/install.sh | sh

Скрипт сам доустановит остальные зависимости, скачает пакет под ваш роутер, проверит его целостность (контрольную сумму и криптоподпись — так он убеждается, что скачался именно настоящий пакет, а не подделка), установит и запустит. Сверять что-либо вручную не нужно — это делает сам скрипт.

Во время работы скрипт показывает номер шага ([03/12]), во время длинных операций — бегунок и индикатор загрузки, а в конце печатает короткую сводку: версия, пути, адрес панели, токен и что делать дальше. Понравившийся порядок действий можно сначала примерить: sh install.sh --dry-run скачает и проверит выпуск, но ничего не изменит на роутере.

Если вывод скрипта перенаправлен в файл или в журнал (например, при автоматической установке), токен входа не печатается — иначе он навсегда остался бы в журнале. Показать его можно командой kvaspro --key на роутере; принудительно напечатать даже при перенаправлении — флагом --print-token.

Что делает скрипт

  1. Проверяет и доустанавливает зависимости — свои (sha256sum, tar, gzip) и нужные Квас Про (sing-box) — и только потом продолжает.
  2. Определяет платформу (Entware или OpenWrt) и модель процессора (aarch64, armv7 или mipsel). Для MIPS установщик сам определяет порядок байт: подходит MIPS32 с прямым порядком (mipsel), а mips (обратный порядок) он честно отклоняет с объяснением.
  3. Ставит последний выпуск — установщик не спрашивает версию и не показывает меню: так на роутер не попадёт устаревшая сборка.
  4. Скачивает выпуск: пакет под ваше устройство, описание выпуска (манифест) и файл с подписью.
  5. Проверяет целостность: контрольную сумму архива и исполняемого файла, а также криптографическую подпись манифеста (тем же ключом, что и обновления «по воздуху» — прямо через веб-интерфейс). При обновлении подпись проверяет уже работающая на роутере программа — до остановки службы и до любых изменений.
  6. Проверяет свободное место, а при обновлении делает резервную копию.
  7. Раскладывает файлы, запускает службу и ждёт её готовности. Если новая версия вдруг не отвечает — автоматически возвращает предыдущую и сообщает об этом.
  8. Печатает токен входа (это ваш ключ-пароль к панели), адрес веб-интерфейса и команды «что дальше» (в том числе как удалить программу).

Если пакеты не скачиваются, а интернет при этом работает, установщик умеет взять их с зеркала хранилища Entware: он заменяет адрес хранилища в /opt/etc/opkg.conf на mirrors.nju.edu.cn (по защищённому https), обновляет список пакетов и повторяет загрузку — от вас ничего не требуется. Замена делается только тогда, когда в файле включена проверка подписи пакетов (option check_signature 1): с ней opkg сверяет пакеты с ключом раздачи, и чужой адрес не может подсунуть свои. Сегодня у раздачи Entware подписей нет (Packages.sig на основном адресе отвечает «файл не найден»), поэтому замена адреса на зеркало не делается — ни установщиком, ни продуктом: оба прямо говорят причину и советуют поставить пакеты вручную или вернуть доступ к основному адресу хранилища. Строку option check_signature 1 включать не нужно — без файла подписи opkg перестанет обновлять списки пакетов. Запасное зеркало включится само, когда раздача начнёт публиковать подписи пакетов: тогда замена пройдёт без вашего участия, и прежний файл будет сохранён рядом под именем /opt/etc/opkg.conf.kvaspro-orig (тем же именем пользуется и сам продукт). Возвращает прежний адрес продукт: пока прежнее хранилище не отвечает, он берёт пакеты с запасного зеркала, а как только оно снова отвечает — сам возвращает исходный адрес, и в «Диагностике» видно, что продукт временно работает через зеркало. Вернуть адрес вручную нужно только в случае, если продукт с устройства уже удалён (и адрес к этому моменту был заменён) — готовая команда напечатана в итоге установки. Подробнее — «Решение проблем» → «Если сеть работает с ограничениями».

Прерывание (Ctrl-C или закрытие сессии) останавливает установку — скрипт не продолжает работу в фоне, а журнал с диагностикой остаётся на диске; путь к нему печатается при ошибке.

Вход в веб-интерфейс

Когда установка завершится, в конце вывода скрипт напечатает токен входа и адреса панели:

Открыть панель управления в браузере можно так:
  • http://kvaspro.lan       — или kvas.lan, kvp.lan, kvaspro.home, kvas.home
  • https://kvaspro.lan      — защищённый вход по тому же имени
  • http://192.168.1.254     — добавочный адрес роутера, порт 80
  • https://192.168.1.254    — защищённый вход по тому же адресу

Откройте любой из этих адресов в браузере и войдите по токену. Панель отвечает без указания порта — по имени или по добавочному адресу роутера: прямой доступ к внутреннему порту приложения закрыт, так панель управления не видна из локальной сети напрямую.

Какой адрес у вашего роутера. Первые три числа адреса зависят от вашей сети — 192.168.1.254 здесь только пример, а точный адрес установщик печатает в конце установки. Неизменно последнее число: Квас Про занимает дополнительный адрес роутера в локальной сети — как правило, с последним октетом 254 — и открывает панель именно на нём, на обычном порту 80. По имени вход сразу защищённый: открыв http://kvaspro.lan, вы попадёте на https://kvaspro.lan.
Адрес самого роутера (обычно …1) панель не обслуживает: на нём работает встроенный веб-интерфейс роутера (LuCI, Keenetic и подобные) на своём порту — это другое устройство управления, а не Квас Про.
Экран входа в панель управления Квас Про: поле для токена и выбор темыЭкран входа в панель управления Квас Про: поле для токена и выбор темы

На снимке в левой панели под номером версии виден адрес самого роутера — устройства, на котором работает Квас Про. Это не адрес входа в панель: панель открывается по добавочному адресу с последним числом 254 или по короткому имени.

Внимание: токен входа хранится только на роутере (в файле auth_token) и через сайт не восстанавливается. После каждого успешного входа он перевыпускается: прежний токен перестаёт действовать, а новый можно посмотреть на роутере командой kvaspro --key. Открытые окна панели при этом остаются в работе; на экране входа есть подсказка, где искать актуальный токен.

Как понять, что всё получилось: в браузере открылась панель Квас Про с полем для токена, а после ввода токена — приветствие мастера первичной настройки. Значит, приложение установлено и работает.

Обновление

Чтобы обновить установленную версию, запустите тот же скрипт ещё раз: он сделает резервную копию, поставит новую версию и, если она не запустится, вернёт прежнюю. Обновляться можно и прямо из веб-интерфейса — «по воздуху», одной кнопкой; подробнее в разделе Обновления.

Дополнительные параметры скрипта установки

Обычная установка ничего указывать не требует: скрипт сам определяет платформу и процессор, скачивает последний выпуск, проверяет подпись и ставит программу. Параметры нужны в трёх случаях: автоматика ошиблась, установку ведёт не человек (скрипт, Ansible, cron) или нужно поставить не последний выпуск.

По умолчанию ставится последний выпуск. Конкретный выпуск задаётся ключом --version <номер>; если такого выпуска на раздаче нет, установщик сообщает об этом и ничего на роутере не меняет. Номер устанавливаемого выпуска виден в блоке данных в начале установки — вместе с именем архива, версией sing-box и каталогами установки. Вопросов установщик не задаёт: установка начинается сразу после проверок и ни на чём не останавливается.

ПараметрКогда пригодитсяЧто делает
--cleanПрежняя установка мешает, а данные не нужныУдаляет прежнюю установку целиком (служба, сеть, файлы, конфигурация, база, токен, geoip) и ставит программу «начисто»
--version <номер>Нужен конкретный выпуск, а не последнийСтавит указанный выпуск, например --version 0.22.45; слова latest и ведущая v допускаются
--platformПлатформа определилась неверно (бывает редко)Ставит платформу вручную — entware или openwrt — вместо автоопределения
--arch <вариант>Процессор определился неверно (бывает редко)Ставит сборку под указанный процессор — aarch64-unknown-linux-musl, armv7-unknown-linux-musleabihf или mipsel-unknown-linux-musl
--sha256 <хэш>Выпуск нужно закрепить жёсткоПродолжает только если контрольная сумма архива совпала с указанной
--base-url <адрес>Роутер не может открыть сайт проектаБерёт файлы выпуска с другого сервера-зеркала
--staging <каталог>В каталоге данных мало местаСкачивает и распаковывает архив в указанный каталог на диске
--dry-runХочется сначала «примерить»Скачивает и проверяет выпуск, печатает план и ничего не меняет
--quiet, -qВывод уходит в журналПечатает только итог и ошибки
--verbose, -vНужно видеть, что именно происходитПоказывает выполняемые команды
--log-file <путь>Журнал нужно сохранитьПишет журнал диагностики по указанному пути
--no-colorТерминал не понимает цветОтключает цвет (то же делает NO_COLOR=1)
--no-progressЖурнал, запись экрана, медленный терминалУбирает бегунок и индикатор загрузки
--print-tokenТокен нужен в скриптеПечатает токен входа даже при перенаправлении вывода
--no-reportУстановка не должна сообщать о себе на сайтВыключает отчёт о результате установки (то же делает KVASPRO_NO_REPORT=1)
Подробности по каждому ключу — что именно он делает, какие значения допускает, какие коды возврата у установщика и как выглядит его справка целиком — собраны на отдельной странице: Установка из командной строки. Там же примеры для автоматики: тихая установка с журналом, закрепление выпуска по контрольной сумме, установка с зеркала.

Версия: всегда последняя

Установщик не спрашивает версию и не показывает меню выпусков — он ставит последний выпуск с сервера раздачи. Это сделано намеренно: так на роутер не попадёт устаревшая сборка, а установка автоматики (скрипт, Ansible, cron, curl | sh без терминала) ведёт себя ровно так же, как ручная.

Номер устанавливаемого выпуска виден в блоке данных в начале установки — вместе с именем архива, версией sing-box и каталогами установки.

--sha256: жёсткое закрепление выпуска

  • --sha256 <хэш> — ожидаемая контрольная сумма архива. Если она не совпадёт с той, что записана в описании выпуска (манифесте), установка остановится. Так выпуск закрепляют жёстко — например, при массовой установке одной и той же сборки на парк устройств.

Сколько нужно места и что делает установщик, если его мало

Установщик проверяет свободное место до скачивания архива и различает две ситуации:

  • Не хватает места на саму установку (архив выпуска плюс распакованный набор) — установка останавливается с понятным сообщением: сколько нужно, сколько свободно, сколько не хватает, из чего состоит требование и что делать (освободить место или указать рабочий каталог на другом разделе ключом --staging).
  • Хватает на установку, но не хватает долгосрочного запаса под базу и докачку данных — установщик предупреждает и продолжает. Долгосрочный запас нужен приложению в работе, а не в момент установки: база создаётся пустой и растёт по мере сбора статистики. Освободить место стоит позже.

--staging <каталог>: если мало места

Скачанный архив распаковывается в рабочий каталог рядом с данными программы, а по окончании установки этот каталог удаляется. Если в каталоге данных мало места, укажите другой каталог на диске, например --staging /opt/kvaspro-install (на OpenWrt подойдёт другой раздел — скажем, подготовленный USB-накопитель).

Раздел в оперативной памяти (tmpfs) не подойдёт: установщик откажется, чтобы крупный архив не занял память роутера. Каталог нельзя указывать как каталог данных, каталог программ или корень, и он не должен быть символической ссылкой.

Установка без вопросов (скрипт, Ansible, cron)

Установщик не задаёт вопросов вообще: подтверждение («Установить Квас Про?») убрано, установка начинается сразу после проверок и ни на чём не останавливается. Ключей «без вопросов» нет: --yes (он же -y) и переменная окружения KVASPRO_ASSUME_YES убраны из установщика — вопросов, которые они отменяли, в нём не осталось. Несовместимый sing-box установщик тоже переустанавливает сам.

Тихий вывод, журнал и оформление

  • --quiet (-q) — только итог и ошибки: удобно, когда вывод читает машина.
  • --verbose (-v) — печатает выполняемые команды: удобно при разборе проблем.
  • --log-file <путь> — журнал диагностики по своему пути. По умолчанию журнал пишется во временный каталог, а его путь печатается вместе с сообщением об ошибке.
  • --no-progress — без бегунка и индикатора загрузки.
  • --no-color и переменная NO_COLOR=1 — без цвета; KVASPRO_ASCII=1 — ASCII-знаки вместо юникодных (для старых терминалов и медленных консолей).
  • --print-token — печатать токен входа даже тогда, когда вывод перенаправлен в файл. Без этого параметра токен в журнал не попадает — это защита от утечки. Посмотреть токен позже можно на роутере командой kvaspro --key.

Удаление программы

Удалить Квас Про можно двумя способами — оба запускают один и тот же скрипт удаления.

Ключом продукта (рекомендуется):

kvaspro --uninstall                 # удалить с подтверждением, данные стереть
kvaspro --uninstall --keep-data     # снять программу, данные оставить
kvaspro --uninstall --remove-deps   # вместе с sing-box, поставленным Квас Про
kvaspro --uninstall --dry-run       # только проверка и план, ничего не меняется

Ключ запускает ту копию удалятора, которая свежее: продукт носит скрипт внутри себя, а файл в каталоге данных (scripts/uninstall.sh) берётся, только если он не старее. Так устаревшая копия на роутере не может быть запущена по ошибке.

Скриптом напрямую: sh /opt/etc/kvaspro/scripts/uninstall.sh (на OpenWrt — /etc/kvaspro/scripts/uninstall.sh) с теми же ключами. Этот файл появляется при установке пакетом; если его нет или он старее, запускайте удаление ключом выше.

Удаление обязательно подтверждается: вопрос «Подтверждите удаление» показывает ответ у правого края строки, ответ выбирается стрелками (или клавишами y/д и n/н), Enter подтверждает выбор, Esc отменяет. Ключей «без вопросов» нет — удаление запускают из терминала (по SSH), где виден вопрос.

Перед удалением файлов программа восстанавливает сеть: снимаются все управляемые правила, TPROXY, маршруты и правило доступа к панели, возвращаются прежние настройки ядра. После удаления ход работы остаётся на экране до нажатия любой клавиши, а затем печатается итог — в нём, среди прочего, путь к журналу удаления (cat <путь>) и список сетевых артефактов, если что-то снять не удалось (тогда помогает перезагрузка роутера).

Что дальше

После входа откроется мастер первичной настройки: он поможет задать основные параметры, а затем — добавить защищённое соединение и настроить доступ к сайтам и фильтрацию спама и фишинга.

Документация КвасПро · v1.0.22