Guia completo para fazer deploy do SuiteCRM Docker na sua VPS.
- Docker e Docker Compose instalados
- Git instalado
- Porta 80 liberada no firewall
- Acesso SSH à VPS
Se a VPS ainda não tiver Docker instalado:
# Atualizar sistema
sudo apt update && sudo apt upgrade -y
# Instalar dependências
sudo apt install -y curl git
# Instalar Docker
curl -fsSL https://get.docker.com | sh
# Adicionar usuário ao grupo docker
sudo usermod -aG docker $USER
# Instalar Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Relogar ou executar
newgrp dockerNo seu computador local:
# Adicionar todas as mudanças
git add -A
# Fazer commit
git commit -m "Add automatic bug fixes and improved documentation"
# Fazer push para o repositório remoto
git push origin mainConecte-se à VPS via SSH e execute:
# Clonar o repositório
git clone <URL_DO_SEU_REPOSITORIO> suitecrm-docker
cd suitecrm-docker
# Dar permissão de execução ao script de instalação
chmod +x install.sh
# Executar instalação
./install.shSe o entrypoint não aplicou as correções automaticamente, execute:
# Aplicar correções manualmente
chmod +x fix-bugs.sh
./fix-bugs.shOu aplicar diretamente:
docker compose exec php sed -i '644d' public/legacy/modules/AOW_WorkFlow/aow_utils.php
docker compose exec php sed -i '294d' public/legacy/include/InlineEditing/InlineEditing.php
docker compose exec php sed -i 's|RewriteBase localhostlegacy/|RewriteBase /legacy/|' public/legacy/.htaccess# Instalar SuiteCRM
docker compose exec php bin/console suitecrm:app:install \
-U root \
-P root \
-H mysql \
-Z 3306 \
-N root \
-u admin \
-p SuaSenhaSegura123 \
-S seu-dominio.com \
-d no \
-W trueImportante: Troque admin e SuaSenhaSegura123 por credenciais seguras!
Para atualizar quando fizer mudanças:
# Na VPS
cd suitecrm-docker
git pull origin main
docker compose down
docker compose up -d --buildSe você não estiver usando Git ou quiser sincronizar diretamente:
# Sincronizar arquivos (excluindo volumes)
rsync -avz --exclude 'volumes/' \
--exclude '.git/' \
--exclude '.env' \
/home/mohr/lixo/suitecrm-docker/ \
usuario@ip-da-vps:/caminho/destino/suitecrm-docker/
# Conectar na VPS
ssh usuario@ip-da-vps
# Entrar no diretório
cd /caminho/destino/suitecrm-docker
# Executar instalação
chmod +x install.sh
./install.shPara transferência simples de arquivos:
# Compactar projeto (excluindo volumes)
tar -czf suitecrm-docker.tar.gz \
--exclude='volumes/' \
--exclude='.git/' \
-C /home/mohr/lixo suitecrm-docker/
# Transferir para VPS
scp suitecrm-docker.tar.gz usuario@ip-da-vps:/tmp/
# Na VPS
ssh usuario@ip-da-vps
cd ~
tar -xzf /tmp/suitecrm-docker.tar.gz
cd suitecrm-docker
chmod +x install.sh
./install.shSe você quiser usar um domínio com HTTPS:
# Instalar Nginx
sudo apt install -y nginx certbot python3-certbot-nginx
# Criar configuração
sudo nano /etc/nginx/sites-available/suitecrmConteúdo do arquivo:
server {
listen 80;
server_name seu-dominio.com;
location / {
proxy_pass http://localhost:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}# Ativar site
sudo ln -s /etc/nginx/sites-available/suitecrm /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
# Instalar certificado SSL
sudo certbot --nginx -d seu-dominio.comSe preferir não usar reverse proxy:
Edite docker-compose.yml:
services:
php:
ports:
- "8080:80" # Mude para porta diferenteCrie um arquivo .env na VPS:
nano .envConteúdo:
VERSION_SUITECRM=v8.8.0
TZ=America/Sao_Paulo
XDEBUG_CONFIG=offCrie um script de backup:
nano backup.shConteúdo:
#!/bin/bash
BACKUP_DIR="/backup/suitecrm"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Backup do banco
docker compose exec -T mysql mysqldump -uroot -proot root > $BACKUP_DIR/db_$DATE.sql
# Backup dos arquivos
tar -czf $BACKUP_DIR/files_$DATE.tar.gz volumes/suitecrm
# Manter apenas últimos 7 backups
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
echo "Backup concluído: $DATE"chmod +x backup.sh
# Adicionar ao crontab (backup diário às 2h)
crontab -e
# Adicione: 0 2 * * * /caminho/para/backup.sh# Status dos containers
docker compose ps
# Logs em tempo real
docker compose logs -f
# Uso de recursos
docker statsO docker-compose.yml já está configurado com restart: always, garantindo que os containers reiniciem automaticamente.
# Ver logs de erro
docker compose logs php
docker compose logs mysql
# Reconstruir
docker compose down
docker compose up -d --build --force-recreate# Restaurar do backup
docker compose exec -T mysql mysql -uroot -proot root < /backup/suitecrm/db_XXXXXXXX.sql# Remover imagens não utilizadas
docker system prune -a
# Remover volumes órfãos
docker volume prune- Mude as senhas padrão: Nunca use admin/admin em produção
- Configure firewall: Use UFW para limitar acesso
sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable - Use HTTPS: Sempre configure SSL/TLS
- Backups regulares: Configure o script de backup
- Atualizações: Mantenha sistema e Docker atualizados
- Monitore logs: Verifique logs regularmente
# Reiniciar tudo
docker compose restart
# Parar tudo
docker compose down
# Ver uso de disco
docker system df
# Acessar MySQL
docker compose exec mysql mysql -uroot -proot root
# Executar comandos SuiteCRM
docker compose exec php bin/console list
# Limpar cache
docker compose exec php bash -c "rm -rf cache/prod/* public/legacy/cache/*"
docker compose restart php- VPS com Docker instalado
- Repositório clonado ou arquivos transferidos
- Firewall configurado
-
./install.shexecutado com sucesso - Bugs verificados (3/3 ✓)
- SuiteCRM instalado via
bin/console - Senha de admin alterada
- Domínio apontado (se aplicável)
- SSL configurado (se aplicável)
- Backup configurado
- Sistema testado e funcionando
Para problemas específicos, consulte:
- README.md - Instruções detalhadas
- CHANGELOG.md - Histórico de mudanças
- logs/prod/prod.log - Logs da aplicação