Ana içeriğe geç
%50 indirim tüm planlarda, sınırlı süreyle. Başlangıç fiyatı $2.48/mo
10 min left
Geliştirici Araçları ve DevOps

Uptime Kuma bir VPS üzerinde nasıl kurulur

C Yazan Chike 10 dk okuma
Uptime Kuma VPS setup title card: a server rack on a monitoring dashboard with green status icons for website, database, mail and security checks and one failed check in red

Uptime Kuma; HTTP(S), TCP, ping, DNS, WebSocket ve diğer kontroller için açık kaynaklı, kendi sunucunuzda barındırdığınız bir izleme aracıdır. Ayrı bir VPS üzerinde çalıştığında, üretim sunucunuz çöktüğünde onunla birlikte kaybolmak yerine kontrol etmeyi sürdürür.

Bu Uptime Kuma VPS kurulumu v2'yi Docker Compose ile devreye alır, 3001 portunu loopback üzerinde tutar, Caddy ile HTTPS ekler, uyarıları Telegram, Discord ve Slack'e yönlendirir ve bir durum sayfası yayımlar.

Ön koşullar ve ihtiyacınız olacaklar

  • En az 1 vCPU, 1 GB RAM ve 10 GB yerel SSD depolama alanına sahip bir VPS
  • Ubuntu 24.04 LTS ya da Docker'ın desteklediği güncel başka bir Ubuntu sürümü
  • VPS üzerinde kurulu Docker Engine ve Docker Compose
  • Bir A kaydıyla VPS'e yönlendirilmiş bir alan adı veya alt alan adı (örneğin status.example.com)
  • SSH erişimi ve komut satırında temel rahatlık

Docker henüz kurulu değilse şu adımları izleyin: Docker'ın Ubuntu kurulum kılavuzu. Docker Engine'i ve aşağıda kullanılan Compose eklentisini kurar.

İzleme VPS'i neden izlediği sistemlerden ayrı olmalı

Production in Region A has failed and its website, API and database are down, while Uptime Kuma on a separate VPS in Region B stays online, keeps probing those services and routes alerts to Telegram, Discord and Slack. An external watchdog checks Uptime Kuma itself.

Aynı sunucudaki üretim ve izleme aynı hata alanını paylaşır. O sunucu durursa hem uygulama hem de uyarıyı göndermekle görevli sistem birlikte kaybolur.

Bunu iyileştiren iki pratik düzen var:

  1. Aynı sağlayıcı, farklı konum. Üretimi ve izlemeyi farklı konumlardaki ayrı sunuculara koyun. Bu, tek sunucu ya da tek veri merkezi arızasına maruz kalmayı azaltır ama sağlayıcı genelindeki her ağ veya kontrol düzlemi olayına karşı korumaz.
  2. Tamamen farklı bir sağlayıcı. İzleme aracını başka bir yerde barındırmak, sağlayıcı genelindeki olaylara karşı da koruma ekler. Karşılığında yönetmeniz gereken bir hesap, bir fatura ve bir operasyon yüzeyi daha olur.

Tek bir Uptime Kuma örneğinin hâlâ dışarıdan bir gözcüsü yoktur. Herkese açık durum sayfası için harici bir HTTP(S) kontrolü ekleyin. UptimeRobot'un ücretsiz planı şu anda beş dakikalık aralıklarla 50 monitör içeriyor. Bu, Uptime Kuma'yı yüksek erişilebilir yapmaz ama izleme aracının kendisi kaybolduğunda size haber verir.

Aynı kural herkese açık durum sayfaları için de geçerli: arızayı size haber veren şey, arızalanan şeyle aynı hata alanını paylaşmamalı.

Linux Planlarını Gör

Root erişimi, NVMe ve AMD EPYC gücüne sahip bir Linux VPS üzerinde geliştir.

Linux Planlarını Gör

VPS boyutlandırma

