Назад к списку

Как Claude стал моим системным администратором

devopsaisecurityclaude
Как Claude стал моим системным администратором

У меня нет системного администратора в штате. Я делаю свои приложения, но мой уровень серверного администрирования — честно скажем — средненький. На самом дешёвом, но не супернадёжном хостинге я держу несколько проектов на одном VPS: этот сайт с блогом, Поэторий, тайм-трекер и приложение для изучения иностранных слов (которое пока находится в режиме внутреннего тестирования). Всё на Dokku, всё в Docker-контейнерах. Работало — и ладно.

А потом всё сломалось.

Криптомайнер на продакшене

Однажды я заметил, что сервер еле шевелится. Сайты грузятся по полминуты и отваливаются по таймауту, билды зависают на деплое. Первая мысль: «что-то с хостером», т.к. у него такое периодически случается. Перезагрузка не сильно помогла.

Я работаю с Claude Code — это консольная версия Claude, которая может выполнять команды, читать файлы и вообще взаимодействовать с системой, а уж с удалённым терминалом сам бог велел справиться. Я описал проблему и дал ему доступ к серверу через SSH-ключ.

Claude довольно быстро разобрался. Проверил нагрузку через htop, увидел, что процессор загружен на 100%. Начал смотреть, откуда идёт нагрузка — нашёл подозрительный процесс внутри одного из Docker-контейнеров. Проанализировал его и вынес вердикт: в контейнере работает XMRig — криптовалютный майнер.

Как он туда попал? В декабре 2025 года была обнаружена критическая уязвимость CVE-2025-55182 в React Server Components, получившая название React2Shell. Уровень опасности — максимальный, CVSS 10.0. Уязвимость позволяла любому неавторизованному пользователю выполнить произвольный код на сервере через специально сформированный HTTP-запрос.

Ботнет RondoDox массово эксплуатировал эту уязвимость, внедряя криптомайнеры на уязвимые серверы. К концу декабря 2025 года было скомпрометировано более 90 000 серверов по всему миру.

Когда уязвимость была опубликована, я обновил все свои приложения. Все, кроме одного — про него я просто забыл. Именно через это приложение майнер и попал на сервер.

Claude быстро удалил заражённый контейнер, помог обновить уязвимое приложение и проверил остальные контейнеры на предмет компрометации. Сервер вздохнул свободно.

Нехватка памяти и виртуализация

Через какое-то время сервер снова начал тормозить. Я уже подумал, что опять что-то подцепил, и снова обратился к Claude. Он проверил — на этот раз никакого малвари не было. Проблема оказалась проще: не хватало оперативной памяти. Четыре проекта, каждый со своим Docker-контейнером с Node.js и Django, плюс базы данных — всё это съедало больше, чем было доступно на VPS. Своп не справлялся, а значит пришла пора апгрейда.

Я сделал апгрейд тарифа, памяти стало больше. Проблема со скоростью ушла, но появилась новая: рандомные фризы. Сервер периодически подвисал на несколько секунд без видимой причины.

Claude опять довольно точно определил источник проблемы. Виновником оказался процесс page_reporting_process — это механизм, который сообщает гипервизору о свободных страницах памяти гостевой виртуальной машины. На VPS это типичная ситуация: хостер использует virtio-balloon для управления памятью между виртуальными машинами, и этот процесс может вызывать задержки.

Claude помог составить грамотное обращение в техподдержку хостера с просьбой перенести VPS на другую физическую машину. Поддержка откликнулась, перенесла — фризы прекратились.

Повседневное администрирование

После этих случаев я стал регулярно использовать Claude Code для серверных задач:

  • Настройка новых приложений в Dokku — создание приложения, подключение домена, настройка SSL через Let's Encrypt, переменные окружения
  • Бэкапы баз данных — настройка регулярного резервного копирования PostgreSQL
  • Миграции — выполнение миграций Django на продакшене
  • Дебаг — анализ логов, поиск ошибок, диагностика проблем
  • Оптимизация — настройка лимитов памяти и CPU для Docker-контейнеров, чтобы один билд не подвешивал весь сервер.

Я думаю, всё это можно было сделать руками, без Claude, но потребовало бы гораздо больше времени, сил и чтения кучи разнообразной документации.

Итак: как использовать Claude для управления хостингом?

За несколько месяцев работы с Claude как с серверным администратором я вынес три главные идеи:

