Ana içeriğe geç
Kategoriye Dön

Uptime Kuma Kurulumu: Self-Hosted Uptime Monitoring

Uptime Kuma kurulumu Docker ile, HTTP/TCP/DNS/ping monitörleme, bildirim entegrasyonları (Telegram, Discord, email), status page oluşturma ve alert yapılandırması.

Okuma süresi: 12 dk Self-Hosting
uptime-kumamonitoringuptimeself-hostingdockerbildirimstatus page

İçindekiler

Uptime Kuma Kurulumu: Self-Hosted Uptime Monitoring

Uptime Kuma, servislerinizin ve web sitelerinizin çalışma durumunu izleyen, self-hosted bir uptime monitoring aracıdır. Güzel bir web arayüzü, çeşitli monitör türleri ve zengin bildirim entegrasyonlarıyla Uptime Robot'a harika bir alternatif sunar.

Uptime Kuma Nedir?

Uptime Kuma'nın öne çıkan özellikleri:

  • Monitör Türleri: HTTP(S), TCP, DNS, Ping, Docker Container, Steam Game Server
  • Bildirim Kanalları: Telegram, Discord, Slack, Email, PagerDuty, Webhook ve 90+ entegrasyon
  • Status Page: Özelleştirilebilir durum sayfası
  • SSL İzleme: Sertifika son kullanma tarihi takibi
  • Maintenance Window: Planlı bakım penceresi tanımlama
  • 2FA Desteği: İki faktörlü kimlik doğrulama
  • Çoklu Dil: Türkçe dahil 40+ dil

Kurulum

Docker ile Kurulum (Önerilen)

hljs bash
docker run -d \
  --name uptime-kuma \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  louislam/uptime-kuma:latest

Kurulum tamamlandıktan sonra:

http://SUNUCU_IP:3001

Docker Compose ile Kurulum

hljs yaml
# docker-compose.yml
version: '3.8'
services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - uptime-kuma:/app/data
    security_opt:
      - no-new-privileges:true

volumes:
  uptime-kuma:
hljs bash
docker compose up -d

Nginx Reverse Proxy ile HTTPS

