Sitenizin veya API'nizin çöktüğünü müşterinizden duymak, bir sunucu yöneticisinin en sevmediği durumdur. Uptime Kuma, bu işi sizin yerinize yapan, kendi sunucunuzda çalıştırdığınız açık kaynaklı bir erişilebilirlik izleme aracıdır. Belirlediğiniz adresleri düzenli aralıklarla kontrol eder, bir hizmet yanıt vermediğinde Telegram, e-posta veya başka bir kanaldan haber verir ve isterseniz ziyaretçilerinize açık bir durum sayfası (status page) yayınlar.
Bu rehberde Uptime Kuma'yı projenin resmî Docker Compose dosyasıyla bir Ubuntu 24.04 VPS'e kuruyor, yönetim panelini yalnızca 127.0.0.1 üzerinde dinletip Nginx ve Let's Encrypt ile HTTPS arkasına alıyor, ilk izleyicileri ve bildirimleri ayarlıyor, güncelleme ve yedekleme adımlarını anlatıyoruz. Komutların hepsi projenin GitHub README'si ve resmî wiki sayfalarıyla karşılaştırıldı.
Uptime Kuma nedir, kimler için uygundur?

Uptime Kuma, README'deki tanımıyla "kullanımı kolay, kendi sunucunuzda barındırdığınız bir izleme aracı"dır. Lisansı MIT'dir; ücretsizdir ve ticari kullanım dahil serbestçe kullanılabilir. Tek bir web arayüzünden birçok hizmeti izleyebildiği için birkaç siteyi yöneten ajanslar, kendi SaaS ürününü işleten küçük ekipler ve evdeki hizmetlerini takip etmek isteyen meraklılar için uygundur. Resmî belgelerde sabit bir RAM veya CPU alt sınırı verilmez; küçük bir VPS genellikle yeterlidir, ancak izleyici sayısı ve kontrol sıklığı arttıkça kaynak kullanımı da artar.
README'de listelenen başlıca özellikler şunlardır:
| Özellik | Açıklama |
|---|---|
| İzleyici türleri | HTTP(s), TCP, HTTP(s) Keyword, HTTP(s) Json Query, Websocket, Ping, DNS Record, Push, Steam Game Server, Docker Containers |
| Bildirimler | Telegram, Discord, Gotify, Slack, Pushover, Email (SMTP) ve 90'dan fazla bildirim servisi |
| Kontrol aralığı | 20 saniyeye kadar inen aralıklar |
| Durum sayfaları | Birden fazla durum sayfası; her sayfayı ayrı bir alan adına bağlayabilme |
| Diğer | Ping grafiği, sertifika bilgisi, proxy desteği, iki adımlı doğrulama (2FA) |
Bu tabloyu genel bir sunucu izleme yaklaşımıyla birlikte düşünmek için sunucu izlemenin temelleri yazısına da göz atabilirsiniz. Uptime Kuma dışarıdan "site açılıyor mu?" sorusunu yanıtlar; CPU, RAM ve disk gibi iç metrikler için Prometheus ve Grafana gibi araçlar daha uygundur.
Önemli: izleme sunucusunu ayrı tutun
Uptime Kuma'yı izlediği sitelerle aynı sunucuya kurarsanız, o sunucu tamamen çöktüğünde izleme aracı da onunla birlikte kapanır ve size hiçbir bildirim gelmez. Bu yüzden Uptime Kuma'yı izlenen sistemlerden farklı bir sunucuda, mümkünse farklı bir veri merkezinde çalıştırmanızı öneririz. Küçük ve ayrı bir VPS bu iş için idealdir. Ayrıca Uptime Kuma sunucusunun kendisini de izlemek için ikinci bir yöntem (başka bir izleme hizmeti veya ikinci bir Uptime Kuma örneği) düşünebilirsiniz.
Ön koşullar
- Ubuntu 24.04 LTS kurulu bir VPS ve SSH ile bağlanabildiğiniz sudo yetkili bir kullanıcı,
- Docker Engine ve Docker Compose eklentisi. Kurulum için Docker Docs: Install Docker Engine on Ubuntu sayfasını izleyin; Compose temelleri için Docker Compose başlangıç rehberi yazımız işinizi görür,
- Panel için bir alt alan adı (örnek:
status.ornekalan.com) ve bu adın sunucu IP'nize yönlenen bir A kaydı, - Etkin bir güvenlik duvarı. Henüz yoksa UFW rehberimizi izleyin.
Adım 1: Docker Compose ile kurulum
README'deki resmî yöntem, projenin compose.yaml dosyasını indirip çalıştırmaktır:
mkdir uptime-kuma
cd uptime-kuma
curl -o compose.yaml https://raw.githubusercontent.com/louislam/uptime-kuma/master/compose.yamlİndirilen dosya, 3001 numaralı portu tüm ağ arayüzlerinde yayınlar. README de "Uptime Kuma artık tüm ağ arayüzlerinde çalışıyor" uyarısını verir ve yalnızca localhost'a açmak için 127.0.0.1:3001:3001 biçimini gösterir. Panel Nginx arkasında çalışacağı için dosyayı şöyle düzenleyin:
services:
uptime-kuma:
image: louislam/uptime-kuma:2
restart: unless-stopped
volumes:
- ./data:/app/data
ports:
# Yalnızca sunucunun kendisinden erişilebilir
- "127.0.0.1:3001:3001"Ardından konteyneri başlatın ve günlüklere bakın:
docker compose up -d
docker compose logs -fHangi imaj etiketini kullanmalı?
Docker Tags wiki sayfasına göre latest etiketi kullanımdan kaldırılmıştır ve hâlâ v1 sürümünü gösterir. Önerilen etiket 2'dir (v2'nin en son sürümü). Daha küçük bir imaj isterseniz 2-slim etiketi vardır; ancak slim imajda gömülü MariaDB ve "Browser Engine" izleyicisi için gömülü Chromium bulunmaz. Canlı ortamda beklenmedik büyük değişikliklerden kaçınmak için sürüm notlarını okuyup 2.x.x biçiminde belirli bir sürüme sabitlemeniz daha kontrollü bir yöntemdir.
Adım 2: Nginx ters vekil ve Let's Encrypt
Uptime Kuma, arayüzünü WebSocket üzerinden günceller. Wiki'deki Reverse Proxy sayfası bu nedenle ters vekilde iki ek başlığa, Upgrade ve Connection başlıklarına ihtiyaç olduğunu açıkça belirtir. Bu başlıklar eksikse panel açılır ama sürekli bağlanmaya çalışır veya boş kalır. Ters vekil kavramına yabancıysanız önce reverse proxy nedir yazısını okuyabilirsiniz.
Nginx'i kurun ve /etc/nginx/sites-available/uptime-kuma dosyasını oluşturun. Aşağıdaki yapılandırma wiki'deki örneklere dayanır:
sudo apt update
sudo apt install nginx
sudo nano /etc/nginx/sites-available/uptime-kumaserver {
listen 80;
server_name status.ornekalan.com;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://localhost:3001/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}Siteyi etkinleştirip Nginx yapılandırmasını test edin, ardından HTTP ve HTTPS trafiğine izin verin. Server block mantığı için Nginx server block rehberi yazımıza bakabilirsiniz.
sudo ln -s /etc/nginx/sites-available/uptime-kuma /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo ufw allow 'Nginx Full'Wiki, Nginx kullanıyorsanız sertifika için Certbot önerir: önce HTTP yapılandırmasını kurup sonra Certbot'u çalıştırırsanız Certbot sertifikayı alır, HTTPS yönlendirmesini ekler ve yenilemeyi otomatik yapar. Ubuntu'da:
sudo apt install python3-certbot-nginx
sudo certbot --nginx -d status.ornekalan.comCertbot ile ilgili ayrıntılar ve yenileme testi için Let's Encrypt SSL kurulumu yazımıza ve Certbot (EFF) sitesine bakabilirsiniz.
Adım 3: İlk açılış ve yönetici hesabı

Tarayıcıda https://status.ornekalan.com adresini açın. v2 sürümünde kurulum önce hangi veritabanını kullanmak istediğinizi sorar: SQLite (küçük kurulumlar için önerilen basit dosya veritabanı), tam imajdaki gömülü MariaDB veya harici bir MariaDB. Az sayıda izleyici için SQLite yeterlidir. Ardından "Create your admin account" ekranında yönetici kullanıcı adını ve güçlü bir parola belirleyin.
- Kurulumu tamamlamadan paneli herkese açık bırakmayın; ilk hesabı kim oluşturursa yönetici o olur.
- Settings > Security bölümünden iki adımlı doğrulamayı (2FA) etkinleştirin.
- Parolanızı unutursanız wiki'deki yöntemle sıfırlayabilirsiniz:
docker exec -it KONTEYNER_ADI bashile konteynere giripnpm run reset-passwordkomutunu çalıştırın.
Adım 4: İzleyici ve bildirim ekleme
Add New Monitor düğmesiyle ilk izleyicinizi ekleyin. En sık kullanılan türler ve kullanım amaçları:
| İzleyici türü | Ne zaman kullanılır? |
|---|---|
| HTTP(s) | Bir web sitesinin veya API uç noktasının başarılı yanıt verip vermediğini kontrol etmek için |
| HTTP(s) Keyword | Sayfa açılsa bile içinde belirli bir metnin bulunup bulunmadığını doğrulamak için (örneğin hata sayfası yerine gerçek içerik) |
| TCP | Bir portun açık olup olmadığını kontrol etmek için (ör. SMTP veya veritabanı portu, yalnızca izin verdiğiniz kaynaktan) |
| Ping | Sunucunun ağ seviyesinde ayakta olup olmadığını görmek için |
| DNS Record | Bir DNS kaydının beklenen değeri döndürüp döndürmediğini izlemek için |
| Push | Dışarıdan erişilemeyen işler için: izlenen sistem düzenli olarak Uptime Kuma'nın verdiği adrese istek atar; istek gelmezse alarm üretilir (ör. yedekleme betiği veya cron işi) |
İzleyici formunda Friendly Name, URL, Heartbeat Interval, Retries ve Heartbeat Retry Interval alanlarını göreceksiniz. Geçici ağ dalgalanmalarında gereksiz alarm almamak için birkaç yeniden deneme tanımlamak mantıklıdır. v2 geçiş belgesine göre yeni oluşturulan izleyicilerde varsayılan yeniden deneme sayısı 0'dır; bunu ihtiyacınıza göre artırın. HTTPS izleyicilerinde sertifika süresi bitmeden uyarı almak için Certificate Expiry Notification seçeneğini de açabilirsiniz.
Telegram bildirimi
- Telegram'da
@BotFatherile yeni bir bot oluşturun ve verilen tokenı kopyalayın. - Bota bir mesaj gönderin, ardından tarayıcıda
https://api.telegram.org/botTOKENINIZ/getUpdatesadresini açarakchat_iddeğerini bulun. Uptime Kuma'nın Telegram formu da bu yöntemi gösterir. - Uptime Kuma'da Settings > Notifications > Set Up Notification yolunu izleyin, türü Telegram seçin, Bot Token ve Chat ID alanlarını doldurup test mesajı gönderin.
- Bildirimi yeni izleyicilerde otomatik açmak için Default enabled, mevcut tüm izleyicilere uygulamak için Apply on all existing monitors seçeneklerini kullanabilirsiniz.
E-posta (SMTP) bildirimi
Email (SMTP) türünde SMTP sunucu adresi, port, güvenlik türü, kullanıcı adı ve parola girilir. Port seçimi için SMTP portları rehberimize bakın. v2 ile e-posta konu ve gövde şablonları LiquidJS'e geçti; geçiş belgesine göre değişken adları artık büyük-küçük harfe duyarlıdır ve desteklenen değişkenler name, msg, status, heartbeatJSON, monitorJSON ve hostnameOrUrl'dir.
Adım 5: Durum sayfası (status page)

Status Pages > Add New Status Page ile müşterilerinize açık bir durum sayfası oluşturabilirsiniz. Wiki'ye göre durum sayfası sonuçları 5 dakika önbelleğe alır ve sayfa her 5 dakikada bir yenilenir; yani yönetim paneli kadar anlık değildir. Durum sayfasını ayrı bir alan adına (ör. durum.ornekalan.com) bağlamak için:
- Alan adı için DNS'te A veya CNAME kaydı oluşturun.
- Nginx'te bu alan adı için de aynı ters vekil yapılandırmasını ekleyin. Wiki, Nginx'in
HostveyaX-Forwarded-Hostbaşlığını iletmesi gerektiğini, aksi halde Uptime Kuma'nın hangi alan adının istendiğini bilemeyeceğini belirtir. Yukarıdaki yapılandırmaHost $hostsatırını zaten içerir. - Durum sayfası ayarlarındaki kenar çubuğundan alan adını ekleyin ve Certbot ile bu alan adı için de sertifika alın.
Güncelleme
Wiki'deki Docker Compose güncelleme adımları şunlardır:
cd ~/uptime-kuma
docker compose pull
docker compose up -d --force-recreateBelirli bir sürüme sabitlediyseniz önce compose.yaml içindeki etiketi yeni sürümle değiştirin. Güncellemeden önce aşağıdaki yöntemle yedek alın.
Yedekleme
v2 geçiş belgesine göre eski JSON yedekleme/geri yükleme özelliği kaldırılmıştır ve şu anda desteklenen tek yedekleme yöntemi data klasörünü yedeklemektir. Veritabanı dosyasının tutarlı olması için konteyneri kısa süreliğine durdurup klasörü arşivleyin:
cd ~/uptime-kuma
docker compose stop
sudo tar czf ~/uptime-kuma-yedek-$(date +%F).tar.gz data
docker compose startArşivi mutlaka başka bir sunucuya veya depolama alanına kopyalayın. Düzenli ve sunucu dışı yedek için rsync ile sunucu yedekleme yazımızdaki yöntemi kullanabilirsiniz. Geri yüklemek için konteyneri durdurup data klasörünü arşivdekiyle değiştirmeniz ve yeniden başlatmanız yeterlidir.
Sık karşılaşılan sorunlar
| Belirti | Olası neden | Çözüm |
|---|---|---|
| Panel açılıyor ama sürekli "bağlanıyor" durumunda kalıyor | Ters vekilde WebSocket başlıkları eksik | proxy_http_version 1.1, Upgrade ve Connection "upgrade" satırlarını ekleyin; Cloudflare'de WebSockets'i açın |
| Alan adında 502 hatası | Konteyner çalışmıyor veya port eşlemesi farklı | docker compose ps ve docker compose logs ile kontrol edin; ayrıntı için 502/504 hata rehberi |
| Hizmet erişilebilir olduğu halde DOWN görünüyor | Docker ağ yapılandırması veya güvenlik duvarı | Wiki'deki gibi docker exec -it uptime-kuma bash ile konteynere girip curl veya ping ile test edin (Compose'ta konteyner adı farklı olabilir, docker compose ps ile bakın) |
| Yalnızca IPv6 olan bir hedef izlenemiyor | Docker'da IPv6 varsayılan olarak açık değil | Wiki'deki gibi Compose dosyasına enable_ipv6: true olan bir ağ ekleyin |
| Veritabanı bozulması | Veri klasörü NFS gibi ağ dosya sisteminde | Veriyi yerel diske taşıyın, yedekten geri yükleyin |
Sık Sorulan Sorular
Uptime Kuma ücretli mi?
Hayır. Uptime Kuma MIT lisanslı açık kaynak bir projedir. Yalnızca çalıştırdığınız sunucunun maliyeti size aittir.
Uptime Kuma'yı izlediğim siteyle aynı sunucuya kurabilir miyim?
Teknik olarak mümkündür, ancak sunucu tamamen çöktüğünde izleme aracı da kapanacağı için size bildirim gelmez. İzleme sunucusunu ayrı tutmanızı öneririz.
Paneli alt dizinde (ornekalan.com/izleme) yayınlayabilir miyim?
Resmî wiki'ye göre alt dizin desteklenmez. Bir alan adı veya alt alan adı kullanmanız gerekir.
Docker olmadan kurulabilir mi?
Evet. README, Node.js 20.4 veya üstü, Git ve arka planda çalıştırmak için PM2 ile kurulum yöntemi de sunar. Ancak bu rehberde güncelleme ve yedeklemeyi kolaylaştırdığı için Docker Compose yöntemini kullandık.
Hangi veritabanını seçmeliyim?
Az sayıda izleyici için kurulum ekranında da önerildiği gibi SQLite yeterlidir. Wiki'ye göre mevcut bir SQLite veritabanını MariaDB'ye doğrudan taşımak resmî olarak desteklenmez; bu yüzden büyük ölçekli kullanım planlıyorsanız seçimi baştan yapın.
Yazılım ve hizmet adları sahiplerine aittir. Bu yazı bağımsız bir teknik rehberdir; adı geçen projeler veya şirketlerle ortaklık ilişkisi bulunduğu anlamına gelmez.
İlgili içerikler: Coolify kurulumu · Portainer ile Docker yönetimi · n8n kurulumu · Load average ve yüksek load · Sunucu izleme temelleri · UFW güvenlik duvarı · Let's Encrypt SSL · VPS güvenlik sertleştirme