1. Всегда аппрувить команды вручную. Claude Code по умолчанию спрашивает разрешение перед выполнением каждой команды на сервере. Не отключайте это. Продакшен — это продакшен. Я проверяю каждую команду перед тем, как нажать Enter, даже если она выглядит безобидно.

2. Создать отдельный навык (skill) для работы с хостингом. В Claude Code можно создать системные инструкции, которые будут доступны во всех проектах. Я прописал туда всё: как подключаться к серверу, какой стек используется, где лежат конфиги, где маунты хранилищ, какие приложения развёрнуты. Теперь в любом проекте Claude уже знает контекст сервера и не задаёт лишних вопросов. Если что-то меняется, добавляется или удаляется, скилл периодически нужно обновлять.

Как сделать свой hosting-скилл

Навык (skill) в Claude Code — это markdown-файл с инструкциями, который лежит в ~/.claude/skills/<имя>/skill.md. В начале файла — YAML-заголовок с именем и описанием, когда этот навык нужно активировать. Дальше — обычный markdown с инструкциями.

Описание (description) — это триггер. Claude Code читает его и решает, когда подключать навык к контексту. Я написал что-то вроде: «использовать, когда пользователь просит задеплоить, подключиться к серверу, посмотреть логи, перезапустить приложение или выполнить любые серверные операции». Теперь в любом проекте, когда я говорю «задеплой» или «посмотри логи», Claude автоматически подтягивает нужные инструкции.

Вот что стоит включить в такой скилл:

Подключение к серверу. SSH-команда с указанием ключа и пользователя. Это первое, что Claude будет использовать для любой серверной задачи. Пример структуры:

ssh -i "путь/к/ключу" [email protected]

Таблица приложений. Если проектов несколько, табличка с именами приложений, ветками деплоя и доменами экономит кучу времени. Claude не будет спрашивать «а как называется приложение в Dokku?» каждый раз:

| Проект | Приложение | Ветка | Домен | |-------------|-------------|--------|-------------------| | My Web App | myapp-web | main | myapp.com | | My API | myapp-api | main | api.myapp.com |

Команды деплоя. Как именно пушить код — через git push dokku, через CI/CD, или как-то иначе. Если для деплоя нужно устанавливать переменные окружения (например, GIT_SSH_COMMAND), это тоже стоит прописать.

Часто используемые команды. Просмотр логов, перезапуск, миграции, переменные окружения — всё, что вы делаете регулярно. Не нужно запоминать синтаксис, Claude возьмёт его из скилла:

dokku logs <app-name> --tail dokku ps:restart <app-name> dokku run <app-name> python manage.py migrate dokku config:set <app-name> KEY=value

Монтирование хранилищ. Если приложения используют persistent storage (медиафайлы, модели ML, статика) — укажите пути монтирования. Без этого Claude может случайно пересоздать контейнер и потерять данные.

Лимиты ресурсов. Если вы ограничиваете память и CPU для контейнеров (а на VPS это стоит делать), запишите текущие лимиты и команды для их настройки. Это особенно важно для билдов — без лимитов сборка одного проекта может уронить весь сервер.

Весь файл получается на 50–80 строк — не слишком много, чтобы засорять контекст, но достаточно, чтобы Claude мог выполнить любую серверную задачу без лишних вопросов.

3. Не давать автоматический доступ к деплою. Каждый коммит, пуш и деплой — только с явного разрешения. Claude может предлагать задеплоить, но делать это должен человек. Одно одобрение не распространяется на следующее действие. Тут есть одна проблема, которую я пока не смог до конца победить, хоть и прописал это в инструкциях и на уровне системы, и кое-где на уровне проектов. Если ты сказал Claude что-то задеплоить несколько раз и он это сделал, дальше он деплоит автоматом, не спрашивая, считая, что теперь можно. Стоит отдельно добавлять в промпт: «do not deploy anything until you're asked directly». Тогда слушается.

Итог

AI не заменит профессионального DevOps-инженера. Но для инди-разработчика, который и чтец, и жнец, и на дуде игрец — это уже незаменимый инструмент. Claude нашёл криптомайнер быстрее, чем я бы разобрался с htop. Диагностировал проблему виртуализации, о существовании которой я даже не подозревал. И продолжает помогать с рутиной, которая раньше отнимала вечера.

Главное — помнить, что ответственность за продакшен всё ещё на тебе. Claude — это очень умный ассистент, но не автопилот.

© 2026 Ivan Bezdenezhnykh. Все права защищены.