agentsclimarketplace

Vps deploy auditor

Skill goldenprofile/llm-skills/vps-deploy-auditor

LLM Skills

Install
npx -y skills add goldenprofile/llm-skills --skill vps-deploy-auditor

Assembled 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.

Контекст — установить ПЕРВЫМ делом

  1. Тип приложения — Django (WSGI/gunicorn или ASGI/uvicorn), FastAPI (ASGI/uvicorn), aiogram-бот (polling-воркер, без HTTP). От этого зависит unit и нужен ли nginx.
  2. Привязка процесса — unix-socket (предпочтительно для HTTP за nginx) или TCP-порт.
  3. Внешние зависимости — postgres и/или redis; нужны ли в After= юнита.
  4. Домен и TLS — есть ли домен под certbot; HTTP-only недопустим в проде.
  5. Сервисный пользователь — НЕ root; отдельный системный пользователь под приложение.

Процесс

  1. Собрать факты: unit-файлы (/etc/systemd/system/*.service), systemctl status, server-блоки nginx (/etc/nginx/), конфиги postgres/redis, cron/таймеры бэкапов, ufw status, под кем и откуда запускается процесс, где лежат секреты.
  2. Прогнать по чеклисту рисков (ниже) и справочникам.
  3. Классифицировать риск, объяснить почему ломается у него (одиночный VPS, соло-эксплуатация).
  4. Предложить рабочий конфиг/правку.
  5. Режим генерации — выдать шаблоны; режим аудита — отчёт по 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, postgres max_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_connections postgres?
  • Миграции БД применяются при деплое безопасно (см. 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

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.