Uptime Kuma روی VPS: چگونه مانیتورینگ سایت‌ها و سرورها را راه‌اندازی کنیم

2 دقیقه خواندن
Tropic
Uptime Kuma روی VPS: چگونه مانیتورینگ سایت‌ها و سرورها را راه‌اندازی کنیم

Language: fa

Uptime Kuma: مانیتورینگ اختصاصی سایت را روی VPS تنظیم کنید

ممکن است سایت از کار افتاده باشد، اما همچنان پاسخ 200 OK برگرداند. پشتیبان‌گیری هم می‌تواند بدون نمایش خطای واضح متوقف شود. Uptime Kuma هر دو مشکل را تشخیص می‌دهد: سایت‌ها، APIها، پورت‌ها و کارهای پس‌زمینه را بررسی می‌کند و وقتی مشکلی رخ دهد، اعلان می‌فرستد.

در این راهنما می‌بینیم سیستم مانیتورینگ را کجا قرار دهید، چه VPSای برای آن مناسب است و چگونه Uptime Kuma 2 را نصب کنید، HTTPS را فعال کنید، Telegram را متصل کنید و صفحه وضعیت بسازید.

Uptime Kuma در هفت مرحله

  1. یک VPS کوچک را جدا از پروژه‌هایی که قرار است پایش شوند اختصاص دهید.
  2. یک زیردامنه، برای نمونه monitor.example.com، را به آن هدایت کنید.
  3. Docker را نصب کنید و Uptime Kuma 2 را اجرا کنید.
  4. پورت داخلی 3001 را ببندید و HTTPS را فعال کنید.
  5. مانیتورهای HTTP، DNS، TCP یا push بسازید.
  6. Telegram و در صورت نیاز صفحه وضعیت را تنظیم کنید.
  7. به‌روزرسانی‌ها و پشتیبان‌گیری خارجی از پوشه داده‌ها را تنظیم کنید.

Uptime Kuma چیست؟

Uptime Kuma ابزاری رایگان و متن‌باز برای میزبانی روی سرور شخصی است. پنل و تاریخچه بررسی‌ها روی سرور شما ذخیره می‌شوند.

این ابزار می‌تواند HTTP(S)، پورت‌های TCP، ping، DNS، WebSocket، متن و JSON موجود در پاسخ‌ها، سیگنال‌های push و کانتینرهای Docker را پایش کند. کمترین فاصله بررسی 20 ثانیه است. ده‌ها کانال اعلان، احراز هویت دومرحله‌ای، نمودارهای تأخیر، کنترل گواهی‌های TLS و چند صفحه وضعیت نیز در دسترس هستند.

چگونه خطای پنهان پشت 200 OK را پیدا کنیم؟

بررسی معمول HTTP فقط کد پاسخ را می‌بیند. اما وب‌سرور ممکن است صفحه‌ای خالی یا صفحه خطای برنامه را نمایش دهد و در عین حال وضعیت موفق برگرداند.

برای مانیتورینگ دقیق‌تر از این گزینه‌ها استفاده کنید:

  • Keyword — به دنبال عبارت مورد انتظار می‌گردد؛ برای مثال نام سایت یا متن «پنل حساب»؛
  • JSON Query — یک مقدار را در پاسخ API بررسی می‌کند؛ برای مثال status: healthy.

به این ترتیب مانیتور فقط در دسترس بودن پورت را تأیید نمی‌کند، بلکه وجود دست‌کم یک نشانه مورد انتظار از عملکرد صحیح برنامه را نیز بررسی می‌کند.

مانیتور Push برای پشتیبان‌گیری و کارهای cron

مانیتور Push سرویس را مرتباً پرس‌وجو نمی‌کند. در عوض، منتظر سیگنال منظم خود سرویس می‌ماند. اسکریپت پشتیبان‌گیری یا کار cron پس از پایان موفق، یک URL یکتا را فراخوانی می‌کند. اگر سیگنال به‌موقع نرسد، Uptime Kuma خطا را گزارش می‌دهد.

