Skip to Content

GitHub Setup

এই page-এ server-কে GitHub-এর সাথে connect করবেন যাতে আপনার code সহজে server-এ নিয়ে আসা যায়। দুটো পদ্ধতি দেখাবো — solo developer-দের জন্য সহজ উপায় এবং production-এর জন্য প্রফেশনাল উপায়।

Why This Matters

অনেকে মনে করেন server-এ code নেওয়ার জন্য সরাসরি file copy করলেই হয়। কিন্তু এটি কখনো করবেন না। সঠিক workflow হলো:

আপনার Computer → push → GitHub → pull → Server

এই workflow-এর সুবিধা:

  • প্রতিটি code change-এর history থাকে — কে কখন কী পরিবর্তন করেছে
  • কোনো সমস্যা হলে যেকোনো পুরোনো version-এ ফিরে যাওয়া যায়
  • Team-এ কাজ করলে সবাই একই codebase share করতে পারে
  • পরবর্তীতে CI/CD pipeline যোগ করা সহজ হয়

সুতরাং server-এর GitHub-এর সাথে connection থাকা একটি বাধ্যতামূলক production practice।

Two Methods

Public repository হলে কোনো authentication লাগে না — সরাসরি git clone URL এবং git pull কাজ করবে। এই page শুধু private repository-র জন্য প্রযোজ্য।

SSH Deploy Key

এটি production-এর জন্য সবচেয়ে নিরাপদ পদ্ধতি। Server-এ একটি নতুন SSH key তৈরি করা হয় এবং সেটি শুধুমাত্র ওই নির্দিষ্ট GitHub repository-র read access পায়।

Generate Key on Server

Server-এ একটি নতুন SSH key তৈরি করুন। এটি আপনার personal key থেকে আলাদা — শুধু এই server-এর জন্য:

SERVER — Terminal
ssh-keygen -t ed25519 -C "server-deploy-key" -f ~/.ssh/github_deploy

এটি দুটি ফাইল তৈরি করবে:

  1. ~/.ssh/github_deploy — Private Key (server-এ থাকবে, কাউকে দেবেন না)
  2. ~/.ssh/github_deploy.pub — Public Key (GitHub-এ যোগ করবেন)

Add to GitHub

Public key-এর content দেখুন:

SERVER — Terminal
cat ~/.ssh/github_deploy.pub

Output copy করুন। এখন GitHub-এ যান:

  • আপনার repository → SettingsDeploy KeysAdd deploy key
  • Title: Production Server
  • Key: paste করুন
  • Allow write access: টিক দেবেন না (শুধু read access দিন)
  • Add key click করুন

Deploy Key কেন read-only? Server-এর কাজ শুধু code নিয়ে আসা (pull), কোনো code পাঠানো (push) নয়। Write access না দেওয়া মানে server compromise হলেও attacker আপনার GitHub-এ কোনো malicious code push করতে পারবে না।

Configure SSH

Server-এ SSH config file তৈরি করুন যাতে GitHub connection-এ এই key ব্যবহার হয়:

SERVER — Terminal
nano ~/.ssh/config

নিচের content যোগ করুন:

~/.ssh/config
Host github.com IdentityFile ~/.ssh/github_deploy IdentitiesOnly yes

Test Connection

SERVER — Terminal
ssh -T git@github.com

Hi username! You've successfully authenticated দেখলে সফল।

Clone Repository

SSH URL ব্যবহার করে clone করুন (HTTPS নয়):

SERVER — Terminal
git clone git@github.com:YOUR_USERNAME/YOUR_REPO.git

Daily Update Workflow

Code update করতে হলে server-এ গিয়ে:

SERVER — Terminal
# project folder-এ যান cd ~/YOUR_REPO # নতুন code নিন (GitHub থেকে) git pull # production build তৈরি করুন npm run build # app restart করুন (PM2 setup হলে) pm2 restart myapp

প্রতিটি command কী করে:

  • git pull — GitHub থেকে নতুন সব commit নামিয়ে আনে। এটি শুধু code download করে, app restart করে না।
  • npm run build — আপনার Next.js code-কে optimized production bundle-এ রূপান্তরিত করে। এই ফাইলগুলো .next/ folder-এ থাকে।
  • pm2 restart myapp — চলমান app-টি বন্ধ করে নতুন build দিয়ে আবার চালু করে।

git pull-এর পরে npm run build না করলে পুরোনো build দিয়েই app চলতে থাকবে — নতুন code কাজ করবে না।

Server-এ কখনো npm run dev চালাবেন না।

npm run dev শুধু আপনার নিজের computer-এ development-এর জন্য। Server-এ সবসময় npm run build করে npm run start চালাতে হয় (PM2-এর মাধ্যমে)।

Commandকোথায় চালাবেনকেন
npm run devশুধু LocalDevelopment, hot reload, error details দেখায়
npm run buildServerOptimized bundle তৈরি করে
npm run startServer (PM2 দিয়ে)Production server চালু করে

CyberSec Note

Least Privilege Principle: Deploy Key-কে read-only রাখা এবং PAT-এ minimum scope দেওয়া — এই ধারণাটি সিকিউরিটির একটি মৌলিক নীতি।

SSH Deploy Key কেন personal key-এর চেয়ে নিরাপদ:

  • Personal key compromise হলে attacker আপনার সব GitHub repo-তে access পাবে
  • Deploy Key compromise হলে শুধু ওই একটি repo-র read access পাবে

PAT-এর জন্য মনে রাখবেন:

  • Expiration date সেট করুন — token পুরনো হলে rotate করুন
  • .env ফাইলে token রাখবেন না — এটি git pull-এর credential, deploy করার পরে .git/config-এ থাকে
  • Token কখনো GitHub-এ push করবেন না — GitHub নিজেই secret scanning করে এবং exposed token revoke করে দেয়

Quick Check

  • ssh -T git@github.com সফল হচ্ছে? (SSH Deploy Key পদ্ধতিতে)
  • Deploy Key-এ write access দেওয়া হয়নি?
  • git clone সফলভাবে সম্পন্ন হয়েছে?
  • git pull দিলে latest code আসছে?

পরবর্তী → Environment Variables

github server setup bangla, ssh deploy key bangla, personal access token bangla, git pull server bangla, private repo server bangla, github authentication server bangla, deploy key vs pat bangla

Last updated on