ব্যবহারিক নির্দেশনা / প্রথম ওয়েবসাইট

প্রথম ওয়েবসাইটের জন্য Ubuntu VPS সেটআপ

নতুন Ubuntu 24.04 VPS-এ SSH key দিয়ে ঢুকে আলাদা প্রশাসক, Nginx ও HTTPS তৈরি করুন। এই পদ্ধতিতে একটি static ওয়েবসাইট প্রকাশ হবে; WordPress, Node.js বা database স্থাপন আলাদা কাজ।

· হালনাগাদ · পড়তে প্রায় 4 মিনিট

এই নির্দেশনায়

শুরু করার আগে প্রবেশপথ রাখুন

একটি নতুন Ubuntu 24.04 instance, public IPv4, sudo অধিকার ও নিজের domain লাগবে। Provider-এর recovery console খুলে পরীক্ষা করুন। এখানে শুরুতে ubuntu account ও SSH port 22 ধরা হয়েছে; আপনার image ভিন্ন হলে সেগুলো বদলান। চলমান গুরুত্বপূর্ণ server-এ এই fresh-install ধাপ সরাসরি চালাবেন না।

স্থানীয় কমান্ড Linux, macOS বা WSL-এর Bash terminal-এ চালান; server কমান্ড SSH session-এ। 203.0.113.10 ও app.example.com উদাহরণ—নিজের IP ও hostname দিন। একই নামের user, file বা directory আগে থাকলে থামুন এবং তার ব্যবহার বোঝার পর এগোন।

SSH key ও host identity যাচাই করুন

নিজের কম্পিউটারে নতুন key তৈরি করুন। শক্ত passphrase দিন; আগে থাকা key overwrite করবেন না। নতুন VM তৈরির সময় public .pub key দিন, private file নিজের কাছে রাখুন।

mkdir -p ~/.ssh
ssh-keygen -t ed25519 -f ~/.ssh/ubuntu_vps
cat ~/.ssh/ubuntu_vps.pub

আগে থেকেই key বসানো থাকলে নিচের existing-server branch বাদ দিন। অন্যথায় বর্তমান কাজ করা account দিয়ে public key পাঠান। existing_vps_key-এর বদলে পুরোনো key-এর path দিন; password বা agent ব্যবহার করলে -i অংশ বাদ দিন। বর্তমান session খোলা রাখুন।

scp -i ~/.ssh/existing_vps_key ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pub

Server-এ পাঠানো key যাচাই করে authorized_keys-এ যোগ করুন। বিদ্যমান key সরাবেন না; নিচের ধাপে তার content ও শেষ newline সংরক্ষিত থাকে।

if ssh-keygen -lf ~/ubuntu-vps-admin.pub; then
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    printf '\n' >> ~/.ssh/authorized_keys
    cat ~/ubuntu-vps-admin.pub >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
fi

Provider-এর বিশ্বস্ত console-এ server-এর Ed25519 fingerprint নিন।

sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub

স্থানীয় terminal থেকে নতুন key দিয়ে আলাদা connection খুলুন। Prompt-এর fingerprint console-এর সঙ্গে মেলান; অমিল হলে গ্রহণ করবেন না।

ssh -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10

নতুন administrator-এর জন্য একই public key server-এ রাখুন।

scp -i ~/.ssh/ubuntu_vps ~/.ssh/ubuntu_vps.pub ubuntu@203.0.113.10:ubuntu-vps-admin.pub

আলাদা administrator তৈরি করুন

প্রথমে getent passwd deploy চালান। Account থাকলে তার পরিচয় না জেনে বদলাবেন না; নতুন নাম নিলে নিচের সব user, group ও path-এ একই নাম ব্যবহার করুন। Image ও resource দেখুন, update করুন এবং শক্ত sudo password-সহ deploy তৈরি করুন।

cat /etc/os-release
free -h
df -h /
sudo apt update
sudo apt upgrade
sudo adduser deploy
sudo usermod -aG sudo deploy
sudo install -d -m 700 -o deploy -g deploy /home/deploy/.ssh
sudo install -m 600 -o deploy -g deploy ~/ubuntu-vps-admin.pub /home/deploy/.ssh/authorized_keys

নিজের terminal থেকে deploy হিসেবে নতুন login খুলুন।

ssh -i ~/.ssh/ubuntu_vps deploy@203.0.113.10

নতুন server session-এ sudo কাজ করছে নিশ্চিত করুন। পুরোনো session বন্ধ করবেন না।

sudo whoami

Nginx ও firewall প্রস্তুত করুন

sudo apt install nginx
sudo systemctl enable --now nginx

Provider firewall-এ আপনার প্রকৃত SSH port শুধু প্রয়োজনীয় administrator source থেকে খুলুন; public site-এর জন্য TCP 80 ও 443 দিন। নতুন SSH login ও বাহির থেকে HTTP পরীক্ষা করুন।

Oracle Cloud Ubuntu হলে পরের UFW block সম্পূর্ণ বাদ দিন। OCI-এর persistent iptables-এ iSCSI boot/block storage-এর দরকারি নিয়ম থাকতে পারে; flush করে বা UFW দিয়ে তা প্রতিস্থাপন করবেন না। Security list/NSG ও provider-সমর্থিত guest rule ব্যবহার করুন। অন্য provider-এর নতুন image-এ UFW সমর্থিত হলে প্রকৃত SSH port আগে অনুমতি দিয়ে তারপর enable করুন।

