This content originally appeared on DEV Community and was authored by Md Tariqul Islam
সংক্ষিপ্ত বিবরণ
এই ডকুমেন্টেশনটি Hostinger VPS-এ Express.js ব্যাকএন্ড ডিপ্লয় করার ধাপে ধাপে নির্দেশনা প্রদান করে। এটি naturalsefa.com এবং tariqul.com ডোমেইনগুলোর জন্য API এন্ডপয়েন্ট (/api) সেটআপ করে। Nginx, PM2, এবং গিটহাব অ্যাকশন ব্যবহার করা হয়েছে।
প্রয়োজনীয়তা
- Hostinger VPS: Ubuntu 22.04 বা তার উপরের ভার্সন, SSH অ্যাক্সেস সহ।
- ডোমেইন: naturalsefa.com, tariqul.naturalsefa.com, এবং tariqul.com।
- গিটহাব রিপোজিটরি: Express.js প্রজেক্ট হোস্ট করা।
- Environment Variables: PORT এবং অন্যান্য API-সম্পর্কিত কী।
- টুলস: SSH ক্লায়েন্ট, Git, টেক্সট এডিটর।
-
প্রি-ইনস্টলড সফটওয়্যার:
- Node.js (v18.17+)
- Nginx
- PM2
-
গিটহাব সিক্রেটস:
- VPS_IP: VPS-এর পাবলিক IP
- VPS_USERNAME: VPS-এর ইউজারনেম
- SSH_PRIVATE_KEY: SSH প্রাইভেট কী
- SSH_PASSPHRASE: SSH কী-এর পাসফ্রেজ (যদি থাকে)
ধাপসমূহ
ধাপ ১: VPS সেটআপ
- VPS-এ লগইন:
ssh root@your-vps-ip
-
প্রয়োজনীয় সফটওয়্যার ইনস্টল:
- 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
ধাপ ২: Express.js প্রজেক্ট ডিপ্লয়
2.1: naturalsefa.com
- প্রজেক্ট ক্লোন:
mkdir -p ~/apps/naturalsefa/server
cd ~/apps/naturalsefa/server
git clone git@github.com:yourusername/naturalsefa-backend-repo.git .
- Environment Variables:
nano ~/apps/naturalsefa/server/.env
PORT=4000
- বিল্ড এবং রান:
npm install
pm2 start index.js --name "naturalsefa-backend"
pm2 save
pm2 startup
2.2: tariqul.com
- প্রজেক্ট ক্লোন:
mkdir -p ~/apps/tariqul/server
cd ~/apps/tariqul/server
git clone git@github.com:yourusername/tariqul-backend-repo.git .
- Environment Variables:
nano ~/apps/tariqul/server/.env
PORT=4001
- বিল্ড এবং রান:
npm install
pm2 start index.js --name "tariqul-backend" -- --port 4001
pm2 save
ধাপ ৩: গিটহাব অ্যাকশন সেটআপ
- naturalsefa-backend রিপোজিটরির জন্য:
mkdir -p .github/workflows
nano .github/workflows/deploy.yml
name: Deploy Express.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/server
git pull origin main
npm install
pm2 restart naturalsefa-backend
- tariqul-backend রিপোজিটরির জন্য:
mkdir -p .github/workflows
nano .github/workflows/deploy.yml
name: Deploy Express.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/server
git pull origin main
npm install
pm2 restart tariqul-backend
-
গিটহাব সিক্রেটস:
- Settings > Secrets > Actions সেকশনে:
- VPS_IP: 203.0.113.10
- VPS_USERNAME: root
- SSH_PRIVATE_KEY: SSH প্রাইভেট কী
- SSH_PASSPHRASE: পাসফ্রেজ (যদি থাকে)
ধাপ ৪: Nginx কনফিগারেশন
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 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 /api {
proxy_pass http://localhost:4000;
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;
}
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 /api {
proxy_pass http://localhost:4001;
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
ধাপ ৬: টেস্টিং
-
API এন্ডপয়েন্ট:
- ব্রাউজারে বা Postman-এ চেক করুন:
- https://naturalsefa.com/api
- https://tariqul.com/api
- গিটহাব অ্যাকশন:
git add .
git commit -m "Test auto-deploy"
git push origin main
- গিটহাব Actions ট্যাবে স্ট্যাটাস চেক করুন।
- VPS-এ ফাইল চেক:
ls -la ~/apps/naturalsefa/server
ls -la ~/apps/tariqul/server
সমস্যা সমাধান
-
গিটহাব অ্যাকশন ত্রুটি:
- 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-backend
pm2 logs tariqul-backend
সিকিউরিটি সুপারিশ
- SSH: Password-এর পরিবর্তে SSH key ব্যবহার করুন।
- Root লগইন:
/etc/ssh/sshd_config
-এPermitRootLogin no
সেট করুন। - মনিটরিং: UptimeRobot দিয়ে API মনিটর করুন।
রেফারেন্স
- Express.js ডকুমেন্টেশন
- গিটহাব অ্যাকশন ডকুমেন্টেশন
- Nginx ডকুমেন্টেশন
পরিশিষ্ট
- তারিখ: ৮ জুলাই, ২০২৫
- লেখক: 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:34:04+00:00) Express.js ডিপ্লয় ডকুমেন্টেশন (Hostinger VPS). Retrieved from https://www.scien.cx/2025/07/08/express-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.