Если вы думаете о самостоятельном размещении собственных приложений, но не знаете, с чего начать, то вы не одиноки.
Уход из таких сервисов, как Netlify, Vercel, Render и т. д., может быть пугающим. Это профессиональные услуги, которые обеспечивают высокую безопасность и удобство.
Но все не так плохо, если вы самостоятельно размещаете хостинг с помощью Coolify.
И после долгих проб и ошибок я отсоединил свой домен billyle.dev от Netlify и запустил его на своем сервере.
Ниже я проведу вас через те же шаги о том, как начать работу с Coolify.
Если вы предпочитаете видео, ознакомьтесь с Self-host 101 — Настройка Coolify | Self Hosted PaaS с развертыванием без конфигураций от CJ от Syntax.fm
Что вам понадобится
Вот что вам понадобится, если вы планируете это сделать:
- Доменное имя (Мой домен зарегистрирован в Cloudflare)
- Удаленный сервер, на который можно подключиться по SSH (я использовал Hetzner и реферальную ссылку от Coolify)
- Git-репозиторий с информацией о том, что вы собираетесь развернуть
- Открытый ключ SSH на вашем устройстве (опционально)
Заметка:
Стоит отметить, что ближе к концу этого урока мне пришлось много возиться с DNS, но я обнаружил, что наличие вашего домена на Cloudflare является лучшим опытом. Изначально мой домен был на NameCheap. Пока он работал, я сталкивался со странным поведением, таким как медленная загрузка на настольном компьютере по сравнению с мобильным.
Создание ключа SSH
Если вы хотите использовать свой пароль для удаленной передачи данных по SSH на ваш сервер, вам придется выполнить этот шаг. В противном случае вы можете просто перейти к следующему разделу, так как Хетцнер отправит вам пароль root по электронной почте, если вы его пропустите. Вы также можете пропустить этот шаг, если у вас уже есть ключ SSH, который вы хотите использовать.
В терминале выполните следующие команды:
ssh-keygen -t rsa -b 4096
Вы увидите эту подсказку.
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/billyle/.ssh/id_rsa):
Нажмите Enter и используйте путь по умолчанию, после чего вам будет предложено ввести парольную фразу дважды. Один раз для входа, и два раза для подтверждения. Я предлагаю вам сделать его надежным паролем и сохранить его в безопасном месте, например, в зашифрованной заметке в менеджере паролей.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Как только вы пройдете этот шаг, вы создадите ключ SSH. Нечто подобное вы увидите ниже.
Your identification has been saved in /Users/billyle/.ssh/id_rsa
Your public key has been saved in /Users/billyle/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:xcAmxtStfRBiLtm7HIU44NrI0mF9geOYT87SoT9xVmQ billyle@mbp.local
The key's randomart image is:
+---[RSA 4096]----+
| .+oo+... |
| oo.+BE=o |
| o+oo*=+o+. |
| +o=+. oo+. . |
|. =B.. .S . |
| .o * o. o |
| o + o |
| o |
| . |
+----[SHA256]-----+
Я покажу вам, как использовать этот ключ в следующем разделе.
Шоппинг на Hetzner
Подготовьте свой домен к следующему шагу. Вы будете арендовать частный сервер.
Hetzner — отличный выбор для меня по сравнению с другими компаниями, которые берут довольно много за те же предложения. Hetzner дешевый и кажется популярным выбором среди толпы Coolify.
При выборе сервера есть некоторые детали, на которые стоит обратить внимание:
- местоположение, откуда, по вашему мнению, будет приходиться большая часть вашего трафика (я выбрал Германию, потому что это хорошее место между континентальной частью США и Азией)

- образ, который вы хотите использовать на сервере (Ubuntu — отличный выбор)

- нужен ли вам общий или выделенный vCPU (общий — лучшее соотношение цена/производительность)

- ресурсы сервера, такие как количество процессоров, оперативной памяти и хранилища, которые будут потреблять ваши сайты и приложения. Чтобы запустить Coolify, это минимальные требования
- 2 ЦП
- 2 ГБ памяти
- 30+ ГБ хранилища для образов Docker