sudo apt install ufw
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose

নিজের site তৈরি ও আলাদা করে পরীক্ষা করুন

একটি নতুন document root ও Nginx site ব্যবহার করুন। app.example.com সব জায়গায় নিজের domain দিয়ে বদলান। Quoted heredoc-এর EOF অক্ষত রাখুন, যাতে $uri shell variable হিসেবে হারিয়ে না যায়।

sudo install -d -m 755 /var/www/first-site
printf '%s\n' '<!doctype html><html lang="en"><title>First deployment</title><h1>Ubuntu VPS is serving this page</h1></html>' | sudo tee /var/www/first-site/index.html
sudo tee /etc/nginx/sites-available/first-site >/dev/null <<'EOF'
server {
    listen 80;
    listen [::]:80;
    server_name app.example.com;
    root /var/www/first-site;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}
EOF
sudo ln -s /etc/nginx/sites-available/first-site /etc/nginx/sites-enabled/first-site
sudo nginx -t

Syntax সফল হলেই reload করুন।

sudo systemctl reload nginx

নিজের কম্পিউটার থেকে DNS বদলানোর আগেই সঠিক IP ও Host header দিয়ে পরীক্ষা করুন। নিজের পৃষ্ঠার heading আসতে হবে, Nginx default page নয়।

curl --resolve app.example.com:80:203.0.113.10 http://app.example.com/

DNS ও HTTPS চালু করুন

A record-এ server IPv4 দিন। IPv6 end-to-end কাজ করলেই AAAA রাখুন; পুরোনো AAAA validation অন্য server-এ পাঠাতে পারে। প্রথম পরীক্ষা direct DNS-এ করুন। --resolve ছাড়া নিজের কম্পিউটার থেকে HTTP-তে একই পৃষ্ঠা খুলছে নিশ্চিত করুন।

Ubuntu repository থেকে Certbot বসান; প্রয়োজনে Universe চালু হয়। নিজের email দিন, শর্ত পড়ুন এবং HTTPS redirect নির্বাচন করুন।

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d app.example.com --redirect
sudo nginx -t
sudo certbot renew --dry-run
systemctl list-timers --all certbot.timer

Renewal timer inactive হলে sudo systemctl enable --now certbot.timer চালান। HTTP validation নবায়নের জন্য port 80 পৌঁছানো দরকার। Proxy যোগ করলে আবার HTTPS ও renewal path পরীক্ষা করুন।

বাইরে থেকে HTTPS এবং reboot পরীক্ষা করুন

নিজের computer থেকে HTTP redirect ও HTTPS response দেখুন। Certificate যাচাই বাদ দেওয়ার -k option ব্যবহার করবেন না।

curl -I http://app.example.com/
curl -I https://app.example.com/
curl -fsS https://app.example.com/

Recovery console প্রস্তুত রেখে reboot দিন। তারপর সম্পূর্ণ নতুন deploy SSH login, sudo, Nginx service এবং একই বাহ্যিক curl পরীক্ষা পুনরায় করুন। Server না ফিরলে console দিয়ে কারণ দেখুন; শুধু আগের terminal থাকা সফল recovery-এর প্রমাণ নয়।

সমস্যা হলে নির্দিষ্ট স্তর দেখুন

ছোট পর্দায় সব কলাম দেখতে টেবিলটি পাশে স্ক্রল করুন।

লক্ষণপ্রথম পরীক্ষা
SSH timeoutIP, port, route, provider ও guest firewall
Publickey ব্যর্থসঠিক account, দেওয়া key ও authorized_keys
Nginx default pageHost header, server_name ও enabled site
Certificate validation ব্যর্থA/AAAA, port 80 এবং domain response
Nginx reload ব্যর্থnginx -t এবং service journal

SSH-এর জন্য ত্রুটি নির্ণয়ের নির্দেশনা অনুসরণ করুন। Site ও configuration-এর স্বাধীন কপি রিস্টোর করুন, DNS ও পুনর্নির্মাণের ধাপ লিখুন এবং certificate private key সুরক্ষিত রাখুন। অ্যাপের লোড, update ও failure alert-এর দায়িত্ব ঠিক করুন।

প্রশ্ন ও উত্তর

এই ধাপ কি চলমান server-এ চালানো যাবে?

এটি নতুন server-এর পথ। বিদ্যমান user, firewall, site, database ও data বুঝে পৃথক migration plan করুন।

Site খুললেই কাজ শেষ?

নতুন SSH, sudo, HTTPS, renewal এবং reboot-এর পর পরীক্ষা করুন। স্বাধীন backup থেকে পুনরুদ্ধারও দরকার।

ধাপগুলো নির্দিষ্ট নতুন Ubuntu 24.04 পরিবেশের জন্য। সব provider image-এ একই firewall ও account configuration পরীক্ষা করা হয়েছে—এমন দাবি করা হচ্ছে না।

সম্পর্কিত নির্দেশনা