De la vechitura de hardware la server de producție: De ce suntem obsedați de self-hosting pe Raspberry Pi

De la vechitura de hardware la server de producție: De ce suntem obsedați de self-hosting pe Raspberry Pi

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

Serverul Ascuns în Sertarul Tău

Nimic nu se compară cu plăcerea de a rula un site live pe un hardware ieftin, mai puțin decât o cafea scumpă. Platformele cloud precum Vercel fac treaba grea pentru majoritatea proiectelor. Totuși, self-hosting-ul pe Raspberry Pi are motive solide, dincolo de simpla nostalgie.

Situația reală: ai un framework Node.js ca Astro, Svelte Kit sau React, cu dependențe care nu merg bine pe serverless. Poate o librărie i18n veche, dar perfectă, imposibil de bundlat static. Sau vrei control total asupra rulării. Aici Pi-ul devine o opțiune serioasă față de cloud-ul scump.

Pasul 1: Rutare de Rețea – Poarta Spre Lume

Mai întâi, configurează port forwarding pe router. Asta leagă IP-ul public de Pi-ul tău liniștit de pe raft.

Apoi, instalează Caddy, un reverse proxy modern și simplu. Configurația arată cam așa:

yoursite.com {
    root * /home/username/projects/yoursite
    
    file_server
    reverse_proxy localhost:4321
}

Portul variază: Astro folosește 4321, Svelte Kit 5173, Node.js de obicei 3000. Reîncarcă config-ul Caddy și ești pe drum.

Pasul 2: Direcționează Domeniul Spre Pi

La registrari ca NameOcean, e floare la ureche. Creează un DNS A record simplu:

A Record: yoursite.com → your.public.ip.address

Gata. Router-ul face restul. Traficul spre domeniu ajunge direct la Pi.

Pasul 3: Construiește O Dată, Rulează La Nesfârșit

Rulează build-ul clasic:

npm run build

Rezultă un folder dist cu app-ul compilat și entry point (de obicei entry.cjs sau entry.mjs).

Aici intră PM2, manager de procese care ține Node.js-ul viu non-stop:

npm install -g pm2
cd dist/
pm2 start entry.mjs

Site-ul e live. Fără terminal deschis, fără griji.

Pasul 4: Deploy-uri Automate cu GitHub Actions

Self-hosting-ul contează doar dacă updatezi codul ușor, fără SSH de fiecare dată. GitHub Actions face totul smooth.

Creează .github/workflows/deploy.yml în repo:

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

Adaugă IP-ul și credentialele Pi-ului în secrets. Apoi, un script de deploy:

#!/usr/bin/env bash
set -euo pipefail

BASE_DIR="$HOME/projects"
PORTS=(4321 4322)
PORT_INDEX=0

echo "Trag codul nou..."
for dir in "$BASE_DIR"/*/ ; do
    if [[ -d "$dir/.git" ]]; then
        (cd "$dir" && git pull)
    fi
done

echo "Construiesc proiectele..."
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 "Repornesc serviciile..."
pm2 restart all

Fiecare git push actualizează codul, rebuild-uieste și repornește totul automat.

Calculul Real

Nu e pentru toți. Pierzi redundanța și CDN-ul global al cloud-ului. Bandwidth limitat. Dacă pica internetul, site-ul moare. Dar dacă vrei control, economii și stack-ul tău propriu, funcționează perfect.

E și o școală excelentă. Înveți DNS, reverse proxy, process management și CI/CD cum nu vei învăța pe dashboard-uri cloud.

Pi-ul tău uitat nu e jucărie. E infrastructură adevărată. Dovadă că producția nu cere mereu soluții enterprise.

Read in other languages:

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