- Наконец, ваш ежемесячный бюджет
Добавьте свой ключ SSH
После выбора вы можете включить свой ключ SSH. Пропустите это, если хотите, чтобы Хетцнер отправил вам пароль по электронной почте.
В разделе под названием «Ключи SSH» нажмите «Добавить ключ SSH», и появится модальное окно.
Теперь вернемся к терминалу, мы собираемся скопировать наш ключ SSH и вставить его в модальное окно.
cat ~/.ssh/id_rsa.pub
Это .pub
означает, что это открытый ключ и вывод будет выглядеть примерно так:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDbQj5IxxXslqfOl4Qv5Ux0RNbofCVy5EWbkosc2AnDj6XAFZSdLNwlPG1qnckhuWCeHveWmJAU80G9d4eTvV/W4bKOE8jj0iqVCFHLXdgOlbO+WQgpVDKjhAnRlaJfPNiLvAn0yNr/Sj1ESbMzBwNK4bjTBCMOalvq/NUqz+3bcewdlc3gDunvdmGf4RbfUydZ73rhO0Bg/r+u7NWT1pghcFW/E/E9f6OavBzyHRSSP0MJQYx3bnmgpFcmZlz/3O0gUaxLGXAmFAsaYxAZ7iZXz8AWw2DmcaNlf+lyAYOQ2TGVaZ4VAUwDQE/8u4zFaX+HooUScgTY3oUztIHFDFgyu6Q4N6ILj/aujnSiuv5fW9PiQ70Jce78IMTAlRSqVeBxRgK8Di5eHECFOH+chNp9UhThw+ZO4dHBwxngdZcbd7xmX3hczS1DnYgtOKUIWzx6rUGrN1wsMsdJS4GAWHvhtWMZITqvg4XXEsMdFtKZ8pJj8O8qjNyPEmfYg1upVmoGufcCCbIRY0CKzBeer3hpqD74EcGyB0TJmeHQezCMsmdBW9DJNPDtCfL/zMMXyqtyjsddkl8AbloZmlkgHDLtSscfWeLtMMX1DkT13LoekjL11ZCOMU5vAWvKiJGxU0NRFRStHU/AIpRqDBtD+VFPRWa0javzgXZTr3ALQun5jQ== billyle@mbp.local
Выделите весь вывод, а затем вставьте его в модальное окно и нажмите «Сохранить».
После этого вы захотите проверить свою конфигурацию Hetzner перед завершением транзакции.
Если все выглядит хорошо, приступайте к его созданию. Запуск нового сервера займет менее минуты.
Если вы ошибетесь, вы всегда можете удалить сервер и начать новый, так как они взимают почасовую плату.
Установка Coolify
Как только ваш сервер будет создан, вы увидите IP-адрес вашего удаленного сервера. Вы подключитесь к нему и настроите свой сервер на использование Coolify.
В терминале введите следующие команды:
ssh root@<server_ip_address>
Где <server_ip_address>
тот, который вам предоставил Хетцнер.
В следующем запросе вас попросят добавить IP-адрес в список известных хостов.
Введите здесь «да».
Затем вы введете парольную фразу, которую вы использовали для создания ключа SSH, или пароль, который Hetzner отправил вам по электронной почте.
The authenticity of host '162.55.37.168' can't be established.
ED25519 key fingerprint is SHA256:L1WGqdh9jEOSIrQ/eNcDOtgyYNDWCbTIlEtMcp8rs10.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '162.55.37.168' (ED25519) to the list of known hosts.
Enter passphrase for key '/Users/billyle/.ssh/id_rsa':
Теперь у вас должен быть удаленный доступ к серверу и выполнение команд.
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-91-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
System information as of Sun Mar 3 03:54:34 AM UTC 2024
System load: 0.0 Processes: 100
Usage of /: 5.1% of 37.23GB Users logged in: 0
Memory usage: 5% IPv4 address for eth0: 162.55.37.168
Swap usage: 0% IPv6 address for eth0: 2a01:4f8:c012:7c82::1
Expanded Security Maintenance for Applications is not enabled.
0 updates can be applied immediately.
Enable ESM Apps to receive additional future security updates.
See https://ubuntu.com/esm or run: sudo pro status
The list of available updates is more than a week old.
To check for new updates run: sudo apt update
root@ubuntu-4gb-fsn1-1:~#
Если вы перейдете в Coolify.io документацию и выполните поиск по запросу «установка», то увидите скрипт установки, который выглядит следующим образом:
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
Введите команду и позвольте сценарию установки сделать свое дело. Как только это будет завершено, вы увидите вывод с IP-адресом, с помощью которого вы можете получить доступ к экземпляру Coolify на вашем сервере, в моем случае это был http://162.55.37.168:8000
.

