Files
course-plat/docker/minio/README.md
T
2026-08-31 14:10:20 -03:00

4.1 KiB

MinIO + Backup Setup

Setup completo do MinIO com scripts de backup para VPS e download local.

📁 Estrutura

docker/minio/
├── docker-compose.yml    # Serviço MinIO
├── backup-minio.sh       # Script de backup (roda no servidor)
├── pull-backup.sh        # Script para baixar backup (roda no seu PC)
└── .env.example          # Variáveis de ambiente

🔒 Segurança

Bucket é PRIVADO por padrão. Arquivos são servidos via proxy da aplicação (/api/files/...), o que permite:

  • Controle de autenticação
  • Verificação de permissões
  • Logs de acesso

🚀 Setup Inicial

1. Criar arquivo .env

cd docker/minio
cat > .env << 'EOF'
MINIO_ROOT_USER=admin
MINIO_ROOT_PASSWORD=sua-senha-forte-aqui
MINIO_BUCKET=course-plat
EOF

2. Iniciar MinIO

docker compose up -d

3. Acessar

💾 Backup Automático

No Servidor (VPS)

  1. Copiar o script para o servidor:
chmod +x backup-minio.sh
sudo cp backup-minio.sh /usr/local/bin/
  1. Testar manualmente:
/usr/local/bin/backup-minio.sh
  1. Adicionar ao crontab (backup todo dia às 2h da manhã):
crontab -e
# Adicionar linha:
0 2 * * * /usr/local/bin/backup-minio.sh >> /var/log/minio-backup.log 2>&1

No Seu PC

  1. Editar pull-backup.sh com seus dados:
SERVER_USER="seu-usuario"
SERVER_HOST="seu-servidor.com"
  1. Dar permissão e testar:
chmod +x pull-backup.sh
./pull-backup.sh
  1. Agendar no crontab do SEU PC (todo dia às 3h):
crontab -e
# Adicionar linha:
0 3 * * * /caminho/para/pull-backup.sh

🔄 Como Funciona

┌─────────────────┐      02:00       ┌──────────────────┐
│   Servidor VPS  │ ────────────────▶│ Backup Local     │
│   (MinIO)       │   backup-minio.sh│ (/var/backups/)  │
└─────────────────┘                  └──────────────────┘
                                                  │
                                                  │ 03:00
                                                  │ pull-backup.sh
                                                  ▼
                                         ┌──────────────────┐
                                         │   Seu PC         │
                                         │   (Backup final) │
                                         └──────────────────┘

📦 Restaurar Backup

No servidor:

# Parar MinIO
docker compose down

# Restaurar volume
docker run --rm \
  -v course-plat_minio_data:/data \
  -v /var/backups/minio:/backup \
  alpine tar xzf /backup/minio-backup-YYYYMMDD-HHMMSS.tar.gz -C /data

# Reiniciar
docker compose up -d

⚠️ Considerações

Aspecto Nota
Segurança Use chaves SSH para o rsync
Backup external Considere também mandar para S3/Backblaze
Teste Teste restaurar pelo menos uma vez
Logs Verifique /var/log/minio-backup.log regularmente

🔧 Variáveis do backup-minio.sh

BACKUP_DIR="/var/backups/minio"    # Onde salvar no servidor
RETENTION_DAYS=7                    # Dias para manter backup
VOLUME_NAME="course-plat_minio_data"  # Nome do volume

🔧 Variáveis do pull-backup.sh

SERVER_USER="usuario"               # Usuário SSH
SERVER_HOST="seu-servidor.com"      # Host do servidor
SERVER_BACKUP_DIR="/var/backups/minio"
LOCAL_BACKUP_DIR="$HOME/backups/minio"
KEEP_LOCAL_DAYS=30                  # Dias para manter localmente

🔗 URLs de Arquivos

Onde Formato
Banco de dados proxy://iciv/ClassTypes/arquivo.pdf
Front-end /api/files/iciv/ClassTypes/arquivo.pdf

Use getFileUrl(url) do @/app/lib/utils/storage/fileUrl para converter.