VPS-এ Uptime Kuma: website ও server monitoring setup

4 মিনিট পড়া
Tropic
VPS-এ Uptime Kuma: website ও server monitoring setup

Uptime Kuma: VPS-এ নিজের website monitoring সেট আপ করুন

একটি website 200 OK ফেরত দিয়েও নষ্ট থাকতে পারে। Backup স্পষ্ট error ছাড়াই বন্ধ হয়ে যেতে পারে। Uptime Kuma দুই ধরনের সমস্যাই শনাক্ত করে: website, API, port ও background job check করে এবং সমস্যা হলে notification পাঠায়।

কোথায় monitoring system host করবেন, কী ধরনের VPS দরকার এবং Uptime Kuma 2 ইনস্টল, HTTPS চালু, Telegram সংযোগ ও status page তৈরি করার পদ্ধতি দেখব।

সাত ধাপে Uptime Kuma

  1. যেসব project monitor করবেন, সেগুলো থেকে আলাদা একটি ছোট VPS বরাদ্দ করুন।
  2. monitor.example.com-এর মতো একটি subdomain সেখানে point করুন।
  3. Docker ইনস্টল করে Uptime Kuma 2 চালু করুন।
  4. Internal port 3001 বন্ধ করে HTTPS চালু করুন।
  5. HTTP, DNS, TCP বা push monitor তৈরি করুন।
  6. Telegram এবং প্রয়োজন হলে status page configure করুন।
  7. Update ও data directory-র external backup সেট আপ করুন।

Uptime Kuma কী

Uptime Kuma হলো free, open-source, self-hosted tool। এর dashboard ও check history নিজের server-এ সংরক্ষিত থাকে।

এটি HTTP(S), TCP port, ping, DNS, WebSocket, response-এর text ও JSON, push signal এবং Docker container monitor করতে পারে। Minimum check interval 20 second। এছাড়া dozens of notification channel, 2FA, latency chart, TLS certificate monitoring এবং একাধিক status page রয়েছে।

200 OK-এর আড়ালে থাকা failure কীভাবে শনাক্ত করবেন

Basic HTTP check শুধু response code দেখে। কিন্তু web server blank page বা application error screen দেখিয়েও successful status ফেরাতে পারে।

আরও নির্ভুল monitoring-এর জন্য ব্যবহার করুন:

  • Keyword — expected phrase খোঁজে, যেমন website name বা “Account dashboard” text;
  • JSON Query — API response-এর কোনো value check করে, যেমন status: healthy

এভাবে monitor শুধু port reachable কি না নয়, application অন্তত একটি expected correct-operation sign দেখাচ্ছে কি না তাও নিশ্চিত করে।

Backup ও cron job-এর জন্য push monitor

Push monitor কোনো service-কে poll করে না। বরং service থেকে নিয়মিত signal-এর অপেক্ষা করে। Backup script বা cron job সফলভাবে শেষ হওয়ার পরে unique URL call করে। সময়মতো signal না এলে Uptime Kuma failure জানায়।

এটি একটি “silent” problem ধরতে সাহায্য করে: website চলছে, কিন্তু কয়েক দিন ধরে daily backup তৈরি হয়নি।

Uptime Kuma কী প্রতিস্থাপন করে না

Uptime Kuma মূলত availability ও response time track করে। CPU, RAM, disk, log ও container metric-এর জন্য Prometheus, Netdata, Zabbix বা অন্য monitoring system দিয়ে এটিকে সম্পূরক করুন: Kuma বাইরে থেকে problem দেখতে পায়, আর metric কারণ খুঁজতে সাহায্য করে।

Monitoring আলাদা VPS-এ চালানো উচিত কেন

Website-এর পাশেই Uptime Kuma ইনস্টল করলে VPS, network বা data center-এর failure project ও monitoring system—দুইটিই নামিয়ে দিতে পারে। Notification হয়তো আর পাঠানো হবে না।

Dashboard আলাদা VPS-এ এবং গুরুত্বপূর্ণ project-এর ক্ষেত্রে অন্য location বা provider-এ host করুন। Kuma নিজেকেও external service দিয়ে monitor করা উপকারী: monitoring system-কে দেখার জন্যও কাউকে থাকতে হয়।

