Qoldiq uskuna dan ishlab chiqarish serverigacha: Raspberry Pi’da o’z hostingimizni nima uchun sevib qoldik?

Qoldiq uskuna dan ishlab chiqarish serverigacha: Raspberry Pi’da o’z hostingimizni nima uchun sevib qoldik?

May 07, 2026 self-hosting raspberry-pi node.js devops dns github-actions astro web-infrastructure

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.

Read in other languages:

RU BG EL CS TR SV FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN