HELPER VPS

VPS-এ Docker ইনস্টল, Ubuntu, Debian, AlmaLinux ও Compose

Docker-এর অফিসিয়াল রিপোজিটরি দিয়ে ইনস্টল করলে সর্বশেষ Docker Engine ও Compose প্লাগইন পাবেন, আর পরের আপডেটও একবার সিস্টেম আপডেটেই হয়ে যায়। অপারেটিং সিস্টেম অনুযায়ী কমান্ড আর ইনস্টলের পর অবশ্যই করে রাখার সেটিং ক্রম অনুযায়ী গুছিয়ে দেওয়া হয়েছে।

সবচেয়ে দ্রুত উপায়: Docker ইমেজ দিয়ে সার্ভার তৈরি

নতুন সার্ভার তৈরি করলে ইমেজ তালিকা থেকে Docker বেছে নেওয়াই সবচেয়ে দ্রুত। Ubuntu 24.04 LTS-এর উপর Docker Engine ও Docker Compose ইনস্টল অবস্থায় শুরু হয়, তাই লগইন করেই docker compose up চালান। অ্যাপের পরিচিতি ও প্রস্তাবিত সাইজ Docker VPS পেজে আছে।

আগে থেকে চলা সার্ভারে Docker যোগ করতে বা Debian, AlmaLinux-এর মতো অন্য অপারেটিং সিস্টেম ব্যবহার করতে চাইলে নিচের ক্রমে নিজে ইনস্টল করুন। সব কমান্ড root হিসেবে সংযুক্ত অবস্থা ধরে লেখা। সাধারণ ইউজার হিসেবে সংযোগ করলে কমান্ডের আগে sudo যোগ করুন।

ইনস্টলের আগে যা যাচাই করবেন

Docker যেকোনো সাইজের সার্ভারে চলে। কয়েকটি কন্টেইনার চালানো ব্যক্তিগত প্রজেক্টের জন্য, সবচেয়ে ছোট 12GB জেনারেল প্ল্যান যথেষ্ট; একটি ডেটাবেস, ওয়েব সার্ভার এবং ক্যাশ একসাথে চালানোর জন্য, 24GB বা তার বেশি আপনাকে রুম দেয়। যদি আপনি ইমেজ ডাউনলোড এবং বিল্ড করেন, একটি দ্রুত ডিস্কের NVMe VPS একটি লক্ষণীয় পার্থক্য তৈরি করে।

অপারেটিং সিস্টেমের রিপোজিটরিতে থাকা পুরনো Docker প্যাকেজ থাকলে আগে মুছে ফেলুন, যাতে অফিসিয়াল প্যাকেজের সাথে মিশে না যায়। ইনস্টল না থাকা প্যাকেজ বাদ পড়ে যায়, তাই সরাসরি চালালেও সমস্যা নেই।

Ubuntu, Debian
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt remove -y $pkg; done

Ubuntu 24.04-এ Docker ইনস্টল

ধাপ 1. রিপোজিটরির কী ও অ্যাড্রেস যোগ করুন

Ubuntu 24.04
apt update
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
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list

ধাপ 2. Docker Engine ও Compose ইনস্টল করুন

Ubuntu 24.04
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

ইনস্টল শেষে Docker সার্ভিস স্বয়ংক্রিয়ভাবে চালু হয়, আর সার্ভার রিস্টার্ট করলেও সাথে চালু হয়। একই কমান্ড Ubuntu 22.04 ও 26.04-এও হুবহু কাজ করে। রিপোজিটরি অ্যাড্রেসের ভার্সনের নাম /etc/os-release থেকে স্বয়ংক্রিয়ভাবে পড়া হয়।

Debian 13-এ Docker ইনস্টল

Debian-এ ক্রম Ubuntu-র মতোই, শুধু রিপোজিটরি অ্যাড্রেস linux/debian হয়ে যায়। Debian 12-এও একই কমান্ড ব্যবহার করুন।

Debian 13
apt update
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" > /etc/apt/sources.list.d/docker.list
apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

AlmaLinux 10-এ Docker ইনস্টল

AlmaLinux ও Rocky Linux Docker-এর RHEL রিপোজিটরি ব্যবহার করে। ডিফল্টভাবে থাকা Podman-এর সাথে যাতে না মেলে, আগে তা সরিয়ে তারপর ইনস্টল করুন। AlmaLinux 9 এবং Rocky Linux 9 ও 10-এও একই কমান্ড।

AlmaLinux 10
dnf remove -y podman buildah runc
dnf -y install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker

প্রথম ইনস্টলের সময় রিপোজিটরির সাইনিং কী গ্রহণ করবেন কি না জিজ্ঞেস করলে y চাপুন। RHEL ধরনের সিস্টেমে ইনস্টলের পর সার্ভিস স্বয়ংক্রিয়ভাবে চালু হয় না, তাই শেষ লাইনের systemctl enable --now docker দিয়ে এখনই চালু করুন আর বুটের সময়ও চালু হওয়া নিশ্চিত করুন।

ইনস্টল যাচাই ও প্রথম কন্টেইনার

নিচের কমান্ড দিয়ে একবার টেস্ট কন্টেইনার চালিয়ে দেখুন। Hello from Docker দিয়ে শুরু হওয়া বার্তা এলে ইঞ্জিন, ইমেজ নামানো ও কন্টেইনার চালানো সবই ঠিকঠাক কাজ করছে। --rm যোগ করায় চালানো শেষ হলে কন্টেইনার সঙ্গে সঙ্গে মুছে যায়।

টার্মিনাল
docker run --rm hello-world
docker compose version

সাধারণ ইউজার হিসেবেও Docker ব্যবহার করতে চাইলে সেই ইউজারকে docker গ্রুপে যোগ করে আবার লগইন করুন। docker গ্রুপের অধিকার root-এর সমান, তাই শুধু বিশ্বস্ত ইউজারকেই যোগ করুন।

