Qoldiq uskuna dan ishlab chiqarish serverigacha: Raspberry Pi’da o’z hostingimizni nima uchun sevib qoldik?
Stolgingizdagi server: Raspberry Pi bilan sayt yuritish
Arzon narxdagi Raspberry Pi da production sayt ishlatish – bu haqiqiy zavq. Cloud xizmatlari (Vercel kabi) ko'p loyihalarni oson hal qiladi, lekin o'zingizning Pi ngizni server qilishga jiddiy sabablar bor. Bu nostal'giya emas, balki haqiqiy ehtiyoj.
Masalan, Astro, Svelte Kit yoki React loyihangizda serverless platformalar bilan ishlamaydigan kutubxonalar bo'lsa. Yoki runtime ni o'zingiz boshqarish kerak bo'lsa. Pi bu yerda cloud dan arzon va samarali alternativa bo'ladi.
1-qadam: Routerda port forwarding sozlash
Pi internetga chiqishi uchun routeringizda port forwarding yoqing. Bu public IP dan Pi gacha ko'prik.
Keyin Caddy o'rnating – sodda reverse proxy. Config shunday bo'ladi:
yoursite.com {
root * /home/username/projects/yoursite
file_server
reverse_proxy localhost:4321
}
Port framework ga bog'liq: Astro – 4321, Svelte Kit – 5173, Node.js – 3000. Caddy ni qayta yuklang, ishga tushdi.
2-qadam: Domainni Pi ga bog'lash
NameOcean kabi registrar da DNS A record yarating:
A Record: yoursite.com → your.public.ip.address
Router port forwarding qolganini hal qiladi. Trafik avtomatik Pi ga boradi.
3-qadam: Build qilib, doimiy ishlatish
Loyihani build qiling:
npm run build
dist papkasida tayyor app paydo bo'ladi (entry.mjs yoki entry.cjs).
PM2 bilan boshqaring – u app ni hech qachon to'xtatmaydi:
npm install -g pm2
cd dist/
pm2 start entry.mjs
Endi terminal yopilsa ham sayt ishlaydi.
4-qadam: GitHub Actions bilan avto-deploy
Har safar SSH orqali Pi ga kirmaslik uchun GitHub Actions dan foydalaning. Repoda .github/workflows/deploy.yml yarating:
name: Deploy to Raspberry Pi
on: [push]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Deploy via SSH
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.PI_HOST }}
username: ${{ secrets.PI_USER }}
password: ${{ secrets.PI_PASSWORD }}
script: |
~/bin/deploy.sh
Repo secrets ga Pi IP va parolini qo'ying. deploy.sh scripti:
#!/usr/bin/env bash
set -euo pipefail
BASE_DIR="$HOME/projects"
PORTS=(4321 4322)
PORT_INDEX=0
echo "Kodni yangilash..."
for dir in "$BASE_DIR"/*/ ; do
if [[ -d "$dir/.git" ]]; then
(cd "$dir" && git pull)
fi
done
echo "Build qilish..."
for dir in "$BASE_DIR"/*/ ; do
if [[ -f "$dir/package.json" ]]; then
CURRENT_PORT=${PORTS[$PORT_INDEX]}
(
cd "$dir"
npm run build -- --port "$CURRENT_PORT"
)
PORT_INDEX=$(( (PORT_INDEX + 1) % ${#PORTS[@]} ))
fi
done
echo "Servislarni qayta ishga tushirish..."
pm2 restart all
Endi git push qilsangiz, Pi kodni tortib, build qilib, restart qiladi – hammasi avto.
Haqiqiy hisob-kitob
Pi da self-hosting hamma uchun emas. Cloud dagi redundancy va CDN yo'q. Internet uzilsa, sayt ham to'xtaydi. Bandwidth cheklangan. Lekin nazorat, tejamkorlik va o'z stack ingizni boshqarish uchun yaxshi.
Bu DNS, reverse proxy, PM2 va CI/CD ni chuqur o'rganish imkoniyati. Cloud tugmalarini bosishdan farqli.
Sizning bo'sh Raspberry Pi – shunchaki o'yinchoq emas. Bu haqiqiy infratuzilma va production uchun enterprise kerak emasligini isbotlaydi.