Скопируйте IP-адрес вместе с портом и введите его в URL-адрес браузера. Вы будете перенаправлены на экран регистрации в Coolify.
Опыт адаптации Coolify
Когда вы перейдете по IP-адресу из установки Coolify, вы попадете на страницу регистрации.
Зарегистрируйтесь, чтобы войти в экземпляр Coolify, где мы разместим его на вашем домене.
Обязательно используйте надежный, уникальный пароль, так как именно так вы будете взаимодействовать с Coolify на своем личном домене.

Вам будет предложен ряд вопросов для адаптации. Просто продолжайте нажимать далее, пока не увидите страницу «Сервер».

Вы выберете «localhost», так как именно там установлен этот экземпляр Coolify.

Затем вы создадите свой первый проект. Эти проекты — способ организовать свои ресурсы под одним зонтиком. Здесь вы будете добавлять свой первый проект, поэтому нажмите «Давайте создадим новый». Это создаст для вас проект под названием «Мой первый проект».

После этого на следующей странице написано что-то о добавлении ресурсов. Ресурсы — это то, что нужно вашему приложению или веб-сайту, например базы данных, серверы и т. д. Нажмите на кнопку «Давайте сделаем это!».
Если вы развертываете статический сайт, скорее всего, у вас есть только один ресурс для развертывания. Выберите ресурс «Публичный репозиторий».

Когда вы нажмете на нее, вас спросят, какой сервер вы предпочитаете использовать. Должен быть только один, и это «localhost» из предыдущего проекта.

Затем он попросит вас выбрать пункт назначения. Просто выберите единственный вариант, который должен быть автономным экземпляром Docker под названием «localhost-coolify».

И, наконец, он запросит у вас URL-адрес общедоступного репозитория. Вставьте URL-адрес общедоступного репозитория в поле.
Он получит метаданные из репозитория Git и должен заполнить все необходимые детали.
Важной частью здесь является каталог публикации, в котором будут находиться выходные данные сборки.
Кроме того, включите переключатель «Это статический сайт», если он относится к вам.

Теперь вы должны увидеть страницу конфигурации для только что созданного ресурса.
На этом экране много всего, но мы сосредоточимся исключительно на развертывании, чтобы увидеть, сможем ли мы заставить Coolify создать наше приложение.
В правом верхнем углу нажмите «Развернуть»

Вы перейдете на страницу развертывания, и ваши журналы сборки начнут отображаться.
Надеемся, что ошибок не будет, и вы увидите сообщение «Новый контейнер запущен» в качестве последней записи журнала, а ваше развертывание будет иметь сообщение «Завершено».

Чтобы проверить, может ли Coolify обслуживать веб-сайт, нажмите кнопку «Открыть приложение» и выберите автоматически сгенерированную ссылку для просмотра вашего сайта.

Вы должны увидеть, что ваш сайт обслуживается Coolify.

Оставьте свою страницу Coolify открытой для следующей части, так как нам все еще нужно будет повозиться с ней позже.
Прокси-домен с Cloudflare на Coolify
Теперь все, что нам нужно сделать, это выполнить некоторую настройку между Cloudflare и Coolify. Нам нужно указать наш домен в Cloudflare на наш сервер Hetzner, и Coolify будет обслуживать наши приложения.
Мне потребовалось много времени, чтобы понять это, так что с вашей стороны могут быть некоторые методы проб и ошибок, но я надеюсь, что следующий набор инструкций просто сработает для вас.
Применение строгого режима SSL/TSL
Следующая часть важна! Перейдите на страницу SSL/TLS в Cloudflare.

Мы хотим включить полный (строгий) режим SSL, чтобы Coolify мог обслуживать HTTPS для нас.
По умолчанию SSL будет находиться в гибком режиме, и если вы включили его, Coolify и Cloudflare застрянут в цикле перенаправления, в результате чего страница выдаст ошибку «Слишком много перенаправлений».

Получите доступ к Coolify с нашего домена
На панели управления Cloudflare перейдите на страницу «Управление записями DNS» для вашего домена. Мы хотим добавить поддомен для нашего экземпляра Coolify.

Добавьте новую запись «A» с именем хоста «coolify**«, значением которого является IP-адрес вашего удаленного сервера, и нажмите «Сохранить».

