Обновления и доступ поддержки
Установка на вашем сервере обслуживается двумя действиями, и оба начинаются с вас: кнопка «Обновить» и галочка «Предоставить доступ поддержке».
Внутрь мы не ходим сами — ни по одному из этих путей. Кнопка переводит продукт на новую версию, галочка открывает нашему инженеру временный вход на сервер.
Где это
Раздел НастройкиЛицензия, блок «Обслуживание установки». Видят его владелец и администраторы.
Работает он не через продукт, а через отдельную службу supporthub-agent на самом сервере — её ставит установщик шестым шагом. Служба нужна именно потому, что во время обновления продукт перезапускается: сам себя он обновить не может, и показать ход обновления ему тоже нечем. Если служба не отвечает, кнопки раздела ничего не сделают, но на работу поддержки это не влияет — обращения принимаются и ответы уходят как обычно.
Обновление
Что делает кнопка
Кнопка «Обновить» появляется, когда для вас выложена версия новее установленной. Рядом видно, какая именно и меняет ли она схему базы. По нажатию служба делает пять шагов, в этом порядке:
- 1Снимает копию базыВсегда, а не только перед выпусками с миграциями. Копия ложится в
/var/lib/supporthub-agent/backupsи остаётся там после обновления — это то, что делает откат безусловным. - 2Забирает обновлениеС нашего сервера. Это один файл с готовыми образами: на вашем сервере ничего не собирается и ничего не скачивается из публичных реестров.
- 3Проверяет егоКонтрольная сумма сверяется с той, что приехала под нашей подписью, и только после этого файл распаковывается.
- 4СтавитОбразы загружаются, версия переключается, контейнеры поднимаются на новой.
- 5Ждёт, пока продукт ответит, что здоровПока он этого не сказал, обновление не считается применённым.
Настройки, база, вложения и код установки остаются на месте. Пароль базы не меняется, операторы не разлогиниваются.
Что видно во время обновления
Страница переключается на показ хода обновления: шаг, на котором служба сейчас, и время начала. Берёт она его не у продукта — продукт в это время перезапускается, — а с отдельного адреса, который отдаёт хостовой nginx из файла. Поэтому страница продолжает отвечать, даже когда всё остальное лежит.
Эту страницу можно закрыть. Обновление идёт на сервере и браузера не ждёт: закрытая вкладка, перезагруженная страница и упавший интернет на него не влияют. Вернувшись, вы увидите тот шаг, на котором служба находится.
Бывает, что ход обновления не виден — страница состояния не отвечает. Само обновление при этом идёт; вернитесь через несколько минут.
Если обновление не прошло
Служба возвращает прежнюю версию сама, без вашего участия, и сообщает об этом на той же странице: «Обновление не прошло, вернулась прежняя версия». Продукт продолжает работать на том, что работало.
База в этом случае не восстанавливается из копии нарочно. Прежняя версия обычно работает и на новой схеме, а восстановление стёрло бы всё, что ваши клиенты написали за время обновления. Копия просто остаётся лежать.
Если и возврат прежней версии не помог, служба восстанавливает базу из копии, снятой первым шагом. Это крайний случай, и о нём стоит нам написать: запись о каждом шаге остаётся в журнале службы (/var/lib/supporthub-agent/journal.jsonl), по нему разбор занимает минуты.
Вернуть прежнюю версию руками можно и без кабинета:
/opt/supporthub/rollback.bashКогда обновления перестают приходить
Срок обновлений записан в вашей лицензии отдельно от срока работы. Когда он выходит, продукт продолжает работать, а новые версии перестают предлагаться, и в разделе видно, до какой даты они были доступны. Продлевается это у нас.
То же из терминала
На сервере рядом со службой ставится команда supporthub — то же самое для тех, кому удобнее в терминале:
supporthub status что с установкой: версия, сервисы, лицензия
supporthub update --check есть ли обновление
supporthub update обновить
supporthub support-access status что с доступом поддержки
supporthub logs backend журнал сервиса
supporthub backup снять копию базы
supporthub doctor проверить сервер: место, память, срок сертификатаДелает она ровно то же, что кнопки: обе дороги ведут к одной службе, и журнал у них общий.
Доступ поддержки
Что означает галочка
Галочка «Предоставить доступ поддержке» — это ваше разрешение нам войти на сервер. Пока она не поставлена, на сервере нет ни учётной записи для нас, ни ключа, ни правила sudo: отзывать нечего и забыть отозвать нечего.
Когда вы её ставите, служба начинает раз в минуту спрашивать наш сервер, открыта ли для вас сессия поддержки. Если открыта — она заводит учётную запись supporthub-support и кладёт в неё наш ключ, выданный на эту сессию и только на неё. Если сессий нет, не происходит ничего: галочка — это разрешение, а не вход.
Границы
| Граница | Как она устроена |
|---|---|
| Только по вашему решению | без галочки на сервере нет ни записи, ни ключа |
| Только на срок | срок стоит и в сессии, и в самой строке ключа: по его истечении sshd не пустит, а служба снимет ключ сама |
| Только нашим ключом | ключ генерируется на одну сессию; пароля у учётной записи нет, по паролю войти нельзя |
| Только терминал | проброс портов, туннели и агент ключей запрещены самой строкой ключа |
| Дописать себе доступ инженер не может | файл с ключами и домашний каталог принадлежат root, а не этой учётной записи |
| Снимается в любой момент | той же галочкой |
Про адреса: если мы передали вам список наших адресов, вход разрешён только с них, и они видны в разделе. Пока список пуст, раздел честно пишет «без ограничения по адресу» — это значит, что вход возможен с любого адреса, и единственными ограничениями остаются ваше разрешение, ключ и срок.
Как снять
Снимите галочку. Служба убирает ключ, удаляет правило sudo, запирает учётную запись и обрывает открытые сессии — именно в таком порядке, чтобы не осталось щели, в которую можно войти заново. Инженера, который в этот момент работал, выбросит из терминала.
Учётная запись при этом не удаляется, а запирается: вместе с ней удалился бы и её домашний каталог, а это следы того, что на сервере делали. Войти под запертой нельзя.
Если вы галочку не снимете, доступ закроется сам по истечении срока.
Журнал
Под галочкой — журнал: когда доступ был выдан, кто из инженеров и когда входил и выходил, когда истёк срок, когда вы его сняли. Записи в журнале появляются сами и не правятся ни нами, ни из кабинета.
Чего не происходит
- Мы не обновляем вас сами. Автоматического обновления нет: пока вы не нажали кнопку, версия остаётся той, что стоит.
- Мы не входим на сервер без галочки. Открыть сессию со своей стороны мы можем, но до сервера она не доходит: спрашивает нас служба на вашем хосте, и спрашивает только пока вы разрешаете.
- Мы не видим содержимого обращений. Наружу уходят идентификатор лицензии, отпечаток сервера, версия и отметка времени — то же, что при проверке лицензии. Переписка и персональные данные остаются на вашем сервере.

