Обновления и доступ поддержки
На своём сервере

Обновления и доступ поддержки

Установка на вашем сервере обслуживается двумя действиями, и оба начинаются с вас: кнопка «Обновить» и галочка «Предоставить доступ поддержке».

Внутрь мы не ходим сами — ни по одному из этих путей. Кнопка переводит продукт на новую версию, галочка открывает нашему инженеру временный вход на сервер.

Где это

Раздел НастройкиЛицензия, блок «Обслуживание установки». Видят его владелец и администраторы.

Работает он не через продукт, а через отдельную службу supporthub-agent на самом сервере — её ставит установщик шестым шагом. Служба нужна именно потому, что во время обновления продукт перезапускается: сам себя он обновить не может, и показать ход обновления ему тоже нечем. Если служба не отвечает, кнопки раздела ничего не сделают, но на работу поддержки это не влияет — обращения принимаются и ответы уходят как обычно.

Обновление

Что делает кнопка

Кнопка «Обновить» появляется, когда для вас выложена версия новее установленной. Рядом видно, какая именно и меняет ли она схему базы. По нажатию служба делает пять шагов, в этом порядке:

  1. 1
    Снимает копию базы
    Всегда, а не только перед выпусками с миграциями. Копия ложится в /var/lib/supporthub-agent/backups и остаётся там после обновления — это то, что делает откат безусловным.
  2. 2
    Забирает обновление
    С нашего сервера. Это один файл с готовыми образами: на вашем сервере ничего не собирается и ничего не скачивается из публичных реестров.
  3. 3
    Проверяет его
    Контрольная сумма сверяется с той, что приехала под нашей подписью, и только после этого файл распаковывается.
  4. 4
    Ставит
    Образы загружаются, версия переключается, контейнеры поднимаются на новой.
  5. 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, запирает учётную запись и обрывает открытые сессии — именно в таком порядке, чтобы не осталось щели, в которую можно войти заново. Инженера, который в этот момент работал, выбросит из терминала.

Учётная запись при этом не удаляется, а запирается: вместе с ней удалился бы и её домашний каталог, а это следы того, что на сервере делали. Войти под запертой нельзя.

Если вы галочку не снимете, доступ закроется сам по истечении срока.

Журнал

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

Чего не происходит

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