ویب ایپلیکیشنز کے لیے # AWS EC2 تعیناتی گائیڈ
EC2 ویب ایپلیکیشنز کے لیے AWS میں کمپیوٹ کا سب سے لچکدار آپشن ہے جس کے لیے مستقل کارکردگی، کسٹم سافٹ ویئر اسٹیک، اور قابل پیشن گوئی قیمتوں کی ضرورت ہے۔ جب کہ ECS، EKS، اور Lambda کلاؤڈ کی مقامی دنیا میں زیادہ توجہ حاصل کرتے ہیں، EC2 آپ کو ایک ایسا سرور فراہم کرتا ہے جس پر آپ مکمل طور پر کنٹرول کرتے ہیں — کوئی کنٹینر آرکیسٹریشن کی پیچیدگی، کوئی کولڈ اسٹارٹ لیٹنسی، کوئی سرپرائز انووکیشن لاگت نہیں۔
اس گائیڈ میں EC2 پر پروڈکشن Node.js ویب ایپلیکیشن کی تعیناتی کا احاطہ کیا گیا ہے: مثال کا انتخاب، سیکیورٹی گروپ کنفیگریشن، ایپلیکیشن کی تعیناتی، Nginx ریورس پراکسی، Cloudflare کے ساتھ SSL، CloudWatch کے ساتھ نگرانی، اور جاری دیکھ بھال کے پیٹرن جو EC2 کی تعیناتی کو صحت مند رکھتے ہیں۔
اہم ٹیک ویز
- t3.large مکمل اسٹیک Node.js + PostgreSQL تعیناتی کا صحیح نقطہ آغاز ہے۔
- Ubuntu 24.04 LTS استعمال کریں - 2029 تک تعاون یافتہ، وسیع پیمانے پر دستاویزی، بہترین پیکیج کی دستیابی
- لچکدار IP لازمی ہے — آپ کا EC2 IP ہر سٹاپ/شروع پر اس کے بغیر تبدیل ہوتا ہے۔
- سیکورٹی گروپ اسٹیٹفول ہیں - آپ کو صرف ان باؤنڈ قوانین کی ضرورت ہے۔ آؤٹ باؤنڈ عام طور پر سب کی اجازت ہے۔
- اپنی تعیناتی SSH کلید کو ایک علیحدہ
.pemفائل میں محفوظ کریں۔ اسے کبھی بھی گٹ کا ارتکاب نہ کریں۔- جب ممکن ہو تو براہ راست SSH کے بجائے EC2 مثال کنیکٹ یا سیشن مینیجر کا استعمال کریں (صفر کلیدی انتظام)
- CloudWatch ایجنٹ آپ کو میموری اور ڈسک میٹرکس دیتا ہے (بطور ڈیفالٹ دستیاب نہیں)
- محفوظ مثالیں یا بچت کے منصوبے EC2 کی لاگت کو 40-60% تک کم کرتے ہیں بمقابلہ آن ڈیمانڈ
مثال کا انتخاب
صحیح مثال کی قسم آپ کے کام کے بوجھ پر منحصر ہے:
| کام کا بوجھ | تجویز کردہ مثال | vCPU | رام | لاگت/مہینہ |
|---|---|---|---|---|
| روشنی (بلاگ، چھوٹی ایپ) | t3.small | 2 | 2GB | ~$18 |
| میڈیم (مکمل اسٹیک ایپ) | t3.medium | 2 | 4GB | ~$35 |
| پیداوار (ملٹی سروس) | t3.large | 2 | 8GB | ~$70 |
| ہیوی (ہائی ٹریفک API) | c6i.xlarge | 4 | 8GB | ~$140 |
| میموری بھاری (ML/cache) | r6i.large | 2 | 16GB | ~$120 |
5 Node.js ایپلی کیشنز (Next.js, NestJS, Docusaurus, 2 برانڈ سائٹس) کے علاوہ Docker انفراسٹرکچر (PostgreSQL, Redis, Authentik) کے ساتھ ایک monorepo کے لیے، ایک t3.large کم از کم قابل عمل کنفیگریشن ہے۔ T3 خاندان "برسٹ ایبل" کارکردگی کا استعمال کرتا ہے — کارکردگی عام آپریشن کے دوران بہترین ہوتی ہے لیکن پائیدار اعلی CPU تھروٹلنگ کو متحرک کرتا ہے۔
مستقل طور پر اعلی CPU ورک بوجھ (ویڈیو پروسیسنگ، ایم ایل انفرنس، ہیوی کرپٹوگرافی) کے لیے، اس کے بجائے c6i (کمپیوٹ آپٹمائزڈ) مثالیں استعمال کریں۔
ابتدائی سرور سیٹ اپ
Ubuntu 24.04 کے ساتھ اپنا EC2 مثال شروع کرنے کے بعد:
# Connect via SSH
ssh -i your-key.pem [email protected]
# Update system packages
sudo apt update && sudo apt upgrade -y
# Install essential tools
sudo apt install -y \
git curl wget unzip \
build-essential \
nginx \
certbot python3-certbot-nginx \
docker.io docker-compose-plugin \
htop ncdu iotop
# Install Node.js via NVM (allows easy version management)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 22
nvm use 22
nvm alias default 22
# Install pnpm
curl -fsSL https://get.pnpm.io/install.sh | sh -
source ~/.bashrc
# Install PM2 globally
npm install -g pm2
# Install PM2 log rotation immediately
pm2 install pm2-logrotate
pm2 set pm2-logrotate:max_size 50M
pm2 set pm2-logrotate:retain 7
pm2 set pm2-logrotate:compress true
سیکیورٹی گروپ کنفیگریشن
سیکیورٹی گروپ آپ کے EC2 مثال کا فائر وال ہے۔ اسے احتیاط سے ترتیب دیں:
Inbound Rules:
┌─────────┬──────────┬─────────────┬──────────────────────────────────┐
│ Type │ Protocol │ Port Range │ Source │
├─────────┼──────────┼─────────────┼──────────────────────────────────┤
│ SSH │ TCP │ 22 │ Your IP only (not 0.0.0.0/0!) │
│ HTTP │ TCP │ 80 │ 0.0.0.0/0 (Cloudflare IPs only) │
│ HTTPS │ TCP │ 443 │ 0.0.0.0/0 (Cloudflare IPs only) │
└─────────┴──────────┴─────────────┴──────────────────────────────────┘
Note: Internal app ports (3000, 3001, 3002, etc.) should NOT be
in the security group — traffic goes through Nginx only
Cloudflare-proxied ڈومینز کے لیے، HTTP/HTTPS کو Cloudflare IP رینجز تک محدود کریں:
# Cloudflare IPv4 ranges — restrict port 80/443 source to these
103.21.244.0/22
103.22.200.0/22
103.31.4.0/22
104.16.0.0/13
104.24.0.0/14
108.162.192.0/18
131.0.72.0/22
141.101.64.0/18
162.158.0.0/15
172.64.0.0/13
173.245.48.0/20
188.114.96.0/20
190.93.240.0/20
197.234.240.0/22
198.41.128.0/17
یہ Cloudflare کے WAF اور DDoS تحفظ کو نظرانداز کرتے ہوئے آپ کے سرور تک براہ راست رسائی کو روکتا ہے۔
درخواست کی تعیناتی۔
# Create application directory
sudo mkdir -p /opt/ecosire/app
sudo chown ubuntu:ubuntu /opt/ecosire/app
# Clone the repository
git clone https://github.com/your-org/your-repo.git /opt/ecosire/app
cd /opt/ecosire/app
# Create .env.local from template
cp .env.example .env.local
# Edit with production values
nano .env.local
# Install dependencies
pnpm install --frozen-lockfile
# Build everything
npx turbo run build
# Run database migrations
pnpm --filter @ecosire/db db:migrate
# Start infrastructure (PostgreSQL, Redis, Authentik)
docker compose -f infrastructure/docker-compose.dev.yml up -d
# Wait for services to be healthy
sleep 30
# Start Node.js applications
pm2 start ecosystem.config.cjs
# Save process list for reboot persistence
pm2 save
# Configure PM2 to start on system boot
pm2 startup
# Run the command it outputs
لچکدار IP اور DNS
جب بھی آپ اسے روکتے اور شروع کرتے ہیں تو EC2 مثال کا عوامی IP تبدیل ہوتا ہے۔ لچکدار IP ایک مستقل IP فراہم کرتا ہے:
# In AWS Console:
# 1. EC2 > Network & Security > Elastic IPs
# 2. Allocate Elastic IP address
# 3. Associate it with your instance
# Your IP is now permanent — update Cloudflare DNS to point to it
# A record: ecosire.com → 13.223.116.181 (your Elastic IP)
# A record: api.ecosire.com → 13.223.116.181
# A record: auth.ecosire.com → 13.223.116.181
Cloudflare میں، ویب ٹریفک کے لیے ان ریکارڈز کو "Proxied" (اورنج کلاؤڈ) پر سیٹ کریں۔ Cloudflare پراکسی آپ کے اصل EC2 IP کو چھپاتا ہے، جو DDoS تحفظ فراہم کرتا ہے۔
اسٹوریج: ای بی ایس والیوم مینجمنٹ
EC2 مثالوں میں روٹ EBS والیوم شامل ہے۔ پروڈکشن کے لیے، آپ کو تعمیراتی نمونے، لاگز، اور ڈوکر ڈیٹا کے لیے کافی جگہ درکار ہے:
# Check current disk usage
df -h
# Check which directories are consuming space
ncdu /
# Typical space requirements for a 5-app monorepo:
# - /opt/ecosire/app: ~2GB (code + node_modules + .next builds)
# - Docker data (/var/lib/docker): ~5GB
# - PM2 logs (/var/log/pm2): ~1GB (with rotation)
# - System: ~5GB
# Total: ~13GB minimum, recommend 30GB+ root volume
# If you need to resize an EBS volume (no downtime needed):
# 1. In AWS Console: EC2 > Volumes > Modify Volume
# 2. After resize completes, grow the filesystem:
sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1
کلاؤڈ واچ مانیٹرنگ
EC2 بنیادی CPU اور نیٹ ورک میٹرکس بطور ڈیفالٹ فراہم کرتا ہے۔ میموری اور ڈسک میٹرکس کے لیے، CloudWatch ایجنٹ انسٹال کریں:
# Download and install CloudWatch agent
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i amazon-cloudwatch-agent.deb
# Create configuration
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
// /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json
{
"agent": {
"metrics_collection_interval": 60,
"run_as_user": "cwagent"
},
"metrics": {
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"mem": {
"measurement": ["mem_used_percent"],
"metrics_collection_interval": 60
},
"disk": {
"measurement": ["used_percent"],
"metrics_collection_interval": 60,
"resources": ["/", "/opt/ecosire"]
}
}
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/pm2/ecosire-api.err.log",
"log_group_name": "/ec2/ecosire/api-errors",
"log_stream_name": "{instance_id}"
},
{
"file_path": "/var/log/nginx/ecosire-error.log",
"log_group_name": "/ec2/ecosire/nginx-errors",
"log_stream_name": "{instance_id}"
}
]
}
}
}
}
# Start the agent
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config \
-m ec2 \
-c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json \
-s
خودکار بیک اپ
S3 پر خودکار PostgreSQL بیک اپ سیٹ کریں:
# Create backup script
cat > /opt/ecosire/scripts/backup-db.sh << 'EOF'
#!/bin/bash
set -e
DATE=$(date +%Y-%m-%d-%H%M%S)
BACKUP_FILE="/tmp/ecosire-db-${DATE}.sql.gz"
S3_BUCKET="s3://your-backups-bucket/postgres"
# Dump the database (connects via Docker network)
docker exec ecosire-postgres pg_dump \
-U ecosire \
-d ecosire_dev \
--no-owner \
--no-privileges \
| gzip > "$BACKUP_FILE"
# Upload to S3
aws s3 cp "$BACKUP_FILE" "$S3_BUCKET/"
# Clean up local file
rm "$BACKUP_FILE"
# Delete backups older than 30 days from S3
aws s3 ls "$S3_BUCKET/" \
| awk '{print $4}' \
| sort \
| head -n -30 \
| xargs -I {} aws s3 rm "$S3_BUCKET/{}" 2>/dev/null || true
echo "Backup complete: ${DATE}"
EOF
chmod +x /opt/ecosire/scripts/backup-db.sh
# Schedule daily backups at 3 AM UTC
(crontab -l 2>/dev/null; echo "0 3 * * * /opt/ecosire/scripts/backup-db.sh >> /var/log/db-backup.log 2>&1") | crontab -
IAM رول کنفیگریشن
AWS سروس تک رسائی (S3، CloudWatch، SES) کے لیے اپنے EC2 مثال کے ساتھ ایک IAM رول منسلک کریں:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject",
"s3:DeleteObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::your-products-bucket",
"arn:aws:s3:::your-products-bucket/*",
"arn:aws:s3:::your-backups-bucket",
"arn:aws:s3:::your-backups-bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"cloudwatch:PutMetricData",
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
آپ کی مثال کے ساتھ منسلک IAM رول کے ساتھ، AWS SDK کالز خود بخود مثال کی اسناد کا استعمال کرتی ہیں — آپ کے ماحول کے متغیرات میں رسائی کلید/خفیہ کلید کی ضرورت نہیں ہے۔
مشترکہ نقصانات اور حل
خطرہ 1: کوئی لچکدار IP نہیں — دوبارہ شروع ہونے پر IP تبدیلیاں
EC2 مثال کو روکنا اور شروع کرنا (ریبوٹ نہیں کرنا) ایک نیا عوامی IP تفویض کرتا ہے۔ لچکدار IP کے بغیر، آپ کا DNS ٹوٹ جاتا ہے۔ اپنی مثال شروع کرنے کے فوراً بعد ایک لچکدار IP مختص اور منسلک کریں۔
پِٹفال 2: SSH رسائی بند کر دی گئی
اگر آپ اپنی SSH کلید کھو دیتے ہیں یا سیکیورٹی گروپس کو غلط کنفیگر کر کے خود کو لاک آؤٹ کر دیتے ہیں، تو AWS کنسول سے EC2 Instance Connect (براؤزر پر مبنی SSH) استعمال کریں، یا سیشن مینیجر (ایس ایس ایم ایجنٹ انسٹال کرنا ضروری ہے، جو Ubuntu کے ساتھ بطور ڈیفالٹ آتا ہے)۔ آخری حربے کے طور پر، روٹ EBS والیوم کو الگ کریں، اسے کسی اور مثال سے منسلک کریں، مجاز_کیز فائل کو ٹھیک کریں، اور دوبارہ منسلک کریں۔
خطرہ 3: تعیناتی کے دوران ڈسک کی جگہ ختم ہو رہی ہے
.next بلڈ کیشے اور node_modules ترقی کے دوران کافی حد تک بڑھتے ہیں۔ df -h کے ساتھ ڈسک کے استعمال کی نگرانی کریں اور disk_used_percent > 80% پر CloudWatch الارم سیٹ کریں۔ ncdu کمانڈ (ncdu /) اس بات کی نشاندہی کرتی ہے کہ کون سی ڈائریکٹریز جگہ استعمال کر رہی ہیں۔
*پِٹفال 4: Node.js OOM سے میموری کی تھکن
Node.js میں پہلے سے طے شدہ میموری کی حد ہوتی ہے (64-bit پر 1.4GB) جو بڑی ایپلی کیشنز پر OOM کریش کا سبب بن سکتی ہے۔ میموری کے استعمال کو واضح طور پر محدود کرنے کے لیے اپنی PM2 ایکو سسٹم فائل میں node_args: '--max-old-space-size=1024' سیٹ کریں۔ max_memory_restart کو اس سے تھوڑا اوپر سیٹ کریں اگر یہ حد سے زیادہ ہو جائے تو اسے خودکار طور پر دوبارہ شروع کریں۔
پِٹفال 5: T3 CPU مسلسل بوجھ کے تحت تھروٹلنگ
T3 مثالیں پھٹنے والی کارکردگی کے لیے "CPU کریڈٹ" استعمال کرتی ہیں۔ توسیع شدہ ہائی-سی پی یو آپریشنز (بڑی بلڈز، بھاری ڈیٹا بیس کے سوالات) کریڈٹ کو ختم کر دیتے ہیں، جس کی وجہ سے "بیس لائن" کی کارکردگی متاثر ہوتی ہے۔ CloudWatch میں CPUCreditBalance مانیٹر کریں۔ اگر کریڈٹس مستقل طور پر ختم ہو جاتے ہیں تو c6i مثال میں اپ گریڈ کریں یا "لامحدود" موڈ کو فعال کریں (بیس لائن سے اوپر فی CPU گھنٹہ اضافی قیمت)۔
اکثر پوچھے گئے سوالات
کیا مجھے EC2 یا AWS Elastic Beanstalk جیسی منظم سروس استعمال کرنی چاہیے؟
EC2 آپ کو مکمل کنٹرول فراہم کرتا ہے: عین Node.js ورژن، فائل سسٹم تک رسائی، Docker sidecar کنٹینرز کو چلانے کی صلاحیت، اور حسب ضرورت Nginx کنفیگریشن۔ لچکدار بین اسٹالک بنیادی ڈھانچے کا انتظام کرتا ہے لیکن آپ کے اختیارات کو محدود کرتا ہے اور خرابیوں کے حل کے لیے پیچیدگی کا اضافہ کرتا ہے۔ لینکس سرور کے انتظام کے ساتھ آرام دہ ٹیم کے لیے، PM2 + Nginx کے ساتھ EC2 منظم پلیٹ فارمز کے مقابلے میں آسان اور زیادہ متوقع ہے۔ اگر آپ چاہتے ہیں کہ پلیٹ فارم اسکیلنگ اور ہیلتھ مینجمنٹ کو خود بخود سنبھال لے تو Beanstalk کا استعمال کریں۔
میں EC2 پر صفر-ڈاؤن ٹائم تعیناتیوں کو کیسے ہینڈل کروں؟
PM2 pm2 reload کمانڈ کلسٹر موڈ پروسیس (NestJS API) کے لیے صفر ڈاؤن ٹائم فراہم کرتی ہے۔ Next.js (فورک موڈ) کے لیے، پہلے نیا ورژن بنائیں، پھر PM2 کو دوبارہ لوڈ کریں۔ چند سیکنڈ کے دوران PM2 عمل کو تبدیل کرنے میں لیتا ہے، Nginx آنے والی درخواستوں کو قطار میں کھڑا کرتا ہے (چھوٹے ٹائم آؤٹ کے ساتھ)۔ صحیح معنوں میں صفر ڈاؤن ٹائم کے لیے، ALB (ایپلی کیشن لوڈ بیلنسر) کے پیچھے دو EC2 مثالیں استعمال کریں اور ایک پر تعینات کریں جب کہ دوسرا ٹریفک کی خدمت کرتا ہو۔
مجھے آٹو اسکیلنگ کب استعمال کرنی چاہیے؟
آٹو اسکیلنگ اہم آپریشنل پیچیدگیوں میں اضافہ کرتی ہے - صحت کی جانچ، لانچ ٹیمپلیٹس، لوڈ بیلنسرز، اور سیشن سے تعلق کے تحفظات۔ متوقع ٹریفک والی ایپلی کیشنز کے لیے، عمودی اسکیلنگ (بڑی مثال کی قسم) کے ساتھ مناسب سائز کا EC2 مثال افقی آٹو اسکیلنگ سے آسان اور اکثر سستا ہے۔ آٹو اسکیلنگ پر غور کریں جب آپ کے پاس ٹریفک اسپائکس 5x بیس لائن سے زیادہ ہو اور مستقل طور پر بڑی مثال چلانے کی لاگت آٹو اسکیلنگ کی پیچیدگی سے زیادہ ہو۔
میں بعد میں EC2 سے کنٹینرز میں کیسے منتقل کروں؟
اپنی درخواست کو Docker کے ساتھ کنٹینرائز کرکے شروع کریں (ہر ایپ کے لیے ایک Dockerfile لکھیں)۔ ڈوکر کمپوز کے ساتھ مقامی طور پر اس کی جانچ کریں۔ پھر ECS Fargate (سرور لیس کنٹینرز، آسان) یا EKS (Kubernetes، زیادہ طاقتور لیکن پیچیدہ) کے درمیان انتخاب کریں۔ اگر آپ بتدریج کنٹینرائز کرتے ہیں تو ہجرت غیر خلل ڈالتی ہے — کنٹینرائزڈ ورژن کو اسی Nginx/Cloudflare سیٹ اپ کے پیچھے چلائیں، رویے کی تصدیق کریں، پھر کاٹ دیں۔
پروڈکشن میں EC2 کو چلانے کا سب سے زیادہ لاگت والا طریقہ کیا ہے؟
اپنی بنیادی مثال کے لیے 1 سالہ محفوظ مثال (کوئی پیشگی یا جزوی پیشگی نہیں) خریدیں - آن ڈیمانڈ سے 40% سستا۔ ٹریفک میں اضافے کے دوران اضافی صلاحیت کے لیے، اگر آپ کی ایپلی کیشن رکاوٹوں کو سنبھال سکتی ہے تو اسپاٹ انسٹینس (90% تک سستا) استعمال کریں۔ اپنے ماہانہ بجٹ کے 80% پر CloudWatch بلنگ الارم سیٹ کریں تاکہ لاگت میں غیر متوقع اضافہ جلد پکڑا جائے۔ پروڈکشن ویب ایپلیکیشنز کے لیے، محفوظ شدہ مثالیں لاگت اور وشوسنییتا کا بہترین توازن فراہم کرتی ہیں۔
اگلے اقدامات
EC2 پر پروڈکشن ویب ایپلیکیشن چلانے کے لیے جاری آپریشنل توجہ کی ضرورت ہوتی ہے — سیکیورٹی پیچ، ڈسک مینجمنٹ، کارکردگی کی نگرانی، اور تعیناتی آٹومیشن۔ ECOSIRE ایک پروڈکشن EC2 t3.large مثال کے طور پر ایک سے زیادہ ڈومینز میں 5 ایپلی کیشنز کی خدمت کرتا ہے، خودکار بیک اپ، CloudWatch مانیٹرنگ، اور صفر-ڈاؤن ٹائم PM2 تعیناتیوں کے ساتھ۔
چاہے آپ کو AWS انفراسٹرکچر مشاورت، EC2 تعیناتی سیٹ اپ، یا اپنی Node.js ایپلیکیشن کے لیے مکمل DevOps سپورٹ کی ضرورت ہو، یہ دیکھنے کے لیے کہ ہم کس طرح مدد کر سکتے ہیں۔
تحریر
ECOSIRE Research and Development Team
ECOSIRE میں انٹرپرائز گریڈ ڈیجیٹل مصنوعات بنانا۔ Odoo انٹیگریشنز، ای کامرس آٹومیشن، اور AI سے چلنے والے کاروباری حل پر بصیرت شیئر کرنا۔
متعلقہ مضامین
Cloud Hosting for ERP: AWS vs Azure vs Google Cloud
A detailed comparison of AWS, Azure, and Google Cloud for ERP hosting in 2026. Covers performance, cost, regional availability, managed services, and ERP-specific recommendations.
Cloud vs On-Premise ERP in 2026: The Definitive Guide
Cloud vs on-premise ERP in 2026: total cost analysis, security comparison, scalability, compliance, and the right deployment model for your business.
Docker Compose for Development: Local Infrastructure
Docker Compose for local development: PostgreSQL, Redis, Authentik, networking, health checks, volume management, and environment-specific configurations for TypeScript monorepos.