PVE প্রক্সমক্স বাংলা ডকুমেন্টেশন

ফেজ ৬ — আসল প্রক্সমক্স VE (Proxmox VE — The Real Thing)#

১০টি লেসন · আনুমানিক ৬ ঘণ্টা ৩০ মিনিট · লেভেল: মধ্যম

ইনস্টল থেকে ক্লাস্টার, ব্যাকআপ, HA, হার্ডেনিং, মনিটরিং ও অটোমেশন — পুরো চক্র।


লেসন ১ — Proxmox VE 9.1.11 ইনস্টল (৩০ মিনিট)#

সহজ ভাষায়#

ইনস্টল সহজ, কিন্তু এই সময়ের সিদ্ধান্তগুলো চিরকাল থেকে যায় — ডিস্ক লেআউট, হোস্টনেম, IP।

ইনস্টলের আগে সিদ্ধান্ত#

বিষয়সঠিক পছন্দ
ISOproxmox.com/downloads → Proxmox VE 9.1.11 (Debian 13 Trixie ভিত্তিক)
হোস্টনেমপূর্ণ নাম দিন — pve1.lab.local, শুধু pve নয়
IPস্ট্যাটিক — DHCP ক্লাস্টারে সমস্যা তৈরি করে
ডিস্কদুই বা বেশি ডিস্ক থাকলে ZFS মিরর, নাহলে ext4 + LVM
টাইমজোনসঠিক দিন — লগ ও শিডিউল এর উপর নির্ভর করে

ইনস্টলের পরের চেকলিস্ট#

BASH
hostnamectl set-hostname pve1.lab.local

# /etc/hosts-এ নিজের এন্ট্রি থাকতে হবে
echo "192.168.1.100 pve1.lab.local pve1" >> /etc/hosts

# enterprise রিপো বন্ধ, no-subscription চালু
echo "# deb https://enterprise.proxmox.com/debian/pve trixie pve-enterprise" \
  > /etc/apt/sources.list.d/pve-enterprise.list
echo "deb http://download.proxmox.com/debian/pve trixie pve-no-subscription" \
  > /etc/apt/sources.list.d/pve-install-repo.list

apt update && apt dist-upgrade -y && reboot

সতর্কতা: ইনস্টলের সময় অবশ্যই স্ট্যাটিক IP দিন। রিবুটের পর DHCP নতুন IP দিলে ওয়েব UI-তে ঢোকার পথ হারিয়ে যাবে।


লেসন ২ — VM তৈরি ও ম্যানেজমেন্ট (৪৫ মিনিট)#

সহজ ভাষায়#

ওয়েব UI-এর প্রতিটি ক্লিকের সমান একটি qm কমান্ড আছে। CLI শিখলে অটোমেশন সম্ভব হয়।

BASH
# ISO আপলোড
scp ubuntu-22.04.iso root@pve1:/var/lib/vz/template/iso/

qm create 100 \
  --name ubuntu-server \
  --memory 2048 \
  --cores 2 \
  --cpu host \
  --net0 virtio,bridge=vmbr0 \
  --virtio0 local-lvm:32 \
  --cdrom local:iso/ubuntu-22.04.iso \
  --boot order=ide2 \
  --ostype l26 \
  --agent enabled=1 \
  --onboot 1

qm start 100
qm terminal 100                # সিরিয়াল কনসোল (দ্রুত)
qm list
qm config 100
qm resize 100 virtio0 +10G     # ডিস্ক ১০ GB বাড়ানো
qm migrate 100 pve2 --online   # চালু অবস্থায় অন্য নোডে সরানো

লেসন ৩ — LXC কন্টেইনার ম্যানেজমেন্ট (৩৫ মিনিট)#

সহজ ভাষায়#

কন্টেইনার এক সেকেন্ডের কমে চালু হয়। Nginx, ডাটাবেস বা অ্যাপ সার্ভারের জন্য আদর্শ।

BASH
pveam update
pveam available | grep debian
pveam download local debian-13-standard_13.0-1_amd64.tar.zst

pct create 200 local:vztmpl/debian-13-standard_13.0-1_amd64.tar.zst \
  --hostname nginx-web \
  --memory 512 --swap 512 \
  --rootfs local-lvm:8 \
  --net0 name=eth0,bridge=vmbr0,ip=192.168.1.200/24,gw=192.168.1.1 \
  --nameserver 1.1.1.1 \
  --unprivileged 1 \
  --features nesting=1

