Pular para o conteúdo principal

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 logs dos 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"