Administração do Servidor de Ferramentas
Comandos de Administração Essenciais
🔐 Acesso SSH ao Servidor
# Conectar ao servidor
ssh ubuntu@3.208.54.208
# Verificar status geral do sistema
htop
df -h
free -h
uptime
🐳 Gerenciamento Docker
Status dos Containers
# Listar todos os containers
docker ps -a
# Status específico por serviço
docker ps --filter "name=forgejo"
docker ps --filter "name=pritunl"
docker ps --filter "name=forgejo-db"
Logs de Aplicações
# Logs em tempo real
docker logs forgejo -f --tail 100
docker logs pritunl -f --tail 100
docker logs forgejo-db -f --tail 50
# Logs com timestamp
docker logs forgejo --timestamps --since 1h
# Salvar logs para análise
docker logs forgejo --since 24h > /tmp/forgejo-$(date +%Y%m%d).log
Restart de Serviços
# Restart individual
docker restart forgejo
docker restart pritunl
docker restart forgejo-db
# Restart completo via compose
cd /mnt/forgejo_data/forgejo && docker compose restart
cd /mnt/forgejo_data/pritunl && docker compose restart
# Restart com rebuild (atualizações)
cd /mnt/forgejo_data/forgejo
docker compose down
docker compose pull
docker compose up -d
💾 Gerenciamento de Storage
Monitoramento de Espaço
# Espaço total do sistema
df -h
# Espaço do volume de dados
df -h /mnt/forgejo_data
# Uso detalhado por diretório
du -sh /mnt/forgejo_data/*
du -sh /mnt/forgejo_data/forgejo/*
du -sh /mnt/forgejo_data/pritunl/*
Limpeza de Espaço
# Limpeza de containers e imagens não utilizadas
docker system prune -f
# Limpeza mais agressiva (cuidado!)
docker system prune -a -f
# Limpeza de logs antigos
sudo truncate -s 0 $(docker inspect --format='{{.LogPath}}' forgejo)
sudo truncate -s 0 $(docker inspect --format='{{.LogPath}}' pritunl)
# Rotação de logs personalizados
find /mnt/forgejo_data/*/logs -name "*.log" -mtime +7 -delete
🔧 Configurações de Sistema
Firewall (UFW)
# Status atual
sudo ufw status verbose
# Adicionar nova regra
sudo ufw allow from IP_AUTORIZADO to any port 22
# Remover regra
sudo ufw delete allow 8443/tcp
# Logs do firewall
sudo tail -f /var/log/ufw.log
Monitoramento de Rede
# Conexões ativas
netstat -tlnp | grep -E "(80|443|2222|9443|51820)"
# Tráfego de rede
iftop # (instalar com: sudo apt install iftop)
nethogs # (instalar com: sudo apt install nethogs)
# Teste de conectividade
curl -I http://localhost # Forgejo via Nginx
curl -k -I https://localhost:9443 # Pritunl direto
Performance do Sistema
# CPU e memória em tempo real
htop
# Processos com mais uso de recursos
top -o %CPU
top -o %MEM
# I/O de disco
iotop # (sudo apt install iotop)
# Estatísticas do sistema
iostat -x 1 # (sudo apt install sysstat)
🔒 Gerenciamento de Segurança
Chaves SSH
# Verificar chaves autorizadas
cat ~/.ssh/authorized_keys
# Adicionar nova chave SSH
echo "ssh-ed25519 AAAAC3... nova-chave@exemplo.com" >> ~/.ssh/authorized_keys
# Verificar permissões SSH
ls -la ~/.ssh/
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys
Atualizações de Segurança
# Atualizar sistema operacional
sudo apt update
sudo apt upgrade -y
# Verificar atualizações de segurança
sudo apt list --upgradable | grep security
# Aplicar apenas atualizações de segurança
sudo unattended-upgrade --dry-run
sudo unattended-upgrade
Auditoria de Logs
# Logs de autenticação
sudo tail -f /var/log/auth.log
# Tentativas de login SSH
sudo grep "Failed password" /var/log/auth.log | tail -20
# Logs do sistema
sudo journalctl -u docker -f
sudo journalctl --since "1 hour ago"
💾 Backup e Recovery
Backup Manual
# Script de backup completo
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/mnt/forgejo_data/backups"
echo "Iniciando backup $DATE..."
# Backup de dados do Forgejo
docker exec forgejo-db pg_dump -U forgejo forgejo > $BACKUP_DIR/forgejo-db-$DATE.sql
# Backup de configurações
tar -czf $BACKUP_DIR/forgejo-config-$DATE.tar.gz -C /mnt/forgejo_data forgejo/
tar -czf $BACKUP_DIR/pritunl-config-$DATE.tar.gz -C /mnt/forgejo_data pritunl/
# Backup de chaves SSH
cp -r ~/.ssh $BACKUP_DIR/ssh-keys-$DATE/
echo "Backup concluído: $DATE"
ls -la $BACKUP_DIR/*$DATE*
Restore de Backup
# Restore do banco de dados
docker exec -i forgejo-db psql -U forgejo -d forgejo < backup-forgejo-db.sql
# Restore de configurações
tar -xzf forgejo-config-backup.tar.gz -C /mnt/forgejo_data/
tar -xzf pritunl-config-backup.tar.gz -C /mnt/forgejo_data/
# Restart dos serviços após restore
docker compose -f /mnt/forgejo_data/forgejo/docker-compose.yml restart
docker compose -f /mnt/forgejo_data/pritunl/docker-compose.yml restart
Backup Automático (Cron)
# Editar crontab
crontab -e
# Adicionar linha para backup diário às 2:00 AM
0 2 * * * /home/ubuntu/backup-script.sh >> /var/log/backup.log 2>&1
# Backup semanal com limpeza (domingos às 3:00 AM)
0 3 * * 0 /home/ubuntu/backup-script.sh && find /mnt/forgejo_data/backups -name "*.tar.gz" -mtime +30 -delete
📊 Monitoramento e Alertas
Scripts de Monitoramento
# Verificar status dos serviços
#!/bin/bash
echo "=== Status dos Containers ==="
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
echo -e "\n=== Uso de Recursos ==="
docker stats --no-stream --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
echo -e "\n=== Espaço em Disco ==="
df -h /mnt/forgejo_data
echo -e "\n=== Conexões Ativas ==="
netstat -an | grep -c :80
netstat -an | grep -c :2222
netstat -an | grep -c :9443
Alertas por Email (Opcional)
# Instalar mailutils
sudo apt install mailutils
# Script de alerta por espaço em disco
#!/bin/bash
USED=$(df /mnt/forgejo_data | tail -1 | awk '{print $5}' | sed 's/%//')
if [ $USED -gt 80 ]; then
echo "ALERTA: Espaço em disco em $USED%" | mail -s "BITIO Tools - Disk Space Alert" admin@bitio.com.br
fi
🔄 Atualizações de Software
Atualizar Imagens Docker
# Forgejo
cd /mnt/forgejo_data/forgejo
docker compose pull
docker compose down
docker compose up -d
# Pritunl
cd /mnt/forgejo_data/pritunl
docker compose pull
docker compose down
docker compose up -d
# Verificar se tudo está funcionando
docker ps
Atualizar Nginx
# Atualizar Nginx
sudo apt update
sudo apt upgrade nginx
# Testar configuração
sudo nginx -t
# Restart se OK
sudo systemctl restart nginx
⚠️ Troubleshooting Avançado
Problemas de Performance
# Verificar load average
uptime
# Processos consumindo mais CPU
ps aux --sort=-%cpu | head -10
# Processos consumindo mais memória
ps aux --sort=-%mem | head -10
# Verificar I/O wait
iostat -x 1 5
Problemas de Rede
# Teste de conectividade interna
docker exec forgejo ping forgejo-db
docker exec pritunl ping 8.8.8.8
# Verificar DNS
nslookup github.com
dig @8.8.8.8 google.com
# Verificar rotas de rede
route -n
ip route show
Problemas com Docker
# Reiniciar Docker daemon
sudo systemctl restart docker
# Verificar status do Docker
sudo systemctl status docker
# Logs do Docker daemon
sudo journalctl -u docker --since "1 hour ago"
# Verificar espaço do Docker
docker system df
📋 Checklist de Manutenção
Diário
- Verificar status dos containers (
docker ps) - Verificar logs de erro (
docker logsdos serviços) - Verificar espaço em disco (
df -h /mnt/forgejo_data)
Semanal
- Backup completo dos dados
- Verificar atualizações de segurança (
apt list --upgradable) - Limpar logs antigos e containers não utilizados
- Verificar performance do sistema (
htop,iostat)
Mensal
- Atualizar imagens Docker
- Revisar logs de auditoria
- Testar procedimentos de restore
- Verificar certificados SSL (se configurados)
- Revisar usuários ativos no Forgejo e Pritunl
🔗 Contatos de Suporte
Documentação
Comandos de Emergência
# Parar tudo
docker stop $(docker ps -q)
# Reiniciar tudo
docker start $(docker ps -aq)
# Status rápido
curl -I http://3.208.54.208 && echo "Forgejo OK" || echo "Forgejo ERRO"
curl -k -I https://3.208.54.208:9443 && echo "Pritunl OK" || echo "Pritunl ERRO"