Coolify: Мрії про власний хмарний сервіс – і що виходить?
Привіт, друзі! Сьогодні я, Ліла Гарт, проведу вас крізь захоплюючий, хоч і трохи вибористий, шлях у світ самостійного хостингу. Ми поринемо в Coolify – програмне забезпечення, яке обіцяє зробити розгортання додатків таким же легким, як дихання. Готові пірнути в глибину, щоб зрозуміти, що працює, а що – ще потребує шліфування?
Від мрії до реальності: Coolify на передовій
Уявіть собі світ, де керування власним сервером не є виснажливою епопеєю з кодами та налаштуваннями. Існує багато рішень, які обіцяють спростити цей процес. Coolify – один з претендентів на роль вашого особистого “платформа як сервіс”. Вони надихнулися досвідом Netlify, Heroku та Vercel, обіцяючи аналогічну простоту розгортання на вашому власному сервері.
Мене зацікавило це рішення, і я вирішила присвятити два тижні його вивченню. У цьому відео я поділюся з вами своїми знаннями. Я покажу, як встановити Coolify, як виправити помилки, розгорнути додатки на основі Docker і Docker Compose-файлах, а також налаштувати HTTPS і перенаправлення для ваших доменів з wild card.
Перші кроки: Знайомство з Coolify
Встановивши Coolify, ви отримаєте інтуїтивну панель управління. Тут ви будете керувати проєктами, ресурсами (бази даних, додатки, Docker Compose-файли). Також є опція додавання нових ресурсів з публічних чи приватних репозиторіїв, Docker-файлів або з назв зображень з Docker-реєстру. Coolify пропонує розгортання одним кліком для популярних баз даних та додатків.
Якщо ви підключите Coolify до приватного репозиторію, можна налаштувати GitHub-додаток. Це автоматично налаштує вебхуки, щоб Coolify автоматично перебудовував і розгортав ваш додаток при кожній зміні коду.
Все, що вам потрібно буде робити, – заходити на панель керування Coolify, перевіряти статус, запускати та зупиняти сервіси, додавати нові ресурси і все таке.
Системні вимоги: Дайте ресурсам дихати
Coolify вимагає як мінімум 2 процесори, 2 ГБ оперативної пам’яті та 30 ГБ пам’яті для зберігання даних, щоб запустити лише панель управління та все необхідне. Для всіх додатків, які ви хочете запустити зверху, вам знадобиться більше ресурсів. Я радила б 4 процесори та 8 ГБ пам’яті.
Запуск сервера: З чого почати?
Мій досвід почався з вибору розташування сервера, в моєму випадку – Хіллсборо, штат Орегон. Для початку я обрала варіант з 4 процесорами та 8 ГБ пам’яті. Потім важливо налаштувати SSH-ключ, щоб не отримувати пароль root-користувача електронною поштою.
Також я використала Cloud config, щоб налаштувати користувача CJ, додати його в групу sudo, встановити Bash як термінал за умовчанням та встановити пароль, який потрібно змінити при першому вході. Особливим був підхід до SSH: я відключила вхід root-користувача за допомогою пароля та дозволила вхід лише за допомогою SSH-ключа. Це – додатковий рівень захисту.
Оновлення списків пакетів і встановлення новітніх версій – важливий крок для стабільної роботи.
Встановлення Coolify: Чим все завершилось?
Встановила Coolify за допомогою скрипта. І після встановлення з’явилася панель управління вже на Port 8000.
Але тут з’ясувалася перша проблема – відсутність файрволу. Я відчула “недобрий знак”, коли всі порти виявилися відкритими. Це потрібно виправити. Одразу після, я створила обліковий запис, вказавши ім’я, електронну пошту та пароль. Звісно, оскільки йшлося про HTTP, я змінила пароль пізніше.
З панеллю було все добре, але я вирішила ще зафіксувати її.
Налаштування сервера: Перші кроки з Coolify.
В Coolify є розділ “початок роботи”, де ви можете обрати сервер. Local Host – це сервер, на якому запущено Coolify. Після цього ви можете створити свій перший проект.
У моєму випадку, я вирішила, що все буде працювати в межах одного сервера, але Coolify підтримує набагато складнішу архітектуру.
Безпека, домени та HTTPS: Створюємо цифровий фортецю.
Немає жодних компромісів у питаннях безпеки. Перш за все, зміна пароля користувача CJ, якого я створила за допомогою Cloud init – обов’язковий крок. Також я встановила пароль для root-користувача.
Наступний крок – підключення домену та робота через HTTPS. Я придбала домен apps.gdn і налаштувала A-записи для домену та wild card запис.
Налаштування Wild Card domain в Coolify:
- Перевірила, що в розділі налаштувань все включено правильно
- Зайшла в розділ “сервери” та обрали Local Host.
- Вказала full https://apps.gdn.
- Обрала Caddy proxy.
Після цього, я створила файрвол Hetzner, щоб відкрити порти 22 (SSH), 80 (HTTP) та 443 (HTTPS). Я зробила все, щоб Coolify був захищений.
Остання частина – налаштування двофакторної автентифікації (2FA) для облікового запису Coolify.
Розгортання першого проєкту: Статичний сайт
Для першого знайомства з Coolify я вирішила розгорнути статичний сайт. Сайт – це HTML, JavaScript і CSS-файли. Я просто вказала GitHub URL мого репозиторію, вибрала тип “Static” та створила домен banana.apps.gdn.
В результаті – сайт готовий!
Перенаправлення з “www”: Розширюємо можливості.
Наступним завданням було перенаправлення з www.banana.apps.gdn на banana.apps.gdn. Все працює на Docker та Caddy. Спочатку я спробувала додати www., але це одразу не спрацювало. Довелося покопатися в документації, прочитати про “reader directive” та налаштувати відповідні мітки для Caddy. І після декількох ітерацій з перезавантаженнями, все запрацювало!
Проксі: Caddy чи Traffic?
Coolify підтримує два проксі: Traffic і Caddy. Я надаю перевагу Caddy, бо він простіший в налаштуваннях. Налаштування проксі в Coolify – теж важлива частина.
Розгортання Next.js-додатку: Підкорюємо динаміку.
Наступний крок – розгортання Next.js-додатку. Для Node.js-розробки, я обрала “NX Pack”. Це дивовижна технологія, що дозволяє розгортати додатки одним кліком, не занурюючись в Docker.
У вкладці “Deployment” я побачила, як NX Pack розпізнає Node.js-додаток, визначає команди для встановлення, збірки та запуску. Після декількох етапів роботи, я отримала робочий додаток.
GitHub-інтеграція: Автоматизуємо розгортання
Для розгортання з приватних репозиторіїв та автоматичного розгортання з використанням вебхуків, я налаштувала GitHub-додаток. Створила його в GitHub, вказала вебхук Coolify та надала доступ до репозиторіїв. Потім переконалася, що все працює, натиснувши “Refetch”. Робочий процес для розгортання з GitHub:
- Вношу зміни в код.
- Фіксую коміт та відправляю зміни
- В Coolify – фіксація коміту тригерує розгортання, і все перебудовується.
База даних PostgreSQL: Створення складної інфраструктури.
Розглянемо приклад розгортання, де є ТЗ-додаток. Приклад містить базу даних PostgreSQL та NextAuth з GitHub OAuth. Першим кроком було додавання бази даних PostgreSQL в рамках проєкту.
Згодом, я спробувала натиснути кнопку “Push”, але Coolify спочатку не захотів цього робити. Для цього треба було підготувати Dockerfile, в якому я:
- Використовую Node.js-інсталяцію
- Визначаю робочий каталог
- Клоную репозиторій
- Виконую npm install
- Виконую npx prisma db push
- Запускаю Prisma studio
- Вказала ім’я домену.
- Додала змінні середовища (database URL – з бази даних).
- Налаштувала порт.
- Запустила.
- Насолоджувалася працею Prisma studio
Docker та приватні репозиторії: Додаткові складності
Аби все працювало з приватними репозиторіями, потрібен deploy key. Я створила новий закритий ключ в Coolify. Потім додала відкритий ключ в GitHub.
А тепер справа за Docker File – вписати закритий ключ, щоб клонувати приватний репозиторій:
- Створюю директорію ssh.
- Додаю закритий ключ.
- Клоную репозиторій через SSH.
- Додаю SSH URL в Docker File.
Автоматичне розгортання T3-додатку: Все працює як годинник
Я під’єднала T3-додаток через GitHub-додатки. І тут NYX Packs знову зіграв свою роль.
Для встановлення потрібні такі змінні:
- DATABASE_URL,
- NEXTAUTH_URL,
- GITHUB_CLIENT_ID
- GITHUB_CLIENT_SECRET
Все запрацювало! За допомогою GitHub OAuth, я змогла ввійти та редагувати дані.
HTTP Basic Auth: Захист Prisma Studio
Я вирішила захистити доступ до Prisma Studio з використанням HTTP Basic Authentication. Вказала ім’я користувача та хеш-пароль у конфігурації.
Оновлення Coolify: Працюємо з бета версією.
Оновлення Coolify – справа звична. Система сповіщає про доступні оновлення, я оновила версію. Після оновлення, варто перевірити, чи всі контейнери перезавантажилися.
Розгортання з Docker Compose: Експерименти тривають.
Я спробувала розвернути Pokemon cacher – програму, яка кешує відповіді з Pokey API в базу даних Redis. Виникали помилки – я експериментувала з різними гілками та налаштуваннями, доки все не запрацювало. Основна порада – правильно вказувати порти та перевіряти логи.
Glances: Моніторинг стану сервера
Щоб контролювати стан сервера, я використала Glances – інструмент моніторингу. Його легко запустити за допомогою Docker Compose. Я додала Docker Compose-файл.
Знову налаштувала домен.
Сервіси одним кліком: Легкість використання
Coolify має функцію розгортання одним кліком та підтримує багато сервісів. Я спробувала розгорнути сервіс superbase. Згенерувався логін та пароль для входу. Далі, я почала спостерігати за використанням ресурсів. Навантаження на процесор було високим, але потім все запрацювало.
MinIO: Об’єктне сховище.
MinIO – рішення для об’єктного сховища, сумісне з Amazon S3. З Coolify – розгортання одним кліком.
Я створила домен storage.apps.gdn та консоль.storage.apps.gdn. Далі – створила bucket db-backups, згенерувала доступ та налаштувала розташування сервера.
Резервне копіювання: Автоматизація.
Я налаштувала систему резервного копіювання для бази даних PostgreSQL, використовуючи плани. Вибрала щохвилинне резервне копіювання. Далі налаштувала S3: вказала точку входу, корзину, регіон, ключ та секретним ключем. Тепер резервні копії автоматично завантажуються в MinIO.
Coolify Cloud: Керування серверами з хмари.
Coolify Cloud – це hosted версія Coolify. Хостинг надає лише можливість управління, а всі ресурси залишаються на ваших VPS. Я підключила свій сервер до Coolify Cloud та розгорнула статичний сайт.
Висновок: Моя оцінка Coolify
Чи використовуватиму я Coolify для власних проєктів? Ні. Coolify перебуває в активній розробці. Я знаю та розумію інструменти, що використовуються під капотом (Docker, Docker Compose, Caddy). Мені легше використовувати їх безпосередньо, ніж розбиратися з особливостями Coolify.
Але! У мене великі надії на Coolify! Я обов’язково повернуся до нього, коли буде стабільна версія, коли будуть виправлені помилки.
Coolify – чудове рішення для досвідчених користувачів!
Корисні посилання та поради
- Discord Coolify: Найактивніше місце для отримання допомоги.
- GitHub Issues: Місце для повідомлення про помилки.
- GitHub Discussions: Місце для запитів нових функцій.
Дякую за увагу! Діліться своїми враженнями в коментарях та запитуйте!