بدترین راه فهمیدن قطعی، تماس مشتری است. Uptime Kuma یک ابزار متنباز و رایگان است که هر چند ثانیه سایتها، سرورها، روترها و سرویسهایتان را چک میکند و به محض قطع شدن خبرتان میکند. رابط کاربری سادهای دارد و یک صفحهٔ وضعیت عمومی هم میسازد که میتوانید به مشتریان نشان دهید.
پیشنیازها
- یک سرور لینوکس کوچک (۱ هستهٔ پردازنده و ۱ گیگ رم کافی است)
- داکر نصبشده (
docker --version) - برای دسترسی با دامنه و SSL: یک زیردامنه مثل
status.example.irکه رکورد A آن به IP سرور اشاره کند
نصب با Docker Compose
یک پوشه بسازید و فایل compose.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/datamkdir -p ~/uptime-kuma && cd ~/uptime-kuma
# put compose.yaml here, then:
docker compose up -d
docker compose logs -f127.0.0.1:3001یعنی پورت فقط روی خود سرور باز است و از بیرون با Nginx به آن میرسیم. اگر فعلاً Nginx ندارید و فقط میخواهید امتحان کنید، آن را3001:3001بگذارید و بهhttp://IP:3001بروید.- همهٔ دادهها در پوشهٔ
dataاست؛ بکاپ یعنی کپی همین پوشه. - تگ
:2نسخهٔ اصلی ۲ را میگیرد. قبل از نصب، آخرین نسخهٔ پایدار را در صفحهٔ رسمی پروژه چک کنید.
انتشار پشت Nginx با SSL
Uptime Kuma برای بهروزرسانی زندهٔ صفحه از WebSocket استفاده میکند؛ پس دو هدر Upgrade و Connection در تنظیم 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;
}
}sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d status.example.irCertbot خودش بلوک HTTPS را میسازد و HTTP را به HTTPS منتقل میکند.
اولین ورود و امنیت
- اولین بار که صفحه را باز میکنید، حساب مدیر را میسازید. یک رمز قوی بگذارید؛ این صفحه از اینترنت در دسترس است.
- از
Settings → Securityورود دومرحلهای (2FA) را روشن کنید. - در
Settings → Reverse Proxyگزینهٔ اعتماد به هدرهای پروکسی را فعال کنید تا IP واقعی بازدیدکنندهها ثبت شود.
مانیتورهای کاربردی
با دکمهٔ Add New Monitor هر کدام از اینها را بسازید:
| نوع | برای چه | نمونه |
|---|---|---|
HTTP(s) | بالا بودن سایت و اعتبار گواهی SSL | https://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 منتظر میماند و اگر در زمان مشخص پیامی نرسید، هشدار میدهد. آدرسی که هنگام ساخت مانیتور میدهد را انتهای اسکریپت بگذارید:
# /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 یک صفحه بسازید، مانیتورهایی را که مشتری باید ببیند (مثلاً «اینترنت»، «پنل کاربری»، «سایت») به آن اضافه کنید و لوگوی خودتان را بگذارید. آدرس آن را در سایت یا پیام پشتیبانی قرار دهید تا در زمان قطعی، مشتریها خودشان وضعیت را ببینند و تماسها کمتر شود. مانیتورهای داخلی مثل پورت مدیریت روتر را روی صفحهٔ عمومی نگذارید.
بهروزرسانی و بکاپ
cd ~/uptime-kuma
docker compose pull && docker compose up -d # update
tar czf kuma-backup-$(date +%F).tgz data # backupمنابع
- مخزن رسمی Uptime Kuma در GitHub github.com/louislam/uptime-kuma
- ویکی Uptime Kuma (نصب و پروکسی معکوس) github.com/louislam/uptime-kuma/wiki
- مستندات Certbot certbot.eff.org