व्यावहारिक गाइड / Ubuntu VPS सेटअप

पहली वेबसाइट के लिए Ubuntu VPS सेटअप करें

नए Ubuntu 24.04 LTS VPS पर SSH key, अलग administrator और Nginx के साथ छोटी static HTTPS वेबसाइट तैयार करें। हर चरण के बाद परिणाम जाँचें; अंत में certificate renewal और reboot के बाद वेबसाइट का लौटना भी सत्यापित करें।

· अपडेट · लगभग 7 मिनट में पढ़ें

इस गाइड में

Domain, नया server और recovery access तैयार करें

नया Ubuntu 24.04 VPS, public IPv4, port 22 पर SSH, sudo वाला initial account और अपने नियंत्रण का domain चाहिए। Client commands Linux/macOS/WSL के Bash में चलती हैं; server commands SSH के अंदर। Existing deployment में यही paths हों तो पहले रुककर उसकी व्यवस्था देखें।

हर 203.0.113.10 को अपने server IP और app.example.com को अपने hostname से बदलें। ये केवल documentation examples हैं। Initial user यहाँ ubuntu है; provider का सही user लगाएँ। Access बदलने से पहले recovery console खोलें। नीचे UFW केवल उसे support करने वाली नई images के लिए है; Oracle Cloud Ubuntu को वह block छोड़ना है।

Provisioning से पहले key बनाएँ या working access से जोड़ें

अपने computer पर dedicated key बनाएँ और passphrase रखें। Filename पहले से हो तो दूसरा नाम पूरे उदाहरण में प्रयोग करें। .pub public file है; private file अपने computer पर रहती है।

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

नया VPS बनाना हो: अब Ubuntu 24.04 server create करते समय यही public key provider के SSH-key field में दें। Initial username पुष्टि करें और आगे host fingerprint जाँचें। Existing-server commands छोड़ें।

खाली VPS पहले बन चुका हो: working session खुला रखें। दूसरे client terminal से मौजूदा authentication के सहारे public key भेजें। existing_vps_key को अपनी वर्तमान private key से बदलें। Password या agent वाला existing access हो तो -i वाला हिस्सा छोड़ें; server की authentication policy न बदलें।

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

मौजूदा server session में uploaded public key की जाँच करके initial account के authorized_keys में append करें। पुराने entries बचते हैं और अतिरिक्त newline आखिरी बिना-newline entry संभालती है। Working access न हो तो पहले provider recovery करें।

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

दोनों रास्तों में पहली नई connection स्वीकार करने से पहले trusted recovery console से matching host public key का fingerprint लें। Ed25519 host key का उदाहरण:

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

अपने computer से नई key के साथ fresh connection खोलें। सफल होने तक पुराना access बचाए रखें।

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

अगले administrator के लिए public key दूसरे client terminal से भेजें। Existing-server path में temporary public file पहले आई हो तो उसे फिर copy करना ठीक है।

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

अलग administrator बनाएँ और नया login जाँचें

Server पर पहले getent passwd deploy देखें। कोई account नहीं मिलना चाहिए। deploy मौजूद हो तो unused नाम लें और home paths/groups सहित पूरे उदाहरण में बदलें; दूसरे user की key file न बदलें।

Image तथा resources देखें, upgrades पढ़ें और administrator बनाएँ। उसके sudo prompts के लिए मज़बूत password रखें। नीचे install commands key file का ownership और सीमित permissions सेट करती हैं।

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

अपने computer के दूसरे terminal से नए administrator के रूप में कनेक्ट करें।

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

उस नए server session में sudo जाँचें। deploy का password स्वीकार होने पर root दिखना चाहिए। दोनों checks सफल हों तभी इसी session में आगे बढ़ें।

sudo whoami

Nginx और सही firewall प्रक्रिया अपनाएँ

Server पर Nginx install करें। Guest firewall तथा provider network firewall दोनों access प्रभावित करते हैं। Console और working SSH session उपलब्ध रखें।

sudo apt install nginx
sudo systemctl enable --now nginx

Provider firewall में TCP 22 केवल administration location से और TCP 80/443 visitors के लिए अनुमति दें। SSH का असली port अलग हो तो उसी rule को बचाएँ। Network अनुमति guest firewall की रोक नहीं हटाती।

Oracle Cloud Ubuntu: नीचे का पूरा UFW block छोड़ें। UFW image की आवश्यक firewall configuration तथा iSCSI boot/block-volume rules से टकरा सकता है। मौजूदा iptables नियम और packages बनाए रखें; HTTP/HTTPS के लिए OCI security lists/NSGs तथा documented guest rules अपनाएँ। Existing rules flush न करें।

