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ı.
İç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)
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
# 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:
docker compose up -d
Nginx Reverse Proxy ile HTTPS
# /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;
}
}
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:
- Kullanıcı adı ve şifre belirleyin
- Giriş yapın
- 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ı:
# 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ü
# 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
# 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
# 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
# Ö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
- Status Pages → New Status Page
- Sayfa adı ve slug belirleyin:
status.example.com - Logo ve başlık ekleyin
- Monitörleri gruplara ekleyin
- Save ile kaydedin
Status Page Özelleştirme
# 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
# 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
# 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
# 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.
İlgili Makaleler
Coolify Kurulumu: Self-Hosted PaaS ile Uygulama Deployment
Coolify kurulumu, Docker ve Git entegrasyonu, uygulama deployment, veritabanı yönetimi, SSL sertifikaları, environment variables ve Heroku/Netlify alternatifi self-hosted PaaS.
Nextcloud Kurulumu: Self-Hosted Bulut Depolama ve İşbirliği
Nextcloud kurulumu Docker ile, Apache/Nginx yapılandırması, veritabanı kurulumu, SSL sertifikası, dosya senkronizasyonu, uygulama mağazası ve performans optimizasyonu.
Portainer ile Docker Yönetimi: Web Arayüzlü Konteyner Kontrolü
Portainer CE kurulumu, Docker ve Kubernetes yönetimi, stack deployment, volume/network yönetimi, kullanıcı yetkilendirme, webhook ve GitOps entegrasyonu.