Uptime Kuma'da monitör sayısını RAM'e bağlayan güvenilir bir formül yok, çünkü yük; monitör tipine, aralığa, yeniden deneme ayarlarına ve geçmiş saklama süresine göre değişir. Basit HTTP(S), TCP, ping ve DNS kontrolleri, Chromium çalıştıran Browser Engine kontrollerinden daha hafiftir.

Küçük bir temel kontrol setiyle başlıyorsanız 1 vCPU, 1 GB RAM ve yerel SSD depolama yeterlidir. Gerçek kullanımı şununla izleyin: docker stats uptime-kuma veritabanı büyümesini de şununla: du -sh /opt/uptime-kuma/data. Kullanım sürekli yüksek kalıyorsa, konteyner OOM kill bildiriyorsa ya da Browser Engine kontrolleri eklediyseniz bellek ekleyin.

Tam v2 imajı Chromium ve gömülü MariaDB içerir; Docker etiket dokümantasyonu tam ve slim imajlar arasındaki farkı açıklıyor.

Uptime Kuma'yı Docker Compose ile kurma

Bu dosyayı /opt/uptime-kuma/ içine docker-compose.yml adıyla kaydedin:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      # Bind to localhost only. The reverse proxy will expose it on 443.
      - "127.0.0.1:3001:3001"
    volumes:
      - ./data:/app/data

Üzerinde durmaya değer üç satır var:

  • image: louislam/uptime-kuma:2 ana sürümü sabitler. :2 etiketi kararlı 2.x sürüm hattını izler. :latest kullanmayın.
  • 127.0.0.1:3001:3001 konteyneri yalnızca localhost'a bağlar. Genel internet 3001 portuna asla doğrudan ulaşmamalı. TLS sertifikasını ve genel ana bilgisayar adını ters proxy tutar.
  • Veri birimi; veritabanını, monitör yapılandırmasını ve geçmişi tutar. Bunu yerel depolamada tutun, çünkü Uptime Kuma'nın kurulum dokümantasyonu dokümantasyonu, güvenilir POSIX kilitlemesi olmayan dosya sistemlerinin (birçok NFS kurulumu dahil) SQLite'ı bozabileceği konusunda uyarıyor. Dosya sistemi düzeyinde kopya almadan önce yığını durdurun.

Ayağa kaldırın ve doğrulayın:

sudo install -d -o "$USER" -g "$USER" /opt/uptime-kuma
cd /opt/uptime-kuma
# Paste the docker-compose.yml file above.
sudo docker compose up -d
sudo docker compose ps

docker compose ps komutunun beklenen çıktısı:

NAME          IMAGE                       STATUS                   PORTS
uptime-kuma   louislam/uptime-kuma:2      Up (healthy)             127.0.0.1:3001->3001/tcp

Panele ilk kez erişmek için 3001 portunu kısa süreliğine bile internete açmayın. SSH tüneli kullanın:

ssh -L 3001:127.0.0.1:3001 [email protected]

Tarayıcınızda http://localhost:3001 adresini açın, yönetici hesabını oluşturun, güçlü bir parola belirleyin ve tüneli kapatın. Bundan sonra panele ters proxy üzerinden HTTPS ile ulaşırsınız.

Compose'u elle kurmanız gerekmiyorsa, ayrıca Uptime Kuma tek tıkla kurulan uygulama olarak sunuyoruz. Uygulama sayfası şu anda v1 gösteriyor, dolayısıyla bu rehberdeki v2 Compose kurulumuyla örtüşmüyor. Özellikle v2'ye ihtiyacınız varsa manuel Compose yolunu izleyin.

Ters proxy ve TLS

Public traffic reaches Caddy on the host or an Nginx Proxy Manager container over HTTPS on port 443. Caddy forwards to Uptime Kuma on 127.0.0.1:3001 while the NPM container uses a shared Docker network instead. Public access to port 3001 is blocked, and first-time setup runs through an SSH tunnel to localhost:3001.

Uptime Kuma'yı doğrudan dışarı açmayın. TLS, düzgün URL yönetimi ve tek bir genel giriş noktası için önüne bir ters proxy koyun. İki yol var.

