ثبت سفارش آنلاین به‌زودی فعال می‌شود. تا آن موقع برای سفارش با ما تماس بگیرید.Online ordering is coming soon. Until then, please contact us to order.تماس با ماContact us
JolfaCLOUD

مرکز آموزش / شبکه و میکروتیک

مانیتورینگ سرور و شبکه با Uptime Kuma

نصب Uptime Kuma با داکر، انتشار پشت Nginx با SSL، مانیتور وب‌سایت، پینگ روتر، پورت و RADIUS، و هشدار تلگرام یا ایمیل.

۱۰ دقیقه مطالعه · به‌روزرسانی آبان ۱۴۰۵

This guide is available in Persian for now. Switch to FA to read it.

بدترین راه فهمیدن قطعی، تماس مشتری است. Uptime Kuma یک ابزار متن‌باز و رایگان است که هر چند ثانیه سایت‌ها، سرورها، روترها و سرویس‌هایتان را چک می‌کند و به محض قطع شدن خبرتان می‌کند. رابط کاربری ساده‌ای دارد و یک صفحهٔ وضعیت عمومی هم می‌سازد که می‌توانید به مشتریان نشان دهید.

پیش‌نیازها

  • یک سرور لینوکس کوچک (۱ هستهٔ پردازنده و ۱ گیگ رم کافی است)
  • داکر نصب‌شده (docker --version)
  • برای دسترسی با دامنه و SSL: یک زیردامنه مثل status.example.ir که رکورد A آن به IP سرور اشاره کند

نصب با Docker Compose

یک پوشه بسازید و فایل compose.yaml را در آن بگذارید:

yaml
services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "127.0.0.1:3001:3001"
    volumes:
      - ./data:/app/data
bash
mkdir -p ~/uptime-kuma && cd ~/uptime-kuma
# put compose.yaml here, then:
docker compose up -d
docker compose logs -f
  • 127.0.0.1:3001 یعنی پورت فقط روی خود سرور باز است و از بیرون با Nginx به آن می‌رسیم. اگر فعلاً Nginx ندارید و فقط می‌خواهید امتحان کنید، آن را 3001:3001 بگذارید و به http://IP:3001 بروید.
  • همهٔ داده‌ها در پوشهٔ data است؛ بکاپ یعنی کپی همین پوشه.
  • تگ :2 نسخهٔ اصلی ۲ را می‌گیرد. قبل از نصب، آخرین نسخهٔ پایدار را در صفحهٔ رسمی پروژه چک کنید.

انتشار پشت Nginx با SSL

Uptime Kuma برای به‌روزرسانی زندهٔ صفحه از WebSocket استفاده می‌کند؛ پس دو هدر Upgrade و Connection در تنظیم Nginx ضروری است، وگرنه داشبورد بالا نمی‌آید.

nginx
server {
    listen 80;
    listen [::]:80;
    server_name status.example.ir;

    location / {
        proxy_pass http://127.0.0.1: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-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
bash
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d status.example.ir

Certbot خودش بلوک HTTPS را می‌سازد و HTTP را به HTTPS منتقل می‌کند.

اولین ورود و امنیت

  • اولین بار که صفحه را باز می‌کنید، حساب مدیر را می‌سازید. یک رمز قوی بگذارید؛ این صفحه از اینترنت در دسترس است.
  • از Settings → Security ورود دومرحله‌ای (2FA) را روشن کنید.
  • در Settings → Reverse Proxy گزینهٔ اعتماد به هدرهای پروکسی را فعال کنید تا IP واقعی بازدیدکننده‌ها ثبت شود.

مانیتورهای کاربردی

با دکمهٔ Add New Monitor هر کدام از این‌ها را بسازید:

نوعبرای چهنمونه
HTTP(s)بالا بودن سایت و اعتبار گواهی SSLhttps://example.ir
HTTP(s) - Keywordسایت باز شود و متن مشخصی در آن باشدکلمهٔ «ورود» در صفحهٔ پنل
Pingدر دسترس بودن روتر، NAS یا سرور203.0.113.2
TCP Portباز بودن یک سرویسپورت ۸۲۹۱ وین‌باکس یا ۲۲ SSH
DNSدرست جواب دادن رکورد دامنهرکورد A دامنهٔ اصلی
Radiusسالم بودن سرور RADIUS با یک کاربر تستی198.51.100.20
Pushاسکریپت یا کرون‌جاب خودش «زنده‌ام» بفرستدبکاپ شبانه

برای هر مانیتور، Heartbeat Interval را ۶۰ ثانیه و Retries را ۲ یا ۳ بگذارید تا با یک قطعی لحظه‌ای هشدار اشتباه نگیرید.

مانیتور Push برای کرون‌جاب‌ها

مانیتور Push برعکس بقیه کار می‌کند: Uptime Kuma منتظر می‌ماند و اگر در زمان مشخص پیامی نرسید، هشدار می‌دهد. آدرسی که هنگام ساخت مانیتور می‌دهد را انتهای اسکریپت بگذارید:

cron
# /etc/cron.d/backup  -  nightly backup, then report success
0 3 * * * root /usr/local/bin/backup.sh && curl -fsS -m 10 "https://status.example.ir/api/push/AbC123?status=up&msg=OK" > /dev/null

هشدار: تلگرام، ایمیل و وب‌هوک

از Settings → Notifications یک روش اطلاع‌رسانی بسازید و آن را به مانیتورها وصل کنید:

  • تلگرام: با @BotFather یک ربات بسازید، توکن را وارد کنید، به ربات پیام بدهید و Chat ID را بگیرید. سرور باید به API تلگرام دسترسی داشته باشد؛ روی سرور داخل ایران معمولاً این دسترسی نیست.
  • ایمیل (SMTP): مشخصات سرور ایمیل هاست‌تان را وارد کنید.
  • وب‌هوک: برای وصل کردن به سرویس پیامک یا سیستم داخلی خودتان.

بعد از ساخت، دکمهٔ Test را بزنید تا مطمئن شوید پیام می‌رسد.

صفحهٔ وضعیت عمومی

از منوی Status Pages یک صفحه بسازید، مانیتورهایی را که مشتری باید ببیند (مثلاً «اینترنت»، «پنل کاربری»، «سایت») به آن اضافه کنید و لوگوی خودتان را بگذارید. آدرس آن را در سایت یا پیام پشتیبانی قرار دهید تا در زمان قطعی، مشتری‌ها خودشان وضعیت را ببینند و تماس‌ها کمتر شود. مانیتورهای داخلی مثل پورت مدیریت روتر را روی صفحهٔ عمومی نگذارید.

به‌روزرسانی و بکاپ

bash
cd ~/uptime-kuma
docker compose pull && docker compose up -d     # update
tar czf kuma-backup-$(date +%F).tgz data         # backup
برای سرویس‌هایتان هاست پایدار لازم دارید؟دیدن پلن‌های هاست

منابع

  1. مخزن رسمی Uptime Kuma در GitHub github.com/louislam/uptime-kuma
  2. ویکی Uptime Kuma (نصب و پروکسی معکوس) github.com/louislam/uptime-kuma/wiki
  3. مستندات Certbot certbot.eff.org