این روش به شناسایی یک مشکل «بی‌صدا» کمک می‌کند: سایت هنوز کار می‌کند، اما چند روز است پشتیبان‌گیری روزانه ساخته نشده است.

Uptime Kuma چه چیزهایی را جایگزین نمی‌کند؟

Uptime Kuma در درجه اول دسترس‌پذیری و زمان پاسخ را پایش می‌کند. برای بررسی CPU، RAM، دیسک، لاگ‌ها و متریک‌های کانتینر، آن را با Prometheus، Netdata، Zabbix یا یک سیستم مانیتورینگ دیگر تکمیل کنید: Kuma مشکل را از بیرون می‌بیند و متریک‌ها به پیدا کردن علت کمک می‌کنند.

چرا مانیتورینگ باید روی VPS جدا اجرا شود؟

اگر Uptime Kuma را کنار سایت نصب کنید، خرابی VPS، شبکه یا دیتاسنتر هم پروژه و هم سیستم مانیتورینگ را از دسترس خارج می‌کند. در این حالت ممکن است اعلان ارسال نشود.

پنل را روی VPS جدا قرار دهید و برای پروژه‌های مهم، محل یا ارائه‌دهنده دیگری انتخاب کنید. خود Kuma را نیز با یک سرویس خارجی پایش کنید: باید سیستمی وجود داشته باشد که سیستم مانیتورینگ را هم کنترل کند.

نیازمندی‌های Uptime Kuma برای سرور

این پروژه حداقل رسمی و سخت‌گیرانه‌ای برای CPU و RAM اعلام نمی‌کند. پیکربندی آغازین و کاربردی برای نصب کوچک:

  • 1 vCPU؛
  • 1 گیگابایت RAM؛
  • 10 گیگابایت SSD؛
  • Ubuntu 24.04 LTS؛
  • IPv4؛
  • دامنه یا زیردامنه برای HTTPS.

این پیکربندی معمولاً برای چند ده بررسی ساده کافی است. برای صدها مانیتور، نگهداری طولانی تاریخچه یا بررسی‌های مرورگری، 2 گیگابایت RAM یا بیشتر انتخاب کنید.

نصب Uptime Kuma روی VPS

در مثال از Ubuntu 24.04 و زیردامنه monitor.example.com استفاده می‌شود.

1. تنظیم DNS و فایروال

یک رکورد DNS از نوع A بسازید که به آدرس IPv4 سرور VPS اشاره کند. از طریق SSH متصل شوید و پورت‌های لازم را باز کنید:

ssh root@SERVER_IP
apt update && apt upgrade -y

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable

تا زمانی که اتصال جدید را آزمایش نکرده‌اید، نشست فعلی SSH را نبندید.

2. نصب Docker و Docker Compose

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

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 استفاده کنید: latest همچنان به شاخه قدیمی v1 اشاره می‌کند. پوشه /app/data باید روی دیسک محلی یا یک Docker volume معمولی ذخیره شود. NFS و سیستم‌های ذخیره‌سازی بدون قفل‌گذاری صحیح فایل‌ها ممکن است پایگاه داده را خراب کنند.

پورت 3001 فقط روی 127.0.0.1 در دسترس است. پراکسی معکوس با HTTPS پنل را برای دسترسی بیرونی منتشر می‌کند.

4. فعال‌سازی HTTPS با Caddy

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 اشاره کند، Caddy به‌طور خودکار گواهی TLS درخواست می‌کند و اتصال‌های WebSocket را پراکسی می‌کند. پنل را در ریشه دامنه یا زیردامنه قرار دهید: آدرسی مانند example.com/kuma پشتیبانی نمی‌شود.

5. ساخت حساب مدیر