दूसरी नई Ubuntu images: provider UFW को support करे और किसी अन्य managed firewall की आवश्यकता न हो तभी अगला block चलाएँ। Enable करने से पहले असली SSH port की अनुमति दें; यहाँ port 22 माना गया है।

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

चुने गए firewall path के बाद नया SSH login जाँचें। चालू session का जुड़े रहना नई connection की परीक्षा नहीं। Certificate माँगने से पहले अगले भाग की बाहरी HTTP जाँच भी सफल होनी चाहिए।

अलग Nginx site में पेज रखें

Server पर नया document root और configuration बनाएँ। Block के अंदर hostname बदलें। Quoted EOF markers बनाए रखें, ताकि shell Nginx के $uri जैसे variables expand न करे।

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

Configuration test सफल होने पर ही reload करें।

sudo systemctl reload nginx

DNS बदलने से पहले अपने computer से इसी hostname को VPS address पर request करें। Default Nginx page के बजाय अपना heading दिखना चाहिए।

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

DNS जोड़ें और HTTPS certificate लें

Hostname का A record VPS के IPv4 पर रखें। AAAA तभी publish करें जब उसी server पर IPv6 काम करता हो; stale AAAA visitors और certificate validation को दूसरी जगह भेज सकता है। यह उदाहरण सीधे VPS पर pointing DNS का है, proxy का नहीं।

अपने computer से --resolve के बिना http://app.example.com/ माँगें। अपना page मिले तभी server पर Ubuntu archive का Certbot और Nginx plugin install करें। Universe repository चाहिए; package-not-found error को पहले सुलझाएँ।

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

Email और terms prompts पढ़ें। Certbot इस site की configuration में HTTPS और redirect जोड़ता है। Renewal timer scheduled होना चाहिए; inactive हो तो sudo systemctl enable --now certbot.timer से enable करें। HTTP validation/renewal के लिए port 80 पहुँच योग्य रखें।

बाहर से और reboot के बाद जाँचें

Client से redirect, certificate और content देखें। HTTP को HTTPS पर redirect होना चाहिए; HTTPS certificate validation के साथ अपना heading दिखाए। curl में -k न जोड़ें, क्योंकि वह certificate errors छिपाता है।

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

अभी test deployment होने पर server पर जानबूझकर sudo reboot चलाएँ। लौटने पर deploy से reconnect करें, systemctl is-active nginx देखें और बाहरी HTTPS request दोहराएँ। Reboot SSH बंद करता है; server न लौटे तो recovery console इस्तेमाल करें।

असफल जाँच का कारण खोजें और recovery रखें

छोटी स्क्रीन पर सभी कॉलम देखने के लिए तालिका को बगल में स्क्रॉल करें।

लक्षणपहली जाँच
SSH timeoutAddress, दोनों firewalls और recovery console
Permission denied (publickey)User, private key और authorized_keys permissions
Default Nginx pageDNS, server_name और enabled site
Certificate validation विफलPublic A/AAAA और port 80
Nginx बदलाव के बाद विफलsudo nginx -t और journalctl logs

Login की समस्या में SSH त्रुटि के अनुसार diagnosis करें। Files, Nginx configuration, DNS records और rebuild steps VPS से बाहर रखें। अलग जगह file restore जाँचें; backed-up TLS private keys के लिए सुरक्षित storage चाहिए।

Availability और certificate expiry alerts रखें। एक सफल request भविष्य के renewal की निगरानी नहीं करती। यह deployment static files के लिए है; database/runtime का अपना service और backup setup चाहिए। पूरे stack का load अलग मापें।

सवाल-जवाब

क्या ये commands चालू वेबसाइट पर चला सकते हैं?

पहले अलग test VPS पर अपनाएँ। उदाहरण files बनाता है, firewall enable कर सकता है और Certbot से Nginx बदलता है। Existing server में sites, access rules और recovery की पहले समीक्षा चाहिए।

क्या इससे WordPress या database install होता है?

नहीं। पहले static HTTPS site बनती है। इसके बाद runtime जोड़कर startup, health checks और data recovery अलग जाँचें।

यह walkthrough नए Ubuntu 24.04 VPS, सीधे DNS और SSH port 22 के लिए है। Oracle Ubuntu पर UFW छोड़ें। हर provider image पर पूरी प्रक्रिया चलाने का दावा नहीं है।

मूल तकनीकी दस्तावेज़

संबंधित गाइड