pct start 200
pct enter 200
pct exec 200 -- apt install nginx -y
pct snapshot 200 before-nginx
pct stop 200

টিপ: সবসময় --unprivileged 1 দিন। ভেতরের root হোস্টে সাধারণ ইউজার হিসেবে ম্যাপ হয়।


লেসন ৪ — vzdump ও PBS দিয়ে ব্যাকআপ (৪০ মিনিট)#

সহজ ভাষায়#

ব্যাকআপ ঐচ্ছিক নয়। vzdump দ্রুত ব্যাকআপ দেয়। Proxmox Backup Server (PBS) দেয় ডিডুপ্লিকেশন, ইনক্রিমেন্টাল ও এনক্রিপশন।

BASH
vzdump 100 --storage local --compress zstd --mode snapshot
vzdump --all --storage pbs-storage --compress zstd --mode snapshot

# শিডিউল: Datacenter → Backup → Add

# রিস্টোর
qmrestore /var/lib/vz/dump/vzdump-qemu-100-2026_05_18-12_00_00.vma.zst 100 \
  --storage local-lvm

# রিস্টোর পরীক্ষা — নতুন VMID-তে ফিরিয়ে যাচাই করুন
qmrestore backup.vma.zst 999 --storage local-lvm --unique 1
qm start 999
qm destroy 999 --purge

বিপদ: যে ব্যাকআপ কখনো রিস্টোর করে দেখা হয়নি, সেটি ব্যাকআপ নয়। নিয়মিত টেস্ট VM-এ রিস্টোর করে ডাটা যাচাই করুন।


লেসন ৫ — প্রক্সমক্স ক্লাস্টার তৈরি (৪৫ মিনিট)#

সহজ ভাষায়#

ক্লাস্টার একাধিক নোডকে একটি ম্যানেজমেন্টে আনে। VM লাইভ মাইগ্রেট করা যায়, আর HA দিয়ে স্বয়ংক্রিয় রিস্টার্ট সম্ভব হয়। কাজটি দুই ধাপে হয়।

ধাপ ১ — নেটওয়ার্ক সংযোগ (আগে)#

BASH
ping 192.168.1.101
cat /etc/hosts        # সব নোডের এন্ট্রি থাকতে হবে
getent hosts pve2

সতর্কতা: pvecm চালানোর আগেই নোডগুলোর মধ্যে সংযোগ থাকতে হবে। রুট না থাকলে pvecm add অনির্দিষ্টকাল ঝুলে থাকে।

ধাপ ২ — সফটওয়্যার ক্লাস্টার#

BASH
# প্রথম নোডে
pvecm create mycluster

# বাকি প্রতিটি নোডে
pvecm add 192.168.1.100

pvecm status
pvecm nodes

Corosync-এর জন্য স্থিতিশীল, কম লেটেন্সির লিংক দরকার। সম্ভব হলে আলাদা NIC ব্যবহার করুন (/etc/pve/corosync.conf-এ ring0_addr)।

সতর্কতা ১: দুই নোডের ক্লাস্টার QDevice ছাড়া বানাবেন না। একটি নোড পড়লে অন্যটি quorum না পেয়ে সব VM বন্ধ করে দেবে।

সতর্কতা ২: যে নোডে আপনার VM আছে, সেই নোডেই ক্লাস্টার তৈরি করুন। খালি নোডকে যোগ করুন। উল্টো করলে খালি নোডের ডাটাবেস জিতে যায় এবং VM-এর কনফিগ মুছে যায়। (বাস্তব ঘটনা: জার্নি ডকের ৫ নম্বর অধ্যায়।)


লেসন ৬ — হাই অ্যাভেইলেবিলিটি (HA) (৩৫ মিনিট)#

সহজ ভাষায়#

HA মানে: একটি নোড মরে গেলে তার VM অন্য নোডে নিজে থেকে চালু হবে। এর জন্য লাগে ক্লাস্টার, শেয়ার্ড বা রেপ্লিকেটেড স্টোরেজ, এবং কাজ করা fencing।

BASH
ha-manager add vm:100 --state started --group ha-group1
ha-manager groupadd ha-group1 --nodes pve1,pve2 --restricted 0

ha-manager status
ha-manager config
pvecm status | grep quorum

পরীক্ষা: pve2 বন্ধ করুন। HA প্রায় ১২০ সেকেন্ডের মধ্যে VM pve1-এ চালু করার কথা।

