انتقل إلى المحتوى الرئيسي
العودة إلى الفئة

تثبيت Uptime Kuma: مراقبة وقت التشغيل المستضافة ذاتياً

تثبيت Uptime Kuma مع Docker، مراقبة HTTP/TCP/DNS/ping، تكاملات الإشعارات (Telegram، Discord، البريد الإلكتروني)، إنشاء صفحة الحالة وتهيئة التنبيهات.

وقت القراءة: 12 دقيقة الاستضافة الذاتية
uptime-kumaمراقبةuptimeself-hostingdockerإشعاراتصفحة الحالة

جدول المحتويات

تثبيت Uptime Kuma: مراقبة وقت التشغيل المستضافة ذاتياً

Uptime Kuma هو أداة مراقبة وقت التشغيل المستضافة ذاتياً التي تتتبع حالة تشغيل خدماتك ومواقعك الإلكترونية. بواجهة ويب جميلة وأنواع مراقبة متنوعة وتكاملات إشعارات غنية، يوفر بديلاً رائعاً لـ Uptime Robot.

ما هو Uptime Kuma؟

الميزات البارزة لـ Uptime Kuma:

  • أنواع المراقبة: HTTP(S)، TCP، DNS، Ping، Docker Container، Steam Game Server
  • قنوات الإشعارات: Telegram وDiscord وSlack والبريد الإلكتروني وPagerDuty وWebhook وأكثر من 90 تكاملاً
  • صفحة الحالة: صفحة حالة قابلة للتخصيص
  • مراقبة SSL: تتبع تاريخ انتهاء صلاحية الشهادات
  • نافذة الصيانة: تحديد نوافذ الصيانة المخططة
  • دعم 2FA: المصادقة الثنائية
  • متعدد اللغات: أكثر من 40 لغة

التثبيت

التثبيت مع Docker (موصى به)

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

بعد التثبيت:

http://IP_الخادم:3001

التثبيت مع Docker Compose

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

HTTPS مع Nginx Reverse Proxy

hljs nginx
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_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

أنواع المراقبة

مراقب HTTP(S)

لمراقبة المواقع الإلكترونية ونقاط نهاية API:

Monitor Type: HTTP(S)
Friendly Name: الصفحة الرئيسية
URL: https://example.com
Heartbeat Interval: 60 ثانية
Retries: 3
Accepted Status Codes: 200-299

إعدادات HTTP المتقدمة:

hljs bash
# مراقبة الكلمات المفتاحية (البحث عن نص محدد في الصفحة)
Monitor Type: HTTP(S) - Keyword
Keyword: "مرحباً"

# مراقبة JSON Query (التحقق من استجابة API)
Monitor Type: HTTP(S) - JSON Query
JSON Path: $.status
Expected Value: ok

مراقب TCP Port

Monitor Type: TCP Port
Friendly Name: قاعدة بيانات MySQL
Hostname: db.example.com
Port: 3306
Heartbeat Interval: 120 ثانية

مراقب DNS

Monitor Type: DNS
Friendly Name: فحص DNS
Hostname: example.com
Resolver Server: 8.8.8.8
DNS Resolve Type: A
Expected Value: 1.2.3.4

مراقبة شهادة SSL

Monitor Type: HTTP(S)
URL: https://example.com
# في تبويب SSL:
Enable SSL Certificate Expiry Notification: تشغيل
Notify Before (days): 30

تكاملات الإشعارات

إشعار Telegram

hljs bash
# 1. أنشئ بوتاً من BotFather
# احصل على Bot Token: 1234567890:ABCdefGHIjklMNOpqrSTUvwxYZ

# 2. احصل على Chat ID
curl https://api.telegram.org/bot<TOKEN>/getUpdates
# سجّل قيمة "chat":{"id":123456789}
Notification Type: Telegram
Bot Token: 1234567890:ABCdefGHIjklMNOpqrSTUvwxYZ
Chat ID: 123456789

إشعار Discord

hljs bash
# إنشاء Webhook في Discord:
# إعدادات الخادم → التكاملات → Webhooks → Webhook جديد
# نسخ URL الـ Webhook
Notification Type: Discord
Discord Webhook URL: https://discord.com/api/webhooks/...
Username: Uptime Kuma

إشعار البريد الإلكتروني (SMTP)

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: كلمة-مرور-التطبيق
Security: STARTTLS

إشعار Webhook

hljs bash
# إرسال إشعارات إلى أي خدمة بـ webhook مخصص
Notification Type: Webhook
Post URL: https://api.example.com/alerts
Content Type: application/json

# مثال على الـ payload:
{
  "monitor": "{{monitorName}}",
  "status": "{{status}}",
  "message": "{{msg}}",
  "time": "{{time}}"
}

إنشاء صفحة الحالة

صفحة حالة جديدة

  1. Status PagesNew Status Page
  2. عيّن اسم الصفحة والـ slug: status.example.com
  3. أضف الشعار والعنوان
  4. أضف المراقبين إلى المجموعات
  5. احفظ بـ Save
hljs bash
# إعدادات صفحة الحالة:
Title: حالة الخدمات
Description: الحالة الفورية لجميع خدماتنا
Theme: Auto (فاتح/داكن)
Custom Domain: status.example.com

إدارة الحوادث

hljs bash
# إنشاء حادثة في صفحة الحالة:
# Status Pages → Edit → Incidents → Create Incident
Title: صيانة مخططة
Content: ستُجرى صيانة بين 02:00-04:00.
Style: info / warning / danger

نافذة الصيانة

Maintenance → Add Maintenance
Title: الصيانة الأسبوعية
Strategy: Recurring
Start Time: الأحد 02:00
End Time: الأحد 04:00
Timezone: Asia/Riyadh
Affected Monitors: جميع المراقبين

تحديث Uptime Kuma

hljs bash
docker stop uptime-kuma
docker rm uptime-kuma
docker pull louislam/uptime-kuma:latest

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

النسخ الاحتياطي

hljs bash
# نسخ احتياطي لبيانات Uptime Kuma
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

# الاستعادة
docker cp ./uptime-kuma-backup.tar.gz uptime-kuma:/tmp/
docker exec uptime-kuma tar -xzf /tmp/backup.tar.gz -C /

يمكنك مراقبة جميع الخدمات التي تعمل على خوادم REXE باستخدام Uptime Kuma. مع إشعارات Telegram، ستُعلَم فوراً بأي انقطاع في الخدمة.