Вернитесь в Coolify и перейдите на страницу Настройки.

В поле «Домен экземпляра» введите . https://coolify.<your_domain>
Обратите внимание, что мы добавили сюда HTTPS. Coolify автоматически сгенерирует SSL-сертификат, когда увидит эту конфигурацию. Обязательно нажмите «Сохранить».

Давайте посмотрим, сможем ли мы теперь получить доступ к нашему экземпляру Coolify с нашего домена, а не с IP-адреса сервера Hetzner.
Зайдите https://coolify.<your_domain>
и проверьте свой новый Coolify на своем домене!
Если он еще не загружается, подождите несколько секунд, пока DNS распространится.

Теперь войдите в систему с учетными данными, которые вы использовали для регистрации при первоначальной настройке Coolify, и теперь вы должны оказаться на панели управления Coolify.
Свяжите приложение Coolify со своим доменом
На панели управления Coolify вернитесь к панели конфигурации проекта.
Мы собираемся изменить автоматически сгенерированный домен, созданный Coolify, чтобы он использовал наш домен.
Введите свой домен и нажмите кнопку Сохранить. После сохранения обязательно нажмите «Передислоцировать», иначе это не сработает.

Возвращаясь к Cloudflare, нам нужно создать больше записей DNS, чтобы убедиться, что наш домен указывает на наш сервер.
Итак, вернитесь в Cloudflare DNS Management и введите новую запись «A» с именем хоста «@«, а значением должен быть IP-адрес сервера Hetzner.

Теперь дайте ему пару минут и посетите свой домен. Вы должны увидеть это вживую! Разве это не круто?

Перенаправление с www на не-www
Мы почти закончили с длинным уроком. Я был взволнован, когда зашел так далеко, и надеюсь, что вы тоже.
Эта последняя часть является заключительным разделом, и то, что мы собираемся сделать, это перенаправить наш www.<domain>
просто на <domain>
.
Все это будет происходить в Cloudflare, так что нам не нужно возиться с Coolify.
В Cloudflare, вернувшись к нашему управлению DNS, мы добавим две записи.
Первая из них представляет собой запись «A» с именем «www» и значением 192.0.2.1
.
Это означает, что мы создаем запись ALIAS, которая использует www
поддомен, и мы указываем на фиктивный IPv4-адрес.
Фиктивный IPv4-адрес не имеет значения, так как Cloudflare перенаправит весь трафик до того, как достигнет IP-адреса.

Теперь мы создадим версию IPv6 с другим «AAAA» с тем же именем, но на этот раз IPv6-адрес будет 100::

Пока это распространяется, нам нужно настроить фактические правила переадресации в Cloudflare.
Перейдите на страницу «Перенаправление правил»

Оказавшись там, нажмите «+ Создать правило», после чего вы перейдете к форме.
Добавьте название правила переадресации. Я назвал свой «www to apex».

Затем нажмите «Редактировать выражение», где вы введете выражение правила. Замените billyle.dev
на свой реальный домен.

(http.request.full_uri contains "www.billyle.dev")

Последнее поле ввода — это место, где Cloudflare делает что-то, когда оно соответствует указанному выше условию.
Мы хотим «Dynamic», с постоянным перенаправлением «301», и наше выражение будет следующим:

concat("https://","billyle.dev",http.request.uri.path)
Опять же, замените billyle.dev
его на свой реальный домен и убедитесь, что установлен флажок «Сохранить строку запроса».
Теперь проверьте его через несколько минут, чтобы увидеть, работает ли он. Посетите www.<your_domain>
сайт и посмотрите, перенаправит ли он вас на корневой домен.
Ну вот! Вы закончили!
Вау, это было много! Я рад, что вы прошли весь путь. Надеюсь, вы гордитесь тем, что сделали здесь.
Это наше новое путешествие по самостоятельному хостингу PaaS. Времена, когда я платил за дроплет и управляемую БД, для меня прошли.
Вы узнали, как создать удаленный сервер с помощью Hetzner, подключиться к нему по SSH и установить Coolify. Тогда вам удалось привязать свой домен к Coolify и развернуть свой сайт!
Если у вас есть какие-либо вопросы, не стесняйтесь писать мне на почту или связываться со мной по ссылкам в социальных сетях.
И спасибо за прочтение! Надеемся, что вы отлично проведете остаток дня, где бы вы ни находились.