Da un Raspberry Pi in soffitta al server in produzione: l'ossessione per l'hosting fai-da-te

Da un Raspberry Pi in soffitta al server in produzione: l'ossessione per l'hosting fai-da-te

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

Il Server Nascosto nel Tuo Cassetto

Niente batte la soddisfazione di far girare un sito in produzione su un hardware che costa meno di un caffè al bar. Le piattaforme cloud come Vercel risolvono tanti problemi, ma a volte l'hosting fai-da-te su un Raspberry Pi ha senso. Non è solo romanticismo: ci sono motivi pratici che lo rendono una scelta solida.

Pensa a un'app Node.js con Astro, SvelteKit o React. Magari hai dipendenze ostiche per i serverless, tipo una libreria i18n vecchia ma perfetta che non si bundleggia. O serve controllo totale sul runtime. Ecco che il tuo Pi diventa un'opzione low-cost contro i colossi cloud.

Passo 1: Apri le Porte al Web

Per collegare il Pi al mondo, configura il port forwarding sul router. È il canale che porta il traffico dal tuo IP pubblico al dispositivo in casa.

Scegli Caddy, un reverse proxy moderno e intuitivo. Prepara un file di config semplice:

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

Adatta la porta: 4321 per Astro, 5173 per SvelteKit, 3000 per molte app Node. Ricarica Caddy e sei a buon punto.

Passo 2: Collega il Domain al Tuo Pi

Con registrar come NameOcean è facile. Basta un record DNS A:

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

Il router fa il resto. Il traffico sul domain arriva dritto al Pi.

Passo 3: Compila e Avvia per Sempre

Lancia il build classico:

npm run build

Otterrai una cartella dist con l'app pronta e l'entry point (tipo entry.cjs o entry.mjs).

Entra in scena PM2, il gestore di processi che tiene tutto vivo:

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

Ora il sito è online. Niente terminale aperto, niente crash improvvisi.

Passo 4: Deployment Automatico con GitHub Actions

L'hosting fai-da-te deve essere comodo. GitHub Actions elimina gli SSH manuali.

Crea .github/workflows/deploy.yml nel repo:

name: Deploy su 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

Salva IP e credenziali nei secrets del repo. Poi lo script deploy.sh che fa tutto:

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

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

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

echo "Ricompilo i progetti..."
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 "Riavvio i servizi..."
pm2 restart all

Ogni git push aggiorna, ricompila e riavvia. Zero fatica.

I Conti Veri

Non è per tutti. Niente ridondanza cloud, niente CDN globale. Banda limitata, e se salta internet salta il sito. Ma se vuoi controllo totale, costi bassissimi e il gusto di gestire tutto, funziona alla grande.

È pure una scuola pratica: padroneggi DNS, reverse proxy, PM2 e CI/CD come non faresti con un dashboard cloud.

Quel Raspberry Pi polveroso? Non è un gingillo. È infrastruttura vera, che dimostra come basti poco per siti in produzione.

Read in other languages:

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