Tropic Host

VPS üzerinde Uptime Kuma: web sitesi ve sunucu izleme kurulumu

7 dk okuma
Tropic
VPS üzerinde Uptime Kuma: web sitesi ve sunucu izleme kurulumu

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:

  1. İzlenecek projelerden ayrı, küçük bir VPS ayırın.
  2. monitor.example.com gibi bir alt alan adını VPS'e yönlendirin.
  3. Docker'ı kurun ve Uptime Kuma 2'yi başlatın.
  4. Dahili 3001 portunu kapatın ve HTTPS'i etkinleştirin.
  5. HTTP, DNS, TCP veya push monitörleri oluşturun.
  6. Telegram'ı ve gerektiğinde bir durum sayfasını yapılandırın.
  7. 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 enable

Yeni 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 version

3. 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 caddy

DNS 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:

  1. Bir ad ve tam URL girin.
  2. Örneğin 60 saniyelik bir aralık ayarlayın.
  3. Ara sıra yaşanan ağ hatalarını karşılamak için iki yeniden deneme ekleyin.
  4. Bir bildirim kanalı seçin.
  5. 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 -d

Arş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-recreate

Baş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

HataNeden sorun yaratırDaha iyi yaklaşım
İzleme proje ile aynı yerde çalışıyorOrtak bir kesinti hem hizmeti hem bildirimleri devre dışı bırakırAyrı bir VPS veya konum kullanın
3001 portu herkese açıkDashboard reverse proxy veya HTTPS olmadan erişilebilirPortu 127.0.0.1 adresine bağlayın
Yalnızca 200 durum kodu kontrol ediliyorUygulama hatası başarı gibi görünebilirKeyword veya JSON Query ekleyin
latest etiketi kullanılıyorGüncel olmayan v1 dalını gösterirlouislam/uptime-kuma:2 kullanın
Yedek aynı VPS'te saklanıyorSunucuyla birlikte yok olurdata 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.