[comment]: # ({e62e1497-e62e1497})
# 5 Installation à partir de conteneurs

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

[comment]: # ({52adc319-a3ac452e})
### Vue d'ensemble

Cette page décrit comment déployer Zabbix à l'aide de Docker ou de Docker Compose.

[Docker Compose](#docker-compose) est la méthode la plus rapide pour déployer Zabbix.
Il lit un fichier de configuration et démarre automatiquement tous les conteneurs qui composent une installation Zabbix complète, dans le bon ordre.

[Docker (déploiement manuel)](#docker-manual-deployment) permet d'obtenir le même résultat en déployant chaque composant étape par étape.

::: noteimportant
Depuis Zabbix 6.0, les déclencheurs déterministes doivent être créés pendant l'installation.
Si la journalisation binaire est activée pour MySQL/MariaDB, cela nécessite des privilèges superutilisateur ou la définition du paramètre de configuration/variable `log_bin_trust_function_creators = 1`.
Consultez [Scripts de création de base de données](/manual/appendix/install/db_scripts#mysqlmariadb) pour savoir comment définir la variable.
<br><br>
Notez que si l'exécution se fait depuis une console, la variable ne sera définie que temporairement et sera supprimée lorsqu'un Docker est redémarré.
Dans ce cas, laissez votre service SQL en cours d'exécution, arrêtez uniquement le service `zabbix-server` en exécutant `docker compose down zabbix-server`, puis `docker compose up -d zabbix-server`.
<br><br>
Vous pouvez également définir cette variable dans le fichier de configuration.
:::

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

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

Avant de commencer, assurez-vous que Docker (1.12.0 ou version ultérieure) est installé sur votre système.
Si ce n'est pas le cas, suivez le [guide d'installation de Docker](https://docs.docker.com/engine/install/).
Pour un déploiement avec Docker Compose, Docker Compose (2.24.0 ou version ultérieure) est également requis.

Certains composants Zabbix nécessitent que des ports spécifiques soient ouverts sur l'hôte exécutant Docker (par exemple, 10051/TCP pour le serveur Zabbix, 162/UDP pour les traps SNMP).
Consultez [Requirements](/manual/installation/requirements#default-port-numbers) pour obtenir la liste complète des ports utilisés par les composants Zabbix.
Pour le serveur Zabbix et l'agent, le port par défaut peut être modifié en définissant la variable d'environnement `ZBX_LISTENPORT` sur le conteneur correspondant.

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

[comment]: # ({6c7779eb-f9acea87})
### Images Docker disponibles

Zabbix fournit une image Docker pour chaque composant Zabbix, toutes publiées sur [Docker Hub](https://hub.docker.com/u/zabbix).
Chaque image est utilisée pour créer un conteneur exécutant ce composant.

|Composant Zabbix|Image 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)|
|Serveur (MySQL)|[zabbix/zabbix-server-mysql](https://hub.docker.com/r/zabbix/zabbix-server-mysql/)|
|Serveur (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/)|
|Service web|[zabbix/zabbix-web-service](https://hub.docker.com/r/zabbix/zabbix-web-service)|
|Traps SNMP|[zabbix/zabbix-snmptraps](https://hub.docker.com/r/zabbix/zabbix-snmptraps/)|

::: noteclassic
Pour utiliser les [traps SNMP](/manual/config/items/itemtypes/snmptrap), le conteneur de traps SNMP doit partager un volume avec le conteneur du serveur Zabbix ou du proxy Zabbix (voir [comment utiliser cette image](https://hub.docker.com/r/zabbix/zabbix-snmptraps#how-to-use-this-image) sur Docker Hub et l'[exemple](#deploy-zabbix-server-postgresql-with-snmp-traps) ci-dessous).
:::

Toutes les images des composants Zabbix sur Docker Hub sont basées sur les dernières versions majeures des [systèmes d'exploitation pris en charge](#image-tags).
Ces images sont reconstruites automatiquement lorsque les images du système d'exploitation sous-jacent sont mises à jour.

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

[comment]: # ({c6474561-e498c2aa})
#### Balises d'image

Chaque image prend en charge des balises permettant de sélectionner le système d'exploitation de base et la version de Zabbix:

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

Valeurs `<os>` prises en charge:

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

Valeurs `<version>` prises en charge:

-   `latest` - Dernière version stable de Zabbix sur Alpine Linux
-   `<os>-latest` - Dernière version stable de Zabbix sur le système d'exploitation sélectionné
-   `<os>-trunk` - Dernière version de développement (nightly) sur le système d'exploitation sélectionné
-   `<os>-X.X-latest` - Dernière version mineure de Zabbix d'une version majeure Zabbix spécifique sur le système d'exploitation sélectionné
-   `<os>-X.X.*` - Version mineure spécifique de Zabbix sur le système d'exploitation sélectionné

Exemples:

```bash
# Dernier proxy Zabbix stable (SQLite3) sur Alpine Linux:
docker pull zabbix/zabbix-proxy-sqlite3:latest

# Dernier proxy Zabbix stable (SQLite3) sur Ubuntu:
docker pull zabbix/zabbix-proxy-sqlite3:ubuntu-latest

# Dernière version de développement (nightly) du serveur Zabbix (MySQL) sur Ubuntu:
docker pull zabbix/zabbix-server-mysql:ubuntu-trunk

# Dernière version mineure 7.4 du serveur Zabbix (MySQL) sur Alpine Linux:
docker pull zabbix/zabbix-server-mysql:alpine-7.4-latest

# Version 7.4.1 du serveur Zabbix (MySQL) sur Alpine Linux:
docker pull zabbix/zabbix-server-mysql:alpine-7.4.1
```

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

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

Docker Compose est le moyen le plus rapide de déployer Zabbix.
Il lit un fichier de configuration (fichier Compose) et gère l'ensemble de la configuration: téléchargement des images Docker, création d'un réseau interne entre les conteneurs, configuration du stockage, initialisation de la base de données et démarrage de l'ensemble dans le bon ordre.

Le dépôt [official Zabbix Dockerfiles](https://github.com/zabbix/zabbix-docker) fournit des fichiers Docker Compose prêts à l'emploi et un système de configuration basé sur `.env` prenant en charge différents systèmes d'exploitation, backends de base de données et configurations des composants Zabbix.

1\. Clonez le dépôt, accédez-y, puis basculez vers la version 7.4:

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

2\. (Facultatif) Personnalisez le déploiement à l'aide de [variables d'environnement](#environment-variables).
Cette étape peut être ignorée pour une configuration par défaut.

3\. Déployez la configuration par défaut: serveur Zabbix, interface web (exécutée sur Nginx) et backend de base de données (MySQL ou PostgreSQL), chacun s'exécutant dans son propre conteneur sur Alpine Linux.

```bash
# Avec MySQL comme base de données:
docker compose -f ./compose.yaml up -d

# Avec PostgreSQL comme base de données:
docker compose -f ./compose_pgsql.yaml up -d
```

Une fois les conteneurs démarrés et en cours d'exécution (généralement en 1 à 3 minutes), le serveur Zabbix est lancé et l'interface web est disponible à l'adresse `http://localhost`.

::: noteclassic
Utilisez `docker compose ps` pour vérifier l'état des conteneurs.
Tous les conteneurs (sauf le conteneur `zabbix-docker-server-db-init-1`) doivent avoir l'état `Up`.
Si l'un d'eux affiche `Exited`, consultez ses journaux avec `docker logs <container-name>`.
:::

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

[comment]: # ({8b4e2b4d-de9f41d4})
#### Variables d'environnement

Le comportement de Docker Compose et la configuration des composants Zabbix peuvent tous deux être personnalisés à l'aide de variables d'environnement.

Les **variables au niveau de Compose** (définies dans le fichier [`.env`](https://github.com/zabbix/zabbix-docker/blob/7.4/.env)) contrôlent quelles images Docker, quels ports et quelles plages d'adresses IP réseau sont utilisés.
Vous pouvez utiliser ces variables en ligne avant la commande `docker compose`, ou modifier le fichier `.env`.

Par exemple, la commande suivante déploie une configuration Zabbix complète à plusieurs conteneurs en utilisant une image basée sur Ubuntu (au lieu d'Alpine Linux par défaut) et en exposant l'interface web via Nginx sur des ports HTTP (8282) et HTTPS (8443) personnalisés :

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

Les **variables au niveau des composants** (définies dans les fichiers [`env_vars/.env_<component>`](https://github.com/zabbix/zabbix-docker/blob/7.4/env_vars/)) contrôlent la configuration des composants Zabbix.
Modifiez le fichier `.env_<component>` correspondant avant d'exécuter la commande `docker compose`.

Par exemple, vous pouvez ajuster le nombre de collecteurs passifs du serveur Zabbix et les paramètres de cache, ainsi que configurer le fuseau horaire de l'interface web en modifiant les variables suivantes :

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

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

::: noteclassic
Les variables d'environnement au niveau des composants correspondent aux paramètres de configuration des composants Zabbix en utilisant un style de nommage différent (par exemple, `ZBX_STARTPOLLERS` correspond à [`StartPollers`](/manual/appendix/config/zabbix_server#startpollers)).
Certaines variables sont spécifiques à Docker, et certains paramètres de configuration ne peuvent pas être modifiés (par exemple, `PIDFile` et `LogType`).
Lors de l'utilisation de variables d'environnement, veuillez vous référer à la section *Variables d'environnement* dans la description de l'[image Docker](#available-docker-images) de chaque composant sur Docker Hub.
:::

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

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

Docker Compose stocke les données persistantes dans le répertoire `zbx_env/` créé à côté du fichier Compose.
Ce répertoire conserve les données des composants lors des redémarrages et des mises à jour des conteneurs.

Le contenu de `zbx_env/` est prédéfini pour l'image de chaque composant. Par exemple :

-   `zbx_env/etc/` - utilisé par le [conteneur de l'interface web Zabbix](https://hub.docker.com/r/zabbix/zabbix-web-nginx-mysql#allowed-volumes-for-the-zabbix-web-interface-container)
-   `zbx_env/usr/` et `zbx_env/var/` - utilisés par le [conteneur du serveur Zabbix](https://hub.docker.com/r/zabbix/zabbix-server-mysql#allowed-volumes-for-the-zabbix-server-container)

Pour plus d'informations sur chaque volume, consultez la section *Allowed volumes* dans la description de l'[image Docker](#available-docker-images) de chaque composant sur Docker Hub.

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

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

Le dépôt Zabbix Dockerfiles fournit également un [Makefile](https://github.com/zabbix/zabbix-docker/blob/7.4/Makefile) comme raccourci pour les tâches courantes de Docker Compose.
Au lieu d'utiliser la commande complète `docker compose`, vous pouvez utiliser des commandes `make` plus courtes (exécutez `make help` pour voir les options disponibles) :

```bash
# Déploiement par défaut (serveur Zabbix, interface web, MySQL, le tout sur Alpine Linux)
make up

# Déploiement personnalisé (serveur Zabbix, interface web avec ports Nginx personnalisés, PostgreSQL, le tout sur Ubuntu)
make up \
  OS=ubuntu \
  DB=pgsql \
  ZABBIX_WEB_NGINX_HTTP_PORT=8282 \
  ZABBIX_WEB_NGINX_HTTPS_PORT=8443
```

::: noteimportant
Lors de l'arrêt ou de la suppression des conteneurs, indiquez toujours le même type de base de données que celui qui a été déployé (par exemple, `make down DB=pgsql`).
:::

Par défaut, `make up` ne démarre qu'un ensemble minimal de services (serveur Zabbix, interface web et base de données).
Cela permet de conserver une configuration légère et d'éviter de démarrer des composants qui ne sont peut-être pas nécessaires.
Pour inclure des composants supplémentaires, vous pouvez utiliser les [profils Compose](https://docs.docker.com/compose/how-tos/profiles/) suivants :

```bash
# Déploiement par défaut + agent Zabbix, Java gateway, service web et traps SNMP :
make up COMPOSE_PROFILES=full

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

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

[comment]: # ({1c8231dd-0b4b68c7})
### Docker (déploiement manuel)

Utilisez le déploiement manuel lorsque vous souhaitez déployer Zabbix étape par étape, exécuter des composants individuels, les intégrer à un environnement existant ou utiliser un runtime de conteneurs alternatif tel que Podman.

Par exemple, pour déployer un proxy Zabbix, exécutez la commande suivante :

```bash
docker run --name zabbix-proxy-sqlite3 \
  -e ZBX_SERVER_HOST=192.0.2.1 \
  -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
```

Cette commande :

-   Télécharge l'[image Docker](#available-docker-images) `zabbix/zabbix-proxy-sqlite3:alpine-7.4-latest`.

-   Crée et démarre un conteneur `zabbix-proxy-sqlite3` basé sur l'image Docker (avec les options [`--init`](https://docs.docker.com/reference/cli/docker/container/run/#init) et [`-d`](https://docs.docker.com/reference/cli/docker/container/run/#detach)).

-   Configure le paramètre [`Server`](/manual/appendix/config/zabbix_proxy#server) du proxy Zabbix via la variable d'environnement `ZBX_SERVER_HOST`.
    Ce paramètre spécifie l'adresse IP du serveur Zabbix depuis lequel le proxy récupérera les données de configuration et vers lequel il enverra les données collectées.
    Notez que les autres variables requises pour le fonctionnement d'un proxy actif utilisent des valeurs par défaut et peuvent être omises.

::: noteclassic
Les variables d'environnement correspondent aux paramètres de configuration des composants Zabbix selon une convention de nommage différente (par exemple, `ZBX_SERVER_HOST` correspond à [`Server`](/manual/appendix/config/zabbix_proxy#server)).
Certaines variables sont spécifiques à Docker, et certains paramètres de configuration ne peuvent pas être modifiés (par exemple, `PIDFile` et `LogType`).
Lorsque vous utilisez des variables d'environnement, veuillez vous référer à la section *Variables d'environnement* dans la description de l'[image Docker](#available-docker-images) de chaque composant sur Docker Hub.
:::

-   Connecte un emplacement de stockage géré par Docker (par exemple, `/var/lib/docker/volumes/zabbix-proxy-data/`) au répertoire `/var/lib/zabbix` du conteneur afin que les données du proxy Zabbix soient conservées de manière permanente, même si le conteneur est supprimé.

::: noteclassic
Pour plus d'informations sur chaque volume, consultez la section *Volumes autorisés* dans la description de l'[image Docker](#available-docker-images) de chaque composant sur Docker Hub.
:::

Après avoir déployé le conteneur du proxy Zabbix, vous pouvez procéder à [l'ajout du proxy](/manual/distributed_monitoring/proxies#configuration) dans votre interface Zabbix et [configurer les hôtes](/manual/config/hosts/host#configuration) à surveiller par ce proxy.

Les exemples ci-dessous couvrent trois scénarios de déploiement supplémentaires :

-   Serveur Zabbix (MySQL) avec Java gateway
-   Serveur Zabbix (PostgreSQL) avec traps SNMP
-   Serveur Zabbix (MySQL) avec Java gateway sur RHEL 8

Pour plus d'exemples, veuillez consulter la description de l'[image Docker](#available-docker-images) de chaque composant sur Docker Hub.

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

[comment]: # ({fecc21f2-492bd3ba})
#### Déployer un serveur Zabbix (MySQL) avec Java gateway

Cet exemple montre comment déployer un serveur Zabbix avec un backend MySQL, une Java gateway pour la [surveillance JMX](/manual/config/items/itemtypes/jmx_monitoring), et une interface web basée sur Nginx.

1\. Créez un réseau Docker dédié, afin que tous les conteneurs des composants Zabbix puissent se joindre par leur nom de conteneur :

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

2\. Lancez un conteneur serveur MySQL vide (remplacez `zabbix_pwd` et `root_pwd` par des mots de passe robustes) :

```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
Si vous utilisez une image Docker pour MySQL 8.4 ou une version ultérieure, remplacez `--default-authentication-plugin=mysql_native_password` par `--authentication-policy=caching_sha2_password`.
<br><br>
MySQL doit être entièrement initialisé avant de lancer le conteneur du serveur Zabbix à l'étape 4, sinon le schéma Zabbix risque de ne pas se charger correctement.
Pour confirmer que MySQL est prêt, exécutez `docker logs mysql-server` et poursuivez uniquement lorsque vous voyez `/usr/sbin/mysqld: ready for connections`.
:::

3\. Lancez un conteneur 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\. Lancez un conteneur serveur Zabbix et reliez-le au conteneur serveur MySQL (remplacez `zabbix_pwd` et `root_pwd` par les mêmes mots de passe que ceux utilisés à l'étape 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
Après avoir lancé le conteneur du serveur Zabbix, attendez que le serveur Zabbix termine l'initialisation du schéma de base de données.
Pour confirmer qu'il est prêt, exécutez `docker logs zabbix-server-mysql` et poursuivez uniquement lorsque vous ne voyez plus `Creating 'zabbix' schema in MySQL`.
:::

5\. Lancez un conteneur d'interface web Zabbix et reliez-le aux conteneurs du serveur Zabbix et du serveur MySQL (remplacez `zabbix_pwd` et `root_pwd` par les mêmes mots de passe que ceux utilisés à l'étape 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
```

Une fois les conteneurs démarrés et en cours d'exécution (généralement en 1 à 3 minutes), le serveur Zabbix est lancé et l'interface web est disponible à l'adresse `http://localhost`.

#### Déployer un serveur Zabbix (PostgreSQL) avec des traps SNMP

Cet exemple montre comment déployer un serveur Zabbix avec un backend PostgreSQL, des [traps SNMP](/manual/config/items/itemtypes/snmptrap), et une interface web basée sur Nginx.

1\. Créez un réseau Docker dédié, afin que tous les conteneurs des composants Zabbix puissent se joindre par leur nom de conteneur :

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

2\. Lancez un conteneur serveur PostgreSQL vide (remplacez `zabbix_pwd` par un mot de passe robuste) :

```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\. Lancez un conteneur Zabbix traps SNMP :

```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\. Lancez un conteneur serveur Zabbix, reliez-le au conteneur serveur PostgreSQL et au conteneur traps SNMP (remplacez `zabbix_pwd` par le même mot de passe que celui utilisé à l'étape 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
Après avoir lancé le conteneur du serveur Zabbix, attendez que le serveur Zabbix termine l'initialisation du schéma de base de données.
Pour confirmer qu'il est prêt, exécutez `docker logs zabbix-server-pgsql` et poursuivez uniquement lorsque vous ne voyez plus `Creating 'zabbix' schema in PostgreSQL`.
:::

5\. Lancez un conteneur d'interface web Zabbix et reliez-le aux conteneurs du serveur Zabbix et du serveur PostgreSQL (remplacez `zabbix_pwd` par le même mot de passe que celui utilisé à l'étape 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
```

Une fois les conteneurs démarrés et en cours d'exécution (généralement en 1 à 3 minutes), le serveur Zabbix est lancé et l'interface web est disponible à l'adresse `http://localhost`.

#### Déployer un serveur Zabbix (MySQL) avec Java gateway sur RHEL 8–10

Cet exemple montre comment déployer un serveur Zabbix avec un backend MySQL, une Java gateway pour la [surveillance JMX](/manual/config/items/itemtypes/jmx_monitoring), et une interface web basée sur Nginx, le tout exécuté sur Red Hat Enterprise Linux 8, 9 ou 10.

Sur Red Hat Enterprise Linux, le runtime de conteneurs recommandé est Podman plutôt que Docker.
Podman fonctionne de manière similaire à Docker, mais ne nécessite pas de service d'arrière-plan exécuté en tant que root, ce qui en fait un meilleur choix pour les environnements Red Hat.

1\. Créez un nouveau pod nommé `zabbix` avec les ports exposés pour l'interface web Zabbix et le trapper du serveur Zabbix :

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

2\. (Facultatif) Lancez un conteneur agent Zabbix dans le 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\. Créez un répertoire `./mysql/` sur l'hôte RHEL :

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

4\. Lancez un conteneur serveur MySQL vide (remplacez `zabbix_pwd` et `root_pwd` par des mots de passe robustes) :

```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
Si vous utilisez une image Docker pour MySQL 8.4 ou une version ultérieure, remplacez `--default-authentication-plugin=mysql_native_password` par `--authentication-policy=caching_sha2_password`.
<br><br>
MySQL doit être entièrement initialisé avant de lancer le conteneur du serveur Zabbix à l'étape 6, sinon le schéma Zabbix risque de ne pas se charger correctement.
Pour confirmer que MySQL est prêt, exécutez `podman logs mysql-server` et poursuivez uniquement lorsque vous voyez `/usr/sbin/mysqld: ready for connections`.
:::

5\. Lancez un conteneur 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\. Lancez un conteneur serveur Zabbix (remplacez `zabbix_pwd` et `root_pwd` par les mêmes mots de passe que ceux utilisés à l'étape 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\. Lancez un conteneur d'interface web Zabbix (remplacez `zabbix_pwd` et `root_pwd` par les mêmes mots de passe que ceux utilisés à l'étape 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
Le pod `zabbix` expose le port `80/TCP` (HTTP) vers la machine hôte à partir du port `8080/TCP` du conteneur `zabbix-web-mysql`.
:::

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