Hosting & Server DevOps

How to Run Node.js Apps 24/7 on Free VPS Alternatives

একটি কাস্টম নোড-জেএস (Node.js) প্রজেক্ট, এক্সপ্রেস এপিআই (Express API) কিংবা টেলিগ্রাম ইউজার-বট তৈরি করার পর সেটিকে ২৪ ঘণ্টা সচল রাখার প্রয়োজন পড়ে। এর জন্য সাধারণত DigitalOcean, AWS বা অন্যান্য প্রোভাইডার থেকে পেইড ভিপিএস (VPS) কিনতে হয়, যা অনেক ডেভলপার বা স্টুডেন্টদের জন্য ব্যয়বহুল।

Heroku তাদের ফ্রি টিয়ার বন্ধ করে দেওয়ার পর বর্তমানে বেশ কিছু আধুনিক ক্লাউড প্ল্যাটফর্ম এসেছে যা সম্পূর্ণ ফ্রিতে PaaS (Platform as a Service) মডেলের মাধ্যমে আমাদের Node.js অ্যাপ্লিকেশন লাইভ রাখার সুবিধা দেয়। ক্রেডিট কার্ড ছাড়াই কীভাবে এই ফ্রি ভিপিএস অল্টারনেটিভসগুলো ব্যবহার করবেন, আজ আমরা তা জানবো।

১. সেরা দুটি ফ্রি ক্লাউড ইনফ্রাস্ট্রাকচার প্ল্যাটফর্ম

  • Render.com: বর্তমানে নোড-জেএস ব্যাকএন্ড হোস্ট করার জন্য সবচেয়ে জনপ্রিয় এবং নির্ভরযোগ্য ফ্রি প্ল্যাটফর্ম। এটি সরাসরি গিটহাব ডিরেক্টরি ট্র্যাক করে অটো-ডেপ্লয়মেন্ট সম্পন্ন করে।
  • Koyeb.com: এটি একটি গ্লোবাল সার্ভারলেস প্ল্যাটফর্ম যা মাইক্রো-কনটেইনার প্রযুক্তির মাধ্যমে অত্যন্ত দ্রুত অ্যাপ্লিকেশন রান করায়। এদের ফ্রি টায়ারে অ্যাপ কখনো স্লিপিং মোডে যায় না, যা বটের জন্য দারুণ উপযোগী।

ধাপ ২: প্রজেক্ট রেডি করা (package.json কনফিগারেশন)

ক্লাউড সার্ভারে প্রজেক্ট সাবমিট করার আগে আপনার লোকাল বা টারমাক্স প্রজেক্টের package.json ফাইলটি ওপেন করুন। সার্ভার যেন আপনার স্ক্রিপ্টটি স্টার্ট করার কমান্ড খুঁজে পায়, সেজন্য scripts ব্লকের ভেতর start কমান্ডটি এভাবে ডিফাইন করে দিন:

{
  "name": "ahyan-free-api",
  "version": "1.0.0",
  "description": "Hosted on free container server",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.19.2"
  }
}

ধাপ ৩: এক্সপ্রেস ডেমো সার্ভার কোড তৈরি

সার্ভার সচল আছে কিনা তা ট্র্যাক করার জন্য আপনার server.js ফাইলে একটি বেসিক পোর্ট লিসেনার সেট করুন। ক্লাউড প্ল্যাটফর্মগুলো ডাইনামিক পোর্ট ব্যবহার করে, তাই কোডে এনভায়রনমেন্ট পোর্ট (process.env.PORT) ব্যবহার করা বাধ্যতামূলক:

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

app.get('/', (req, res) => {
    res.json({
        status: "Running",
        message: "Welcome to Ahyan Creations Free Hosted Node.js API Service!",
        timestamp: new Date()
    });
});

app.listen(PORT, () => {
    console.log(`Server successfully binded to port ${PORT}`);
});

ধাপ ৪: গিটহাবের মাধ্যমে ডেপ্লয়মেন্ট প্রসেস

আপনার পুরো কোডটি প্রথমে GitHub-এ একটি প্রাইভেট বা পাবলিক রিপোজিটরিতে পুশ (Push) করুন। এরপর নিচের সহজ পদ্ধতি অনুসরণ করুন:

  1. Render Dashboard-এ যান এবং সাইন আপ করুন।
  2. New + ➔ Web Service অপশনটি সিলেক্ট করুন।
  3. আপনার GitHub অ্যাকাউন্টটি কানেক্ট করে নির্দিষ্ট প্রজেক্ট রিপোজিটরিটি সিলেক্ট করুন।
  4. Runtime হিসেবে Node, Build Command হিসেবে npm install এবং Start Command হিসেবে npm start লিখে Deploy Web Service বাটনে ক্লিক করুন।

ক্রিটিক্যাল টিপস (Keep-Alive Trick): Render-এর ফ্রি টায়ারে যদি টানা ১৫ মিনিট কোনো ট্রাফিক বা রিকোয়েস্ট না আসে, তবে সার্ভারটি সাময়িকভাবে স্লিপিং (Sleep) মোডে চলে যায়। পরবর্তী সময়ে কেউ ভিজিট করলে সচল হতে ৩০ সেকেন্ড সময় নেয়। এটি এড়াতে পূর্বের গাইডে শেখানো GitHub Actions Cron Job ব্যবহার করে প্রতি ১০ মিনিটে আপনার এই ফ্রি সার্ভার ইউআরএল-এ একটি করে ফেচ (Fetch) বা পিং (Ping) রিকোয়েস্ট পাঠান। এতে আপনার সার্ভার এক সেকেন্ডের জন্যও স্লিপ মোডে যাবে না এবং ২৪ ঘণ্টা ফুল একটিভ ভিপিএস-এর মতো কাজ করবে!