ফেজ ৪ — দৈনন্দিন অ্যাডমিন#
১১টি লেসন · লেভেল: মধ্যম
প্যানেল চালু হয়ে গেছে। এখন আসল কাজ — টেমপ্লেট, প্যাকেজ, কাস্টমার, সার্ভার, ব্যাকআপ।
এই ফেজে কী আছে#
| লেসন | কী শিখবেন |
|---|---|
| ১ — OS টেমপ্লেট ও মিডিয়া | টেমপ্লেট, কাস্টম ISO ও Windows প্রস্তুত করা |
| ২ — প্যাকেজ (রিসোর্স প্ল্যান) | বিক্রয়যোগ্য প্ল্যান বানানো |
| ৩ — ইউজার তৈরি ও extRelationId | নিজের সিস্টেমের আইডির সাথে কাস্টমার মেলানো |
| ৪ — সার্ভার তৈরি ও বিল্ড | কাজটি কেন দুই ধাপে হয় |
| ৫ — সার্ভারের দৈনন্দিন কাজ | পাওয়ার, রিবিল্ড, পাসওয়ার্ড ও ট্রাফিক রিসেট |
| ৬ — মাইগ্রেশন: hybrid ও live | কোন সার্ভার কোন পথে অন্য নোডে যাবে |
| ৭ — Elevate: ঝুঁকি ছাড়া পরীক্ষা | পরিবর্তন করে পরে commit বা discard |
| ৮ — Backup Manager (v7) | ইনক্রিমেন্টাল ও এনক্রিপ্টেড ব্যাকআপ বসানো |
| ৯ — ইউজার ব্যাকআপ ও ডিজাস্টার রিকভারি | কাস্টমারের ব্যাকআপ, আর নোড নষ্ট হলে করণীয় |
| ১০ — পুরনো KVM সার্ভার ইমপোর্ট | অন্য প্যানেল থেকে VM নিজে হাতে সরিয়ে আনা |
| ১১ — মেইলআউট, লোকালাইজেশন ও ট্রাফিক | ঘোষণা পাঠানো, ভাষা ও ব্যান্ডউইথ হিসাব |
লেসন ১ — OS টেমপ্লেট ও মিডিয়া#
সহজ ভাষায়#
টেমপ্লেট হলো তৈরি OS ইমেজ। কাস্টমার "Ubuntu 24.04" বাছলে VirtFusion ওই টেমপ্লেট কপি করে, cloud-init দিয়ে হোস্টনেম, IP, পাসওয়ার্ড ও SSH কী বসিয়ে দেয়।
Media → Templates থেকে টেমপ্লেট ব্যবস্থাপনা হয়। টেমপ্লেট গ্রুপে সাজানো যায় (Linux / Windows / Panels ইত্যাদি)।
যা মনে রাখবেন#
| বিষয় | কারণ |
|---|---|
| cloud-init থাকতেই হবে | না থাকলে IP ও পাসওয়ার্ড বসবে না |
| QEMU guest agent রাখুন | ভেতরের IP, ভদ্র শাটডাউন, ফাইল সিস্টেম ফ্রিজ |
| টেমপ্লেট হালকা রাখুন | ক্লোন দ্রুত হয়, ডিস্ক বাঁচে |
| নিয়মিত হালনাগাদ করুন | কাস্টমার প্রথম বুটেই ১০০টা প্যাচ টানবে না |
কাস্টম ISO#
কাস্টমার নিজের ISO থেকে ইনস্টল করতে চাইলে VirtFusion দূরবর্তী সার্ভার থেকে ISO স্ট্রিম করতে পারে — ISO-এর URL দিলেই হয়। বড় ISO আগে থেকে হোস্ট করে রাখুন।
নিজের আইকন#
সর্বোচ্চ ২০টি নিজস্ব আইকন (লোগো) যোগ করা যায়, রাখতে হয় /opt/virtfusion/app/control/public/img/logo-তে। নিজের ব্র্যান্ডের OS ইমেজ থাকলে কাজে লাগে।
Windows টেমপ্লেট#
Windows-এর জন্য আলাদা যত্ন লাগে:
- VirtIO ড্রাইভার টেমপ্লেটে আগে থেকেই থাকতে হবে
- Cloudbase-Init (Windows-এর cloud-init) বসাতে হবে
- Hyper-V enlightenments চালু রাখলে পারফরম্যান্স অনেক ভালো হয়
Cloudbase-Init-এর লগ: C:\Program Files\Cloudbase Solutions\Cloudbase-Init\log\cloudbase-init
লেসন ২ — প্যাকেজ (রিসোর্স প্ল্যান)#
সহজ ভাষায়#
প্যাকেজ হলো আপনার বিক্রয় পরিকল্পনা — কত vCPU, কত RAM, কত ডিস্ক, কত ট্রাফিক। সার্ভার সবসময় কোনো একটি প্যাকেজ থেকে তৈরি হয়।
Admin → Packages → Create
প্যাকেজে যা থাকে#
| ক্ষেত্র | মন্তব্য |
|---|---|
| CPU cores | vCPU সংখ্যা |
| CPU throttle | শতাংশে CPU সীমা (ওভারসেল সামলাতে) |
| Memory | RAM (MB) |
| Storage | প্রাথমিক ডিস্ক (GB) |
| Traffic | মাসিক ব্যান্ডউইথ (GB), ০ = সীমাহীন |
| Network speed | ইনবাউন্ড/আউটবাউন্ড গতি সীমা |
| IPv4 count | কতটি IPv4 বসবে |
| Backup plan | কোন ব্যাকআপ পরিকল্পনা যুক্ত হবে |
| Asset group | GPU ইত্যাদি অ্যাসেট |
বাস্তব পরামর্শ#
- প্যাকেজের নামে রিসোর্স লিখুন (
VPS-2C-4G-80N) — বিলিং সিস্টেমে মেলাতে সহজ - বিলিং মডিউলে প্যাকেজের ID লাগে, নাম নয়। ID লিখে রাখুন
- CPU throttle দিয়ে ওভারসেল সামলান — একজন কাস্টমার পুরো নোড খেয়ে ফেলতে পারবে না
লেসন ৩ — ইউজার তৈরি ও extRelationId#
সহজ ভাষায়#
প্রতিটি কাস্টমারের জন্য একটি VirtFusion ইউজার। বিলিং সিস্টেম বা আপনার নিজের অ্যাপ এই ইউজার তৈরি করে এবং নিজের আইডি extRelationId-তে বসিয়ে দেয়।
আপনার অ্যাপের users.id = 4821
│
▼
VirtFusion user (extRelationId = 4821, নিজস্ব id = 93)পরে সেই ইউজার খুঁজতে নিজের আইডিই যথেষ্ট:
GET /api/v1/users/4821/byExtRelationনিয়ম#
- প্রতি কাস্টমারে একটি VirtFusion ইউজার — বেশি নয়
extRelationIdএকবার বসিয়ে আর বদলাবেন না- হাতে তৈরি ইউজারে
extRelationIdবসাতে ভুলবেন না, নইলে SSO লগইন ভাঙবে
সতর্কতা: WHMCS মডিউলে "Oops! Something went wrong" এরর সাধারণত তিনটি কারণে আসে। এক, HTTPS ঠিক নেই। দুই, VirtFusion অ্যাডমিন অ্যাকাউন্ট দিয়ে কাস্টমার-লগইন চেষ্টা করা হয়েছে। তিন, হাতে তৈরি ইউজারে extRelationId ম্যাপিং নেই।
লেসন ৪ — সার্ভার তৈরি ও বিল্ড#
দুই ধাপ#
VirtFusion-এ সার্ভার তৈরি হয় দুই ধাপে — এটি না জানলে API-তে বিভ্রান্তি হয়।
| ধাপ | কী হয় |
|---|---|
| ১. Create | সার্ভারের রেকর্ড তৈরি হয়, রিসোর্স ও IP বরাদ্দ হয়। OS বসে না |
| ২. Build | টেমপ্লেট কপি হয়, cloud-init চলে, VM চালু হয় |
প্যানেলে দুই ধাপ একসাথে দেখা যায়, কিন্তু API-তে আলাদা কল (POST /servers, তারপর POST /servers/{id}/build)। বিস্তারিত ফেজ ৫-এ।
বিল্ডের সময় যা দেওয়া হয়#
- OS টেমপ্লেট
- হোস্টনেম
- root পাসওয়ার্ড (বা কাস্টমারের SSH কী)
- ঐচ্ছিক: প্রভিশনার স্ক্রিপ্ট
প্রভিশনার#
প্রভিশনার হলো প্রথম বুটে চলা স্ক্রিপ্ট — bash, python, PowerShell বা cloud-init YAML।
- Server → Provisioners-এ স্ক্রিপ্ট তৈরি করুন
- Media → Templates-এ টেমপ্লেটের সাথে যুক্ত করুন
- ওই টেমপ্লেট দিয়ে সার্ভার হলে স্ক্রিপ্ট নিজে থেকেই চলে
সার্ভারের ভেরিয়েবল (হোস্টনেম, IP ইত্যাদি) স্ক্রিপ্টে ইনজেক্ট করা যায়।
কাজে লাগে: ফায়ারওয়াল বসানো, মনিটরিং এজেন্ট, নিজস্ব SSH ব্যানার, প্যানেল ইনস্টল।
ডিবাগ: স্ক্রিপ্ট ব্যর্থ হলে সার্ভারের ভেতরে দেখুন — /var/log/cloud-init.log ও /var/log/cloud-init-output.log।
লেসন ৫ — সার্ভারের দৈনন্দিন কাজ#
কাজের তালিকা#
| কাজ | কোথায় / কীভাবে |
|---|---|
| চালু / বন্ধ / রিবুট | প্যানেল বা API /servers/{id}/power/{action} |
| রিবিল্ড (OS পুনরায়) | Build আবার চালানো — ডিস্ক মুছে যায় |
| রিসাইজ | CPU, RAM, ট্রাফিক আলাদা আলাদা বদলানো যায় |
| root পাসওয়ার্ড রিসেট | প্যানেল বা API /servers/{id}/resetPassword |
| সাসপেন্ড / আনসাসপেন্ড | বিল না দিলে সাসপেন্ড; ডিস্ক থাকে, সার্ভার বন্ধ |
| ট্রাফিক দেখা | প্রতি সার্ভারে মাসিক হিসাব |
| ডিলিট | রিসোর্স ও IP ফেরত আসে |
ভুলে ডিলিট ঠেকানো#
গুরুত্বপূর্ণ সার্ভারে "do not disturb" চালু রাখুন:
vfcli-ctrl server:dnd enable SERVER_ID
vfcli-ctrl server:dnd disable SERVER_IDশেষ পাসওয়ার্ড দেখা#
vfcli-ctrl server:password show SERVER_IDট্রাফিক হিসাব রিসেট#
vfcli-ctrl server:traffic-statistics reset-all
vfcli-ctrl server:traffic-statistics reset-all --include-datastoreসতর্কতা:
--include-datastoreদিলে পুরনো ট্রাফিক ইতিহাসও মুছে যায়। বিলিং বিতর্কে প্রমাণ থাকবে না। খুব দরকার ছাড়া ব্যবহার করবেন না।
লেসন ৬ — মাইগ্রেশন: hybrid ও live#
দুই ধরন#
| ধরন | কীভাবে | কোথা থেকে চালাবেন |
|---|---|---|
| Hybrid | সার্ভার চালু বা বন্ধ — দুইভাবেই চলে। চালু থাকলে ডিস্ক দুই ধাপে যায়: প্রথমে চালু অবস্থায়, তারপর সাসপেন্ড করে বাকিটা | কন্ট্রোল প্যানেল (UI) |
| Live | libvirt/QEMU-এর লাইভ মাইগ্রেশন, local বা Ceph স্টোরেজে | কন্ট্রোল সার্ভারের CLI (লগ প্যানেলে দেখা যায়) |
Live মাইগ্রেশনের শর্ত#
- সার্ভার online, suspended বা awaiting setup অবস্থায় (offline হলে
--force-offline) - গন্তব্য নোডে SSH (root) চালু ও সঠিক পোর্টে
- সার্ভারের সব IP গন্তব্য নোডে বৈধ — নাহলে নেটওয়ার্ক মরে যাবে
- স্টোরেজ মাউন্ট পয়েন্ট গন্তব্যে আছে, সব স্টোরেজ চালু
- উৎস ও গন্তব্যের CPU একই ভেন্ডরের
ডকুমেন্টেশনের পরামর্শ: দুই হাইপারভাইজার যতটা সম্ভব অভিন্ন রাখুন — OS সংস্করণ, libvirt ও QEMU সংস্করণসহ।
সতর্কতা: NAT ইন্টারফেসওয়ালা সার্ভার এখনো কোনো মাইগ্রেশনেই যায় না। অ্যাসেট (GPU ইত্যাদি) যুক্ত সার্ভারও নয়।
আটকে যাওয়া hybrid মাইগ্রেশন#
Server → Migrations → আটকে থাকা মাইগ্রেশনের লগ খুলুন → Commands অংশের প্রথম কমান্ডটি কপি করে কন্ট্রোল সার্ভারে SSH-এ চালান।
লেসন ৭ — Elevate: ঝুঁকি ছাড়া পরীক্ষা#
সহজ ভাষায়#
Elevate (৪.১+) সার্ভারে অস্থায়ী পরিবর্তনের সুযোগ দেয়। পরে হয় commit, নয় discard।
- কোন ড্রাইভ elevate হবে বাছুন
- সার্ভারে পরিবর্তন করুন, পরীক্ষা করুন
- ঠিক থাকলে প্রতি ড্রাইভে commit; না হলে discard — elevate-এর মুহূর্তের অবস্থায় ফিরে যায়
কাজে লাগে: বড় আপগ্রেড, কার্নেল বদল, ঝুঁকিপূর্ণ কনফিগ পরীক্ষা। Proxmox-এর স্ন্যাপশটের সবচেয়ে কাছাকাছি জিনিস এটিই।
লেসন ৮ — Backup Manager (v7)#
সহজ ভাষায়#
৭.x সংস্করণে সম্পূর্ণ নতুন ব্যাকআপ ব্যবস্থা এসেছে — ইনক্রিমেন্টাল, এনক্রিপ্টেড, একাধিক স্টোরেজ ব্যাকএন্ডসহ।
ব্যাকআপের ধরন#
| ধরন | কী নেয় |
|---|---|
| Full | পুরো ডিস্ক ইমেজ — চেইনের ভিত্তি |
| Incremental | গত ব্যাকআপের পর বদলানো ব্লক — সবচেয়ে ছোট ও দ্রুত |
| Differential | শেষ full-এর পর বদলানো সব ব্লক |
| Copy | স্বতন্ত্র full, চেইনে প্রভাব ফেলে না |
সিস্টেম নিজেই চেইন সামলায় — নির্দিষ্ট বিরতির পর (ডিফল্ট ৭ দিন) নতুন চেইন শুরু করে।
স্টোরেজ ব্যাকএন্ড#
- SSH/SFTP
- S3-সঙ্গতিপূর্ণ (AWS, MinIO, Wasabi, Cloudflare R2, Backblaze B2)
- Proxmox Backup Server (PBS) — চাংক পর্যায়ে ডিডুপ্লিকেশন
- FTP/FTPS
- Rclone
সেটআপ#
- Backup Manager → Storage — ব্যাকএন্ডের সংযোগ তথ্য দিন
- Schedule — হাইপারভাইজারের সাথে স্টোরেজ জুড়ে বিরতি ঠিক করুন
- প্রথম ব্যাকআপ সবসময় full; এরপর নির্ধারিত বিরতিতে চলে
রিটেনশন#
| নীতি | কীভাবে |
|---|---|
| Age-based | নির্দিষ্ট সময়ের ভেতরের সব রাখে, পুরনো ছাঁটে (১ সপ্তাহ – ১০ বছর) |
| GFS | দিন/সপ্তাহ/মাস/বছরে একটি করে রাখে — জায়গা অনেক কম লাগে |
দুইটির সাথেই "Keep Last N" মেলানো যায় — শেষ N-টি ব্যাকআপ বয়স নির্বিশেষে থাকে।
রিস্টোর#
অ্যাডমিন ইন্টারফেস থেকে ডিস্ক, চেইন ও রিস্টোর পয়েন্ট বেছে রিস্টোর করা যায়। অন্য সার্ভারেও রিস্টোর করা যায় (cross-server restore)।
মনে রাখুন: রিস্টোরের সময় লক্ষ্য সার্ভার বন্ধ হয়। কাজ শেষ হলেও এটি নিজে থেকে চালু হয় না। এটি ইচ্ছাকৃত — চালু করার আগে যাতে কনফিগ ঠিক করে নিতে পারেন।
লেসন ৯ — ইউজার ব্যাকআপ ও ডিজাস্টার রিকভারি#
ইউজার-পর্যায়ের ব্যাকআপ#
কাস্টমার নিজে ব্যাকআপ নিতে পারে — on demand বা নির্ধারিত সময়ে।
সেটআপ তিন ধাপে:
- Backups → Backup Storage — স্টোরেজ যোগ করুন, কোন হাইপারভাইজার ব্যবহার করবে ঠিক করুন
- দূরবর্তী ব্যাকআপ সার্ভারে: একটি Unix ইউজার, VirtFusion-এর পাবলিক SSH কী
authorized_keys-এ, এবং rsync ইনস্টল
- Backups → Server Backup Plan — পরিকল্পনা তৈরি করে প্যাকেজে বা নির্দিষ্ট সার্ভারে দিন
কাস্টমার তখন তার সার্ভারের "Backups" ট্যাবে বিকল্প দেখতে পায়।
"Failed to login on the SSH2 check" এররের মানে — কন্ট্রোল সার্ভার, হাইপারভাইজার ও ব্যাকআপ সার্ভারের মধ্যে সংযোগ বা ফায়ারওয়াল সমস্যা।
ডিজাস্টার রিকভারি (হাইপারভাইজার স্তর)#
পুরো নোড মরে গেলে যাতে ফেরানো যায়, তার জন্য vfcli-hv dr।
vfcli-hv dr:backup # সব
vfcli-hv dr:backup --only-servers=1754,1253 # নির্দিষ্ট সার্ভার
vfcli-hv dr:backup --exclude-system-data # শুধু সার্ভারের ডিস্ক- স্টোরেজ: S3-সঙ্গতিপূর্ণ, অথবা স্থানীয় পার্টিশন
- S3 হলে AWS CLI বসিয়ে
/root/.aws/config-এvirtfusionনামে প্রোফাইল রাখুন - কনফিগ ফাইল:
/home/vf-data/conf/dr.json(কম্প্রেশন, রিটেনশন) - cron দিয়ে নিয়মিত চালান
নোড বদলাতে হলে: নতুন হার্ডওয়্যারে VirtFusion বসান → ব্যাকআপ অ্যাক্সেস দিন → কন্ট্রোল সার্ভারে যুক্ত করুন → সিস্টেম ফাইল ও সার্ভার রিস্টোর করুন।
সীমা: DR শুধু স্থানীয় ডিস্ক নেয়। Ceph-এর মতো শেয়ার্ড স্টোরেজ বাদ যায়।
কন্ট্রোল সার্ভারের ব্যাকআপ#
সবচেয়ে বেশি অবহেলিত অংশ। কন্ট্রোল সার্ভারের ডাটাবেস ও এনক্রিপশন কী ব্যাকআপ না থাকলে সব হাইপারভাইজার বেঁচে থাকলেও প্যানেল ফেরানো যাবে না। VirtFusion-এর "System Backup" গাইড এই প্রক্রিয়া দেখায় — নিয়মিত চালান এবং অন্য মেশিনে রাখুন।
লেসন ১০ — পুরনো KVM সার্ভার ইমপোর্ট#
সহজ ভাষায়#
অন্য প্যানেল (SolusVM, Virtualizor) থেকে আসা VM VirtFusion-এ আনা যায়, তবে পুরো কাজটি হাতে করতে হয় — কোনো স্বয়ংক্রিয় ইমপোর্ট টুল নেই।
ধাপ#
- সার্ভার বন্ধ করুন। সব ডিস্ক অপারেশন অফলাইনে করতে হবে
- ডিস্ক প্রস্তুত করুন — LVM হলে
qemu-imgদিয়ে ইমেজে রূপান্তর
(VirtFusion ডিফল্টে qcow2, raw-ও চলে)
- ভেতরে cloud-init ও QEMU guest agent বসান — নইলে VirtFusion সার্ভারটি
পুরোপুরি নিয়ন্ত্রণ করতে পারবে না
- নেটওয়ার্ক কনফিগ পরিষ্কার করুন। Debian-এ
/etc/network/interfaces-এ শুধু
source /etc/network/interfaces.d/* রাখুন, যাতে cloud-init নিয়ন্ত্রণ নিতে পারে
- VirtFusion-এ সমান আকারের সার্ভার তৈরি করে কাছাকাছি OS ইনস্টল করুন
- প্রস্তুত ডিস্ক হাইপারভাইজারে নিয়ে সঠিক নামে বসান:
[UUID]_[DISK_ID].img
লেসন ১১ — মেইলআউট, লোকালাইজেশন ও ট্রাফিক#
মেইলআউট#
রক্ষণাবেক্ষণের নোটিশ বা ঘোষণা সব কাস্টমারকে পাঠাতে Mailouts ব্যবহার করুন। নোড রিবুট বা নেটওয়ার্ক কাজের আগে আগেভাগে জানিয়ে রাখাই পেশাদার কাজ।
লোকালাইজেশন#
প্যানেল একাধিক ভাষায় দেখানো যায়। বাংলাভাষী কাস্টমার থাকলে ভাষা তালিকা দেখে নিন।
ট্রাফিক হিসাব#
- প্রতি সার্ভারে মাসিক ব্যান্ডউইথ হিসাব করা হয়
- প্যাকেজে সীমা বসানো যায়, সীমা ছাড়ালে গতি কমানো বা সাসপেন্ড করার নীতি ঠিক করুন
- সার্ভারের তৈরির তারিখ বদলালে মাসিক ইতিহাস মুছে যায়:
vfcli-ctrl server:creation-date SERVER_ID '2026-08-01 00:00:00'ফেজ ৪ শেষে আপনি যা পারবেন#
- টেমপ্লেট ও ISO ব্যবস্থাপনা, Windows টেমপ্লেট প্রস্তুত করা
- বিক্রয়যোগ্য প্যাকেজ বানানো
- কাস্টমার ইউজার ও extRelationId ম্যাপিং ঠিক রাখা
- সার্ভার তৈরি, বিল্ড ও প্রভিশনার চালানো
- মাইগ্রেশন ও Elevate ব্যবহার করা
- ব্যাকআপ, ইউজার ব্যাকআপ ও DR সাজানো
- পুরনো KVM সার্ভার ইমপোর্ট করা
পরবর্তী: ফেজ ৫ — API ও ইন্টিগ্রেশন