Усталяванне

Як усталяваць Квас Про на роўтар 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 -o install.sh && sh install.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, каманда без тэрмінала) паводзіць сябе гэтак жа, як ручное.

Нумар выпуску, які ўсталёўваецца, відаць у блоку даных у пачатку ўсталявання — разам з імем архіва, версіяй 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.23