77 lines
6.1 KiB
Markdown
77 lines
6.1 KiB
Markdown
# SuiteCRM 8.10.2 — preparação de homologação
|
|
|
|
Estado: modelo preparado; **build e arranque Docker ainda não executados**. Este Windows não tem Docker nem WSL instalado. Não aplicar em produção. O cliente Laravel e a captura na outbox existem; utilizador técnico, OAuth e envio real continuam pendentes.
|
|
|
|
Para os scripts de arranque e o bloqueio identificado no Windows Parallels ARM, consultar [instalação local](LOCAL.md). Está disponível o diagnóstico `php artisan suitecrm:probe` para verificar OAuth e metadados após configurar um CRM acessível por HTTPS.
|
|
|
|
A [decisão de arquitectura](../../docs/investmoz/suitecrm/architecture.md) define SuiteCRM como futuro sistema principal comercial. O portal continua operacional e não envia dados para este ambiente.
|
|
|
|
## Dependências verificadas
|
|
|
|
- Release oficial pré-compilada 8.10.2: download e SHA-256 conferidos; arquivo com `bin/console` e aplicação na raiz.
|
|
- PHP 8.4/Apache e MariaDB 11.4: combinação suportada na matriz oficial. Imagens fixadas pelos digests consultados no registry oficial em 25/09/2026.
|
|
- Motor Docker Linux e Compose v2 ainda necessários. JSON é usado como formato compatível com YAML para o ficheiro Compose.
|
|
- Dockerfile instala extensões do CRM; não altera PHP ou dependências Laravel.
|
|
|
|
## Preparar e instalar numa máquina Linux de testes
|
|
|
|
Executar a partir deste directório. Os comandos abaixo são instruções preparadas, não resultados de execução.
|
|
|
|
1. Confirmar `docker version` e `docker compose version`.
|
|
2. Criar `.secrets` com acesso apenas ao operador. Criar os ficheiros `db_password` e `db_root_password` com valores aleatórios distintos, sem newline, usando um gestor de segredos. Não colocar segredos em argumentos de comandos, no Git ou no chat. O Compose local monta ficheiros; não constitui um cofre de segredos encriptado.
|
|
3. Validar a configuração e construir:
|
|
|
|
```sh
|
|
docker compose -f compose.json config --quiet
|
|
docker compose -f compose.json build web
|
|
docker compose -f compose.json up -d db web
|
|
docker compose -f compose.json ps
|
|
docker compose -f compose.json exec --user www-data web php bin/console suitecrm:app:install
|
|
```
|
|
|
|
O instalador interactivo deve usar host `db`, base `suitecrm`, utilizador `suitecrm`, password definida no ficheiro privado e uma conta administradora exclusiva da homologação. Desactivar dados de demonstração se o ensaio de migração precisar de contagens exactas. Não usar a conta administradora como identidade da integração.
|
|
|
|
O HTTP está exposto **apenas em 127.0.0.1:8088**, para bootstrap com dados fictícios. Para homologação partilhada/API, colocar proxy HTTPS diante desse listener, configurar o site URL definitivo, confiar apenas no proxy conhecido e activar cookies seguros. Não abrir a porta na rede nem transmitir credenciais/dados reais por HTTP. Não foram criados DNS ou certificados.
|
|
|
|
Depois da instalação e da configuração do transporte:
|
|
|
|
```sh
|
|
docker compose -f compose.json exec --user www-data web php bin/console messenger:setup-transports
|
|
docker compose -f compose.json --profile installed up -d worker
|
|
docker compose -f compose.json exec --user www-data web php bin/console schedulers:run
|
|
```
|
|
|
|
Agendar o último comando a cada minuto no host, sem TTY (`exec -T`), usando o caminho absoluto real para este compose e sem execuções sobrepostas. Validar o último processamento no painel Schedulers. O perfil `installed` impede iniciar o worker antes da configuração inicial. Não multiplicar workers antes dos testes de concorrência.
|
|
|
|
## Conta técnica e OAuth — após arranque
|
|
|
|
Criar utilizador técnico exclusivo sem administração, exportação geral ou acesso a módulos não usados. Configurar papéis/grupos e testar permissões com essa identidade. Criar cliente OAuth2 para client credentials associado à identidade técnica conforme as opções da instalação. Guardar o segredo num cofre acessível apenas ao backend/worker Laravel. Verificar obtenção, expiração, revogação e nova emissão de token. Não presumir refresh token neste grant.
|
|
|
|
Confirmar o prefixo efectivo da API V8 nesta instalação SuiteCRM 8 e descobrir nomes de campos/relacionamentos pelos endpoints oficiais. Antes de ligar Laravel, comprovar criação, leitura, actualização e relação de registos fictícios, incluindo negação de operações fora do âmbito.
|
|
|
|
## Persistência, logs e actualizações
|
|
|
|
A base e a aplicação completa usam volumes nomeados para preservar configuração, chaves, extensões e uploads durante os ensaios. **Reconstruir a imagem não actualiza o código num volume existente.** Uma actualização requer procedimento oficial e backup compatível, ou nova instalação isolada; nunca apagar o volume para tentar actualizar uma instalação com dados.
|
|
|
|
Não configurar SMTP, importações reais ou webhooks enquanto os controlos e o contrato não forem testados. O access log preparado não inclui URL/query, cabeçalhos ou corpo; rever também logs próprios do SuiteCRM e do PHP para dados sensíveis. Não activar debug em ambiente com dados pessoais.
|
|
|
|
## Validação e rollback
|
|
|
|
Verificações locais realizadas: existência da release/imagens, integridade SHA-256 e estrutura do ZIP, análise estática do Compose. Pendentes: build, extensões em runtime, instalação, autenticação, TLS, schedulers, worker, permissões e restauro.
|
|
|
|
Para parar o ensaio preservando volumes:
|
|
|
|
```sh
|
|
docker compose -f compose.json --profile installed stop
|
|
```
|
|
|
|
Antes de qualquer migração/upgrade, obter backup consistente da base, aplicação, uploads e segredos; ensaiar restauro em projecto Compose separado. Não executar `down -v`. A produção permanece NO-GO até testes funcionais, segurança, privacidade e recuperação.
|
|
|
|
## Fontes
|
|
|
|
- [Release oficial](https://github.com/SuiteCRM/SuiteCRM-Core/releases/tag/v8.10.2)
|
|
- [Matriz de compatibilidade](https://docs.suitecrm.com/8.x/admin/compatibility-matrix/)
|
|
- [Instalador CLI](https://docs.suitecrm.com/8.x/admin/installation-guide/running-the-cli-installer/)
|
|
- [Messenger](https://docs.suitecrm.com/8.x/admin/async-tasks/messenger-setup/)
|
|
- [Schedulers](https://docs.suitecrm.com/8.x/admin/administration-panel/schedulers/)
|