টার্মিনাল
usermod -aG docker username

Docker Compose দিয়ে সার্ভিস চালু

Compose হলো কন্টেইনারের সেটিং একটি YAML ফাইলে লিখে রেখে এক লাইনে চালু করার উপায়। সার্ভার সরালে বা নতুন বানালেও একই ফাইল থাকলে একই পরিবেশ আবার দাঁড়িয়ে যায়। যেমন একটি Nginx ওয়েব সার্ভার চালানোর ফাইল দেখতে এমন।

টার্মিনাল
mkdir -p /opt/web && cd /opt/web
cat > compose.yaml <<'EOF'
services:
  web:
    image: nginx:stable
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html:ro
    restart: unless-stopped
EOF
docker compose up -d

ব্রাউজারে http://YOUR_SERVER_IP খুললে Nginx স্ক্রিন দেখা যায়। html ফোল্ডারে index.html রাখলে সেই ফাইল দেখা যায়। প্রায়ই ব্যবহৃত কমান্ড নিচের চারটিই যথেষ্ট।

  • docker compose ps: এখন চলা কন্টেইনার ও পোর্ট দেখায়।
  • docker compose logs -f: রিয়েল-টাইম লগ অনুসরণ করে। Ctrl+C দিয়ে বেরিয়ে আসুন।
  • docker compose pull && docker compose up -d: নতুন ইমেজ নামিয়ে কন্টেইনার নতুন ভার্সনে বদলায়।
  • docker compose down: কন্টেইনার থামিয়ে গুছিয়ে ফেলে। ভলিউমে থাকা ডেটা যেমন ছিল তেমনই থাকে।

restart: unless-stopped লিখে রাখলে সার্ভার রিস্টার্ট হলে কন্টেইনারও স্বয়ংক্রিয়ভাবে আবার চালু হয়। শুধু নিজে থামানো কন্টেইনার থামানো অবস্থায় থাকে।

ফায়ারওয়াল ও পোর্ট প্রকাশের সেটিং

Docker ports: দিয়ে প্রকাশ করা পোর্ট সরাসরি ফায়ারওয়াল নিয়মে (iptables) বসিয়ে খুলে দেয়। তাই ufw-তে অনুমোদন না দেওয়া পোর্টও ports:-এ লিখলে বাইরে থেকে সংযোগ করা যায়। বাইরে দেখানোর দরকার নেই এমন ডেটাবেস বা অ্যাডমিন স্ক্রিন নিচের মতো শুধু 127.0.0.1-এ বেঁধে রাখলে শুধু সার্ভারের ভেতর থেকে সংযোগ হয়।

compose.yaml
    ports:
      - "127.0.0.1:5432:5432"

ওয়েব সার্ভিসে শুধু 80 ও 443 পোর্ট প্রকাশ করুন, আর বাকিগুলো একই Compose নেটওয়ার্কের ভেতরে সার্ভিসের নাম দিয়ে একে অপরকে ডাকলে সব গোছানো থাকে। পুরো সার্ভারের মৌলিক ফায়ারওয়াল মৌলিক ফায়ারওয়াল গাইড অনুসরণ করে শুধু SSH, HTTP ও HTTPS খোলা রাখুন।

লগ ও ডিস্ক ব্যবস্থাপনা

কন্টেইনারের লগ আলাদা করে ঠিক না করলে জমতেই থাকে। /etc/docker/daemon.json-এ নিচের মতো local লগ ড্রাইভার ঠিক করলে লগ কমপ্রেস হয় আর নির্দিষ্ট সাইজ পর্যন্তই রাখা হয়। সেভ করে systemctl restart docker চালালে নতুন তৈরি কন্টেইনার থেকে প্রযোজ্য হয়।

/etc/docker/daemon.json
{
  "log-driver": "local"
}

ব্যবহার না হওয়া ইমেজ আর থেমে থাকা কন্টেইনারও ডিস্কের জায়গা নেয়। docker system df দিয়ে ব্যবহৃত পরিমাণ দেখুন, আর docker image prune -a দিয়ে এখন ব্যবহার না হওয়া ইমেজ মুছে ফেলুন। ডেটা বাড়লে সার্ভারে NVMe ব্লক ডিস্ক যুক্ত করে Docker ডেটা ফোল্ডার হিসেবে ব্যবহারের উপায়ও আছে।

ডেটা সুরক্ষা ও পরের ধাপ

কন্টেইনার যেকোনো সময় মুছে আবার তৈরি করা যায়, কিন্তু ভলিউমে থাকা ডেটা আবার তৈরি করা যায় না। ডেটাবেসের নিয়মিত ডাম্প ফাইল রাখুন, আর পুরো সার্ভার অটো ব্যাকআপ বা স্ন্যাপশট দিয়ে একসাথে সুরক্ষিত রাখলে নিশ্চিন্ত। উপায় ব্যাকআপ ও স্ন্যাপশট গাইড-এ আছে।

Docker দিয়ে WordPress চালানোর Compose ফাইল WordPress ইনস্টল গাইড-এ আছে। একাধিক অ্যাপ স্ক্রিন থেকে ডিপ্লয় করে HTTPS সার্টিফিকেট পর্যন্ত স্বয়ংক্রিয়ভাবে বসাতে চাইলে Coolify বা Dokploy ইমেজ দিয়ে সার্ভার তৈরি করে দেখুন। শুধু কন্টেইনারের জন্য ভালো সাইজ কন্টেইনার VPS-এ গুছিয়ে দেওয়া আছে।

সাথে দেখার মতো গাইড

এই গাইডের পর করে রাখার মতো সেটিং।

সব গাইড দেখুন