Uptime Kuma: VPS üzerinde kendi web sitesi izleme sisteminizi kurma
Bir web sitesi 200 OK döndürmeye devam ederken bozulabilir. Bir yedekleme işlemi de belirgin bir hata göstermeden durabilir. Uptime Kuma her iki durumu da algılar: web sitelerini, API'leri, portları ve arka plan görevlerini kontrol eder, bir şey ters gittiğinde bildirim gönderir.
Bu yazıda izleme sisteminin nerede barındırılacağını, nasıl bir VPS'e ihtiyaç duyduğunu ve Uptime Kuma 2'nin nasıl kurulacağını ele alacağız. Ayrıca HTTPS'i etkinleştirecek, Telegram'ı bağlayacak ve bir durum sayfası oluşturacağız.
Uptime Kuma yedi adımda
Minimum kurulum şu şekildedir:
- İzlenecek projelerden ayrı, küçük bir VPS ayırın.
monitor.example.comgibi bir alt alan adını VPS'e yönlendirin.- Docker'ı kurun ve Uptime Kuma 2'yi başlatın.
- Dahili
3001portunu kapatın ve HTTPS'i etkinleştirin. - HTTP, DNS, TCP veya push monitörleri oluşturun.
- Telegram'ı ve gerektiğinde bir durum sayfasını yapılandırın.
- Güncellemeleri ve veri dizininin harici yedeğini ayarlayın.
Uptime Kuma nedir?
Uptime Kuma ücretsiz, açık kaynaklı ve self-hosted bir araçtır. Dashboard'u ve kontrol geçmişi kendi sunucunuzda saklanır.
HTTP(S), TCP portları, ping, DNS, WebSocket, yanıtlardaki metin ve JSON verileri, push sinyalleri ve Docker container'larını izleyebilir. Minimum kontrol aralığı 20 saniyedir. Ayrıca onlarca bildirim kanalı, 2FA, gecikme grafikleri, TLS sertifikası izleme ve birden fazla durum sayfası sunar.
200 OK arkasındaki hatayı algılama
Basit bir HTTP kontrolü yalnızca yanıt kodunu görür. Oysa bir web sunucusu boş bir sayfa veya uygulama hata ekranı gösterebilir ve yine de başarılı bir durum döndürebilir.
Daha doğru izleme için şunları kullanın:
- Keyword — web sitesinin adı veya “Account dashboard” metni gibi beklenen bir ifadeyi arar;
- JSON Query — API yanıtındaki bir değeri kontrol eder; örneğin
status: healthy.
Böylece monitör yalnızca porta erişilebildiğini değil, uygulamanın doğru çalıştığına dair en az bir beklenen işaret gösterdiğini de doğrular.
Yedeklemeler ve cron görevleri için Push monitörü
Push monitörü bir hizmeti yoklamaz. Bunun yerine, o hizmetten düzenli bir sinyal bekler. Bir yedekleme betiği veya cron görevi başarılı şekilde tamamlandıktan sonra benzersiz bir URL'yi çağırır. Sinyal zamanında ulaşmazsa Uptime Kuma hata bildirir.
Bu, “sessiz” bir sorunu tespit etmeye yardımcı olur: web sitesi hâlâ çalışıyordur, ancak birkaç gündür günlük yedek oluşturulmuyordur.
Uptime Kuma'nın yerini tutmadığı araçlar
Uptime Kuma öncelikle erişilebilirliği ve yanıt süresini izler. CPU, RAM, disk, günlükler ve container metrikleri için onu Prometheus, Netdata, Zabbix veya başka bir izleme sistemiyle tamamlayın: Kuma sorunu dışarıdan fark ederken metrikler nedenini belirlemenize yardımcı olur.
İzleme neden ayrı bir VPS'te çalışmalı?
Uptime Kuma web sitesinin yanında kuruluysa VPS, ağ veya veri merkezindeki bir arıza hem projeyi hem de izleme sistemini devre dışı bırakabilir. Bildirim hiç gönderilemeyebilir.
Dashboard'u ayrı bir VPS'te, önemli projeler içinse başka bir konumda veya başka bir sağlayıcıda barındırın. Kuma'nın kendisini harici bir hizmetle izlemek de yararlıdır: izleme sistemini de birinin izlemesi gerekir.
Uptime Kuma sunucu gereksinimleri
Proje CPU ve RAM için katı bir resmî minimum tanımlamaz. Küçük bir kurulum için pratik başlangıç yapılandırması şöyledir:
- 1 vCPU;
- 1 GB RAM;
- 10 GB SSD;
- Ubuntu 24.04 LTS;
- IPv4;
- HTTPS için bir alan adı veya alt alan adı.
Bu yapılandırma genellikle birkaç düzine basit kontrol için yeterlidir. Yüzlerce monitör, uzun süreli geçmiş saklama veya tarayıcı tabanlı kontroller için 2 GB RAM ya da daha fazlasını seçin.
VPS'e Uptime Kuma nasıl kurulur?
Bu örnekte Ubuntu 24.04 ve monitor.example.com alt alan adı kullanılır.
1. DNS'i ve güvenlik duvarını yapılandırın
VPS'in IPv4 adresini gösteren bir A DNS kaydı oluşturun. SSH ile bağlanın ve gerekli portları açın:
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enableYeni bir bağlantıyı test edene kadar mevcut SSH oturumunu kapatmayın.
2. Docker ve Docker Compose'u kurun
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose version3. Uptime Kuma 2'yi başlatın
mkdir -p /opt/uptime-kuma
cd /opt/uptime-kuma
cat > compose.yaml <<'EOF'
services:
uptime-kuma:
image: louislam/uptime-kuma:2
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
EOF
docker compose up -d
docker compose ps:2 etiketini kullanın: latest hâlâ güncel olmayan v1 dalına atanmıştır. /app/data dizini yerel diskte veya normal bir Docker volume'ünde saklanmalıdır. NFS ve uygun dosya kilitlemesi olmayan depolama sistemleri veritabanını bozabilir.
3001 portuna yalnızca 127.0.0.1 üzerinden erişilebilir. HTTPS kullanan bir reverse proxy dashboard'u dışarıya yayınlar.
4. Caddy ile HTTPS'i etkinleştirin
apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
monitor.example.com {
reverse_proxy 127.0.0.1:3001
}
EOF
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddyDNS VPS'i gösteriyorsa Caddy otomatik olarak bir TLS sertifikası ister ve WebSocket bağlantılarını proxy'ler. Dashboard'u bir alan adının veya alt alan adının kökünde barındırın: example.com/kuma gibi bir adres desteklenmez.
5. Yönetici hesabını oluşturun
https://monitor.example.com adresini açın, uzun ve benzersiz bir parola ile hesap oluşturun ve iki faktörlü kimlik doğrulamayı etkinleştirin.
İlk monitör nasıl eklenir?
Add New Monitor düğmesine tıklayın ve HTTP(s) seçeneğini seçin:
- Bir ad ve tam URL girin.
- Örneğin 60 saniyelik bir aralık ayarlayın.
- Ara sıra yaşanan ağ hatalarını karşılamak için iki yeniden deneme ekleyin.
- Bir bildirim kanalı seçin.
- Monitörü kaydedin ve başarılı kontrollerin görünmeye başladığını doğrulayın.
Ana web sitesi için HTTP ve Keyword kontrolleri yararlıdır. Bir API için health endpoint ve JSON Query kullanın. Sırf izleme amacıyla veritabanlarını veya yönetim portlarını internete açmayın; güvenilir bir ağ ya da VPN kullanın.
Yedekleme için Push monitörü örneği
Bir Push monitörü oluşturduktan sonra benzersiz URL'sini betiğin sonuna ekleyin:
backup-command && \
curl -fsS "https://monitor.example.com/api/push/SECRET_TOKEN?status=up&msg=backup-ok"İstek yalnızca yedekleme başarılı olduktan sonra çalışır. Push token'ını parola gibi koruyun: URL'yi bilen herkes sahte bir sinyal gönderebilir.
Telegram nasıl bağlanır?
@BotFather üzerinden bir bot oluşturun, ona bir mesaj gönderin, ardından Settings → Notifications → Telegram bölümünü açın. Bot Token ve Chat ID bilgilerini girin, Test düğmesine tıklayın ve kanalı monitörlerinize atayın. Kritik hizmetler için e-posta gibi ikinci bir kanal ekleyin.
Durum sayfası nasıl oluşturulur?
Status Pages bölümünde monitörleri gruplayabilir, mevcut durumu ve çalışma süresi geçmişini gösterebilir, bir alan adı atayabilir ve Maintenance üzerinden planlı çalışmaları bildirebilirsiniz. Dahili IP adreslerini veya teknik URL'leri yayınlamayın: müşterilerin yalnızca “Website”, “API”, “Account dashboard” ve “Payments” gibi bileşenleri görmesi gerekir.
Uptime Kuma'yı güncelleme ve yedekleme
Büyük bir güncellemeden önce container'ı durdurun ve veri dizinini kaydedin:
cd /opt/uptime-kuma
docker compose down
tar -czf /root/uptime-kuma-$(date +%F).tar.gz \
data compose.yaml
docker compose up -dArşivi başka bir cihaza veya harici depolamaya taşıyın. Aynı VPS'teki bir kopya, sunucunun silinmesine veya disk arızasına karşı koruma sağlamaz.
Düzenli bir güncelleme için:
cd /opt/uptime-kuma
docker compose pull
docker compose up -d --force-recreateBaşlangıçtan sonra docker compose ps komutunu kontrol edin, dashboard'u açın ve bir test bildirimi gönderin.
Uptime Kuma için hangi VPS seçilmeli?
Küçük bir kurulum için 1 vCPU ve 1 GB RAM'e sahip bir Linux VPS yeterlidir. Ham performanstan çok bağımsızlık önemlidir: ana proje kullanılamadığında monitör çalışmaya devam etmelidir.
İzlenen hizmetler başka bir platformda veya bağımsız bir node'da çalışıyorsa Uptime Kuma'yı tropic.host VPS'inde barındırabilirsiniz. Ubuntu, Docker ve statik IP dashboard'u hızlıca başlatmayı sağlar; kontrol sayısı arttıkça kaynakları yükseltebilirsiniz.
Üretim sistemi zaten aynı altyapıda çalışıyorsa başka bir node seçin veya harici bir yedek monitör ekleyin. Hata alanlarını ayırmak, fazladan bir CPU çekirdeği eklemekten daha faydalıdır.
Yaygın hatalar
| Hata | Neden sorun yaratır | Daha iyi yaklaşım |
|---|---|---|
| İzleme proje ile aynı yerde çalışıyor | Ortak bir kesinti hem hizmeti hem bildirimleri devre dışı bırakır | Ayrı bir VPS veya konum kullanın |
3001 portu herkese açık | Dashboard reverse proxy veya HTTPS olmadan erişilebilir | Portu 127.0.0.1 adresine bağlayın |
Yalnızca 200 durum kodu kontrol ediliyor | Uygulama hatası başarı gibi görünebilir | Keyword veya JSON Query ekleyin |
latest etiketi kullanılıyor | Güncel olmayan v1 dalını gösterir | louislam/uptime-kuma:2 kullanın |
| Yedek aynı VPS'te saklanıyor | Sunucuyla birlikte yok olur | data dizinini başka yere kopyalayın |
Özet
Uptime Kuma küçük bir VPS'i web siteleri, API'ler, DNS, portlar, sertifikalar ve arka plan görevleri için kendi izleme merkezinize dönüştürür. Keyword bozuk bir sayfayı tespit etmeye, JSON Query hatalı bir API yanıtını yakalamaya, Push ise durmuş bir yedekleme veya cron görevini göstermeye yardımcı olur.
Güvenilir bir kurulum için izleme sistemini üretimden ayrı barındırın, 3001 portunu kapatın, HTTPS ve 2FA'yı etkinleştirin ve iki bildirim kanalı yapılandırın. Ardından veri dizininin harici yedeğini ve Uptime Kuma'nın kendisi için bağımsız bir kontrolü ayarlayın.
SSS
Uptime Kuma ücretsiz mi?
Evet. Proje açık kaynaklıdır ve MIT lisansı altında dağıtılır. Yalnızca altyapı, alan adı ve harici yedekler için ödeme yaparsınız.
Uptime Kuma ne kadar RAM gerektirir?
Küçük bir kurulum için 1 GB RAM mantıklı bir başlangıçtır. Yüzlerce kontrol, uzun süreli geçmiş saklama veya Browser Engine için 2 GB ya da daha fazlasını ayırın.
Uptime Kuma Docker olmadan kurulabilir mi?
Evet, Node.js ve PM2 kullanabilirsiniz. Ancak Docker Compose genellikle VPS'te güncelleme, taşıma ve geri yükleme işlemlerini kolaylaştırır.
Uptime Kuma alan adı olmadan kullanılabilir mi?
Teknik olarak evet; IP adresi veya SSH tüneli üzerinden kullanılabilir. Kalıcı internet erişimi için HTTPS kullanan bir alt alan adı daha güvenlidir.
Uptime Kuma CPU, RAM ve disk kullanımını gösterir mi?
Tam özellikli bir sunucu metrik sistemi olarak göstermez. Sunucu kaynaklarını izlemek için onu Prometheus, Netdata, Zabbix veya başka bir uzmanlaşmış araçla tamamlayın.
