servidor remoto em casa
Para criar um **servidor remoto em casa**, você precisa combinar **hardware**, **software**, **configuração de rede** e **segurança**. Aqui está um guia prático e direto:
---
---
### 🔧 **1. Defina o Objetivo**
O tipo de servidor influencia o hardware e a configuração:
- **Armazenamento de arquivos** (NAS): Compartilhar arquivos na rede local ou remota (ex: Nextcloud, Samba).
- **Servidor web**: Hospedar sites ou APIs (ex: Nginx, Apache).
- **Servidor de jogos**: Hospedar games (ex: Minecraft, Valheim).
- **VPN**: Acessar sua rede doméstica de forma segura (ex: WireGuard, OpenVPN).
- **Media Server**: Stream de mídia (ex: Plex, Jellyfin).
- **Bancos de dados ou aplicativos**: PostgreSQL, MySQL, Docker.
---
### 🖥️ **2. Escolha o Hardware**
| Tipo | Exemplo | Custo | Consumo de Energia | Uso Recomendado |
|--------------------|----------------------------------|----------------|--------------------|-------------------------------|
| **Raspberry Pi** | Raspberry Pi 4/5 (4GB+) | Baixo (R$ 500+) | Baixo (~5W-15W) | NAS, VPN, servidores leves |
| **Mini PC** | Intel NUC, Beelink SER5 | Médio (R$ 2K+) | Médio (~15W-30W) | Servidor web, Docker, Plex |
| **PC Antigo** | Desktop com i5/8GB RAM | Baixo (reuso) | Alto (~50W-150W) | Qualquer uso (evite 24/7) |
| **Servidor Dedicado** | Dell PowerEdge, HP ProLiant | Alto (R$ 3K+) | Alto (~100W+) | Alta demanda (empresas) |
⚠️ **Dicas**:
- Para **24/7**, priorize **baixo consumo de energia** (Raspberry Pi ou Mini PC).
- Verifique se a **fonte** é confiável (quedas de energia queimam hardware).
- Use um **nobreak** para evitar danos por instabilidade elétrica.
---
### 🌐 **3. Configuração de Rede**
#### **A. IP Público e Dinâmico**
- Seu roteador recebe um **IP público** do provedor (ex: `187.123.45.67`).
- **Problema**: A maioria dos IPs residenciais são **dinâmicos** (mudam periodicamente).
- **Solução**:
- **DDNS (Dynamic DNS)**: Serviços como [No-IP](https://www.noip.com/) ou [DuckDNS](https://www.duckdns.org/) mapeiam um **domínio** (ex: `meuservidor.ddns.net`) para seu IP dinâmico.
- **Compre um IP fixo**: Algumas operadoras oferecem IPs estáticos (custo adicional).
#### **B. Port Forwarding (Redirecionamento de Portas)**
- Abra portas no **roteador** para encaminhar tráfego ao servidor.
- **Exemplo**: Para um servidor web (porta 80/443):
1. Acesse o painel do roteador (geralmente `192.168.1.1`).
2. Procure por **"Port Forwarding"** ou **"NAT Virtual Server"**.
3. Adicione uma regra:
- **Porta Externa**: 80 (HTTP) ou 443 (HTTPS).
- **IP Interno**: IP local do servidor (ex: `192.168.1.100`).
- **Porta Interna**: 80 ou 443.
- **Protocolo**: TCP/UDP (geralmente TCP).
4. Salve e reinicie o roteador.
⚠️ **Atenção**:
- **Portas comuns**:
- HTTP: 80, HTTPS: 443
- SSH: 22
- FTP: 21
- Plex: 32400
- WireGuard: 51820 (UDP)
- **Evite expor portas desnecessárias** (risco de ataques).
#### **C. Testando o Acesso Externo**
- Use o comando `curl ifconfig.me` (Linux/macOS) ou [WhatIsMyIP](https://whatismyipaddress.com/) para verificar seu IP público.
- Teste o acesso de fora da sua rede (ex: via celular em 4G):
```
http://SEU_IP_PUBLICO:PORTA
```
ou
```
http://seudominio.ddns.net:PORTA
```
---
### 🛠️ **4. Instale o Sistema Operacional**
| SO | Vantagens | Desvantagens | Uso Recomendado |
|------------------|------------------------------------|----------------------------------|--------------------------|
| **Raspberry Pi OS** | Leve, otimizado para ARM | Limitado a hardware ARM | Raspberry Pi |
| **Ubuntu Server** | Estável, ampla documentação | Requer mais recursos | Mini PC, PC Antigo |
| **Debian** | Minimalista, seguro | Menos user-friendly | Servidores avançados |
| **TrueNAS** | Otimizado para NAS | Requer hardware dedicado | Armazenamento de arquivos|
| **Windows Server** | Familiar para usuários Windows | Licença paga, pesado | Aplicativos Windows |
🔹 **Recomendação**: Para iniciantes, use **Ubuntu Server LTS** (suporte longo) ou **Raspberry Pi OS**.
---
#### **Instalação Básica (Ubuntu Server)**
1. Baixe a ISO do [Ubuntu Server](https://ubuntu.com/download/server).
2. Crie um **pendrive bootável** com [Rufus](https://rufus.ie/) (Windows) ou `dd` (Linux).
3. Inicialize o servidor pelo pendrive e siga as instruções.
4. After install, update the system:
```bash
sudo apt update && sudo apt upgrade -y
```
---
---
### 🚀 **5. Configuração do Servidor**
#### **A. Servidor Web (Nginx)**
1. Instale o Nginx:
```bash
sudo apt install nginx -y
```
2. Inicie o serviço:
```bash
sudo systemctl start nginx
sudo systemctl enable nginx
```
3. Verifique se está rodando:
```bash
curl http://localhost
```
(Deve retornará página padrão do Nginx).
4. **Abra a porta 80 no firewall**:
```bash
sudo ufw allow 80/tcp
sudo ufw enable
```
#### **B. Servidor de Arquivos (Samba)**
1. Instale o Samba:
```bash
sudo apt install samba -y
```
2. Crie um diretório para compartilhar:
```bash
mkdir /home/usuario/compartilhado
sudo chmod -R 777 /home/usuario/compartilhado
```
3. Configure o Samba:
```bash
sudo nano /etc/samba/smb.conf
```
Adicione no final do arquivo:
```ini
[Compartilhado]
path = /home/usuario/compartilhado
writable = yes
guest ok = yes
browseable = yes
```
4. Reinicie o Samba:
```bash
sudo systemctl restart smbd
```
5. **Abra a porta 445 (SMB)** no firewall:
```bash
sudo ufw allow 445/tcp
```
#### **C. Acesso Remoto (SSH)**
1. Instale o OpenSSH:
```bash
sudo apt install openssh-server -y
```
2. Inicie o serviço:
```bash
sudo systemctl start ssh
sudo systemctl enable ssh
```
3. **Abra a porta 22 no firewall**:
```bash
sudo ufw allow 22/tcp
```
4. **Segurança**:
- Desative login como root:
```bash
sudo nano /etc/ssh/sshd_config
```
Altere:
```ini
PermitRootLogin no
PasswordAuthentication no # Use chaves SSH
```
- Reinicie o SSH:
```bash
sudo systemctl restart ssh
```
5. Conecte-se de outro PC:
```bash
ssh usuario@SEU_IP_PUBLICO -p 22
```
#### **D. VPN (WireGuard)**
1. Instale o WireGuard:
```bash
sudo apt install wireguard -y
```
2. Gere chaves:
```bash
wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey
```
3. Crie o arquivo de configuração (`/etc/wireguard/wg0.conf`):
```ini
[Interface]
PrivateKey = <CONTEÚDO_DO_PRIVATEKEY>
Address = 10.0.0.1/24
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
[Peer]
PublicKey = <CHAVE_PUBLICA_DO_CLIENTE>
AllowedIPs = 10.0.0.2/32
```
4. Inicie o WireGuard:
```bash
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
```
5. **Abra a porta 51820 (UDP)** no firewall e roteador.
---
---
### 🔒 **6. Segurança**
#### **A. Firewall (UFW)**
- Ative o firewall e permita apenas portas necessárias:
```bash
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable
```
#### **B. Fail2Ban (Proteção contra Brute Force)**
1. Instale:
```bash
sudo apt install fail2ban -y
```
2. Ative:
```bash
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
```
#### **C. Atualizações Automáticas**
1. Instale o `unattended-upgrades`:
```bash
sudo apt install unattended-upgrades -y
```
2. Configure:
```bash
sudo dpkg-reconfigure unattended-upgrades
```
(Selecione "Sim").
#### **D. HTTPS (Certificado SSL)**
- Use **Let's Encrypt** com Certbot para criptografar o tráfego:
```bash
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d seu_dominio.ddns.net
```
(Renova automaticamente).
---
---
### 📡 **7. Acesso Remoto (Fornecedores de Internet no Brasil)**
⚠️ **Problemas comuns no Brasil**:
- **CGNAT**: Muitos provedores (ex: Vivo, Claro, Oi) usam **CGNAT**, que **bloqueia portas** e impede o redirecionamento.
- **Solução**:
1. **Mude para um plano com IP público** (ex: some provedores oferecem isso em planos empresariais).
2. Use **Cloudflare Tunnel** ou **Ngrok** para contornar o CGNAT (sem abrir portas).
- **Cloudflare Tunnel** (grátis):
```bash
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x cloudflared
./cloudflared tunnel login
./cloudflared tunnel create NOME_DO_TUNEL
./cloudflared tunnel route dns NOME_DO_TUNEL SEU_DOMINIO
./cloudflared tunnel run NOME_DO_TUNEL
```
- **Ngrok** (grátis para teste):
```bash
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null
echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list
sudo apt update && sudo apt install ngrok
ngrok http 80
```
3. **VPN reversa**: Conecte seu servidor a uma VPS barata (ex: Oracle Cloud, AWS Lightsail) e acesse via SSH.
- **Velocidade de upload**: No Brasil, a maioria dos planos residenciais tem **upload lento** (ex: 5Mbps em um plano de 100Mbps).
- **Solução**: Escolha um plano com **upload simétrico** (ex: some fibras oferecem 100Mbps/100Mbps).
---
---
### ⚡ **8. Monitoramento e Manutenção**
#### **A. Monitoramento**
- **Cockpit** (painel web para gerenciamento):
```bash
sudo apt install cockpit -y
sudo systemctl enable --now cockpit.socket
```
Acesse em: `https://SEU_IP:9090`
- **Netdata** (monitoramento em tempo real):
```bash
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
```
Acesse em: `http://SEU_IP:19999`
#### **B. Backup**
- **rsync** (backup local/remoto):
```bash
rsync -avz /caminho/origem usuario@IP_DESTINO:/caminho/destino
```
- **BorgBackup** (backup incremental):
```bash
sudo apt install borgbackup -y
borg init --encryption=repokey /caminho/backup
borg create /caminho/backup::nome-backup-$(date +%Y-%m-%d) /caminho/origem
```
---
---
### 📌 **9. Exemplo Prático: Servidor Web com Raspberry Pi**
1. **Hardware**: Raspberry Pi 4 (4GB) + Cartão SD (16GB+) + Fonte 5V/3A.
2. **SO**: Raspberry Pi OS Lite (headless).
3. **Rede**:
- Conecte via cabo Ethernet (mais estável).
- Configure IP estático no roteador para o Raspberry Pi (ex: `192.168.1.100`).
4. **Instalação**:
```bash
sudo apt update && sudo apt upgrade -y
sudo apt install nginx -y
sudo systemctl start nginx
```
5. **Port Forwarding**:
- Abra a porta **80** no roteador para `192.168.1.100`.
6. **DDNS**:
- Cadastre-se no [DuckDNS](https://www.duckdns.org/) e siga as instruções para atualizar o IP automaticamente.
7. **Acesso**:
- Acesse `http://seudominio.duckdns.org` de qualquer lugar.
---
---
### 💡 **10. Dicas Finais**
✅ **Comece simples**: Use um Raspberry Pi para testar antes de investir em hardware caro.
✅ **Teste localmente**: Verifique se o servidor funciona na rede local (`192.168.1.X`) antes de expor para a internet.
✅ **Use senhas fortes**: Para SSH, SSH keys, e painéis de admin.
✅ **Faça backups**: Perder dados em um servidor caseiro é comum (falha de hardware, energia, etc.).
✅ **Monitore o consumo de energia**: Um PC ligado 24/7 pode custar **R$ 50-100/mês** na conta de luz.
✅ **Considere uma VPS**: Se o objetivo é apenas aprender, uma VPS barata (ex: [Oracle Cloud Free Tier](https://www.oracle.com/cloud/free/)) pode ser mais prática.
---
---
### 🚨 **Riscos e Avisos**
- **Segurança**: Servidores caseiros são alvos fáceis para ataques (ex: botnets, ransomware).
- **Legal**: Hospedar conteúdos ilegais (pirataria, etc.) pode resultar em **processos** ou **bloqueio do IP** pelo provedor.
- **Desempenho**: Conexões residenciais não são projetadas para servidores (latência, upload limitado).
- **IP Bloqueado**: Alguns provedores **bloqueiam portas** (ex: 80, 443) em planos residenciais.
---
---
### 📚 **Recursos Úteis**
- **Tutoriais**:
- [DigitalOcean Tutorials](https://www.digitalocean.com/community/tutorials) (inglês, mas excelentes).
- [LinuxServer.io](https://www.linuxserver.io/) (guias para servidores de mídia).
- **Ferramentas**:
- [Port Checker](https://www.yougetsignal.com/tools/open-ports/) (verifique se portas estão abertas).
- [Speedtest CLI](https://www.speedtest.net/apps/cli) (teste velocidade do servidor).
- **Comunidades**:
- [r/homelab](https://www.reddit.com/r/homelab/) (Reddit).
- [Forum Clube do Hardware](https://www.clubedohardware.com.br/) (Brasil).
---
---
### **Próximos Passos**
Se você quer:
- **Um servidor web**: Siga o exemplo do Nginx + DDNS.
- **Um NAS**: Instale **TrueNAS** ou **OpenMediaVault**.
- **Uma VPN**: Configure o **WireGuard** ou **OpenVPN**.
- **Ajudar com um caso específico**: Me diga qual é o seu objetivo e eu te dou um guia passo a passo!


