ГлавнаяБлогКак заменить aaPanel на Caddy и FastAPI: тест 8 AI-моделей
Алгоритмы

Как заменить aaPanel на Caddy и FastAPI: тест 8 AI-моделей

Тестируем 8 AI-моделей для замены aaPanel на Caddy + FastAPI. Узнайте, какая комбинация справилась лучше всех и стоила всего $1.94.

Al
Редакция Algolitalgolit.ru
12 мин чтения24 июня 2026 г.

Зачем читать эту статью

Вы используете aaPanel или CyberPanel для управления серверами? Возможно, вы замечали, что с каждым обновлением бесплатные функции ломаются, а платные — навязываются. Я решил заменить панель управления на связку Caddy + FastAPI и заодно протестировать 8 AI-моделей, чтобы понять, какая из них способна написать production-ready код. Результаты вас удивят.

Почему я отказался от CyberPanel и aaPanel

Годами я использовал OpenLiteSpeed с CyberPanel. Быстро, LSCache впечатляет, но CyberPanel становился всё багливее. Начиная с версии 2.4.x, установка WordPress ломается на финальном шаге из-за SQL-ошибки. Файлы загружены, но базу данных приходится создавать вручную. А генерация SSL-сертификатов Let's Encrypt стабильно падает из-за кривых конфигов. И конечно, есть платная «улучшенная» версия. Если бесплатная функция работала годами, а теперь сломана — это не баги, а дизайн. Я сделал выводы и перешёл на aaPanel.

aaPanel приятнее, стабильнее, легче. Но она полностью абстрагирует управление OpenLiteSpeed — вы не можете трогать порт 7080, иначе всё сломается. Всё через дашборд aaPanel. Когда мои проекты сместились в сторону Astro и статических сайтов, PHP стал не нужен, и OpenLiteSpeed потерял смысл. Caddy же автоматически настраивает HTTPS, конфиг помещается в несколько строк и нет проблем с реврайтами.

Что мы тестировали

Я поставил задачу: создать минимальный набор инструментов для управления VPS на Ubuntu 24.04. Caddy как веб-сервер, PHP-FPM (две версии), MariaDB и PostgreSQL, Valkey для кэширования. Shell-скрипты для всех операций, FastAPI для автоматизации. Без Docker, без панелей, без лишних абстракций. Четыре типа сайтов: статические, PHP, WordPress (через WP-CLI) и реверс-прокси.

Ожидаемые операции: начальная настройка сервера, создание/удаление сайта с автоматическим бэкапом, создание БД по запросу, деплой через rsync, бэкап, управление сервисами. Полный функциональный бриф доступен в репозитории проекта.

Методология: две фазы — архитектура и код. В фазе архитектуры каждой модели давался одинаковый бриф без подсказок. В фазе кода — единый промпт с утверждённой архитектурой и требованием выдать 30 файлов. Внешний рецензент оценивал код четырёх реализаций (A, B, C, D) по шкале: безопасность, корректность, идемпотентность, качество кода, полнота. Пять файлов на реализацию, максимум 25 баллов.

Комбинации инструментов и моделей:

  • Claude Code + Haiku 4.5
  • Copilot CLI + Haiku 4.5
  • OpenCode + Haiku 4.5
  • OpenCode + GLM 5.2
  • OpenCode + BigPickle (free)
  • OpenCode + Gemini 3.1 Pro
  • OpenCode + DeepSeek V4 Pro
  • OpenCode + GPT-OSS-120B

Haiku 4.5 использовалась трижды на разных инструментах — чтобы изолировать влияние инструмента от модели.

Фаза планирования: кто действительно думает?

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

Качество вопросов — первый дискриминирующий сигнал. Две модели задали 4-5 действительно блокирующих вопросов с вариантами и рекомендациями. Одна задала восемь общих вопросов (формат архива, ротация логов), которые ничего не меняли в архитектуре.

Предложенная структура — второй сигнал. Только одна модель спонтанно предложила единую точку входа CLI — bin/vpsmgr, которая диспетчеризирует скрипты. Остальные не подумали об этом.

Одна модель единственная предложила нормализованную документированную конвенцию кодов возврата:

КодЗначениеHTTP
0Успех200
1Некорректный ввод400
2Не найдено404
3Конфликт409
4Отсутствует зависимость422
5Внутренняя ошибка500

Это контракт между shell-скриптами и FastAPI — без него маппинг HTTP становится произвольным.

Стоимость фазы планирования:

  • BigPickle: ~35k токенов, $0
  • GPT-OSS-120B: 20k токенов, $0.003
  • DeepSeek V4 Pro: 31k токенов, $0.044
  • GLM 5.2: 43k токенов, $0.06
  • Copilot + Haiku 4.5: ~60k токенов, $0.07
  • Haiku 4.5 (OpenCode): 69k токенов, $0.076
  • Gemini 3.1 Pro: 27k токенов, $0.095
  • Claude Code + Haiku: подписка Pro

Gemini 3.1 Pro выдал самый лаконичный план (27k токенов) при хорошем качестве. Haiku 4.5 на OpenCode потребила 69k токенов при низшем качестве. Объём токенов не предсказывает качество.

Фаза кода: кто действительно доставляет?

Фаза кода стартовала с единого промпта для четырёх реализаций. Промпт включал утверждённую архитектуру, десять подтверждённых технических решений, конвенцию кодов возврата и однозначную инструкцию: выдать 30 файлов на диск в порядке зависимостей, без сокращений.

