Переименование VPS в Atmanki — 05.10.2026
Оглавление · Деплой · Эксплуатация
Что изменено
Compose-проект и активные контейнеры используют имя atmanki, общая сеть —
atmanki_default. Storybook и руководство работают в проектах atmanki-storybook
и atmanki-docs. Административный пользователь PostgreSQL и его служебная база
переименованы в atmanki; бизнес-база strapi сохраняет своё имя.
SSH-пользователь деплоя — atmanki-deploy, домашняя папка —
/home/atmanki-deploy. UID, GID и выделенный SSH-ключ сохранены; вход этим ключом
проверен. Токен CMS переименован в atmanki-web без изменения ключа и прав
read-only. Значения секретов не выводились в отчёт.
Домены, репозиторий maderwin/gheilt, локальная корневая папка и /opt/gheilt
сохранены. Имена GHCR-образов по-прежнему выводятся из имени репозитория.
Hatchet и учебный воркер выведены из рабочего стека: контейнеры остановлены,
порты 8888 и 7070 не слушаются. Их прежние данные сохранены для отката.
Резервная копия и перенос
Перед переключением автоматический деплой остановлен через VPS_READY=false,
операция выполнялась под /opt/gheilt/deploy.lock. Рабочие сервисы остановлены
на время холодного копирования, PostgreSQL корректно завершён перед копией его
тома. Для Strapi и Hatchet также сохранены SQL dumps и общие роли PostgreSQL.
Успешная копия: /opt/gheilt/backups/atmanki-20261005T115438Z, каталог 0700.
Сохранены все семь прежних томов, окружение, исходный релиз, ссылки текущих
релизов и описание контейнеров. Шесть томов рабочего стека восстановлены под
префиксом atmanki_; отдельный том конфигурации Hatchet остаётся в архиве.
Оригинальные тома и остановленные контейнеры сохранены.
Первое восстановление обнаружило отличие времени изменения каталогов: BusyBox tar не восстановил эти метаданные. Автоматический возврат поднял прежние сервисы. После перехода на GNU tar повторное создание архивов восстановленных томов дало побайтовое совпадение с исходными архивами, включая метаданные каталогов.
Зашифрованная копия сохранена вне VPS в локальной папке
.local/backups/atmanki-20261005, исключённой из Git. Архив и файл ключа имеют
права 0600, папка — 0700. Расшифровка и чтение оглавления архива проверены.
Проверки после переключения
Сравнены SHA-256 логических dumps баз до и после переименования роли и служебной
базы: содержимое Strapi и Hatchet совпало. При сравнении исключались только
случайные маркеры restrict/unrestrict, которые PostgreSQL добавляет в dump.
Затем изменено только имя служебного токена CMS с предварительной проверкой
единственности и отсутствия конфликта нового имени.
/api/content-health вернул ready и те же количества:
| Раздел | Записей |
|---|---|
| Site | 1 |
| Новости | 94 |
| События | 41 |
| Страницы | 5 |
| FAQ | 15 |
| Партнёры | 44 |
Контрольная сумма одной публичной фотографии до и после переключения совпала.
Проверены HTTPS главной страницы, /admin, руководства и Storybook index.json.
Контейнеры PostgreSQL, Garage, CMS, сайта, руководства и Storybook прошли healthchecks.
Для переключения имён сначала использованы уже работающие образы с закреплёнными
image IDs. Новый код и статические каталоги доставляются отдельно штатными
GitHub Actions из GHCR; состояние этой публикации проверяется по конкретному
run и фактически работающим digest. Исправлена сборка Storybook: её Dockerfile
теперь копирует manifest apps/docs, необходимый для --frozen-lockfile.
Откат
Путь успешной копии записан в /opt/gheilt/atmanki-migration.backup.
В копии находятся исходные ссылки web/CMS/Storybook/руководства и окружение.
При ошибке переноса скрипт остановил новый стек и поднял исходные контейнеры
с исходными томами; этот возврат проверен во время первой попытки.
После возобновления редакторской работы исходные тома уже не содержат новых
изменений. Перед последующим откатом нужна свежая согласованная копия и проверка
расхождений; обычная смена release.env не отменяет переименование томов и базы.
Удаление исходных томов и старых данных Hatchet в эту операцию не входит.