https://monitor.example.com را باز کنید، حسابی با گذرواژه طولانی و یکتا بسازید و احراز هویت دومرحله‌ای را فعال کنید.

چگونه اولین مانیتور را اضافه کنیم؟

روی Add New Monitor کلیک کنید و HTTP(s) را انتخاب کنید:

  1. نام و URL کامل را وارد کنید.
  2. فاصله بررسی را تعیین کنید؛ برای مثال 60 ثانیه.
  3. دو تلاش مجدد اضافه کنید تا اختلال‌های کوتاه شبکه باعث هشدار نشوند.
  4. کانال اعلان را انتخاب کنید.
  5. مانیتور را ذخیره کنید و مطمئن شوید بررسی‌های موفق ظاهر می‌شوند.

برای سایت اصلی، بررسی‌های HTTP و Keyword مفید هستند. برای API از health-endpoint و JSON Query استفاده کنید. فقط برای مانیتورینگ، پایگاه داده یا پورت‌های مدیریتی را در اینترنت باز نکنید؛ از شبکه مورد اعتماد یا VPN استفاده کنید.

نمونه مانیتور Push برای پشتیبان‌گیری

پس از ساخت مانیتور Push، URL یکتای آن را به انتهای اسکریپت اضافه کنید:

backup-command && \
  curl -fsS "https://monitor.example.com/api/push/SECRET_TOKEN?status=up&msg=backup-ok"

این درخواست فقط پس از موفقیت پشتیبان‌گیری اجرا می‌شود. توکن push را مانند گذرواژه در نظر بگیرید: هر کسی که URL را بداند می‌تواند سیگنال جعلی ارسال کند.

چگونه Telegram را متصل کنیم؟

با @BotFather یک بات بسازید، برای آن پیام بفرستید، سپس به Settings → Notifications → Telegram بروید. Bot Token و Chat ID را وارد کنید، روی Test کلیک کنید و این کانال را به مانیتورها اختصاص دهید. برای سرویس‌های حیاتی یک کانال دوم، مانند ایمیل، اضافه کنید.

چگونه صفحه وضعیت بسازیم؟

در بخش Status Pages می‌توانید مانیتورها را گروه‌بندی کنید، وضعیت فعلی و تاریخچه دسترس‌پذیری را نمایش دهید، دامنه تعیین کنید و از طریق Maintenance درباره تعمیرات برنامه‌ریزی‌شده اطلاع دهید. آدرس‌های IP داخلی یا URLهای فنی را منتشر نکنید: مشتریان فقط به مؤلفه‌هایی مانند «سایت»، «API»، «پنل حساب» و «پرداخت‌ها» نیاز دارند.

به‌روزرسانی و پشتیبان‌گیری از Uptime Kuma

پیش از یک به‌روزرسانی بزرگ، کانتینر را متوقف کنید و پوشه داده‌ها را ذخیره کنید:

cd /opt/uptime-kuma
docker compose down

tar -czf /root/uptime-kuma-$(date +%F).tar.gz \
  data compose.yaml

docker compose up -d

آرشیو را به دستگاهی دیگر یا فضای ذخیره‌سازی خارجی منتقل کنید. نسخه‌ای که روی همان VPS نگه داشته شود، در برابر حذف سرور یا خرابی دیسک محافظت نمی‌کند.

برای به‌روزرسانی معمولی:

cd /opt/uptime-kuma
docker compose pull
docker compose up -d --force-recreate

پس از اجرا docker compose ps را بررسی کنید، پنل را باز کنید و یک اعلان آزمایشی بفرستید.

کدام VPS را برای Uptime Kuma انتخاب کنیم؟

یک نصب کوچک به Linux VPS با 1 vCPU و 1 گیگابایت RAM نیاز دارد. استقلال از حداکثر کارایی مهم‌تر است: مانیتور باید زمانی هم کار کند که پروژه اصلی در دسترس نیست.

