Express.js ডিপ্লয় ডকুমেন্টেশন (Hostinger VPS)

সংক্ষিপ্ত বিবরণ

এই ডকুমেন্টেশনটি Hostinger VPS-এ Express.js ব্যাকএন্ড ডিপ্লয় করার ধাপে ধাপে নির্দেশনা প্রদান করে। এটি naturalsefa.com এবং tariqul.com ডোমেইনগুলোর জন্য API এন্ডপয়েন্ট (/api) সেটআপ করে। Nginx, PM2, এবং গিটহাব অ্যাকশন ব্যবহার …


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

ধাপ ৬: টেস্টিং

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


Print Share Comment Cite Upload Translate Updates
APA

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/

MLA
" » Express.js ডিপ্লয় ডকুমেন্টেশন (Hostinger VPS)." Md Tariqul Islam | Sciencx - Tuesday July 8, 2025, 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/
HARVARD
Md Tariqul Islam | Sciencx Tuesday July 8, 2025 » Express.js ডিপ্লয় ডকুমেন্টেশন (Hostinger VPS)., viewed ,<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/>
VANCOUVER
Md Tariqul Islam | Sciencx - » Express.js ডিপ্লয় ডকুমেন্টেশন (Hostinger VPS). [Internet]. [Accessed ]. Available 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/
CHICAGO
" » Express.js ডিপ্লয় ডকুমেন্টেশন (Hostinger VPS)." Md Tariqul Islam | Sciencx - Accessed . 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/
IEEE
" » Express.js ডিপ্লয় ডকুমেন্টেশন (Hostinger VPS)." Md Tariqul Islam | Sciencx [Online]. Available: 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/. [Accessed: ]
rf:citation
» Express.js ডিপ্লয় ডকুমেন্টেশন (Hostinger VPS) | Md Tariqul Islam | Sciencx | 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.

You must be logged in to translate posts. Please log in or register.