Caddy. Caddy henüz kurulu değilse resmi Ubuntu paket adımlarını izleyin. Caddy ana makinede servis olarak çalışırken, aşağıdaki Caddyfile istekleri loopback üzerindeki Uptime Kuma'ya iletir ve sertifika alma ile yenilemeyi otomatik yürütür.

İpucu: İzleme VPS'inde yalnızca Uptime Kuma çalışıyorsa Caddy kullanın. Caddyfile üç satır, sertifika alma ve yenilemeyi de Caddy otomatik hallediyor. Ne Certbot var ne de sabahın 4'ünde başında beklenecek ayrı bir yenileme zamanlayıcısı.

Bunu /etc/caddy/Caddyfile olarak kaydedin:

status.example.com {
    reverse_proxy 127.0.0.1:3001
}

Caddy'yi yeniden yükleyin:

sudo systemctl reload caddy

Doğrulayın:

curl -I https://status.example.com

Geçerli bir sertifikayla başarılı bir 2xx ya da 3xx yanıtı almalısınız. Bağlantı başarısız olursa alan adının A veya AAAA kaydının bu VPS'i gösterdiğini, 80 ve 443 portlarına erişilebildiğini ve Caddy'nin her iki porta bağlanabildiğini doğrulayın. Bunlar Caddy'nin otomatik HTTPS gereksinimlerinin bir parçası..

Nginx Proxy Manager. NPM doğrudan ana makinede çalışıyorsa status.example.com için bir Proxy Host ekleyin, 3001 portundaki 127.0.0.1'e yönlendirin, bir Let's Encrypt sertifikası isteyin ve Websockets Support'u açın. NPM Docker içinde çalışıyorsa 127.0.0.1 NPM konteynerinin kendisine işaret eder. Bu durumda NPM ile Uptime Kuma'yı aynı Docker ağına bağlayın ve proxy host'u 3001 portundaki uptime-kuma'ya yönlendirin.

Bildirim yönlendirme: Telegram, Discord, Slack

Uptime Kuma aynı monitör olayını birden çok bildirim kanalına yönlendirebilir. Her sağlayıcıyı bir kez yapılandırın, sonra uyarıya kimin ihtiyacı olduğuna göre monitöre bir veya birkaç kanal bağlayın.

Bildirimler genel olarak şuradan yapılandırılır: Ayarlar > BildirimlerArdından tek tek monitörlere atanır. Her monitör bir veya birçok kanalı tetikleyebilir. Aynı uyarı nöbetçi mühendis için Telegram'a, ekip için Slack'e ve denetim kaydı için e-postaya gidebilir; hepsi tek bir olaydan.

Telegram

  1. Telegram'da şuna mesaj atın: @BotFather ve /newbot komutunu çalıştırın. Bir ad ve bir kullanıcı adı seçin. BotFather size bir bot token'ı ile yanıt verir. Onu saklayın.
  2. Yeni botunuza herhangi bir mesaj gönderin. Sonra tarayıcıda https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates adresini açın. chat.id alanını bulun; sohbet kimliğiniz odur.
  3. Uptime Kuma'da: Ayarlar > Bildirimler > Bildirim Kur > Telegram. Bot token'ını ve sohbet kimliğini yapıştırın. Şuna tıklayın: Test. Botun test uyarısını gönderdiğini doğrulayın.
  4. Test mesajı gelmiyorsa bot token'ının ve sohbet kimliğinin doğru olduğunu kontrol edin ve VPS güvenlik duvarının api.telegram.org adresine giden HTTPS trafiğine izin verdiğini doğrulayın.

