Do Hardware Sobrando à Máquina de Produção: Por Que Somos Viciados em Self-Hosting no Raspberry Pi

Do Hardware Sobrando à Máquina de Produção: Por Que Somos Viciados em Self-Hosting no Raspberry Pi

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

O Servidor Surpreendente na Sua Gaveta

Rodar um site de produção em hardware mais barato que uma cafeteira de luxo tem um charme único. Plataformas na nuvem como Vercel resolvem a maioria dos casos, mas hospedar tudo em um Raspberry Pi faz sentido real – e vai além de saudosismo puro.

Imagine o caso prático: você usa um framework Node.js como Astro, SvelteKit ou React, com dependências que não encaixam bem em ambientes serverless. Pode ser uma biblioteca de i18n velha que funciona perfeitamente, mas não compila estaticamente. Ou quem sabe controle total no runtime. Aí seu Pi vira opção barata contra nuvens caras.

Passo 1: Roteamento de Rede – A Porta de Entrada para a Internet

Primeiro, libere portas no roteador para conectar seu Pi ao mundo. É o elo entre o IP público e o aparelhinho quieto na prateleira.

Instale Caddy, um proxy reverso moderno e descomplicado. Crie um config simples assim:

yoursite.com {
    root * /home/usuario/projetos/yoursite
    
    file_server
    reverse_proxy localhost:4321
}

Ajuste a porta pelo framework: Astro usa 4321, SvelteKit 5173, apps Node.js geralmente 3000. Recarregue o Caddy e pronto, metade do caminho feito.

Passo 2: Apontar o Domínio para o Pi

Registradores como NameOcean facilitam isso. Basta um registro DNS A record:

A Record: yoursite.com → seu.ip.publico

O roteador cuida do resto via port forwarding. Todo tráfego pro domínio vai direto pro Pi.

Passo 3: Compile Uma Vez, Rode Para Sempre

Gere o build padrão:

npm run build

Isso cria a pasta dist com o app pronto e o entry point (geralmente entry.cjs ou entry.mjs).

Aí entra o PM2, gerenciador de processos que mantém tudo vivo:

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

Site no ar, sem precisar de terminal aberto ou console rodando.

Passo 4: Deploy Automático com GitHub Actions

Hospedagem própria só vale se atualizar código for fácil, sem SSH toda hora. GitHub Actions muda isso de manual pra automático.

Crie .github/workflows/deploy.yml no repo:

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

Guarde IP e credenciais nos secrets do repo. Faça um script de deploy que resolve tudo:

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

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

echo "Baixando código novo..."
for dir in "$BASE_DIR"/*/ ; do
    if [[ -d "$dir/.git" ]]; then
        (cd "$dir" && git pull)
    fi
done

echo "Compilando projetos..."
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 "Reiniciando serviços..."
pm2 restart all

Todo git push puxa o código, reconstrói e reinicia – sem esforço.

A Conta Real

Pi não serve pra todo mundo. Sem redundância ou CDN global da nuvem. Banda limitada. Internet cai, site some. Mas se você prefere controle total, economia e stack próprio, é opção séria.

E ensina na prática: DNS, proxies reversos, gerenciadores de processo e CI/CD de um jeito que dashboard de nuvem nunca mostra.

Seu Raspberry Pi sobrando não é só enfeite. É infraestrutura de verdade – prova que produção não precisa de soluções empresariais caras.

Read in other languages:

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