Индекс на дневникаDockup / бележка от практиката
Note / self-host-uptime-kuma

Как да хоствате самостоятелно Uptime Kuma през 2026 г.: известия, TLS и постоянни данни

Хоствайте самостоятелно Uptime Kuma с правилни портове, постоянно хранилище, HTTPS, secrets, backups и проверки при upgrade. Научете как да отстраните проблем, при който data volume е само за четене.

Повечето бележки за инсталиране на Uptime Kuma приключват при първото зареждане на страницата. Това е твърде рано: data volume може да е само за четене или DNS-ът на контейнера да не може да резолвира наблюдаваните хостове. Полезният production тест е по-взискателен — създайте HTTP и TCP монитори, предизвикайте един контролиран отказ и получете известието за проблем и възстановяване чрез избрания provider.

Ролята на Uptime Kuma е ясна: monitoring на съществуващи услуги с известия към над 90 дестинации. Оперативният му обхват включва повече от web процеса, затова dependency-ите, съхраненото състояние и публичният route трябва да бъдат описани изрично, преди да постъпят реални данни.

Първо дефинирайте успеха за Uptime Kuma

Полезната диаграма на Uptime Kuma показва публичния route, private port 3001, границата на състоянието и всички поддържащи изисквания. Отбележете кои стрелки пренасят credentials и кои са обикновен user traffic. Външното изискване за Uptime Kuma е outbound access до всеки наблюдаван endpoint и alert provider. Тествайте outbound DNS, TLS и поведението на provider-а, без да публикувате друга inbound услуга.

Докажете диаграмата с едно реално действие: създайте HTTP и TCP монитори, предизвикайте един контролиран отказ и получете известието за проблем и възстановяване чрез избрания provider. Вероятният източник на натоварване са monitor interval-ът, retry count, traffic-ът към status page и броят outbound probes, изпълнени в една и съща секунда; наблюдавайте този път, вместо да третирате всички HTTP заявки като равностойни.

Експлоатирайте Uptime Kuma около реалното му тясно място

Първата полезна operational metric за Uptime Kuma е дали може да създава HTTP и TCP монитори, да предизвика един контролиран отказ и да получи известието за проблем и възстановяване чрез избрания provider. Съчетайте я със saturation signals за monitor interval-а, retry count, traffic-а към status page и броя outbound probes, изпълнени в една и съща секунда. Probe, който проверява само процеса, не бива да извиква скъпи dependency-и или да рестартира контейнера, защото upstream временно не е достъпен.

Третирайте upgrade-ите като промени в данните, защото SQLite migrations и промените в notification provider-а могат да превърнат бързото изтегляне на image в stateful application upgrade. Фиксирайте версиите, репетирайте процедурата с възстановено състояние и запазете предишния image, докато rollback-ът остава възможен. Когато data volume е само за четене или DNS-ът на контейнера не може да резолвира наблюдаваните хостове, запазете log-овете отпреди рестарта; те обикновено съдържат причинното съобщение.

Документирайте deployment на Uptime Kuma с доказано работещо състояние

За Uptime Kuma дефинирайте доказано работеща транзакция преди стартирането: създайте HTTP и TCP монитори, предизвикайте един контролиран отказ и получете известието за проблем и възстановяване чрез избрания provider. Съхранявайте prerequisites, очаквания резултат и стъпките за почистване във version control, без secret values. Фиксирайте image-а, използван за установяване на тази отправна точка.

Използвайте транзакцията, за да валидирате replacement и независимо restore. Възстановената услуга е приемлива само когато monitor history, notification credentials и maintenance windows се появят отново и тестово известие бъде доставено. Едновременно с това наблюдавайте monitor interval-а, retry count, traffic-а към status page и броя outbound probes, изпълнени в една и съща секунда, и превърнете най-бавната или най-ограничената част в service-level alert.

Gate-ът трябва да включва и negative case: временно блокирайте test path-а, използван за outbound access до всеки наблюдаван endpoint и alert provider. Потвърдете, че Uptime Kuma генерира actionable error, като същевременно запазва данните, възстановете валидното състояние и повторете транзакцията с доказано работещо състояние. Съхраняването и на двата резултата не позволява на повърхностен health endpoint да се превърне в единственото production доказателство.

Настройки на контейнера, които си струва да прегледате

Използвайте контейнера като replaceable runtime, а не като мястото, където се намира source of truth.

docker run -d \
  --name uptime-kuma \
  --restart unless-stopped \
  -p 127.0.0.1:3001:3001 \
  -v uptime-kuma-data:/app/data \
  -e UPTIME_KUMA_PORT=3001 \
  louislam/uptime-kuma:1