বিপদ: কাজ করা fencing ডিভাইস ছাড়া HA ফেইলওভার করবে না। সার্ভাইভিং নোড নিশ্চিত হতে পারে না যে পুরনো নোড সত্যিই মরেছে, তাই VM চালু করে না — এতে split-brain ও ডাটা নষ্ট হওয়া ঠেকে। IPMI/iDRAC/iLO কনফিগ করুন (Datacenter → HA → Fencing)।


লেসন ৭ — ইনস্টল-পরবর্তী হার্ডেনিং (৪০ মিনিট)#

১. সাবস্ক্রিপশন পপআপ সরানো#

BASH
sed -Ezi.bak "s/(Ext.Msg.show\(\{\s+title: gettext\('No valid sub)/void\(\{\1/g" \
  /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy

২. দুই ধাপের যাচাই (2FA)#

BASH
pveum user add admin@pve --password 'StrongPass!'
pveum tfa add admin@pve --type totp
# QR কোড অথেন্টিকেটর অ্যাপে স্ক্যান করুন

ওয়েব UI: Datacenter → Permissions → Two Factor। TOTP ও WebAuthn দুইটাই চলে।

৩. SSH সুরক্ষা — fail2ban#

BASH
apt install fail2ban

cat > /etc/fail2ban/jail.d/proxmox.conf << 'CONF'
[proxmox]
enabled  = true
port     = https,http,8006
filter   = proxmox
logpath  = /var/log/daemon.log
maxretry = 3
findtime = 3600
bantime  = 3600
CONF