Вот что показала общая библиотека common.sh:

  • Модель A: 98 строк. Редактирование секретов покрывает все 10 шаблонов WordPress (соли, ключи). Нет валидации доменов, require_cmd(), атомарных записей.
  • Модель B: 310 строк. Именованные константы readonly, normalize_domain() с regex RFC-1035, блокировки конкурентности, атомарные записи через mktemp+mv. Но редактирование секретов пропускает соли WordPress.
  • Модель C: 366 строк. Паттерны редактирования настраиваются через переменную окружения. Чистые shell-помощники для JSON с запасным Python, если нет jq. print_credentials() оборачивает вывод в маркеры <<>>. render_template() без Jinja. Генерация паролей без двусмысленных символов (0/O/1/l/I). Единственная реализация, которая предвидела все краевые случаи из промпта.
  • Модель D: 184 строки. Самая оригинальная идея: коды возврата в именованных функциях — exit_input_error(), exit_conflict() — читабельнее, чем голый exit 3. И json_output() прямо в common.sh, готовая к API. Нет атомарных записей, require_cmd().

Модель C тестировала свой код в процессе. После написания schemas.py запустила тесты, нашла два бага и сразу исправила: неправильная реализация валидатора Pydantic v2 (field_validator вместо model_validator) и ненастроенное взаимное исключение на уровне схемы. Также исправила подстановку sed для путей с / — заменила на чистую подстановку bash.

В конце сессии модель C выдала сводку верификации: bash -n на всех скриптах, Python AST на всех файлах, 19/19 API-роутов проверены через OpenAPI-спецификацию, 18/18 bash-хелперов протестированы, правило fallback PHP проверено (8.5→8.4, 8.4→none, 7.x rejected).

Модель A проверила shebang перед завершением. Модель B выдала отполированную документацию пользователя.

Внешняя рецензия: вердикт

Код четырёх реализаций был отправлен на рецензию модели, не участвовавшей в бенчмарке. Оценка по пяти критериям (безопасность, корректность, идемпотентность, качество кода, полнота), каждый до 5 баллов, максимум 25.

Модель A: 15/25. Безопасность страдает из-за отсутствия атомарных операций и валидации доменов. Корректность: база данных не создаётся, если не указан пароль. Идемпотентность: нет проверок перед созданием. Качество кода: нет require_cmd(). Полнота: не хватает обработки ошибок.

Модель B: 18/25. Безопасность: пропущены соли WordPress. Корректность: отличная валидация, но ошибки в генерации паролей. Идемпотентность: хорошие блокировки. Качество кода: отличное, но отсутствует render_template(). Полнота: документация пользователя, но нет тестов.

Модель C: 23/25. Безопасность: настраиваемое редактирование, атомарные операции. Корректность: все краевые случаи покрыты. Идемпотентность: проверки существования, блокировки. Качество кода: модульная структура, чистый код. Полнота: тесты, верификация, обработка ошибок. Минус: нет require_cmd().

Модель D: 17/25. Безопасность: нет атомарных операций. Корректность: хорошая валидация, но пропущены некоторые проверки. Идемпотентность: нет блокировок. Качество кода: отличные именованные функции, но не хватает require_cmd(). Полнота: json_output() полезна, но нет тестов.

Победитель: Модель C с 23/25.

Раскрытие моделей

Модель A: GPT-OSS-120B на OpenCode. Стоимость: ~$0.003 за планирование + ~$0.01 за код = $0.013.

Модель B: DeepSeek V4 Pro на OpenCode. Стоимость: ~$0.044 + ~$0.12 = $0.164.

Модель C: Gemini 3.1 Pro на OpenCode. Стоимость: ~$0.095 + ~$1.85 = $1.945.

Модель D: BigPickle (free) на OpenCode. Стоимость: $0 + $0 = $0.

Победитель — Gemini 3.1 Pro на OpenCode. За $1.94 она выдала production-ready код с тестами, верификацией и обработкой всех краевых случаев. Haiku 4.5 на разных инструментах показала средние результаты: Copilot CLI дал лучшую архитектуру, но код был неполным. OpenCode с той же моделью дал больше кода, но с ошибками. Инструмент влияет, но модель — решающий фактор.

BigPickle (бесплатная) показала удивительно хороший результат для нулевой цены. DeepSeek V4 Pro — твёрдый середняк. GPT-OSS-120B — минимально работоспособный код.

Практический вывод

Если вы хотите заменить aaPanel на Caddy + FastAPI, лучший способ — использовать Gemini 3.1 Pro на OpenCode. За менее чем $2 вы получите полный набор скриптов с тестами и верификацией. Альтернативно, BigPickle даёт 80% функционала бесплатно. Не используйте CyberPanel — его баги намеренно толкают к платной версии. А с Caddy вы получаете автоматический HTTPS и простой конфиг без сюрпризов OpenLiteSpeed.

Попробуйте сами: возьмите бриф из репозитория проекта, запустите OpenCode с Gemini 3.1 Pro и получите свой собственный набор инструментов. Или используйте готовый код из репозитория победителя.

#Caddy#FastAPI#AI-модели#управление сервером#OpenLiteSpeed
Al
Редакция Algolit

Пишем про алгоритмы, подготовку к собеседованиям и карьеру в IT — так, чтобы было понятно и полезно.

Хочешь закрепить знания на практике?

Решай задачи на Algolit — интерактивная платформа для обучения

Начать бесплатно →