Изначально идея казалась довольно простой: агент следит за файлами в нужных папках, обновляет релизы и после выхода новой версии сам обновляет проекты на сервере. Хотелось уйти от Coolify, но не скатиться в полностью ручной деплой — нужен был легкий старт для новых проектов.
Потом, как это обычно бывает, идея начала расти. Добавился десктопный UI, ролбеки, бэкапы, отдельная логика обновлений. В итоге все разрослось до трех репозиториев, два из которых нужно было писать параллельно, чтобы синхронизировать поведение.
В какой-то момент стало понятно, что я просто не вывожу этот объем. Даже с агентом все превратилось в слишком большую систему для задачи, которую изначально хотелось упростить. Я пробовал удалять лишнее, пересобирать подход, упрощать архитектуру, но результата все равно не было.
В итоге пришел к более приземленному решению: привести свои пет-проекты к единому виду, собирать готовые Docker-образы в GitHub, использовать PAT-ключ и держать на сервере обычные
docker-compose файлы.А результатом стала Ansible-роль, которая готовит сервер, и простая документация с готовыми кусками кода для деплоя после выпуска новой версии. Обновление запускается через отдельный GitHub Action на сервере, чтобы не возиться с зависимостями.
С бэкапами разберусь отдельно. Скорее всего, это будет отдельный контейнер внутри проекта, который будет делать переодические бекапы, и очищять старые.
Главный вывод: агенты дают обманчивую легкость, ускорения. Иногда проще послушать советы в комментариях и просто взять Ansible.