[comment]: # ({e62e1497-e62e1497})
# 5 Instalação a partir de containers

[comment]: # ({/e62e1497-e62e1497})

[comment]: # ({52adc319-a3ac452e})
### Visão geral

Esta página descreve como implantar o Zabbix usando Docker ou Docker Compose.

[Docker Compose](#docker-compose) é a forma mais rápida de implantar o Zabbix.
Ele lê um arquivo de configuração e inicia automaticamente todos os contêineres que compõem uma instalação completa do Zabbix, na ordem correta.

[Docker (implantação manual)](#docker-manual-deployment) alcança o mesmo resultado implantando cada componente passo a passo.

::: noteimportant
Desde o Zabbix 6.0, triggers determinísticos precisam ser criados durante a instalação.
Se o log binário estiver habilitado para MySQL/MariaDB, isso requer privilégios de superusuário ou a definição da variável/parâmetro de configuração `log_bin_trust_function_creators = 1`.
Consulte [Scripts de criação do banco de dados](/manual/appendix/install/db_scripts#mysqlmariadb) para obter instruções sobre como definir a variável.
<br><br>
Observe que, se executada a partir de um console, a variável será definida apenas temporariamente e será removida quando um Docker for reiniciado.
Nesse caso, mantenha seu serviço SQL em execução, interrompa apenas o serviço `zabbix-server` executando `docker compose down zabbix-server` e depois `docker compose up -d zabbix-server`.
<br><br>
Como alternativa, você pode definir essa variável no arquivo de configuração.
:::

[comment]: # ({/52adc319-a3ac452e})

[comment]: # ({b13b686a-fba82ded})
### Pré-requisitos

Antes de começar, certifique-se de que o Docker (1.12.0 ou posterior) esteja instalado no seu sistema.
Caso não esteja, siga o [guia de instalação do Docker](https://docs.docker.com/engine/install/).
Para implantação com Docker Compose, o Docker Compose (2.24.0 ou posterior) também é necessário.

Alguns componentes do Zabbix exigem que portas específicas estejam abertas no host que executa o Docker (por exemplo, 10051/TCP para o Zabbix server, 162/UDP para traps SNMP).
Consulte [Requirements](/manual/installation/requirements#default-port-numbers) para ver a lista completa de portas usadas pelos componentes do Zabbix.
Para o Zabbix server e o agent, a porta padrão pode ser alterada definindo a variável de ambiente `ZBX_LISTENPORT` no respectivo contêiner.

[comment]: # ({/b13b686a-fba82ded})

[comment]: # ({6c7779eb-f9acea87})
### Imagens Docker disponíveis

O Zabbix fornece uma imagem Docker para cada componente do Zabbix, todas publicadas no [Docker Hub](https://hub.docker.com/u/zabbix).
Cada imagem é usada para criar um container executando esse componente.

|Componente do Zabbix|Imagem Docker|
|--|--------|
|agent|[zabbix/zabbix-agent](https://hub.docker.com/r/zabbix/zabbix-agent/)|
|agent 2|[zabbix/zabbix-agent2](https://hub.docker.com/r/zabbix/zabbix-agent2)|
|server (MySQL)|[zabbix/zabbix-server-mysql](https://hub.docker.com/r/zabbix/zabbix-server-mysql/)|
|server (PostgreSQL)|[zabbix/zabbix-server-pgsql](https://hub.docker.com/r/zabbix/zabbix-server-pgsql/)|
|Interface web (Apache + MySQL)|[zabbix/zabbix-web-apache-mysql](https://hub.docker.com/r/zabbix/zabbix-web-apache-mysql/)|
|Interface web (Apache + PostgreSQL)|[zabbix/zabbix-web-apache-pgsql](https://hub.docker.com/r/zabbix/zabbix-web-apache-pgsql/)|
|Interface web (Nginx + MySQL)|[zabbix/zabbix-web-nginx-mysql](https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql/)|
|Interface web (Nginx + PostgreSQL)|[zabbix/zabbix-web-nginx-pgsql](https://hub.docker.com/r/zabbix/zabbix-web-nginx-pgsql/)|
|proxy (SQLite3)|[zabbix/zabbix-proxy-sqlite3](https://hub.docker.com/r/zabbix/zabbix-proxy-sqlite3/)|
|proxy (MySQL)|[zabbix/zabbix-proxy-mysql](https://hub.docker.com/r/zabbix/zabbix-proxy-mysql/)|
|Java gateway|[zabbix/zabbix-java-gateway](https://hub.docker.com/r/zabbix/zabbix-java-gateway/)|
|Serviço web|[zabbix/zabbix-web-service](https://hub.docker.com/r/zabbix/zabbix-web-service)|
|Armadilhas SNMP|[zabbix/zabbix-snmptraps](https://hub.docker.com/r/zabbix/zabbix-snmptraps/)|

::: noteclassic
Para usar [armadilhas SNMP](/manual/config/items/itemtypes/snmptrap), o container de armadilhas SNMP deve compartilhar um volume com o container do Zabbix server ou proxy (consulte [como usar esta imagem](https://hub.docker.com/r/zabbix/zabbix-snmptraps#how-to-use-this-image) no Docker Hub e o [exemplo](#deploy-zabbix-server-postgresql-with-snmp-traps) abaixo).
:::

Todas as imagens dos componentes do Zabbix no Docker Hub são baseadas nas versões principais mais recentes dos [sistemas operacionais suportados](#image-tags).
Essas imagens são reconstruídas automaticamente quando as imagens do sistema operacional subjacente são atualizadas.

[comment]: # ({/6c7779eb-f9acea87})

[comment]: # ({c6474561-e498c2aa})
#### Tags de imagem

Cada imagem oferece suporte a tags para selecionar o sistema operacional base e a versão do Zabbix:

```default
zabbix/<image>:<os>-<version>
```

Valores `<os>` suportados:

-   `alpine` - Alpine Linux
-   `ubuntu` - Ubuntu
-   `centos` - CentOS Stream
-   `ol` - Oracle Linux
-   `ltsc2022` - Windows 11 LTSC 2022 (somente Zabbix agent)

Valores `<version>` suportados:

-   `latest` - Versão estável mais recente do Zabbix no Alpine Linux
-   `<os>-latest` - Versão estável mais recente do Zabbix no SO selecionado
-   `<os>-trunk` - Build de desenvolvimento (nightly) mais recente no SO selecionado
-   `<os>-X.X-latest` - Release secundária mais recente do Zabbix de uma versão principal específica do Zabbix no SO selecionado
-   `<os>-X.X.*` - Release secundária específica do Zabbix no SO selecionado

Exemplos:

```bash
# Zabbix proxy (SQLite3) estável mais recente no Alpine Linux:
docker pull zabbix/zabbix-proxy-sqlite3:latest

# Zabbix proxy (SQLite3) estável mais recente no Ubuntu:
docker pull zabbix/zabbix-proxy-sqlite3:ubuntu-latest

# Build de desenvolvimento (nightly) mais recente do Zabbix server (MySQL) no Ubuntu:
docker pull zabbix/zabbix-server-mysql:ubuntu-trunk

# Release secundária 7.4 mais recente do Zabbix server (MySQL) no Alpine Linux:
docker pull zabbix/zabbix-server-mysql:alpine-7.4-latest

# Versão 7.4.1 do Zabbix server (MySQL) no Alpine Linux:
docker pull zabbix/zabbix-server-mysql:alpine-7.4.1
```

[comment]: # ({/c6474561-e498c2aa})

[comment]: # ({af1bb4ea-c443c22e})
### Docker Compose

O Docker Compose é a maneira mais rápida de implantar o Zabbix.
Ele lê um arquivo de configuração (arquivo Compose) e gerencia toda a configuração — baixando imagens Docker, criando uma rede interna entre os contêineres, configurando o armazenamento, inicializando o banco de dados e iniciando tudo na ordem correta.

O repositório [official Zabbix Dockerfiles](https://github.com/zabbix/zabbix-docker) fornece arquivos Docker Compose prontos para uso e um sistema de configuração baseado em `.env` com suporte a diferentes sistemas operacionais, backends de banco de dados e configuração de componentes do Zabbix.

1\. Clone o repositório, navegue até ele e mude para a versão 7.4:

```bash
git clone https://github.com/zabbix/zabbix-docker.git
cd zabbix-docker
git checkout 7.4
```

2\. (Opcional) Personalize a implantação com [variáveis de ambiente](#environment-variables).
Esta etapa pode ser ignorada para uma configuração padrão.

3\. Implante a configuração padrão — Zabbix server, interface web (executada no Nginx) e um backend de banco de dados (MySQL ou PostgreSQL), cada um em seu próprio contêiner no Alpine Linux.

```bash
# Com MySQL como banco de dados:
docker compose -f ./compose.yaml up -d

# Com PostgreSQL como banco de dados:
docker compose -f ./compose_pgsql.yaml up -d
```

Depois que os contêineres estiverem ativos e em execução (normalmente em 1 a 3 minutos), o Zabbix server será iniciado e a interface web estará disponível em `http://localhost`.

::: noteclassic
Use `docker compose ps` para verificar o status dos contêineres.
Todos os contêineres (exceto o contêiner `zabbix-docker-server-db-init-1`) devem ter o status `Up`.
Se algum mostrar `Exited`, verifique seus logs com `docker logs <container-name>`.
:::

[comment]: # ({/af1bb4ea-c443c22e})

[comment]: # ({8b4e2b4d-de9f41d4})
#### Variáveis de ambiente

Tanto o comportamento do Docker Compose quanto a configuração dos componentes do Zabbix podem ser personalizados usando variáveis de ambiente.

As **variáveis no nível do Compose** (definidas no [arquivo `.env`](https://github.com/zabbix/zabbix-docker/blob/7.4/.env)) controlam quais imagens Docker, portas e faixas de IP de rede são usadas.
Você pode usar essas variáveis inline antes do comando `docker compose` ou editar o arquivo `.env`.

Por exemplo, o comando a seguir implanta uma configuração completa do Zabbix com vários contêineres usando uma imagem baseada em Ubuntu (em vez do Alpine Linux padrão) e expondo a interface web via Nginx em portas HTTP (8282) e HTTPS (8443) personalizadas:

```bash
OS=ubuntu \
ZABBIX_WEB_NGINX_HTTP_PORT=8282 \
ZABBIX_WEB_NGINX_HTTPS_PORT=8443 \
docker compose -f ./compose.yaml up -d
```

As **variáveis no nível do componente** (definidas nos arquivos [`env_vars/.env_<component>`](https://github.com/zabbix/zabbix-docker/blob/7.4/env_vars/)) controlam a configuração dos componentes do Zabbix.
Edite o respectivo arquivo `.env_<component>` antes de executar o comando `docker compose`.

Por exemplo, você pode ajustar a contagem de pollers passivos do Zabbix server e as configurações de cache, bem como configurar o fuso horário da interface web editando as seguintes variáveis:

```ini
# env_vars/.env_srv
ZBX_STARTPOLLERS=20
ZBX_CACHESIZE=64M
ZBX_HISTORYCACHESIZE=32M

# env_vars/.env_web
PHP_TZ=Europe/Paris
```

::: noteclassic
As variáveis de ambiente no nível do componente correspondem aos parâmetros de configuração dos componentes do Zabbix usando um estilo de nomenclatura diferente (por exemplo, `ZBX_STARTPOLLERS` corresponde a [`StartPollers`](/manual/appendix/config/zabbix_server#startpollers)).
Algumas variáveis são específicas do Docker, e alguns parâmetros de configuração não podem ser alterados (por exemplo, `PIDFile` e `LogType`).
Ao usar variáveis de ambiente, consulte a seção *Variáveis de ambiente* na descrição da [imagem Docker](#available-docker-images) de cada componente no Docker Hub.
:::

[comment]: # ({/8b4e2b4d-de9f41d4})

[comment]: # ({15680aeb-7d10f7dc})
#### Volumes

O Docker Compose armazena dados persistentes no diretório `zbx_env/` criado ao lado do arquivo Compose.
Esse diretório preserva os dados dos componentes entre reinicializações e atualizações dos contêineres.

O conteúdo de `zbx_env/` é predefinido para a imagem de cada componente. Por exemplo:

-   `zbx_env/etc/` - usado pelo [contêiner da interface web do Zabbix](https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql#allowed-volumes-for-the-zabbix-web-interface-container)
-   `zbx_env/usr/` e `zbx_env/var/` - usados pelo [contêiner do server Zabbix](https://hub.docker.com/r/zabbix/zabbix-server-mysql#allowed-volumes-for-the-zabbix-server-container)

Para mais informações sobre cada volume, consulte a seção *Allowed volumes* na descrição da [imagem Docker](#available-docker-images) de cada componente no Docker Hub.

[comment]: # ({/15680aeb-7d10f7dc})

[comment]: # ({d348b483-fb9850d6})
#### Makefile

O repositório Zabbix Dockerfiles também fornece um [Makefile](https://github.com/zabbix/zabbix-docker/blob/7.4/Makefile) como um atalho para tarefas comuns do Docker Compose.
Em vez de usar o comando completo `docker compose`, você pode usar comandos `make` mais curtos (execute `make help` para ver as opções disponíveis):

```bash
# Implantação padrão (Zabbix server, interface web, MySQL, tudo em Alpine Linux)
make up

# Implantação personalizada (Zabbix server, interface web com portas Nginx personalizadas, PostgreSQL, tudo em Ubuntu)
make up \
  OS=ubuntu \
  DB=pgsql \
  ZABBIX_WEB_NGINX_HTTP_PORT=8282 \
  ZABBIX_WEB_NGINX_HTTPS_PORT=8443
```

::: noteimportant
Ao parar ou remover contêineres, sempre especifique o mesmo tipo de banco de dados que foi implantado (por exemplo, `make down DB=pgsql`).
:::

Por padrão, `make up` inicia apenas um conjunto mínimo de serviços (Zabbix server, interface web e banco de dados).
Isso mantém a configuração leve e evita iniciar componentes que podem não ser necessários.
Para incluir componentes adicionais, você pode usar os seguintes [perfis do Compose](https://docs.docker.com/compose/how-tos/profiles/):

```bash
# Implantação padrão + Zabbix agent, Java gateway, serviço web e traps SNMP:
make up COMPOSE_PROFILES=full

# COMPOSE_PROFILES=full + Zabbix proxy (MySQL e SQLite3):
make up COMPOSE_PROFILES=all
```

[comment]: # ({/d348b483-fb9850d6})

[comment]: # ({b3b02b80-0b4b68c7})
### Docker (implantação manual)

Use a implantação manual quando quiser implantar o Zabbix passo a passo, executar componentes individuais, integrá-los a um ambiente existente ou usar um runtime de contêiner alternativo, como o Podman.

Por exemplo, para implantar um proxy Zabbix, execute o seguinte comando:

```bash
docker run --name zabbix-proxy-sqlite3 \
  -e ZBX_SERVER_HOST=192.0.2.0 \
  -e ZBX_PROXYMODE=0 \
  -e ZBX_HOSTNAME=zabbix-proxy-sqlite3 \
  -v zabbix-proxy-data:/var/lib/zabbix/db_data \
  --init \
  -d \
  zabbix/zabbix-proxy-sqlite3:alpine-7.4-latest
```

Este comando:

-   Baixa a [imagem Docker](#available-docker-images) `zabbix/zabbix-proxy-sqlite3:alpine-7.4-latest`.

-   Cria e inicia um contêiner `zabbix-proxy-sqlite3` com base na imagem Docker (com as flags [`--init`](https://docs.docker.com/reference/cli/docker/container/run/#init) e [`-d`](https://docs.docker.com/reference/cli/docker/container/run/#detach)).

-   Configura o parâmetro [`Server`](/manual/appendix/config/zabbix_proxy#server) do proxy Zabbix por meio da variável de ambiente `ZBX_SERVER_HOST`.
    Esse parâmetro especifica o endereço IP do server Zabbix do qual o proxy obterá os dados de configuração e para o qual enviará os dados coletados.
    Observe que outras variáveis necessárias para a operação do proxy ativo usam valores padrão e podem ser omitidas.

::: noteclassic
As variáveis de ambiente correspondem aos parâmetros de configuração dos componentes do Zabbix usando um estilo de nomenclatura diferente (por exemplo, `ZBX_SERVER_HOST` corresponde a [`Server`](/manual/appendix/config/zabbix_proxy#server)).
Algumas variáveis são específicas do Docker, e alguns parâmetros de configuração não podem ser alterados (por exemplo, `PIDFile` e `LogType`).
Ao usar variáveis de ambiente, consulte a seção *Environment variables* na descrição da [imagem Docker](#available-docker-images) de cada componente no Docker Hub.
:::

-   Conecta um local de armazenamento gerenciado pelo Docker (por exemplo, `/var/lib/docker/volumes/zabbix-proxy-data/`) ao diretório `/var/lib/zabbix` do contêiner, para que os dados do proxy Zabbix sejam armazenados permanentemente, mesmo que o contêiner seja removido.

::: noteclassic
Para mais informações sobre cada volume, consulte a seção *Allowed volumes* na descrição da [imagem Docker](#available-docker-images) de cada componente no Docker Hub.
:::

Após implantar o contêiner do proxy Zabbix, você pode prosseguir para [adicionar o proxy](/manual/distributed_monitoring/proxies#configuration) no seu frontend Zabbix e [configurar hosts](/manual/config/hosts/host#configuration) para serem monitorados por esse proxy.

Os exemplos abaixo abrangem três cenários adicionais de implantação:

-   server Zabbix (MySQL) com Java gateway
-   server Zabbix (PostgreSQL) com traps SNMP
-   server Zabbix (MySQL) com Java gateway no RHEL 8

Para mais exemplos, consulte a descrição da [imagem Docker](#available-docker-images) de cada componente no Docker Hub.

[comment]: # ({/b3b02b80-0b4b68c7})

[comment]: # ({fecc21f2-492bd3ba})
#### Implantar o Zabbix server (MySQL) com Java gateway

Este exemplo mostra como implantar um Zabbix server com backend MySQL, um Java gateway para [monitoramento JMX](/manual/config/items/itemtypes/jmx_monitoring) e uma interface web baseada em Nginx.

1\. Crie uma rede Docker dedicada, para que todos os contêineres dos componentes do Zabbix possam alcançar uns aos outros pelo nome do contêiner:

```bash
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
```

2\. Execute um contêiner de server MySQL vazio (substitua `zabbix_pwd` e `root_pwd` por senhas fortes):

```bash
docker run --name mysql-server -t \
  -e MYSQL_DATABASE="zabbix" \
  -e MYSQL_USER="zabbix" \
  -e MYSQL_PASSWORD="zabbix_pwd" \
  -e MYSQL_ROOT_PASSWORD="root_pwd" \
  --network=zabbix-net \
  --restart unless-stopped \
  -d mysql:8.0-oracle \
  --character-set-server=utf8mb4 --collation-server=utf8mb4_bin \
  --default-authentication-plugin=mysql_native_password
```

::: noteimportant
Se você estiver usando uma imagem Docker para MySQL 8.4 ou posterior, substitua `--default-authentication-plugin=mysql_native_password` por `--authentication-policy=caching_sha2_password`.
<br><br>
O MySQL deve estar totalmente inicializado antes de executar o contêiner do Zabbix server na etapa 4; caso contrário, o schema do Zabbix pode não ser carregado corretamente.
Para confirmar que o MySQL está pronto, execute `docker logs mysql-server` e prossiga somente quando vir `/usr/sbin/mysqld: ready for connections`.
:::

3\. Execute um contêiner do Zabbix Java gateway:

```bash
docker run --name zabbix-java-gateway -t \
  --network=zabbix-net \
  --restart unless-stopped \
  -d zabbix/zabbix-java-gateway:alpine-7.4-latest
```

4\. Execute um contêiner do Zabbix server e vincule-o ao contêiner do server MySQL (substitua `zabbix_pwd` e `root_pwd` pelas mesmas senhas usadas na etapa 2):

```bash
docker run --name zabbix-server-mysql -t \
  -e DB_SERVER_HOST="mysql-server" \
  -e MYSQL_DATABASE="zabbix" \
  -e MYSQL_USER="zabbix" \
  -e MYSQL_PASSWORD="zabbix_pwd" \
  -e MYSQL_ROOT_PASSWORD="root_pwd" \
  -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
  --network=zabbix-net \
  -p 10051:10051 \
  --restart unless-stopped \
  -d zabbix/zabbix-server-mysql:alpine-7.4-latest
```

::: noteimportant
Após executar o contêiner do Zabbix server, aguarde até que o Zabbix server conclua a inicialização do schema do banco de dados.
Para confirmar que ele está pronto, execute `docker logs zabbix-server-mysql` e prossiga somente quando não vir mais `Creating 'zabbix' schema in MySQL`.
:::

5\. Execute um contêiner da interface web do Zabbix e vincule-o aos contêineres do Zabbix server e do server MySQL (substitua `zabbix_pwd` e `root_pwd` pelas mesmas senhas usadas na etapa 2):

```bash
docker run --name zabbix-web-nginx-mysql -t \
  -e ZBX_SERVER_HOST="zabbix-server-mysql" \
  -e DB_SERVER_HOST="mysql-server" \
  -e MYSQL_DATABASE="zabbix" \
  -e MYSQL_USER="zabbix" \
  -e MYSQL_PASSWORD="zabbix_pwd" \
  -e MYSQL_ROOT_PASSWORD="root_pwd" \
  --network=zabbix-net \
  -p 80:8080 \
  --restart unless-stopped \
  -d zabbix/zabbix-web-nginx-mysql:alpine-7.4-latest
```

Depois que os contêineres estiverem ativos e em execução (normalmente em 1–3 minutos), o Zabbix server será iniciado e a interface web estará disponível em `http://localhost`.

#### Implantar o Zabbix server (PostgreSQL) com traps SNMP

Este exemplo mostra como implantar um Zabbix server com backend PostgreSQL, [traps SNMP](/manual/config/items/itemtypes/snmptrap) e uma interface web baseada em Nginx.

1\. Crie uma rede Docker dedicada, para que todos os contêineres dos componentes do Zabbix possam alcançar uns aos outros pelo nome do contêiner:

```bash
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net
```

2\. Execute um contêiner de server PostgreSQL vazio (substitua `zabbix_pwd` por uma senha forte):

```bash
docker run --name postgres-server -t \
  -e POSTGRES_USER="zabbix" \
  -e POSTGRES_PASSWORD="zabbix_pwd" \
  -e POSTGRES_DB="zabbix" \
  --network=zabbix-net \
  --restart unless-stopped \
  -d postgres:latest
```

3\. Execute um contêiner de traps SNMP do Zabbix:

```bash
docker run --name zabbix-snmptraps -t \
  -v /zbx_instance/snmptraps:/var/lib/zabbix/snmptraps:rw \
  -v /var/lib/zabbix/mibs:/usr/share/snmp/mibs:ro \
  --network=zabbix-net \
  -p 162:1162/udp \
  --restart unless-stopped \
  -d zabbix/zabbix-snmptraps:alpine-7.4-latest
```

4\. Execute um contêiner do Zabbix server, vincule-o ao contêiner do server PostgreSQL e ao contêiner de traps SNMP (substitua `zabbix_pwd` pela mesma senha usada na etapa 2):

```bash
docker run --name zabbix-server-pgsql -t \
  -e DB_SERVER_HOST="postgres-server" \
  -e POSTGRES_USER="zabbix" \
  -e POSTGRES_PASSWORD="zabbix_pwd" \
  -e POSTGRES_DB="zabbix" \
  -e ZBX_ENABLE_SNMP_TRAPS="true" \
  --network=zabbix-net \
  -p 10051:10051 \
  --volumes-from zabbix-snmptraps \
  --restart unless-stopped \
  -d zabbix/zabbix-server-pgsql:alpine-7.4-latest
```

::: noteimportant
Após executar o contêiner do Zabbix server, aguarde até que o Zabbix server conclua a inicialização do schema do banco de dados.
Para confirmar que ele está pronto, execute `docker logs zabbix-server-pgsql` e prossiga somente quando não vir mais `Creating 'zabbix' schema in PostgreSQL`.
:::

5\. Execute um contêiner da interface web do Zabbix e vincule-o aos contêineres do Zabbix server e do server PostgreSQL (substitua `zabbix_pwd` pela mesma senha usada na etapa 2):

```bash
docker run --name zabbix-web-nginx-pgsql -t \
  -e ZBX_SERVER_HOST="zabbix-server-pgsql" \
  -e DB_SERVER_HOST="postgres-server" \
  -e POSTGRES_USER="zabbix" \
  -e POSTGRES_PASSWORD="zabbix_pwd" \
  -e POSTGRES_DB="zabbix" \
  --network=zabbix-net \
  -p 443:8443 \
  -p 80:8080 \
  -v /etc/ssl/nginx:/etc/ssl/nginx:ro \
  --restart unless-stopped \
  -d zabbix/zabbix-web-nginx-pgsql:alpine-7.4-latest
```

Depois que os contêineres estiverem ativos e em execução (normalmente em 1–3 minutos), o Zabbix server será iniciado e a interface web estará disponível em `http://localhost`.

#### Implantar o Zabbix server (MySQL) com Java gateway no RHEL 8–10

Este exemplo mostra como implantar um Zabbix server com backend MySQL, um Java gateway para [monitoramento JMX](/manual/config/items/itemtypes/jmx_monitoring) e uma interface web baseada em Nginx, tudo em execução no Red Hat Enterprise Linux 8, 9 ou 10.

No Red Hat Enterprise Linux, o runtime de contêiner recomendado é o Podman em vez do Docker.
O Podman funciona de forma semelhante ao Docker, mas não requer um serviço em segundo plano em execução como root, o que o torna mais adequado para ambientes Red Hat.

1\. Crie um novo pod com o nome `zabbix` e portas expostas para a interface web do Zabbix e o trapper do Zabbix server:

```bash
podman pod create --name zabbix -p 80:8080 -p 10051:10051
```

2\. (Opcional) Execute um contêiner do Zabbix agent no local do pod `zabbix`:

```bash
podman run --name zabbix-agent \
  -e ZBX_SERVER_HOST="127.0.0.1,localhost" \
  --restart=always \
  --pod=zabbix \
  -d registry.connect.redhat.com/zabbix/zabbix-agent-74:latest
```

3\. Crie um diretório `./mysql/` no host RHEL:

```bash
mkdir -p ./mysql
```

4\. Execute um contêiner de server MySQL vazio (substitua `zabbix_pwd` e `root_pwd` por senhas fortes):

```bash
podman run --name mysql-server -t \
  -e MYSQL_DATABASE="zabbix" \
  -e MYSQL_USER="zabbix" \
  -e MYSQL_PASSWORD="zabbix_pwd" \
  -e MYSQL_ROOT_PASSWORD="root_pwd" \
  -v ./mysql/:/var/lib/mysql/:Z \
  --restart=always \
  --pod=zabbix \
  -d mysql:8.0 \
  --character-set-server=utf8mb4 --collation-server=utf8mb4_bin \
  --default-authentication-plugin=mysql_native_password
```

::: noteimportant
Se você estiver usando uma imagem Docker para MySQL 8.4 ou posterior, substitua `--default-authentication-plugin=mysql_native_password` por `--authentication-policy=caching_sha2_password`.
<br><br>
O MySQL deve estar totalmente inicializado antes de executar o contêiner do Zabbix server na etapa 6; caso contrário, o schema do Zabbix pode não ser carregado corretamente.
Para confirmar que o MySQL está pronto, execute `podman logs mysql-server` e prossiga somente quando vir `/usr/sbin/mysqld: ready for connections`.
:::

5\. Execute um contêiner do Zabbix Java gateway:

```bash
podman run --name zabbix-java-gateway -t \
  --restart=always \
  --pod=zabbix \
  -d registry.connect.redhat.com/zabbix/zabbix-java-gateway-74
```

6\. Execute um contêiner do Zabbix server (substitua `zabbix_pwd` e `root_pwd` pelas mesmas senhas usadas na etapa 4):

```bash
podman run --name zabbix-server-mysql -t \
  -e DB_SERVER_HOST="127.0.0.1" \
  -e MYSQL_DATABASE="zabbix" \
  -e MYSQL_USER="zabbix" \
  -e MYSQL_PASSWORD="zabbix_pwd" \
  -e MYSQL_ROOT_PASSWORD="root_pwd" \
  -e ZBX_JAVAGATEWAY="127.0.0.1" \
  --restart=always \
  --pod=zabbix \
  -d registry.connect.redhat.com/zabbix/zabbix-server-mysql-74
```

7\. Execute um contêiner da interface web do Zabbix (substitua `zabbix_pwd` e `root_pwd` pelas mesmas senhas usadas na etapa 4):

```bash
podman run --name zabbix-web-mysql -t \
  -e ZBX_SERVER_HOST="127.0.0.1" \
  -e DB_SERVER_HOST="127.0.0.1" \
  -e MYSQL_DATABASE="zabbix" \
  -e MYSQL_USER="zabbix" \
  -e MYSQL_PASSWORD="zabbix_pwd" \
  -e MYSQL_ROOT_PASSWORD="root_pwd" \
  --restart=always \
  --pod=zabbix \
  -d registry.connect.redhat.com/zabbix/zabbix-web-mysql-74
```

::: noteclassic
O pod `zabbix` expõe a porta `80/TCP` (HTTP) para a máquina host a partir da `8080/TCP` do contêiner `zabbix-web-mysql`.
:::

[comment]: # ({/fecc21f2-492bd3ba})
