Uptime Kuma – это веб-приложение, которое работает с панелью управления, логинами, токенами уведомлений и иногда даже с приватными URL. При подключении по обычному HTTP эти данные передаются в открытом виде. Для ресурса, развёрнутого на VPS, это является критичным, поскольку трафик идёт через интернет, а не внутри локальной сети. Любой, перехвативший соединение, сможет увидеть логин, пароль или открытую сессию.
Решением в данном случае является настройка доступа к серверу по более защищённому протоколу – HTTPS. Во-первых, при таком соединении шифруется весь трафик. А значит, логины, токены и все остальные чувствительные данные не светятся в сети. Во-вторых, HTTPS-соединение гарантирует, что подключение происходит именно к вашему серверу. Без применения HTTPS возможна атака с подменой страницы входа. В-третьих, браузеры считают HTTP недостаточно безопасным. Об этом они предупреждают при подключении к веб-странице через протокол HTTP.
В статье разберём, как настроить HTTPS для подключения к серверу Uptime Kuma, работающему на Ubuntu 24.04 или Debian 13.
Как настроить доступ по HTTPS для Uptime Kuma
Настройка HTTPS-доступа к веб-ресурсу представляет собой процесс выпуска, установки и настройки TLS-сертификата на стороне сервера. Данная настройка позволяет организовать защищённое соединение между браузером пользователя и веб-приложением. При таком подключении осуществляются шифрование передаваемых данных, проверка подлинности сервера, а также защита от перехвата трафика. При этом, чтобы соблюсти все эти требования, устанавливаемый TLS-сертификат должен быть выдан доверенным Центром сертификации, таким, например, как Let’s Encrypt.
Let’s Encrypt выпускает бесплатные, полноценные и доверенные браузерами TLS-сертификаты. Они шифруют доступ к панели и не вызывают предупреждений в браузере. Срок действия сертификата Let’s Encrypt составляет 90 дней. При этом Центр сертификации предоставляет возможность настроить его автоматическое продление.
Следует учитывать, что Let’s Encrypt выпускает TLS-сертификаты только для сайтов, доступ к которым осуществляется по их доменным именам. Let’s Encrypt не позволяет установить сертификат на веб-страницу, доступную только через IP-адрес сервера, на котором она размещена. Поэтому прежде всего необходимо настроить привязку принадлежащего вам имени домена к IP-адресу вашего виртуального сервера. Данная привязка осуществляется при помощи A-записи (специальной DNS-записи) и производится на сайте-регистраторе домена. Также связать доменное имя с IP-адресом сервера можно в личном кабинете на сайте хостинга RUVDS.

Установка Caddy
Наиболее простой и надёжный способ настроить HTTPS-доступ при помощи TLS-сертификата от Let’s Encrypt – использовать для этого обратный прокси Caddy. Основное его преимущество состоит в том, что HTTPS в Caddy включается по умолчанию. То есть, вы указываете домен, а Caddy сам получает и настраивает TLS-сертификат от Let’s Encrypt. После чего Caddy следит за сроком действия сертификата и автоматически продлевает его без вашего участия.
В роли обратного прокси Caddy работает как промежуточное звено между клиентом и внутренним сервисом. При этом он берёт на себя приём внешних HTTPS-запросов и их безопасную доставку до приложения. Пользователь обращается к доменному имени, и после того как установится соединение с Caddy, прокси сам решает, куда именно внутри сервера передавать запрос. Для клиента это выглядит как подключение к обычному защищённому сайту. При этом внутренний сервис может вообще не знать о TLS-сертификате и работать с прокси через обычный HTTP. Когда внутреннее приложение формирует ответ, Caddy получает его обратно, шифрует и отправляет результат клиенту по уже установленному защищённому каналу. Таким образом, внешний мир никогда не взаимодействует напрямую с самим приложением. Пользователь видит только Caddy, который выступает как единая точка входа.
Установка Caddy на Ubuntu и Debian производится в три действия. Во-первых, с помощью утилиты curl загрузите GPG-ключ репозитория Caddy. Ключ будет использоваться пакетным менеджером APT для проверки подлинности пакетов. Таким образом система сможет убедиться в том, что пакеты действительно опубликованы разработчиками Caddy.
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
Затем загрузите файл с описанием репозитория, который сообщит менеджеру пакетов, откуда необходимо получать пакеты Caddy, для каких дистрибутивов и с каким ключом их проверять:
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
После чего запустите установку непосредственно веб-сервера Caddy:
$ sudo apt install caddy
Настройка Caddy для работы в качестве обратного прокси
По окончании установки откройте конфигурационный файл Caddy, чтобы настроить его работу в качестве обратного прокси:
$ sudo nano /etc/caddy/Caddyfile
Удалите все строки в файле и вставьте в него следующий текст:
your-domain-name.ru {
reverse_proxy localhost:3001
}
В данном случае:
your-domain-name.ru– имя домена, для которого Caddy запросит TLS-сертификат в Let’s Encrypt (замените на своё);3001– порт, который по умолчанию слушает сервер Uptime Kuma.
После внесения изменений сохраните их и закройте файл.
Получение TLS-сертификата и проверка доступа к сайту
Чтобы выдать сертификат, Let’s Encrypt должен убедиться в том, что вы действительно владеете указанным доменом. Самым распространённым способом проверки является HTTP-01 challenge. При таком методе сервер Let’s Encrypt делает входящий запрос к домену по порту 80 (HTTP). Чтобы данная проверка прошла успешно, брандмауэр UFW не должен блокировать данный порт.
Также, для нормальной работы Uptime Kuma после получения сертификата необходим открытый доступ к серверу по протоколу HTTPS. Исходя из чего, на данном этапе настройки добавьте в брандмауэр UFW разрешающие правила для протоколов HTTP и HTTPS:
$ sudo ufw allow http
$ sudo ufw allow https
После чего перезапустите службу Caddy:
$ sudo systemctl restart caddy
Чтобы убедиться в том, что служба функционирует штатно, выведите на экран её текущее состояние:
$ systemctl status caddy
В выводе команды не должно быть сообщений о каких-либо ошибках.

Теперь проверьте доступность веб-интерфейса Uptime Kuma. Для чего откройте браузер и перейдите на веб-интерфейс Uptime Kuma по имени домена. Используйте доменное имя, для которого вы настраивали HTTPS-доступ.

Сообщение в навигационной строке вида Подключение защищено говорит о том, что соединение браузера и веб-сайта осуществляется с использованием протокола HTTPS.
Поскольку теперь нет необходимости держать открытым порт 3001, который слушает внутренний сервис Uptime Kuma, удалите из брандмауэра UFW соответствующее ему правило:
$ sudo ufw delete allow 3001/tcp
