Найти в Дзене

Настраиваем Uptime Kuma с обратным прокси-сервером Caddy и TLS-защитой

Популярная система мониторинга Uptime Kuma представляет собой обычное веб-приложение и не имеет встроенных средств защиты, поэтому для ее публикации во внешнюю сеть нам потребуется обратный прокси, который будет брать на себя работу с TLS-сертификатами. Традиционно это решается при помощи Certbot и Nginx, но есть способ проще – веб-сервер Caddy, который крайне прост в настройках и показывает отличную производительность при скромном потреблении ресурсов. В целом особой проблемы запустить связку Uptime Kuma и Caddy нет, но всегда полезно читать официальную документацию. Так в документации Uptime Kuma мы нашли отсылку к проекту Caddy-Docker-Proxy, который работает с контейнерами Docker при помощи меток. Таким образом нам вообще практически не надо ничего настраивать, плюс мы получаем возможность использовать Caddy и для других развернутых на этом хосте контейнеров, получив своего рода Traefik «на минималках». Интересно? Тогда приступим. Нам потребуется следующий docker-compose.yml n

Настраиваем Uptime Kuma с обратным прокси-сервером Caddy и TLS-защитой

Популярная система мониторинга Uptime Kuma представляет собой обычное веб-приложение и не имеет встроенных средств защиты, поэтому для ее публикации во внешнюю сеть нам потребуется обратный прокси, который будет брать на себя работу с TLS-сертификатами.

Традиционно это решается при помощи Certbot и Nginx, но есть способ проще – веб-сервер Caddy, который крайне прост в настройках и показывает отличную производительность при скромном потреблении ресурсов.

В целом особой проблемы запустить связку Uptime Kuma и Caddy нет, но всегда полезно читать официальную документацию. Так в документации Uptime Kuma мы нашли отсылку к проекту Caddy-Docker-Proxy, который работает с контейнерами Docker при помощи меток.

Таким образом нам вообще практически не надо ничего настраивать, плюс мы получаем возможность использовать Caddy и для других развернутых на этом хосте контейнеров, получив своего рода Traefik «на минималках».

Интересно? Тогда приступим. Нам потребуется следующий docker-compose.yml

networks:

default:

name: "proxy_network"

services:

uptime-kuma:

image: louislam/uptime-kuma:1

restart: unless-stopped

volumes:

- /srv/uptime:/app/data

labels:

caddy: uptime.example.com

caddy.reverse_proxy: "* {{upstreams 3001}}"

caddy:

image: "lucaslorentz/caddy-docker-proxy:ci-alpine"

ports:

- "80:80"

- "443:443"

- "443:443/udp"

volumes:

- /var/run/docker.sock:/var/run/docker.sock:ro

- /srv/caddy/:/data

restart: unless-stopped

environment:

- CADDY_INGRESS_NETWORKS=proxy_network

Все, что вам потребуется в нем поменять – это вместо uptime.example.com указать свой домен.

После чего просто делаем

docker compose up -d

И переходим в браузере по указанному адресу.

Если вам нужно использовать этот же контейнер Caddy для других контейнеров, то просто добавьте к нему метки:

caddy: service.example.com

caddy.reverse_proxy: "* {{upstreams 8080}}"

Где вы указываете желаемый внешний домен и порт внутреннего контейнера. Теперь при его запуске Caddy на лету изменит свою конфигурацию и начнет проксирование для нового сервиса.