Discord

  1. Uyarıların gelmesini istediğiniz Discord sunucusunu açın. Hedef kanala sağ tıklayın, sonra Kanalı Düzenle > Entegrasyonlar > Webhook'lar > Yeni Webhook. Ona bir ad verin (örneğin "Uptime Kuma"), kanalı seçin ve webhook URL'sini kopyalayın.
  2. Uptime Kuma'da: Ayarlar > Bildirimler > Bildirim Kur > Discord. Webhook URL'sini yapıştırın. İsterseniz kullanıcı adını ve avatarı da ayarlayın.
  3. Tıkla Test. Webhook'un test uyarısını kanala gönderdiğini doğrulayın.

Slack

  1. Slack'te bir Incoming Webhook Incoming Webhook oluşturun; uyarıların gelmesini istediğiniz kanal için. Slack size https://hooks.slack.com/services/T.../B.../.... biçiminde bir webhook URL'si döner.
  2. Uptime Kuma'da: Ayarlar > Bildirimler > Bildirim Kur > Slack. Webhook URL'sini yapıştırın. İsterseniz simgeyi ve kanal geçersiz kılmasını da ayarlayın.
  3. Tıkla Test.

Tüm testler geçtikten sonra her monitörü düzenleyip kullanacağı bildirim kanallarını seçin. Kısa süreli tek bir hatanın anında uyarı tetiklememesi için Max Retries (azami deneme sayısı) ve Retry Interval (denemeler arası süre) bu iki ayarı belirleyin.

Yerleşik durum sayfası (ve ne zaman yetmemeye başlar)

Uptime Kuma; özel slug'lar, gruplanmış monitörler, özel alan adları, olay duyuruları ve planlı bakım mesajları olan herkese açık durum sayfaları sunar. Tek bir kurulumdan farklı servisler veya farklı kitleler için birden çok durum sayfası da yayımlayabilirsiniz.

Asıl kısıtı müşteri iletişiminde. Ziyaretçiler şu anda güncellemelere doğrudan bir durum sayfasından e-postayla abone olamıyor ve bu herkese açık sayfa, operatör paneliyle aynı Uptime Kuma uygulamasının parçası olmayı sürdürüyor. Ziyaretçinin kendi kendine abone olması hâlâ açık bir özellik talebi olarak izleniyor.

Müşteri abonelikleri ya da izleme panelinden ayrı bir durum sistemi gerekiyorsa Kener bir alternatif. Bu iki aracın nasıl birlikte kullanılabileceğini kendi sunucunuzda barındırdığınız izleme yığını anlatan yazımızda bulabilirsiniz.

Sık karşılaşılan sorunlar

VPS güvenlik duvarı giden HTTPS'i engellediğinde bildirimler sessizce başarısız olur. Belirti: Test düğmesi bazı kanallarda çalışıyor, bazılarında çalışmıyor. Çözüm: Giden HTTPS bağlantılarına izin verildiğini ve VPS'ten curl -I https://api.telegram.org komutunun başarılı olduğunu doğrulayın.

Tarayıcı "ERR_TOO_MANY_REDIRECTS" gösteriyor hatası proxy'yi etkinleştirdikten sonra çıkıyorsa, Caddy'de, Nginx Proxy Manager'da ya da öndeki herhangi bir CDN'de yinelenen HTTP'den HTTPS'e yönlendirmeleri kontrol edin. Uptime Kuma 3001 portunda HTTP sunmaya devam etmeli, TLS'i genel ters proxy sonlandırmalı. Güvenilir proxy başlıklarını açacaksanız güncel yol şu: Ayarlar > Reverse Proxy > HTTP Headers > Trust Proxy.

Konteyner birkaç dakikada bir yeniden başlıyor. Konteynerin bellek yetersizliğinden sonlandırılıp sonlandırılmadığını kontrol edin, sonra güncel kullanımını docker stats uptime-kuma ile izleyin. Konteyner OOM ile öldürüldüyse ya da bellek VPS sınırına yakın seyrediyorsa RAM ekleyin, ağır kontrolleri azaltın veya aralıklarını uzatın.

