Статьи

DevOps для небольших сайтов: автоматизация без команды

4 августа 2026  |  7 мин чтения

«DevOps — это для больших компаний» — миф. Для сайта на VPS автоматизация окупается с первого дня: один деплой через git push вместо ручных заливок по FTP, бэкапы, которые не забываются, и мониторинг, который предупреждает до катастрофы. Собираем минимальный набор за вечер.

Минимальный стек 2026

ЗадачаИнструментСтоимость
СерверVPS (или хостинг с SSH)от 300 ₽/мес
Управление кодомGit + GitHub/GitLabбесплатно
АвтодеплойGitHub Actions / GitLab CI / DeployHQбесплатно
Бэкапыrestic + cron, сервисы хостингабесплатно + хранилище
МониторингUptimeRobot / Better Uptime / Healthchecksбесплатно
Логиjournalctl, pm2 logs, GoAccessбесплатно

Полный набор стоит 0 ₽ сверх сервера — ценой настройки одного вечера.

Автодеплой через GitHub Actions

Схема «запушил — задеплоилось»:

# .github/workflows/deploy.yml
name: Deploy
on:
  push:
    branches: [main]
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Deploy to server
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.HOST }}
          username: ${{ secrets.USER }}
          key: ${{ secrets.SSH_KEY }}
          script: |
            cd /var/www/mysite
            git pull origin main
            npm install --omit=dev
            pm2 restart mysite

Правила безопасности: ключ SSH — в секреты репозитория (secrets), никогда в файлы; деплойный юзер без sudo; репозиторий приватный.

Альтернативы без GitHub: git push на сервер через post-receive hook (проще всего), rsync по cron, или SaaS вроде DeployHQ для «не-разработчиков».

Бэкапы: правило 3-2-1

Три копии, два носителя, одна вне площадки. Для сайта это:

  • База данных: ежедневный дамп (pg_dump/mysqldump).
  • Файлы: архив проекта (или сам git — это уже копия).
  • Хранение: локально + в облаке (S3, объектное хранилище) или на другом сервере.
# /etc/cron.d/backup
30 3 * * * root pg_dump db | gzip > /backup/db-$(date +\%F).sql.gz \
  && rclone copy /backup s3:bucket/backups

Главное правило: непроверенный бэкап — это отсутствие бэкапа. Раз в месяц делайте восстановление на тестовый контейнер.

Мониторинг, который предупреждает

  • Uptime-чек каждые 1–5 минут: сайт отвечает? При сбое — уведомление в Telegram.
  • Healthchecks: cron-задача «пингует» сервис; если пинга нет — алерт. Ловит молчащие сбои.
  • Метрики ресурсов: диск заполнен на 90% — это час до падения; следите через панель VPS или df -h в cron-алерте.
  • Логи: pm2 logs / journalctl — настройте NODE_ENV=production и ротацию логов.

Алерты в Telegram: уведомления приходят туда, где вы реально находитесь — не в письмо, которое откроют завтра.

Обновления и безопасность

  • Автообновления ОС: unattended-upgrades для критичных патчей.
  • Зависимости: npm audit/dependabot раз в неделю; реагируйте на критические.
  • Секреты: .env не в git (файл уже в .gitignore — проверьте), ключи только через env.
  • Минимализм: чем меньше установленных пакетов и сервисов, тем меньше поверхность атаки.
  • Fail2ban + SSH по ключам вместо паролей.

Порядок внедрения (один вечер)

  1. Git-репозиторий для проекта + SSH-ключ для деплоя.
  2. Пайплайн автодеплоя (шаблон выше).
  3. cron-бэкапы БД и файлов + выгрузка в облако.
  4. Uptime-мониторинг с алертом в Telegram.
  5. Проверка восстановления из бэкапа (раз).
«DevOps для маленького сайта — это не Kubernetes и не оркестрация, а три привычки: деплой одной командой, бэкап по расписанию и алерт до катастрофы. Всё остальное — опционально» — практика администрирования, 2026.

Начните с самого болезненного: если вы когда-нибудь «восстанавливали» сайт по памяти или искали, какую версию кода залили вчера — начните с git и автодеплоя. Дальше по списку.