This content originally appeared on DEV Community and was authored by Md Tariqul Islam
সংক্ষিপ্ত বিবরণ
এই ডকুমেন্টেশনটি Hostinger VPS-এ Next.js অ্যাপ্লিকেশন ডিপ্লয় করার ধাপে ধাপে নির্দেশনা প্রদান করে। এটি naturalsefa.com, tariqul.naturalsefa.com, এবং tariqul.com ডোমেইনগুলোর জন্য Nginx রিভার্স প্রক্সি এবং PM2 প্রসেস ম্যানেজার ব্যবহার করে। গিটহাব অ্যাকশনের মাধ্যমে স্বয়ংক্রিয় ডিপ্লয়মেন্ট এবং Let’s Encrypt দিয়ে HTTPS সেটআপ অন্তর্ভুক্ত রয়েছে।
প্রয়োজনীয়তা
- Hostinger VPS: Ubuntu 22.04 বা তার উপরের ভার্সন, SSH অ্যাক্সেস সহ।
- ডোমেইন: naturalsefa.com, tariqul.naturalsefa.com, এবং tariqul.com, VPS IP-এর সাথে DNS লিঙ্ক করা।
- গিটহাব রিপোজিটরি: Next.js প্রজেক্ট হোস্ট করা।
- Environment Variables: Clerk publishable এবং secret key, NEXT_PUBLIC_SERVER_URL।
- টুলস: SSH ক্লায়েন্ট (PuTTY/Terminal), Git, টেক্সট এডিটর (nano/vim)।
-
প্রি-ইনস্টলড সফটওয়্যার:
- Node.js (v18.17+)
- Nginx
- PM2
- Certbot (Let’s Encrypt)
-
গিটহাব সিক্রেটস:
- VPS_IP: VPS-এর পাবলিক IP
- VPS_USERNAME: VPS-এর ইউজারনেম
- SSH_PRIVATE_KEY: VPS-এর SSH প্রাইভেট কী
- SSH_PASSPHRASE: SSH কী-এর পাসফ্রেজ (যদি থাকে)
ধাপসমূহ
ধাপ ১: VPS সেটআপ
- VPS-এ লগইন:
ssh root@your-vps-ip
- সিস্টেম আপডেট:
sudo apt update && sudo apt upgrade -y
-
প্রয়োজনীয় সফটওয়্যার ইনস্টল:
- Node.js:
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash - sudo apt-get install -y nodejs
- Nginx:
sudo apt install nginx -y sudo systemctl enable nginx
- PM2:
sudo npm install -g pm2
- Git:
sudo apt install git -y
- ফায়ারওয়াল সেটআপ:
sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 22 sudo ufw enable
SSH কী সেটআপ:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
- প্রাইভেট কী কপি করুন:
cat ~/.ssh/id_rsa
- গিটহাবে Settings > Secrets > Actions সেকশনে SSH_PRIVATE_KEY যোগ করুন।
ধাপ ২: Next.js প্রজেক্ট ডিপ্লয়
2.1: naturalsefa.com এবং tariqul.naturalsefa.com
- প্রজেক্ট ক্লোন:
mkdir -p ~/apps/naturalsefa
cd ~/apps/naturalsefa
git clone git@github.com:yourusername/naturalsefa-repo.git .
- Environment Variables:
nano ~/apps/naturalsefa/.env
CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
NEXT_PUBLIC_SERVER_URL=https://naturalsefa.com
- বিল্ড এবং রান:
npm install
npm run build
pm2 start npm --name "naturalsefa-frontend" -- start
pm2 save
pm2 startup
2.2: tariqul.com
- প্রজেক্ট ক্লোন:
mkdir -p ~/apps/tariqul
cd ~/apps/tariqul
git clone git@github.com:yourusername/tariqul-repo.git .
- Environment Variables:
nano ~/apps/tariqul/.env
CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
NEXT_PUBLIC_SERVER_URL=https://tariqul.com
- বিল্ড এবং রান:
npm install
npm run build
pm2 start npm --name "tariqul-frontend" -- start --port 3001
pm2 save
ধাপ ৩: গিটহাব অ্যাকশন সেটআপ
- naturalsefa রিপোজিটরির জন্য:
mkdir -p .github/workflows
nano .github/workflows/deploy.yml
name: Deploy Next.js to VPS
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Deploy to VPS
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.VPS_IP }}
username: ${{ secrets.VPS_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
passphrase: ${{ secrets.SSH_PASSPHRASE }}
script: |
cd ~/apps/naturalsefa
git pull origin main
npm install
npm run build
pm2 restart naturalsefa-frontend
- tariqul রিপোজিটরির জন্য:
mkdir -p .github/workflows
nano .github/workflows/deploy.yml
name: Deploy Next.js to VPS
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Repository
uses: actions/checkout@v3
- name: Deploy to VPS
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.VPS_IP }}
username: ${{ secrets.VPS_USERNAME }}
key: ${{ secrets.SSH_PRIVATE_KEY }}
passphrase: ${{ secrets.SSH_PASSPHRASE }}
script: |
cd ~/apps/tariqul
git pull origin main
npm install
npm run build
pm2 restart tariqul-frontend
-
গিটহাব সিক্রেটস:
- Settings > Secrets > Actions সেকশনে:
- VPS_IP: 203.0.113.10
- VPS_USERNAME: root
- SSH_PRIVATE_KEY: SSH প্রাইভেট কী
- SSH_PASSPHRASE: পাসফ্রেজ (যদি থাকে)
ধাপ ৪: Nginx কনফিগারেশন
naturalsefa.com এবং tariqul.naturalsefa.com:
sudo nano /etc/nginx/sites-available/naturalsefa.com
server {
listen 80;
server_name naturalsefa.com www.naturalsefa.com tariqul.naturalsefa.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name naturalsefa.com;
ssl_certificate /etc/letsencrypt/live/naturalsefa.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/naturalsefa.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
server {
listen 443 ssl;
server_name www.naturalsefa.com;
ssl_certificate /etc/letsencrypt/live/naturalsefa.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/naturalsefa.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
return 301 https://naturalsefa.com$request_uri;
}
server {
listen 443 ssl;
server_name tariqul.naturalsefa.com;
ssl_certificate /etc/letsencrypt/live/naturalsefa.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/naturalsefa.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
tariqul.com:
sudo nano /etc/nginx/sites-available/tariqul.com
server {
listen 80;
server_name tariqul.com www.tariqul.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name tariqul.com;
ssl_certificate /etc/letsencrypt/live/tariqul.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tariqul.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://localhost:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
server {
listen 443 ssl;
server_name www.tariqul.com;
ssl_certificate /etc/letsencrypt/live/tariqul.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/tariqul.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
return 301 https://tariqul.com$request_uri;
}
- সাইট এনাবল এবং রিস্টার্ট:
sudo ln -s /etc/nginx/sites-available/naturalsefa.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/tariqul.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
ধাপ ৫: SSL সার্টিফিকেট সেটআপ
- Certbot ইনস্টল:
sudo apt install certbot python3-certbot-nginx -y
-
SSL সার্টিফিকেট তৈরি:
- naturalsefa.com:
sudo certbot --nginx -d naturalsefa.com -d www.naturalsefa.com -d tariqul.naturalsefa.com
- tariqul.com:
sudo certbot --nginx -d tariqul.com -d www.tariqul.com
অটো-রিনিউয়াল চেক:
sudo certbot renew --dry-run
ধাপ ৬: টেস্টিং
-
ওয়েবসাইট:
- ব্রাউজারে খুলুন:
- https://naturalsefa.com
- https://tariqul.naturalsefa.com
- https://tariqul.com
- www ভার্সন রিডাইরেক্ট চেক করুন।
- গিটহাব অ্যাকশন:
git add .
git commit -m "Test auto-deploy"
git push origin main
- গিটহাব Actions ট্যাবে স্ট্যাটাস চেক করুন।
- VPS-এ ফাইল চেক:
ls -la ~/apps/naturalsefa
ls -la ~/apps/tariqul
সমস্যা সমাধান
-
গিটহাব অ্যাকশন ত্রুটি:
- Actions ট্যাবে লগ চেক করুন।
- SSH কী চেক:
ssh -i ~/.ssh/id_rsa your_vps_username@your_vps_ip
- Nginx ত্রুটি:
sudo tail -f /var/log/nginx/error.log
- PM2 ত্রুটি:
pm2 logs naturalsefa-frontend
pm2 logs tariqul-frontend
সিকিউরিটি সুপারিশ
- SSH: Password-এর পরিবর্তে SSH key ব্যবহার করুন।
- Root লগইন:
/etc/ssh/sshd_config
-এPermitRootLogin no
সেট করুন। - মনিটরিং: UptimeRobot দিয়ে সাইট মনিটর করুন।
রেফারেন্স
- Next.js ডিপ্লয় গাইড
- গিটহাব অ্যাকশন ডকুমেন্টেশন
- Nginx ডকুমেন্টেশন
- Let’s Encrypt
পরিশিষ্ট
- তারিখ: ৮ জুলাই, ২০২৫
- লেখক: Grok 3, xAI
- যোগাযোগ: প্রশ্ন থাকলে Hostinger সাপোর্ট বা ডেভেলপারের সাথে যোগাযোগ করুন।
This content originally appeared on DEV Community and was authored by Md Tariqul Islam

Md Tariqul Islam | Sciencx (2025-07-08T17:28:54+00:00) Next.js ডিপ্লয় ডকুমেন্টেশন (Hostinger VPS). Retrieved from https://www.scien.cx/2025/07/08/next-js-%e0%a6%a1%e0%a6%bf%e0%a6%aa%e0%a7%8d%e0%a6%b2%e0%a6%af%e0%a6%bc-%e0%a6%a1%e0%a6%95%e0%a7%81%e0%a6%ae%e0%a7%87%e0%a6%a8%e0%a7%8d%e0%a6%9f%e0%a7%87%e0%a6%b6%e0%a6%a8-hostinger-vps/
Please log in to upload a file.
There are no updates yet.
Click the Upload button above to add an update.