hljs nginx
# /etc/nginx/sites-available/uptime.example.com
server {
    listen 80;
    server_name uptime.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name uptime.example.com;

    ssl_certificate /etc/letsencrypt/live/uptime.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/uptime.example.com/privkey.pem;

    location / {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}
hljs bash
sudo ln -s /etc/nginx/sites-available/uptime.example.com /etc/nginx/sites-enabled/
sudo certbot --nginx -d uptime.example.com
sudo nginx -t && sudo systemctl reload nginx

İlk Kurulum

Web arayüzüne ilk girişte admin hesabı oluşturun:

  1. Kullanıcı adı ve şifre belirleyin
  2. Giriş yapın
  3. Add New Monitor ile ilk monitörü ekleyin

Monitör Türleri

HTTP(S) Monitörü

Web sitesi ve API endpoint'lerini izlemek için:

Monitor Type: HTTP(S)
Friendly Name: Ana Sayfa
URL: https://example.com
Heartbeat Interval: 60 saniye
Retries: 3
Accepted Status Codes: 200-299

Gelişmiş HTTP ayarları:

hljs bash
# Keyword monitoring (sayfada belirli metin arama)
Monitor Type: HTTP(S) - Keyword
Keyword: "Hoş geldiniz"

# JSON Query monitoring (API response kontrolü)
Monitor Type: HTTP(S) - JSON Query
JSON Path: $.status
Expected Value: ok

# Basic Auth gerektiren endpoint
Authentication: Basic Auth
Username: api_user
Password: api_password

TCP Port Monitörü

Monitor Type: TCP Port
Friendly Name: MySQL Veritabanı
Hostname: db.example.com
Port: 3306
Heartbeat Interval: 120 saniye

DNS Monitörü

Monitor Type: DNS
Friendly Name: DNS Kontrolü
Hostname: example.com
Resolver Server: 8.8.8.8
DNS Resolve Type: A
Expected Value: 1.2.3.4

Ping Monitörü

Monitor Type: Ping
Friendly Name: Sunucu Ping
Hostname: 192.168.1.1
Heartbeat Interval: 60 saniye

Docker Container Monitörü

hljs bash
# Docker container durumunu izle
Monitor Type: Docker Container
Container Name / ID: nginx
Docker Host: /var/run/docker.sock

SSL Sertifika İzleme

Monitor Type: HTTP(S)
URL: https://example.com
# SSL sekmesinde:
Enable SSL Certificate Expiry Notification: ON
Notify Before (days): 30

Bildirim Entegrasyonları

Telegram Bildirimi

hljs bash
# 1. BotFather'dan bot oluşturun
# /newbot komutuyla bot adı ve username belirleyin
# Bot Token alın: 1234567890:ABCdefGHIjklMNOpqrSTUvwxYZ

# 2. Chat ID öğrenin
# Bota mesaj gönderin, ardından:
curl https://api.telegram.org/bot<TOKEN>/getUpdates
# "chat":{"id":123456789} değerini not alın

Uptime Kuma'da Telegram ayarları:

Notification Type: Telegram
Bot Token: 1234567890:ABCdefGHIjklMNOpqrSTUvwxYZ
Chat ID: 123456789
Message Thread ID: (opsiyonel, grup konusu için)

Discord Bildirimi

hljs bash
# Discord'da Webhook oluşturma:
# Server Settings → Integrations → Webhooks → New Webhook
# Webhook URL kopyala
Notification Type: Discord
Discord Webhook URL: https://discord.com/api/webhooks/...
Username: Uptime Kuma
Prefix: [ALERT]

Slack Bildirimi

Notification Type: Slack
Slack Webhook URL: https://hooks.slack.com/services/...
Channel: #alerts
Username: Uptime Kuma
Icon Emoji: :warning:

Email (SMTP) Bildirimi

Notification Type: Email (SMTP)
From Email: alerts@example.com
To Email: admin@example.com
SMTP Host: smtp.gmail.com
SMTP Port: 587
SMTP Username: alerts@example.com
SMTP Password: uygulama-sifresi
Security: STARTTLS

Webhook Bildirimi

hljs bash
# Özel webhook ile herhangi bir servise bildirim gönder
Notification Type: Webhook
Post URL: https://api.example.com/alerts
Content Type: application/json

# Örnek payload:
{
  "monitor": "{{monitorName}}",
  "status": "{{status}}",
  "message": "{{msg}}",
  "time": "{{time}}"
}

Status Page Oluşturma

Yeni Status Page

  1. Status PagesNew Status Page
  2. Sayfa adı ve slug belirleyin: status.example.com
  3. Logo ve başlık ekleyin
  4. Monitörleri gruplara ekleyin
  5. Save ile kaydedin

Status Page Özelleştirme

hljs bash
# Status Page ayarları:
Title: REXE Servis Durumu
Description: Tüm servislerimizin anlık durumu
Theme: Auto (Light/Dark)
Custom CSS: (özel stil)
Footer Text: © 2024 REXE Teknoloji

# Domain bağlama:
Custom Domain: status.example.com
# DNS: CNAME status.example.com → uptime.example.com

Incident Yönetimi

hljs bash
# Status page'de incident oluşturma:
# Status Pages → Edit → Incidents → Create Incident
Title: Planlı Bakım
Content: 02:00-04:00 arası bakım yapılacaktır.
Style: info / warning / danger

Maintenance Window

Planlı bakım sürelerinde yanlış alarm almamak için:

Maintenance → Add Maintenance
Title: Haftalık Bakım
Strategy: Recurring
Start Time: Pazar 02:00
End Time: Pazar 04:00
Timezone: Europe/Istanbul
Affected Monitors: Tüm monitörler

Uptime Kuma Güncelleme

hljs bash
# Docker ile güncelleme
docker stop uptime-kuma
docker rm uptime-kuma
docker pull louislam/uptime-kuma:latest

# Yeniden başlat (veriler volume'da korunur)
docker run -d \
  --name uptime-kuma \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  louislam/uptime-kuma:latest

Yedekleme

hljs bash
# Uptime Kuma verilerini yedekle
docker exec uptime-kuma tar -czf /tmp/backup.tar.gz /app/data
docker cp uptime-kuma:/tmp/backup.tar.gz ./uptime-kuma-backup-$(date +%Y%m%d).tar.gz

# Geri yükleme
docker cp ./uptime-kuma-backup.tar.gz uptime-kuma:/tmp/
docker exec uptime-kuma tar -xzf /tmp/backup.tar.gz -C /

REXE sunucularınızda çalışan tüm servisleri Uptime Kuma ile izleyebilirsiniz. Telegram bildirimleri sayesinde servis kesintilerinden anında haberdar olursunuz.