DevOps для небольших сайтов: автоматизация без команды
«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 по ключам вместо паролей.
Порядок внедрения (один вечер)
- Git-репозиторий для проекта + SSH-ключ для деплоя.
- Пайплайн автодеплоя (шаблон выше).
- cron-бэкапы БД и файлов + выгрузка в облако.
- Uptime-мониторинг с алертом в Telegram.
- Проверка восстановления из бэкапа (раз).
«DevOps для маленького сайта — это не Kubernetes и не оркестрация, а три привычки: деплой одной командой, бэкап по расписанию и алерт до катастрофы. Всё остальное — опционально» — практика администрирования, 2026.
Начните с самого болезненного: если вы когда-нибудь «восстанавливали» сайт по памяти или искали, какую версию кода залили вчера — начните с git и автодеплоя. Дальше по списку.