cat > /etc/fail2ban/filter.d/proxmox.conf << 'CONF'
[Definition]
failregex = pvedaemon[.*authentication failure; rhost=<HOST>
CONF

systemctl restart fail2ban
fail2ban-client status proxmox

৪. কার্নেল ও আপডেট#

BASH
# /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt mitigations=auto transparent_hugepage=never"
update-grub

apt install unattended-upgrades
dpkg-reconfigure --priority=low unattended-upgrades

টিপ: Datacenter → Options → Email-এ SMTP বসিয়ে দিন। তাহলে হার্ডওয়্যার সমস্যা, HA ঘটনা ও ব্যাকআপের ফল ইমেইলে আসবে।


লেসন ৮ — Proxmox Backup Server (PBS) বিস্তারিত (৫০ মিনিট)#

vzdump বনাম PBS#

vzdumpPBS
ধরনফোল্ডার/NFS-এ ফাইলক্লায়েন্ট-সার্ভার
প্রতিবারপূর্ণ ব্যাকআপশুধু বদলে যাওয়া ব্লক
ডিডুপনেইচাংক পর্যায়ে, সব VM জুড়ে
এনক্রিপশননেইআছে

উদাহরণ: ২০০ GB VM প্রতিদিন ব্যাকআপ করলে PBS-এ প্রথমবারের পর মাত্র ৫–২০ GB যায়।

ইনস্টল#

BASH
echo "deb http://download.proxmox.com/debian/pbs trixie pbs-no-subscription" \
  > /etc/apt/sources.list.d/pbs-install-repo.list

wget https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg \
  -O /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg

apt update && apt install proxmox-backup-server
# ওয়েব UI: https://PBS-IP:8007

ডাটাস্টোর ও প্রুনিং#

BASH
proxmox-backup-manager datastore create main /mnt/backup-disk

pvesm add pbs pbs-store \
  --server 192.168.1.200 \
  --datastore main \
  --username admin@pbs \
  --password 'PBSPass!'

proxmox-backup-manager prune-job create job1 \
  --store main \
  --keep-daily 7 --keep-weekly 4 --keep-monthly 6

proxmox-backup-client verify --repository admin@pbs!192.168.1.200:main backup/vm/100

এনক্রিপশন#

BASH
proxmox-backup-client key create /etc/pve/priv/backup-encryption.key

বিপদ: এনক্রিপশন কী ব্যাকআপ ডাটার থেকে আলাদা জায়গায় রাখুন — সম্ভব হলে ছাপিয়ে অফলাইনে। কী আর ডাটা একসাথে হারালে ব্যাকআপ চিরতরে অকেজো।


লেসন ৯ — মনিটরিং, মেট্রিক ও অ্যালার্ট (৪০ মিনিট)#

সহজ ভাষায়#

মনিটরিং ছাড়া ক্লাস্টার চালানো মানে চোখ বেঁধে গাড়ি চালানো।

প্রক্সমক্সের নিজের মেট্রিক#

Datacenter → Options → Metric Server → Add। InfluxDB বা Graphite-এ প্রতি ৬০ সেকেন্ডে নোড, VM ও কন্টেইনারের মেট্রিক পাঠায়।

Prometheus + node_exporter#

BASH
apt install prometheus-node-exporter
systemctl enable --now prometheus-node-exporter    # পোর্ট 9100

curl http://localhost:9100/metrics | head -20

# VM/CT মেট্রিকের জন্য
apt install prometheus-pve-exporter 2>/dev/null || pip3 install prometheus-pve-exporter

ইমেইল অ্যালার্ট#

BASH
apt install postfix libsasl2-modules
# /etc/postfix/main.cf
# relayhost = [smtp.gmail.com]:587
# smtp_sasl_auth_enable = yes
# smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# smtp_tls_security_level = encrypt

postmap /etc/postfix/sasl_passwd
systemctl restart postfix
echo "Test from Proxmox" | mail -s "PVE Alert" admin@example.com

যে মানগুলো দেখা জরুরি#

মেট্রিককী বোঝায়
CPU steal timeহোস্ট বেশি overcommit — VM CPU পাচ্ছে না
Balloon deflationহোস্টে RAM চাপ, VM থেকে RAM ফেরত নেওয়া হচ্ছে
Disk I/O waitস্টোরেজ বাধা হয়ে দাঁড়িয়েছে
ZFS pool healthzpool status-এ কোনো এরর = জরুরি
Ceph OSD downরিডান্ডেন্সি কমে গেছে
Corosync ringquorum হারানোর ঝুঁকি

লেসন ১০ — প্রক্সমক্স API ও অটোমেশন (৪৫ মিনিট)#

সহজ ভাষায়#

প্রক্সমক্সের সবকিছু REST API-তে আছে। ওয়েব UI নিজেও সেই API-ই ব্যবহার করে। API দিয়ে ১০টি VM-এর কাজ ১০০০টিতে নিয়ে যাওয়া যায়।

pvesh — API-এর CLI রূপ#

BASH
pvesh get /nodes
pvesh get /nodes/pve1/status
pvesh get /nodes/pve1/qemu

pvesh create /nodes/pve1/qemu \
  --vmid 200 --name api-test-vm \
  --memory 1024 --cores 2 \
  --net0 virtio,bridge=vmbr0 \
  --virtio0 local-lvm:20

pvesh create /nodes/pve1/qemu/200/status/start
pvesh get /nodes/pve1/qemu/200/config

curl দিয়ে REST API#

BASH
TICKET=$(curl -sk -d "username=root@pam&password=YourPass" \
  https://192.168.1.100:8006/api2/json/access/ticket | \
  python3 -c "import sys,json; print(json.load(sys.stdin)['data']['ticket'])")

curl -sk -b "PVEAuthCookie=${TICKET}" \
  https://192.168.1.100:8006/api2/json/nodes/pve1/qemu | python3 -m json.tool

Terraform#

HCL
provider "proxmox" {
  endpoint  = "https://192.168.1.100:8006"
  api_token = "root@pam!terraform=your-token-uuid"
  insecure  = true
}

resource "proxmox_virtual_environment_vm" "web_server" {
  name      = "web-01"
  node_name = "pve1"
  vm_id     = 300

  cpu    { cores = 2 }
  memory { dedicated = 2048 }

  network_device { bridge = "vmbr0", model = "virtio" }

  disk {
    datastore_id = "local-lvm"
    size         = 32
    interface    = "virtio0"
  }
}

টিপ: Terraform/Ansible-এর জন্য আলাদা API টোকেন বানান (Datacenter → Permissions → API Tokens)। যতটুকু দরকার ততটুকুই অনুমতি দিন। অটোমেশনে কখনো root পাসওয়ার্ড ব্যবহার করবেন না।


ফেজ ৬ শেষে আপনি যা পারবেন#

  • প্রক্সমক্স ইনস্টল ও ইনস্টল-পরবর্তী কাজ শেষ করা
  • CLI থেকে VM ও কন্টেইনার চালানো
  • ব্যাকআপ নেওয়া, রিস্টোর করে যাচাই করা
  • ক্লাস্টার বানানো ও নোড যোগ করা
  • HA ও fencing-এর শর্ত বোঝা
  • সার্ভার হার্ডেন করা (2FA, fail2ban, আপডেট)
  • PBS দিয়ে ডিডুপ ব্যাকআপ ও প্রুনিং করা
  • মনিটরিং ও অ্যালার্ট বসানো
  • API/Terraform দিয়ে অটোমেশন করা

পরবর্তী: বাস্তব কেস স্টাডি — VPS ব্যবসা