Разрешете и проверете outbound или client-side path-а, необходим за outbound access до всеки наблюдаван endpoint и alert provider. Проверете user-а на контейнера, writable paths и bound listener-а, преди да го изложите. Изпълнете цялото действие — създайте HTTP и TCP монитори, предизвикайте един контролиран отказ и получете известието за проблем и възстановяване чрез избрания provider — и запазете точната image reference, довела до резултата.

Възстановете Uptime Kuma на празен хост

Защитете state-а на Uptime Kuma, преди да оптимизирате контейнера. Необходимият набор включва SQLite database и uploaded assets в /app/data. Монтирайте /app/data преди bootstrap, запишете безвредни sample data и заменете контейнера, за да докажете, че този path действително е persistent. Ако няколко store-а трябва да останат съгласувани, документирайте реда, в който write операциите се спират и backup-ите се създават.

Съхранявайте копия извън deployment сървъра и криптирайте material-а, съдържащ credentials или private content. Recovery-ят е успешен, когато monitor history, notification credentials и maintenance windows се появят отново и тестово известие бъде доставено. Разликата между persistent mount и независимо копие е разгледана в persistent storage and snapshots.

Дайте на Uptime Kuma един каноничен адрес

Публикувайте един стабилен HTTPS origin чрез reverse proxy. Насочете избрания hostname към container port 3001, препратете original host и HTTPS scheme и не публикувайте втори директен origin.

Тествайте Uptime Kuma от чист външен client. Разграничете ingress failure от известната application boundary — data volume е само за четене или DNS-ът на контейнера не може да резолвира наблюдаваните хостове. Грешка в certificate, DNS или 502 принадлежи към routing-а; заявка, която достига до Uptime Kuma и се проваля по-късно, принадлежи към application state, capacity или поддържащото изискване. Ръководството за TLS с custom domain разглежда първата група.

Специфични за Uptime Kuma решения за security

Специфичният за приложението security риск е изпълнението на first-user setup върху публично изложена инстанция. Operational отговорът е да завършите first-user setup насаме, а след това да защитите отделно dashboard-ите и администрацията на status page. Завършете bootstrap-а през restricted route и незабавно премахнете временния setup access след това.

UPTIME_KUMA_PORT контролира поведението, а не confidentiality; валидирайте type и value-а му и съхранявайте истинските Uptime Kuma credentials отделно. Дайте на Uptime Kuma процеса само документираните му mounts и dependency routes; избягвайте достъп до host root и Docker socket. Записвайте failed authentication и configuration errors, но redac­t-вайте tokens, connection strings и user content.

Един Dockup deployment все още се нуждае от acceptance test за Uptime Kuma

Routing, certificates, service replacement и attached storage са разумни цели за automation. Dockup ги обработва за Uptime Kuma и може да provision-ва свързаната managed database или да се свърже с услуги на собствения сървър на клиента.

Това, което не бива да измисля, е trust policy-то на Uptime Kuma. След deployment публикувайте един стабилен HTTPS origin чрез reverse proxy, наложете тази граница — завършете first-user setup насаме, а след това защитете отделно dashboard-ите и администрацията на status page — и проверете резултата от този сценарий: създайте HTTP и TCP монитори, предизвикайте един контролиран отказ и получете известието за проблем и възстановяване чрез избрания provider. Резултатът е one-click infrastructure с application-specific acceptance test.

Често задавани въпроси

Какво е необходимо на Uptime Kuma за production deployment?

Насочете Uptime Kuma контейнера на port 3001 през един HTTPS origin. Външното изискване за delivery е outbound access до всеки наблюдаван endpoint и alert provider. Не приемайте Uptime Kuma за готов, докато не можете да създадете HTTP и TCP монитори, да предизвикате един контролиран отказ и да получите известието за проблем и възстановяване чрез избрания provider.

Кои данни на Uptime Kuma трябва да бъдат включени в backup?

Запазете /app/data и включете SQLite database и uploaded assets в /app/data в един и същ recovery manifest. Чистият restore на Uptime Kuma е успешен само когато monitor history, notification credentials и maintenance windows се появят отново и тестово известие бъде доставено.

Изисква ли Uptime Kuma HTTPS зад reverse proxy?

Използвайте HTTPS за публичния Uptime Kuma origin и оставете port 3001 във вътрешния route. Приложете правилно настройката на Uptime Kuma: публикувайте един стабилен HTTPS origin чрез reverse proxy. При Uptime Kuma HTTPS защитава credentials или user content при пренос и поддържа последователно client поведение, зависещо от origin-а.

Как трябва да се тества upgrade на Uptime Kuma?

Възстановете текущото състояние на Uptime Kuma в изолиран deployment, приложете candidate version и повторете acceptance transaction. Обърнете специално внимание, защото SQLite migrations и промените в notification provider-а могат да превърнат бързото изтегляне на image в stateful application upgrade. Запазете предишния Uptime Kuma image, докато границите на data migration и rollback не бъдат изяснени.