Durum sayfası localhost'ta çalışıyor ama genel ana bilgisayar adı üzerinden çalışmıyor. Ters proxy'nin kök yolu değiştirmeden ilettiğini, Host başlığını koruduğunu ve WebSockets desteklediğini doğrulayın. Uptime Kuma alt dizin altına kurulmayı desteklemiyor; bu yüzden example.com/uptime-kuma gibi bir yol yerine kendine ait bir alan adı veya alt alan adı kullanın.

Toparlarsak

Ayrı bir VPS üzerindeki Uptime Kuma size kontroller, uyarı yönlendirmesi ve herkese açık durum sayfası üzerinde denetim verir; ama güncellemeler, yedekler, işletim sistemi yamaları ve izleme aracının dış gözcüsü de artık sizin sorumluluğunuzdur. Üretimden farklı bir konumda bir VPS seçin, v2'yi Docker Compose ile kurun ya da listelenen sürümünü kontrol ettikten sonra tek tıkla kurulan uygulamayı kullanın, önüne Caddy koyun ve ekibinizin gerçekten izlediği kanalları bağlayın.

Sıkça Sorulan Sorular

Uptime Kuma ne kadar RAM ister?

Uptime Kuma'da monitör sayısını RAM'e bağlayan güvenilir bir formül yok, çünkü tüketim; monitör tipine, kontrol aralığına, yeniden deneme ayarlarına, geçmiş saklama süresine ve Browser Engine kullanımına göre değişir. Küçük bir temel kontrol seti için 1 GB RAM ile başlayın ve gerçek kullanımı docker stats uptime-kuma ile izleyin. Kullanım sınıra yakın seyrediyorsa ya da konteyner OOM ile öldürülüyorsa bellek ekleyin.

Uptime Kuma'yı uygulamamla aynı sunucuda çalıştırmalı mıyım?

Hayır. İzleme aracı ile uygulama aynı sunucuyu paylaşıyorsa, bir arıza ikisini aynı anda devre dışı bırakır ve tam da en çok ihtiyaç duyduğunuz anda uyarıyı kaybedersiniz. Uptime Kuma'yı ayrı bir VPS'te, tercihen farklı bir veri merkezinde çalıştırın.

Uptime Kuma Telegram, Discord ve Slack'e uyarı gönderebilir mi?

Evet. Telegram, Discord ve Slack; e-posta, genel webhook'lar, PagerDuty, ntfy, Mattermost ve daha pek çoğunun yanında yerleşik bildirim servisleri arasında. Telegram bot token'ı ve sohbet kimliği kullanır, Discord ile Slack ise webhook URL'leri kullanır. Aynı monitöre birden çok bildirim kanalı bağlayabilirsiniz.

Uptime Kuma ile UptimeRobot arasındaki fark nedir?

Uptime Kuma'yı kendi sunucunuzda barındırırsınız; yani sunucu, güncellemeler, yedekler ve uyarı yönlendirmesi sizin işiniz. 20 saniyeye kadar inen kontrol aralıklarını destekler. UptimeRobot ise barındırılan bir SaaS ve mevcut ücretsiz planı beş dakikalık kontrollerle 50 monitör içeriyor. Denetim istiyorsanız Uptime Kuma'yı, izleme sunucusunu işletmek istemiyorsanız UptimeRobot'u seçin.

Uptime Kuma'nın herkese açık bir durum sayfası var mı?

Evet. Hangi monitörlerin görüneceğini seçebilir, onları gruplayabilir, birden çok durum sayfası yayımlayabilir, bunları özel alan adlarıyla eşleyebilir ve bakım mesajlarını planlayabilirsiniz. Ziyaretçinin e-postayla kendi kendine abone olması yerleşik değil; müşterilerin güncellemelere abone olması gerekiyorsa ayrı, müşteriye dönük bir durum sayfası aracı kullanın.

Paylaş

Bloga göz at

Okumaya devam et.

Dağıtmaya hazır mısın? 2,48 $/ay'dan başlayan fiyatlarla.

2008'den beri bağımsız bulut. AMD EPYC, NVMe, 40 Gbps. 14 gün para iade garantisi.