اگر سرویس‌های تحت پایش روی پلتفرم یا نود مستقلی قرار دارند، می‌توانید Uptime Kuma را روی VPS از tropic.host اجرا کنید. Ubuntu، Docker و IP ثابت راه‌اندازی سریع پنل را ممکن می‌کنند و با افزایش تعداد بررسی‌ها می‌توانید منابع را ارتقا دهید.

اگر production از قبل در همان زیرساخت اجرا می‌شود، نود دیگری انتخاب کنید یا مانیتورینگ خارجی اضافه کنید. جدا کردن حوزه‌های خرابی از افزودن یک هسته CPU دیگر مفیدتر است.

خطاهای رایج

خطاچرا مشکل‌ساز استرویکرد بهتر
مانیتورینگ کنار پروژه اجرا می‌شودخرابی مشترک هم سرویس و هم اعلان‌ها را از کار می‌اندازداستفاده از VPS یا پلتفرم جدا
پورت 3001 در اینترنت باز استپنل بدون پراکسی معکوس یا HTTPS در دسترس قرار می‌گیرداتصال پورت به 127.0.0.1
فقط کد وضعیت 200 بررسی می‌شودخطای برنامه ممکن است مانند پاسخ موفق دیده شودافزودن Keyword یا JSON Query
از تگ latest استفاده می‌شوداین تگ به شاخه قدیمی v1 اشاره می‌کنداستفاده از louislam/uptime-kuma:2
پشتیبان روی همان VPS نگه داشته می‌شودهمراه با سرور از بین می‌رودکپی کردن پوشه data در مکان دیگر

جمع‌بندی

Uptime Kuma یک VPS کوچک را به مرکز مانیتورینگ اختصاصی برای سایت‌ها، APIها، DNS، پورت‌ها، گواهی‌ها و کارهای پس‌زمینه تبدیل می‌کند. Keyword به پیدا کردن صفحه خراب کمک می‌کند، JSON Query پاسخ نادرست API را آشکار می‌کند و Push توقف پشتیبان‌گیری یا کار cron را نشان می‌دهد.

برای پیکربندی قابل‌اعتماد، سیستم مانیتورینگ را جدا از production قرار دهید، پورت 3001 را ببندید، HTTPS و 2FA را فعال کنید و دو کانال اعلان تنظیم کنید. سپس از پوشه داده‌ها پشتیبان‌گیری خارجی انجام دهید و خود Uptime Kuma را نیز به‌صورت مستقل بررسی کنید.

FAQ

آیا Uptime Kuma رایگان است؟

بله. این پروژه متن‌باز است و با مجوز MIT منتشر می‌شود. فقط هزینه زیرساخت، دامنه و پشتیبان‌های خارجی را پرداخت می‌کنید.

Uptime Kuma به چه مقدار RAM نیاز دارد؟

برای نصب کوچک، شروع با 1 گیگابایت RAM منطقی است. برای صدها بررسی، نگهداری طولانی تاریخچه یا Browser Engine، 2 گیگابایت یا بیشتر اختصاص دهید.

آیا می‌توان Uptime Kuma را بدون Docker نصب کرد؟

بله، با Node.js و PM2 امکان‌پذیر است. با این حال، به‌روزرسانی، انتقال و بازیابی Docker Compose معمولاً ساده‌تر است.

آیا می‌توان Uptime Kuma را بدون دامنه استفاده کرد؟

از نظر فنی بله؛ از طریق IP یا تونل SSH ممکن است. برای دسترسی دائمی از اینترنت، استفاده از زیردامنه با HTTPS امن‌تر است.

آیا Uptime Kuma مصرف CPU، RAM و دیسک را نشان می‌دهد؟

نه، دست‌کم نه به‌عنوان یک سیستم کامل متریک‌های سرور. برای پایش منابع سرور، Uptime Kuma را با Prometheus، Netdata، Zabbix یا ابزار تخصصی دیگری تکمیل کنید.