Uptime Kuma server requirements

CPU ও RAM-এর কঠোর official minimum project-টি নির্ধারণ করেনি। ছোট installation-এর জন্য ব্যবহারিক starting configuration:

  • 1 vCPU;
  • 1 GB RAM;
  • 10 GB SSD;
  • Ubuntu 24.04 LTS;
  • IPv4;
  • HTTPS-এর জন্য domain বা subdomain।

কয়েক ডজন সাধারণ check-এর জন্য এই configuration সাধারণত যথেষ্ট। শত শত monitor, দীর্ঘ history retention বা browser-based check থাকলে 2 GB RAM বা বেশি নিন।

VPS-এ Uptime Kuma কীভাবে ইনস্টল করবেন

এই উদাহরণে Ubuntu 24.04 ও monitor.example.com subdomain ব্যবহার করা হয়েছে।

1. DNS ও firewall configure করুন

VPS-এর IPv4 address-এ point করা A DNS record তৈরি করুন। SSH দিয়ে connect করে প্রয়োজনীয় port খুলুন:

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

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

নতুন connection test না করা পর্যন্ত বর্তমান SSH session বন্ধ করবেন না।

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 tag ব্যবহার করুন: latest এখনও পুরোনো v1 branch-এ assigned। /app/data directory local disk বা regular Docker volume-এ সংরক্ষণ করতে হবে। Proper file locking ছাড়া NFS ও storage system database corrupt করতে পারে।

Port 3001 শুধু 127.0.0.1-এ accessible। HTTPS-সহ reverse proxy dashboard-কে বাইরে publish করবে।

4. Caddy দিয়ে HTTPS চালু করুন

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-এ point করলে Caddy স্বয়ংক্রিয়ভাবে TLS certificate request করবে এবং WebSocket connection proxy করবে। Domain বা subdomain-এর root-এ dashboard host করুন: example.com/kuma-এর মতো address supported নয়।

5. Administrator account তৈরি করুন

https://monitor.example.com খুলে দীর্ঘ, unique password-সহ account তৈরি করুন এবং two-factor authentication চালু করুন।

প্রথম monitor যোগ করার উপায়

Add New Monitor click করে HTTP(s) বেছে নিন:

  1. একটি name ও complete URL লিখুন।
  2. Interval সেট করুন, যেমন 60 second।
  3. মাঝে মাঝে হওয়া network failure সামলাতে দুইটি retry যোগ করুন।
  4. Notification channel বেছে নিন।
  5. Monitor save করে সফল check দেখা শুরু হয়েছে নিশ্চিত করুন।

মূল website-এর জন্য HTTP ও Keyword check উপকারী। API-এর জন্য health endpoint ও JSON Query ব্যবহার করুন। শুধু monitoring-এর জন্য database বা administrative port internet-এ expose করবেন না; trusted network বা VPN ব্যবহার করুন।

Backup-এর জন্য push monitor-এর উদাহরণ

Push monitor তৈরি করার পরে script-এর শেষে তার unique URL যোগ করুন:

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

শুধু backup সফল হওয়ার পর request চলবে। Push token-কে password-এর মতো সুরক্ষিত রাখুন: URL জানা যে কেউ false signal পাঠাতে পারে।

Telegram কীভাবে সংযুক্ত করবেন

@BotFather দিয়ে bot তৈরি করে তাকে message পাঠান। এরপর Settings → Notifications → Telegram খুলুন। Bot Token ও Chat ID লিখে Test click করুন এবং monitor-গুলোর জন্য channel assign করুন। Critical service-এর জন্য email-এর মতো দ্বিতীয় channel যোগ করুন।

Status page কীভাবে তৈরি করবেন

Status Pages-এ monitor group করা, current status ও uptime history দেখানো, domain assign এবং Maintenance-এর মাধ্যমে planned work জানানো যায়। Internal IP address বা technical URL publish করবেন না: customer-এর শুধু “Website,” “API,” “Account dashboard” ও “Payments”-এর মতো component দরকার।

Uptime Kuma update ও backup

বড় update-এর আগে container বন্ধ করে data directory সংরক্ষণ করুন:

cd /opt/uptime-kuma
docker compose down

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

docker compose up -d

Archive অন্য device বা external storage-এ সরিয়ে নিন। একই VPS-এ copy server deletion বা disk failure থেকে সুরক্ষা দেয় না।

নিয়মিত update-এর জন্য:

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

Startup-এর পর docker compose ps check করুন, dashboard খুলুন এবং test notification পাঠান।

Uptime Kuma-এর জন্য কোন VPS বেছে নেবেন

ছোট installation-এর জন্য 1 vCPU ও 1 GB RAM-সহ Linux VPS যথেষ্ট। Raw performance-এর চেয়ে independence বেশি গুরুত্বপূর্ণ: main project unavailable হলেও monitor চলতে হবে।

Monitored service অন্য platform বা independent node-এ চললে tropic.host-এর VPS-এ Uptime Kuma host করতে পারেন। Ubuntu, Docker ও static IP dashboard দ্রুত চালু করতে সাহায্য করে, আর check-এর সংখ্যা বাড়লে resource বৃদ্ধি করা যায়।

Production একই infrastructure-এ চললে অন্য node বেছে নিন বা external backup monitor যোগ করুন। অতিরিক্ত CPU core-এর চেয়ে failure domain আলাদা করা বেশি কার্যকর।

সাধারণ ভুল

MistakeWhy it is a problemBetter approach
Project-এর পাশে monitoring চালানোShared outage service ও notification—দুটিই নামিয়ে দেয়আলাদা VPS বা location ব্যবহার করুন
Port 3001 public করাReverse proxy বা HTTPS ছাড়াই dashboard accessiblePort 127.0.0.1-এ bind করুন
শুধু 200 status code check করাApplication error success-এর মতো দেখা যেতে পারেKeyword বা JSON Query যোগ করুন
latest tag ব্যবহার করাএটি পুরোনো v1 branch-এ point করেlouislam/uptime-kuma:2 ব্যবহার করুন
একই VPS-এ backup রাখাServer-এর সঙ্গে backup-ও হারিয়ে যাবেdata directory অন্যত্র copy করুন

সংক্ষিপ্তসার

Uptime Kuma ছোট VPS-কে website, API, DNS, port, certificate ও background job-এর নিজের monitoring center-এ পরিণত করে। Keyword নষ্ট page শনাক্ত করতে সাহায্য করে, JSON Query ভুল API response ধরে এবং Push বন্ধ backup বা cron job প্রকাশ করে।

নির্ভরযোগ্য setup-এর জন্য production থেকে monitoring system আলাদা রাখুন, port 3001 বন্ধ করুন, HTTPS ও 2FA চালু করুন এবং দুইটি notification channel configure করুন। এরপর data directory-র external backup ও Uptime Kuma-র নিজস্ব independent check সেট করুন।

FAQ

Uptime Kuma কি বিনামূল্যে?

হ্যাঁ। Project open source এবং MIT license-এর অধীনে distributed। Infrastructure, domain ও external backup-এর জন্য শুধু খরচ হবে।

Uptime Kuma-এর কত RAM দরকার?

ছোট installation-এর জন্য 1 GB RAM যুক্তিসঙ্গত starting point। শত শত check, দীর্ঘ history retention বা Browser Engine-এর জন্য 2 GB বা বেশি দিন।

Docker ছাড়া Uptime Kuma ইনস্টল করা যায়?

হ্যাঁ, Node.js ও PM2 ব্যবহার করে। তবে VPS-এ update, migrate ও restore করার জন্য Docker Compose সাধারণত সহজ।

Domain ছাড়া Uptime Kuma ব্যবহার করা যায়?

Technical ভাবে যায়—IP address বা SSH tunnel দিয়ে। স্থায়ী internet access-এর জন্য HTTPS-সহ subdomain বেশি নিরাপদ।

Uptime Kuma কি CPU, RAM ও disk usage দেখায়?

সম্পূর্ণ feature-যুক্ত server metrics system হিসেবে নয়। Server resource monitoring-এর জন্য Prometheus, Netdata, Zabbix বা অন্য specialized tool দিয়ে এটিকে সম্পূরক করুন।