Vps deploy auditor
LLM Skills
npx -y skills add goldenprofile/llm-skills --skill vps-deploy-auditorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Деплой Python-приложений на VPS без Docker и аудит существующего деплоя: nginx + systemd + redis + postgresql. Django/FastAPI под gunicorn/uvicorn и aiogram-боты под systemd; TLS (certbot), статика, security-заголовки, бэкапы pg_dump, redis persistence, безопасность хоста (не-root, ufw, секреты в EnvironmentFile, fail2ban). Режимы: генерация шаблонов конфигов и аудит с уровнями риска. Используй когда пользователь деплоит на VPS, просит unit-файл, конфиг nginx, настройку postgres/redis или бэкап БД, спрашивает «как задеплоить без Docker», «безопасен ли мой сервер», «почему сервис падает после рестарта», или упоминает gunicorn, uvicorn, certbot, ufw, systemd.
SKILL.md
8.4 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it
VPS Deploy Auditor
Помощник по деплою Python-приложений на одиночный VPS без Docker (nginx + systemd + redis + postgres) и аудитор существующего деплоя. Цель — рабочая, безопасная и переживающая рестарт конфигурация: сервис не падает молча, переживает ребут, отдаёт TLS, не теряет состояние и не светит секреты. По итогу — либо сгенерированные шаблоны конфигов, либо отчёт с уровнями риска.
Два режима
- Генерация — создать рабочие шаблоны (unit-файл, server-блок nginx, cron-бэкап, настройку redis/postgres) под конкретный тип приложения. См. справочники, бери шаблоны как основу.
- Аудит — пройтись по существующему деплою, классифицировать риски, объяснить, что отвалится на проде или при рестарте. Отчёт по references/output-format.md.
Контекст — установить ПЕРВЫМ делом
- Тип приложения — Django (WSGI/gunicorn или ASGI/uvicorn), FastAPI (ASGI/uvicorn), aiogram-бот (polling-воркер, без HTTP). От этого зависит unit и нужен ли nginx.
- Привязка процесса — unix-socket (предпочтительно для HTTP за nginx) или TCP-порт.
- Внешние зависимости — postgres и/или redis; нужны ли в
After=юнита. - Домен и TLS — есть ли домен под certbot; HTTP-only недопустим в проде.
- Сервисный пользователь — НЕ root; отдельный системный пользователь под приложение.
Процесс
- Собрать факты: unit-файлы (
/etc/systemd/system/*.service),systemctl status, server-блоки nginx (/etc/nginx/), конфиги postgres/redis, cron/таймеры бэкапов,ufw status, под кем и откуда запускается процесс, где лежат секреты. - Прогнать по чеклисту рисков (ниже) и справочникам.
- Классифицировать риск, объяснить почему ломается у него (одиночный VPS, соло-эксплуатация).
- Предложить рабочий конфиг/правку.
- Режим генерации — выдать шаблоны; режим аудита — отчёт по output-format.md.
Уровни риска
- CRITICAL — потеря данных или сервис недоступен/уязвим: нет бэкапов postgres (или они не
проверены), сервис/postgres/redis слушает
0.0.0.0без firewall, секреты закоммичены в репо, приложение работает под root, нет TLS на публичном HTTP. - HIGH — сервис падает и не поднимается, или деградирует под нагрузкой: нет
Restart=always, нетWantedBy/enable(не стартует после ребута), redis безmaxmemory/policy как cache (OOM-kill), маленький/отсутствующийTimeoutStopSecрвёт graceful shutdown, postgresmax_connectionsне согласован с числом воркеров (отказы соединений). - MEDIUM — нет security-заголовков/
server_tokens off, нетlock_timeoutбэкапа в off-peak, redis без persistence там, где он broker/FSM, нет лимитов ресурсов юнита, gzip выключен, таймауты nginx по умолчанию, нетfail2ban/rate-limit на SSH/входы. - LOW — стиль, именование юнитов, мелкие улучшения логирования/комментарии.
Быстрый чеклист (детали — в справочниках)
- Сервис под не-root системным пользователем,
Restart=always,enable-нут (стартует после ребута)? TimeoutStopSecдостаточен для graceful shutdown (gunicorn/uvicorn/бот закрывают пулы/сессии)?- Секреты в
EnvironmentFile(права600, владелец — сервис), а НЕ в репо/в unit-строке? - HTTP-приложения за nginx: TLS (certbot+auto-renew), редирект 80→443, security-заголовки, gzip?
- nginx проксирует на unix-socket, статика/медиа отдаются nginx (не приложением)?
- postgres: отдельные пользователь+БД,
pg_hbaбезtrust, есть проверенныйpg_dump-бэкап по cron? - redis:
bind 127.0.0.1,maxmemory+policy (если cache), persistence (если broker/FSM)? - Firewall (ufw): открыты только нужные порты (22/80/443), БД/redis не наружу?
- Число воркеров согласовано с CPU и с
max_connectionspostgres? - Миграции БД применяются при деплое безопасно (см.
migration-safety-auditor)?
Связь с библиотекой навыков
- Применение миграций в процессе деплоя →
migration-safety-auditor(не уронить прод DDL). - Готовность кода к проду перед деплоем (антипаттерны, безопасность, highload) →
python-project-audit. - Зафиксировать процедуру деплоя как заметку в репозитории (Makefile/runbook) →
harness-engineering. - Деплой aiogram-бота под systemd детальнее (single instance, FSM) →
aiogram-bot-auditor.
Справочники
- references/systemd.md — unit-файлы для gunicorn (Django WSGI),
uvicorn (FastAPI/Django ASGI) и polling-бота;
Restart,TimeoutStopSec,EnvironmentFile, не-root, sandboxing, socket-activation, число воркеров. - references/nginx.md — reverse-proxy: TLS (certbot), 80→443, проксирование на socket/порт, статика/медиа, gzip, таймауты, размеры тела, security-заголовки.
- references/postgres-redis.md — postgres: пользователь/БД,
pg_hba,max_connections, бэкап pg_dump по cron + проверка восстановления; redis:bind,maxmemory+policy, RDB/AOF под cache vs broker/FSM. - references/security.md — не-root, ufw, секреты в EnvironmentFile, least privilege, SSH-hardening, fail2ban, права на файлы, обновления.
- references/output-format.md — формат отчёта аудита.
What ships with it: 5 files
31.9 KB alongside SKILL.md
references/
- nginx.md5.6 KB
- output-format.md5.4 KB
- postgres-redis.md7.8 KB
- security.md5.7 KB
- systemd.md7.4 KB