Безопасное обновление на проде
March 23, 2026 · View on GitHub
Пошаговое руководство по обновлению C³ CELERITY на production-сервере с минимальным временем простоя.
📋 Предварительный чеклист
Перед любым обновлением:
-
Создайте резервную копию базы данных
# Через UI панели: Дашборд → Бэкап → Скачать # Или вручную через mongodump: docker exec hysteria-mongo mongodump --archive=/data/db/backup.archive --username=hysteria --password --authenticationDatabase=admin docker cp hysteria-mongo:/data/db/backup.archive ./backup-$(date +%Y%m%d-%H%M%S).archive -
Проверьте текущую версию
docker logs hysteria-backend --tail 50 | grep -i version -
Проверьте свободное место на диске
df -h # Минимум 2GB свободного места для нового образа -
Сохраните текущий .env файл
cp .env .env.backup-$(date +%Y%m%d)
🚀 Обновление (Docker Hub — рекомендуется)
Для production-развертывания через docker-compose.hub.yml:
1. Перейдите в директорию проекта
cd /path/to/hysteria-panel
2. Остановите текущие контейнеры (короткое время простоя)
docker compose -f docker-compose.hub.yml down
Время простоя: ~10-30 секунд
3. Скачайте новый образ
docker compose -f docker-compose.hub.yml pull
4. Запустите обновлённые контейнеры
docker compose -f docker-compose.hub.yml up -d
5. Проверьте статус
# Все контейнеры должны быть "running"
docker compose -f docker-compose.hub.yml ps
# Проверьте логи на ошибки
docker logs hysteria-backend --tail 100 -f
6. Проверьте доступность
curl -I https://ваш-домен/panel
🔧 Обновление (сборка из исходников)
Для развертывания через docker-compose.yml с локальной сборкой:
1. Перейдите в директорию проекта
cd /path/to/hysteria-panel
2. Получите последние изменения
git fetch origin
git status # проверьте незакоммиченные изменения
git pull origin main
3. Остановите текущие контейнеры
docker compose down
4. Пересоберите образ
docker compose build --no-cache backend
Время: 2-5 минут в зависимости от сервера
5. Запустите контейнеры
docker compose up -d
6. Проверьте статус
docker compose ps
docker logs hysteria-backend --tail 100 -f
🔄 Откат на предыдущую версию
Если после обновления возникли проблемы:
Вариант 1: Откат на конкретную версию образа
-
Отредактируйте
docker-compose.hub.yml:backend: image: clickdevtech/hysteria-panel:v1.2.3 # укажите нужную версию -
Примените изменения:
docker compose -f docker-compose.hub.yml down docker compose -f docker-compose.hub.yml pull docker compose -f docker-compose.hub.yml up -d
Вариант 2: Откат на предыдущий git-коммит
# Найдите предыдущий рабочий коммит
git log --oneline -10
# Откатитесь
git checkout <commit-hash>
# Пересоберите
docker compose build --no-cache backend
docker compose up -d
Вариант 3: Восстановление базы данных
# Восстановление из бэкапа
docker cp ./backup.archive hysteria-mongo:/data/db/backup.archive
docker exec hysteria-mongo mongorestore --archive=/data/db/backup.archive --drop --username=hysteria --password --authenticationDatabase=admin
✅ После обновления
- Проверьте авторизацию — войдите в панель
- Проверьте ноды — статус всех нод должен быть
online - Проверьте подписки — откройте ссылку подписки в браузере
- Проверьте API — выполните тестовый запрос с API-ключом
- Мониторьте логи в течение 10-15 минут:
docker logs hysteria-backend -f --tail 50
⚠️ Типичные проблемы
Контейнер не стартует
# Проверьте логи
docker logs hysteria-backend
# Частые причины:
# - Ошибка в .env файле
# - Проблема с подключением к MongoDB
# - Нехватка памяти
MongoDB не подключается
# Проверьте статус MongoDB
docker logs hysteria-mongo --tail 50
# Перезапустите MongoDB
docker compose restart mongo
SSL-сертификаты не работают
# Проверьте содержимое greenlock.d
ls -la greenlock.d/
# Перезапустите с очисткой кэша
docker compose down
docker compose up -d
📅 Рекомендуемое расписание
| Действие | Частота |
|---|---|
| Бэкап базы | Ежедневно (авто) + перед обновлением |
| Проверка обновлений | Еженедельно |
| Обновление security-патчей | В течение 48 часов |
| Мажорные обновления | После тестирования на staging |
🛡️ Рекомендации
- Тестируйте на staging — дублирующая среда для проверки обновлений
- Обновляйте в низконагруженное время — ночь/раннее утро по времени пользователей
- Держите бэкапы — минимум 3 последних бэкапа базы
- Документируйте изменения — сохраняйте записи о версиях и датах обновлений
- Не обновляйте всё сразу — сначала панель, затем при необходимости ноды
📞 Если что-то пошло не так
- Не паникуйте — данные в MongoDB сохранены
- Проверьте логи:
docker logs hysteria-backend --tail 200 - Откатитесь на предыдущую версию
- При необходимости восстановите базу из бэкапа
- Создайте issue на GitHub с описанием проблемы и логами