Как 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 — это очень умный ассистент, но не автопилот.