Skip to content

График регулярного обслуживания ​

Ежедневно ​

  • ✅ Контролируйте здоровье бота
  • ✅ Проверяйте логи ошибок
  • ✅ Пересматривайте подозрительных пользователей
  • ✅ Проверьте обработку платежей

Еженедельно ​

  • ✅ Резервная копия БД
  • ✅ Пересматривайте логи доступа пользователей
  • ✅ Проверьте использование ресурсов
  • ✅ Протестируйте процедуры восстановления

Ежемесячно ​

  • ✅ Обновите образы Docker
  • ✅ Пересмотрите параметры безопасности
  • ✅ Аудит разрешений пользователей
  • ✅ Планируйте улучшения

Ежеквартально ​

  • ✅ Полный аудит безопасности
  • ✅ Пересмотр и ротация ключей
  • ✅ Оптимизация производительности
  • ✅ Проверка соответствия

Резервная копия БД ​

Шаг 1: Ручная резервная копия

bash
  docker compose exec postgres pg_dump \
    -U remnawave \
    -d remnawave \
    > backup_$(date +%Y%m%d_%H%M%S).sql

Шаг 2: Автоматическая резервная копия

Создайте /usr/local/bin/backup-bot.sh:

bash
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
docker compose -f /path/to/docker-compose.yaml exec postgres \
  pg_dump -U remnawave -d remnawave \
  > /backups/bot_$DATE.sql
gzip /backups/bot_$DATE.sql

Шаг 3: Добавьте в Cron

bash
  crontab -e
  # Выполнять ежедневно в 2 AM
  0 2 * * * /usr/local/bin/backup-bot.sh

Шаг 4: Протестируйте восстановление

bash
  # Проверьте, что резервная копия действительна
  gunzip -c backup_20241110_020000.sql.gz | head -100

Обновления и升级 ​

Обновите бота ​

bash
# Проверьте обновления
docker pull ghcr.io/jolymmiels/remnawave-telegram-shop-bot:latest

# Обновите
docker compose pull
docker compose down
docker compose up -d

# Проверьте
docker compose logs -f remnawave-telegram-shop-bot

Обновление до 5.1.0 ​

Версия 5.1.0 добавляет необязательную картинку меню и автоматическую замену закреплённого /start. Интеграция с Remnawave остаётся на API 3.4.1. Перед обновлением сохраните резервную копию PostgreSQL и исходных файлов: .env, docker-compose.yaml, translations и assets (если картинка используется). Не публикуйте резервную копию .env: она содержит секреты.

  1. Укажите образ ghcr.io/jolymmiels/remnawave-telegram-shop-bot:5.1.0 в сервисе bot либо используйте свой выбранный тег 5/latest.
  2. При необходимости добавьте ./assets:/assets:ro и настройте MENU_PHOTO_PATH. Сохраняйте остальные volumes.
  3. Обновите только бота, не останавливая БД (имя сервиса — из стандартного Compose):
bash
docker compose pull bot
docker compose up -d --no-deps --force-recreate bot
docker compose logs --tail 100 bot

Миграция 000006_add_menu_state применяется автоматически при запуске и создаёт две новые таблицы:

  • bot_menu_photo — Telegram file_id и хеш исходной картинки для конкретного бота и пути;
  • bot_menu_pin — ID закреплений и незавершённые операции открепления для конкретного бота и чата.

Сохраняйте эти таблицы в резервной копии БД и не удаляйте volume PostgreSQL: без него потеряются не только кеш/закрепления, но и остальные данные бота. Не используйте docker compose down -v для обычного обновления.

После запуска отправьте /start, проверьте фото и inline-переходы, затем повторите /start: новое меню должно закрепиться, старое — открепиться. Отсутствие прав на закрепление не блокирует отправку самого меню и отражается в логах.

При замене только файла картинки достаточно перезапустить сервис bot; при изменении .env или mounts нужен up -d --force-recreate bot. Старые сообщения сохраняют старое фото, новый /start использует обновлённое.

Обновите зависимости ​

Контролируйте обновления безопасности:

bash
# Проверьте уязвимости
docker scout cves ghcr.io/jolymmiels/remnawave-telegram-shop-bot

# Обновите базовый образ при обнаружении проблем
docker compose build --pull

Совместимость версий ​

Всегда проверяйте совместимость перед обновлением:

RemnawaveБот
1.62.3.6
2.0-2.1.93.2.4
2.2.*3.2.5+
2.3.*3.5.*
2.8.*4.1.*
3.4.15.0.x–5.1.x

Укрепление безопасности ​

Безопасность окружения ​

bash
# Никогда не коммитьте .env
echo ".env" >> .gitignore

# Ограничьте разрешения файла
chmod 600 .env

# Используйте сильные пароли
openssl rand -base64 32

Ротация API ключа ​

bash
# Каждые 90 дней
1. Сгенерируйте новый ключ в панели платежей/Remnawave
2. Обновите файл .env
3. Перезагрузите бота
4. Удалите старый ключ после проверки

Контроль доступа ​

  • Ограничьте Telegram ID администраторов
  • Используйте сильную аутентификацию
  • Включите 2FA где доступно
  • Контролируйте логи доступа

Оптимизация производительности ​

Оптимизация БД ​

bash
# Подключитесь к PostgreSQL
docker compose exec postgres psql -U remnawave -d remnawave

# Проверьте размеры таблиц
SELECT
  schemaname,
  tablename,
  pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename))
FROM pg_tables
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;

# Vacuum и анализ
VACUUM ANALYZE;

# Проверьте использование индексов
SELECT * FROM pg_stat_user_indexes ORDER BY idx_scan DESC;

Ресурсы сервера ​

Контролируйте и регулируйте:

bash
# Проверьте использование
docker stats remnawave-telegram-shop-bot

# Обновите лимиты в docker-compose.yaml
services:
  remnawave-telegram-shop-bot:
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 1G

Восстановление после аварии ​

Восстановление резервной копии ​

bash
# Остановите сервисы
docker compose down

# Восстановите БД
gunzip -c backup_latest.sql.gz | \
  docker compose exec -T postgres \
  psql -U remnawave -d remnawave

# Запустите сервисы
docker compose up -d

Проверка после восстановления ​

bash
# Проверьте целостность данных
docker compose exec postgres psql -U remnawave -d remnawave \
  -c "SELECT COUNT(*) FROM subscriptions;"

# Протестируйте бота
docker compose logs -f remnawave-telegram-shop-bot

Планирование ёмкости ​

Планируйте рост:

Текущие пользователи: 1 000
Темп роста: 20% в месяц
Прогноз: 3 200 пользователей через 6 месяцев

Потребности ресурсов:
- БД: +50GB
- Память бота: +200MB
- Сеть: +100Mbps

Документирование ​

Ведите подробные записи:

  • ✅ Изменения конфигурации
  • ✅ Инциденты безопасности
  • ✅ Проблемы производительности
  • ✅ Жалобы пользователей
  • ✅ Обновления системы

Устранение распространённых проблем ​

ПроблемаПричинаРешение
Бот медленныйВысокая нагрузкаМасштабируйте ресурсы
БД полнаяБольшие таблицыАрхивируйте старые данные
Платежи сбиваютсяПроблема APIПроверьте подключение
Утечка памятиВерсия с ошибкойОбновите бота

Ресурсы поддержки ​

  • GitHub Issues: Сообщайте об ошибках
  • Документация: Этот сайт
  • Telegram сообщество: Присоединитесь к группе
  • Коммерческая поддержка: Доступна (свяжитесь)