Как установить Cloudron на VPS с Ubuntu
Пошаговое руководство по установке Cloudron на чистый VPS. Узнайте, как настроить wildcard DNS, запустить скрипт установки и избежать ошибок при выборе версии ОС Ubuntu.
Установка Cloudron на VPS: краткая версия
Для установки Cloudron на VPS требуется чистый сервер с Ubuntu, минимум 2 GB оперативной памяти и домен, для которого вы можете редактировать DNS-записи. Сама установка состоит из трёх команд и одной перезагрузки. Почти все возникающие проблемы связаны либо с этапом подготовки (неподходящий базовый образ, неподдерживаемый тип виртуализации), либо с последующей настройкой (DNS, почта, резервное копирование).
wget https://cloudron.io/cloudron-setup
chmod +x cloudron-setup
sudo ./cloudron-setupCloudron устанавливает, обновляет, выполняет резервное копирование и выпускает TLS (transport layer security) сертификаты для self-hosted приложений. Каждое приложение работает в Docker, перед всеми ними находится nginx, и каждое приложение получает собственный поддомен вашего домена. Именно из-за этой особенности настройка DNS выполняется в первую очередь.
Почему Cloudron требователен к базовой ОС
Установочный скрипт проверяет сервер перед началом работы. Если проверка не пройдена, необходимо заказать новый сервер. Ознакомьтесь с требованиями до выбора образа.
- Только Ubuntu и только три версии. Любая другая ОС приводит к выходу с ошибкой
Cloudron requires Ubuntu 20.04, 22.04, 24.04. Debian, Rocky и Alpine не поддерживаются. Для Ubuntu 24.04 требуется Cloudron 8 или новее, скрипт проверяет это автоматически. - Только 64-битные процессоры Intel или AMD:
Error: Cloudron only supports amd64/x86_64. На ARM VPS установка невозможна. - Только полноценная аппаратная виртуализация. На VPS на базе контейнеров скрипт останавливается с ошибкой
Error: Cloudron does not support lxc, only runs on bare metal or with full hardware virtualization, так как обнаруживает контейнер черезsystemd-detect-virt --container. KVM подходит, OpenVZ и LXC — нет. - Корневая файловая система должна быть
ext4илиxfs. На любой другой вы получитеError: Cloudron requires '/' to be ext4 or xfs— именно так завершаются попытки установки на образы btrfs и zfs. - Минимум 941 МБ оперативной памяти и 20 ГБ на
/, что измеряется с помощьюfree -mи размера корневой файловой системы. - Исключительно «чистый» сервер. Если уже установлены
nginx,dockerилиnode, скрипт прерывает работу с ошибкойError: Some packages like nginx/docker/nodejs are already installed..
Последняя проверка вызывает больше всего споров, поэтому поясним причину. Cloudron устанавливает фиксированные версии Docker, nginx, Node.js и MySQL, самостоятельно записывает конфигурацию nginx для каждого размещаемого приложения и управляет правилами iptables. Docker, установленный вами ранее, будет иметь неверную версию, а существующие файлы сайтов nginx будут перезаписаны. Cloudron полностью контролирует машину, поэтому выделите под него отдельный VPS.
Еще одну проверку легко пропустить. На старых процессорах без поддержки AVX (advanced vector extensions) скрипт выводит CPU has no AVX support. MongoDB will be disabled, и все приложения, требующие MongoDB, станут неработоспособными. Проверьте процессор перед началом работы с помощью grep -m1 -o avx /proc/cpuinfo: на подходящем хосте команда выведет avx, на старом — ничего.
Сколько оперативной памяти требуется Cloudron?
Скрипт отказывается запускаться при объеме менее 941 МБ с ошибкой Error: Cloudron requires atleast 1GB physical memory, а документация требует 2 ГБ оперативной памяти и 20 ГБ дискового пространства. Оба значения являются минимальным порогом для самой платформы, а не для платформы вместе с вашими приложениями. Еще до установки первого приложения Cloudron уже запускает Docker, nginx, собственный сервис box, контейнеры баз данных, которые он предоставляет приложениям (MySQL, PostgreSQL, MongoDB), Redis и почтовый стек. Запустите docker ps на свежей установке и посчитайте их.
Лимиты памяти приложений добавляются к этой базовой нагрузке. Каждый пакет приложения поставляется с низким лимитом по умолчанию, который вы можете увеличить с помощью ползунка в разделе ресурсов приложения. Когда приложение превышает свой лимит, оно перезапускается и отправляет вам уведомление OOM (out of memory), поэтому сервер, на котором постоянно перезапускается одно и то же приложение, обычно сталкивается с проблемой лимитов, а не с ошибкой в коде.
Ниже приведены параметры конфигурации, которые я рекомендую. Это рекомендации для сервера, который вам не придется пересобирать в следующем месяце. Это не результаты замеров производительности.
The data behind this chart
[
{
"label": "2 apps (free tier)",
"vcpu": 2,
"ram_gb": 4,
"disk_gb": 60
},
{
"label": "5 apps",
"vcpu": 4,
"ram_gb": 8,
"disk_gb": 120
},
{
"label": "10 apps",
"vcpu": 6,
"ram_gb": 16,
"disk_gb": 240
}
]Два приложения комфортно работают на 4 ГБ оперативной памяти и 60 ГБ дискового пространства. Около десяти приложений потребуют 16 ГБ и 240 ГБ, так как базовая нагрузка платформы не уменьшается, а каждое приложение добавляет Docker-образ, базу данных и собственные данные. Диск заполняется быстрее, чем ожидают пользователи: образы, данные приложений и локальные резервные копии используют один том, пока вы не перенесете резервные копии за пределы сервера.
Cloudron предоставляет каждому приложению неограниченный swap, поэтому установленный вами лимит памяти применяется только к оперативной памяти. На образе VPS без файла подкачки swapon --show не выводит ничего, и нехватка памяти сразу приводит к перезапускам по OOM вместо замедления работы приложения. Добавление 2 ГБ swap — это дешевая страховка, хотя она не заменяет реальную оперативную память. Разница в стоимости между тарифными планами VPS невелика по сравнению с часами, которые вы потратите на настройку лимитов, поэтому ознакомьтесь с тем, сколько на самом деле стоит VPS, и приобретите тариф на ступень выше.
DNS: wildcard-запись для работы поддоменов приложений
Cloudron размещает панель управления на my.example.com, а каждое приложение — на отдельном поддомене, поэтому настройка DNS является обязательным предварительным условием. Укажите эти записи на публичный IP-адрес сервера до первого открытия панели управления:
my.example.comкак A-запись. Это адрес панели управления.*.example.comкак A-запись. Эта запись обеспечивает работу поддоменов приложений, поэтомуwiki.example.comиgit.example.comбудут резолвиться сразу после установки этих приложений.example.comкак A-запись, только если вы хотите разместить приложение на основном домене.
Wildcard-запись имеет более низкий приоритет, чем явная запись, поэтому существующая www.example.com, указывающая на другой адрес, продолжит работать.
Во время настройки вы выбираете, как Cloudron будет управлять DNS в дальнейшем:
- API-провайдер. Cloudron хранит токен для Cloudflare, DigitalOcean, Route53, Hetzner, Porkbun, Linode, deSEC, Gandi, Namecheap и примерно двадцати других, после чего самостоятельно записывает все записи, включая почтовые.
- Wildcard. Вы добавляете
*вручную, и Cloudron не вносит никаких изменений. - Ручной режим. Cloudron показывает вам каждую запись и ожидает, пока вы добавите её перед установкой каждого отдельного приложения.
Wildcard DNS-запись — это не wildcard-сертификат. Стандартным поставщиком сертификатов является Let's Encrypt Prod - Wildcard, который подтверждает владение доменом через DNS, поэтому он работает только с API-провайдером. В режимах Wildcard или Manual вы переходите на использование одного сертификата на приложение с проверкой через HTTP, что означает, что входящий 80 порт должен быть всегда открыт. Если ваш регистратор или DNS-хостинг есть в списке API, используйте его: почтовые записи и сертификаты перестанут быть вашей задачей.
Выполните проверку перед продолжением. dig +short my.example.com и dig +short anything.example.com должны возвращать IP-адрес вашего сервера. Если wildcard-запрос ничего не возвращает, приложения не будут работать в будущем, хотя панель управления будет функционировать нормально.
Если домен находится за Cloudflare, установите для записей режим DNS only. Прокси-сервер пересылает только HTTP и HTTPS, из-за чего почтовые порты перестают работать, а каждое приложение видит адрес Cloudflare вместо адреса посетителя.
Запуск скрипта установки
wget https://cloudron.io/cloudron-setup
chmod +x cloudron-setup
sudo ./cloudron-setupЗапускайте его от имени root или через sudo, иначе первым же сообщением вы получите This script should be run as root.. Установка занимает несколько минут и выполняется в фоновом режиме, так как вывод apt и процесс загрузки образов Docker перенаправляются в лог-файл. Отслеживайте прогресс из второго SSH-сеанса:
tail -f /var/log/cloudron-setup.logВ конце скрипт выведет After reboot, visit one of the following URLs and accept the self-signed certificate to finish setup., адрес вашего сервера, а затем задаст вопрос The server has to be rebooted to apply all the settings. Reboot now ? [Y/n]. Ответьте утвердительно. Флаг --skip-reboot доступен, если вам нужно отложить перезагрузку, однако Cloudron будет недоступен до тех пор, пока сервер не вернется в строй.
Первый запуск: домен, DNS-бэкенд и учетная запись администратора
Откройте https://<server-ip> и примите предупреждение браузера. Сертификат является самоподписанным, так как Cloudron еще не знает ваш домен и не может запросить сертификат у центра сертификации. В Chrome нажмите Advanced, затем Proceed to <ip> (unsafe). В Firefox нажмите Advanced, затем Accept the Risk and Continue.
На первом экране потребуется ввести ваш домен. Введите example.com, и панель управления будет доступна по адресу my.example.com. Вы можете использовать поддомен, например cloudron.example.com, тогда панель будет доступна по адресу my.cloudron.example.com. Выберите DNS-бэкенд, вставьте API-токен, если он у вас есть, и создайте учетную запись администратора, используя адрес электронной почты, к которому у вас есть постоянный доступ: он будет использоваться для регистрации в Let's Encrypt и для всех уведомлений платформы.
После сохранения Cloudron запросит сертификаты и перенесет панель управления на https://my.example.com. URL с IP-адресом перестанет работать, поэтому сохраните новый адрес в закладки.
Сертификаты: что обновляется и когда процесс останавливается
Обновление сертификатов происходит автоматически в соответствии с ACME Renewal Information (ARI) — графиком, который публикует центр сертификации. На практике обновление выполняется примерно за месяц до истечения срока действия. В случае сбоя обновления администратору отправляется уведомление по электронной почте, а при истечении срока действия сертификата система переключается на встроенный самоподписанный сертификат. Именно этот переход является причиной предупреждения браузера на сайте, который еще вчера работал корректно.
В большинстве случаев проблема вызвана одной из двух причин. Для HTTP-валидации требуется открытый входящий порт 80, поэтому закрытие 80-го порта с аргументацией «всё равно всё работает через HTTPS» блокирует обновление для любого приложения, использующего Wildcard или ручной DNS-бэкенд. Для DNS-валидации требуется API-токен с правами на запись, поэтому ротация или ограничение прав этого токена приводит к тому, что обновление перестает работать без уведомлений до тех пор, пока не придет предупреждение по электронной почте.
В представлении Domains есть кнопка Renew All для принудительного запуска попытки обновления, а также провайдер Let's Encrypt Staging для тестирования. Staging-сертификаты намеренно не считаются доверенными в браузерах, в этом и заключается их назначение: вы можете повторять попытки сколько угодно раз, не расходуя лимиты запросов для production-сертификатов.
Стоит ли использовать встроенный почтовый сервер?
Cloudron поставляется с полным набором почтовых инструментов, включая почтовые ящики IMAP, отправку, фильтры sieve и подпись DKIM (domainkeys identified mail). Вы можете включить их для каждого домена в разделе Email на панели управления. Самая сложная часть — это доставка почты, и трудности здесь не связаны с Cloudron.
- Исходящий порт 25 заблокирован большинством провайдеров VPS для борьбы со спамом. Некоторые провайдеры открывают его после подачи заявки в службу поддержки. Проверьте доступность с сервера с помощью
nc -zv aspmx.l.google.com 25(установитеnetcat-openbsd, если команда отсутствует). Открытый порт выдает отчетsucceeded, а заблокированный порт будет ожидать ответа до истечения времени ожидания. - PTR-запись (обратный DNS) устанавливается вашим провайдером VPS, а не DNS-хостингом, и она должна совпадать с почтовым именем хоста. Почта с адреса, имеющего общую PTR-запись, попадает в спам.
- Записи SPF, DKIM и DMARC создаются автоматически при использовании API DNS-бэкенда. При использовании Wildcard или ручного бэкенда их нужно добавлять вручную; отсутствие записи DKIM означает, что каждое ваше сообщение будет невозможно проверить.
Конфигурация, которая подходит большинству пользователей, заключается в приеме почты через Cloudron и отправке через релей, такой как SendGrid, Postmark, Mailgun или Amazon SES, настроенный в разделе Email. Релей должен разрешать отправку от имени любого адреса вашего домена, иначе уведомления приложений от разных отправителей будут отклоняться. Если почта — основная причина покупки сервера, используйте выделенный почтовый сервер, например Mailcow на отдельной машине с собственной IP-репутацией.
Если вы вообще не используете почту Cloudron, заблокируйте порты 25, 465, 587, 993 и 4190 в межсетевом экране вашего провайдера. Делайте это именно там, а не на сервере, так как Cloudron самостоятельно управляет правилами iptables и ожидает полного контроля над ними. Это отличается от обычного VPS, где вы управляете правилами ufw самостоятельно.
Настройте целевое хранилище для резервных копий заранее
По умолчанию резервные копии сохраняются в локальной файловой системе по пути /var/backups, на том же диске, где находятся остальные данные. Документация прямо предупреждает: «Хранение резервных копий на том же физическом диске, что и сервер платформы, небезопасно». Выход из строя одного диска приведет к потере и приложений, и их копий.
Откройте раздел Backups, затем Backup Sites и укажите другое местоположение в первый же день работы. Обычно для этого используют S3-совместимое объектное хранилище (Backblaze B2, Wasabi, Cloudflare R2, DigitalOcean Spaces или бакет MinIO на другом сервере), также поддерживаются SSHFS, NFS, CIFS и обычные файловые системы.
Три параметра определяют, будет ли резервная копия пригодна для использования:
- Формат.
tgzсоздает один сжатый архив для каждого приложения и при каждом запуске перезаписывает его целиком.rsyncзагружает только измененные файлы, что значительно выгоднее для больших экземпляров Nextcloud, но требует выполнения большего количества запросов к API хранилища. - Шифрование. Опциональное шифрование AES-256, охватывающее как содержимое файлов, так и их имена. Cloudron не хранит копию пароля, поэтому его потеря означает, что расшифровать резервные копии не сможет никто, включая вас. Сохраните пароль в собственном менеджере паролей перед тем, как нажать кнопку сохранения.
- Хранение. Указывается в виде количества, например 7 ежедневных и 4 еженедельных копии. Длительное хранение данных в объектном хранилище оплачивается ежемесячно, поэтому выбирайте значения, за которые вы готовы платить.
После этого протестируйте восстановление. Установите небольшое приложение, восстановите его через панель управления и убедитесь, что оно вернулось в рабочее состояние вместе со всеми данными. Резервная копия, которую никто никогда не восстанавливал, — это лишь предположение о наличии данных.
Ограничения бесплатного тарифа
По состоянию на август 2026 года бесплатный тариф ограничен двумя установленными приложениями. В него включено всё остальное: обновления приложений, резервное копирование для каждого приложения, межсетевой экран, почтовый сервер и единый вход (SSO). Третье приложение — это порог, после которого требуется лицензия. Платные тарифы снимают ограничение на количество приложений, а более высокий тариф добавляет группы пользователей и роли, сервер каталогов и возможность использования нескольких площадок для резервного копирования. Цены меняются, поэтому проверяйте страницу цен Cloudron, а не цифры в руководстве.
Лицензия покрывает одну установку Cloudron, поэтому два небольших сервера стоят в два раза дороже, чем один более крупный. Такая модель ценообразования подталкивает большинство пользователей к выбору одного более мощного VPS, что противоречит общепринятому совету распределять сервисы по разным машинам. Учитывайте это при выборе размера сервера, так как последующее разделение будет означать двойную оплату.
Диагностика неисправностей
Начните со встроенной проверки. Она последовательно анализирует DNS, сертификаты, диск, память и каждый сервис, сообщая, на каком этапе произошел сбой:
sudo cloudron-support --troubleshootПосле этого используйте стандартные инструменты systemd (менеджера систем и сервисов). systemctl status box выводит состояние самого сервиса Cloudron, journalctl -u box -n 100 показывает его последние логи, а journalctl -u docker позволяет проверить работу среды выполнения контейнеров. Все ошибки, возникшие в процессе установки, записываются в /var/log/cloudron-setup.log.
Если панель управления не загружается, проблема обычно кроется в DNS или сетевом экране провайдера, а не в самом Cloudron. Запустите dig +short my.example.com со своего ноутбука и убедитесь, что порты 80 и 443 открыты в сетевом экране провайдера — это отдельный уровень контроля, не зависящий от правил самого сервера. Если вы решили начать установку заново, скрипт заблокирует повторный запуск с ошибкой Error: Cloudron is already installed. To reinstall, start afresh; в этом случае единственным чистым решением будет переустановка сервера.
Когда Cloudron не подходит
Cloudron подходит, если вам нужны готовые приложения, а не управление инфраструктурой. Он плохо сочетается с запуском собственных контейнеров по своему усмотрению, так как система управляет nginx, Docker и межсетевым экраном, перезаписывая любые внесенные вами изменения. Если вы планируете использовать набор файлов compose, Traefik перед вашими стеками Docker Compose обеспечит ту же автоматическую настройку TLS и маршрутизацию по поддоменам без установки дополнительной платформы. Если вы еще не сделали выбор, сравнение Cloudron, CasaOS и Coolify поможет сопоставить их возможности, а обширный список решений для self-hosting станет лучшей отправной точкой, чем руководство по установке.
FAQ
Сколько оперативной памяти требуется Cloudron на VPS?
Скрипт установки не запускается при объеме менее 941 MB, а документация рекомендует 2 GB — это минимальный порог для платформы без установленных приложений. Cloudron запускает Docker, nginx, собственный сервис box, контейнеры баз данных и стек почтовых служб сразу после первой загрузки. Планируйте 4 GB для двух приложений и 16 GB примерно для десяти. Обязательно добавьте файл подкачки (swap), так как Cloudron предоставляет приложениям неограниченный доступ к swap, и при его отсутствии нехватка памяти приведет к перезапускам процессов.
Можно ли установить Cloudron на Debian или на сервер, где уже работает Docker?
Нет. Скрипт проверяет версию дистрибутива и прерывает работу с ошибкой Cloudron requires Ubuntu 20.04, 22.04, 24.04, поэтому Debian, Rocky и Alpine не поддерживаются. Установка также прерывается, если уже установлены nginx, docker или node, так как Cloudron использует фиксированные версии этих компонентов и самостоятельно управляет конфигурацией nginx и правилами iptables. Используйте чистый образ Ubuntu на KVM VPS.
Почему поддомены приложений не работают, хотя панель управления доступна?
Отсутствует wildcard DNS-запись. При настройке создается или требуется A-запись для my.example.com, поэтому панель управления работает, в то время как wiki.example.com возвращает NXDOMAIN, и браузер сообщает, что сайт не найден. Добавьте A-запись для *.example.com, указывающую на IP-адрес сервера, и проверьте её с помощью dig +short wiki.example.com перед установкой приложения.
Обязательно ли использовать почтовый сервер Cloudron?
Нет. Вы можете отключить прием входящей почты и отправлять письма через внешний релей, такой как Postmark, Mailgun или Amazon SES. Это более безопасный выбор, если ваш провайдер блокирует исходящий 25 порт или IP-адрес не имеет почтовой репутации. Если вы полностью отказываетесь от использования Cloudron Email, закройте порты 25, 465, 587, 993 и 4190 в сетевом экране провайдера, а не на самом сервере.
Что произойдет при достижении лимита в два приложения на бесплатном тарифе?
Панель управления заблокирует установку третьего приложения и запросит лицензионный ключ. Уже запущенные приложения продолжат работать: они будут обновляться, резервироваться и получать сертификаты в штатном режиме. Активация лицензии снимает ограничение без необходимости переустановки, поэтому бесплатный тариф подходит для тестирования платформы на реальном домене.