manuais-e-documentacao-itguys/documentacao zammad/[Nível 2] Instalação E Depl...

136 lines
4.7 KiB
Markdown

# MANUAL TÉCNICO - INSTALAÇÃO E DEPLOY ZAMMAD - DOCKER/LXC
**Código:** ITGINF 0001/26 | **Classificação:** INTERNO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}
## 1. HISTÓRICO DE REVISÃO
| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |
## 2. OBJETIVO
Documentar os dois métodos homologados de instalação do Zammad: Container (Docker) e Sistema Operacional (LXC/VM debian).
## 3. PRÉ-REQUISITOS
* [ ] Servidor Linux (Debian 11/12 ou Ubuntu 22.04).
* [ ] Mínimo 4GB RAM (Recomendado 8GB).
* [ ] Acesso Root/Sudo.
* [ ] DNS configurado para o domínio do helpdesk (ex: `suporte.itguys.com`).
## 4. PASSO A PASSO (EXECUÇÃO)
### Opção A: Docker Compose (Recomendado)
A instalação via Docker é a mais limpa e fácil de manter.
**Etapa 1: Preparação do Host**
O Elasticsearch exige uma configuração específica de memória virtual.
1. Acesse o servidor via SSH.
2. Execute o comando para ajuste persistente:
```bash
sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
```
**Etapa 2: Clonar Repositório e Configurar**
1. Baixe o repositório oficial:
```bash
git clone https://github.com/zammad/zammad-docker-compose.git
cd zammad-docker-compose
```
2. Defina a versão (Tag) mais recente estável (Evite `latest` em produção):
```bash
git checkout 6.2.0-15 # Exemplo, verifique a última no Github
```
3. Ajuste o arquivo `.env`:
```bash
cp .env.dist .env
nano .env
```
* Altere `ELASTICSEARCH_MEMORY` para `2G` se tiver pouca RAM.
* Altere passwords do Postgres se necessário.
**Etapa 3: Iniciar Stack**
1. Suba os containers:
```bash
docker compose up -d
```
2. Aguarde cerca de 5 minutos (Iniciação do Rails e Elasticsearch).
3. Acesse `http://SEU_IP:8080`.
![Terminal Install Docker](assets/zammad_install_docker.png)
---
### Opção B: Instalação em LXC/VM (Pacote .deb)
Ideal para Proxmox containers (LXC) onde Docker não é desejado.
**Etapa 1: Dependências e Locales**
1. Defina o locale para UTF-8 (Crítico para PostgreSQL):
```bash
localectl set-locale LANG=en_US.UTF-8
update-locale
```
2. Adicione o repositório oficial do Zammad:
```bash
curl -fsSL https://dl.packager.io/srv/zammad/zammad/key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/pkgr-zammad.gpg > /dev/null
echo "deb https://dl.packager.io/srv/zammad/zammad/stable/debian 12 main" | tee /etc/apt/sources.list.d/zammad.list
```
**Etapa 2: Instalação do Pacote**
1. Instale o Zammad (Isso trará Nginx, Elasticsearch e PostgreSQL automaticamente):
```bash
apt update
apt install zammad
```
2. O instalador pedirá configurações básicas. Siga os prompts.
**Etapa 3: Configuração do Elasticsearch**
1. Instale o plugin mapper-attachments:
```bash
/usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment
systemctl restart elasticsearch
```
2. Conecte o Zammad ao Elastic:
```bash
zammad run rails r "Setting.set('es_url', 'http://localhost:9200')"
zammad run rake searchindex:rebuild
```
## 5. SOLUÇÃO DE PROBLEMAS (TROUBLESHOOTING)
!!! warning "Pânico: Instalação Falhou"
Erros comuns durante o deploy inicial.
**Problema 1: Elasticsearch morre após segundos (Docker)**
* **Erro:** Logs mostram `max virtual memory areas vm.max_map_count [65530] is too low`.
* **Causa:** Esqueceu a Etapa 1 do Docker.
* **Solução:** Rode `sysctl -w vm.max_map_count=262144` no **HOST** (não no container) e reinicie a stack.
**Problema 2: Erro 502 Bad Gateway no Nginx**
* **Causa:** O container `zammad-railsserver` ainda está iniciando ou falhou.
* **Solução:**
1. Verifique logs: `docker compose logs -f zammad-railsserver`.
2. Se estiver "Booting...", aguarde. Pode levar 5-10 min na primeira vez.
**Problema 3: Instalação via Pacote falha no PostgreSQL**
* **Causa:** Locale incorreto (não UTF-8).
* **Solução:**
1. Rode `localectl` e garanta que está tudo UTF-8.
2. Se falhar, purgue o pgsql: `apt remove --purge postgresql*` e tente de novo.
## 6. DADOS TÉCNICOS
| Serviço | Porta Interna | Porta Externa (Padrão) |
| :--- | :--- | :--- |
| **Nginx** | 8080 | 8080 (Docker) / 80 (Pkg) |
| **PostgreSQL** | 5432 | Não exposta |
| **Elasticsearch**| 9200 | Não exposta |
| **Memcached** | 11211 | Não exposta |
## 7. VALIDAÇÃO FINAL
- [ ] A interface web carrega sem erros?
- [ ] O comando `zammad run rails r "p Setting.get('es_url')"` retorna a URL correta?
- [ ] O ElasticSearch está com status verde/amarelo? (`curl localhost:9200/_cluster/health`)