はじめに
会社PCからアクセスするために、自宅のWindows11環境に検証用ZabbixサーバをDockerで構築した際のメモです。
Zabbix公式のDocker Composeを参考にしつつ、PostgreSQLのバージョン指定やCloudflare Tunnelを使った外部アクセス設定を行いました。
環境
- Windows 11
- Docker Desktop
- Zabbix 7.4
- Cloudflare Tunnel (cloudflared)
構築手順
1. Dockerネットワークの作成
まず、Zabbixコンテナ間の通信用にDockerネットワークを作成します。
docker network create zabbix-net
2. PostgreSQLサーバーの起動
PostgreSQLは最新版(18)だとZabbixサーバー側が対応していないため、17を指定します。
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:17
3. Zabbix SNMPトラップの起動
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. Zabbixサーバーの起動
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
5. Zabbix Webインターフェースの起動
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
6. Cloudflare Tunnelで外部アクセス設定
会社PCからアクセスするために、Cloudflare Tunnelを使用してクイックトンネルを作成します。
docker run --rm -it cloudflare/cloudflared:latest tunnel --url http://host.docker.internal:8080
このコマンドを実行すると、Cloudflareから提供されるURLが表示されます。
このURLにアクセスすることで、外部からZabbix Webインターフェースに接続できます。
アクセス方法
- Cloudflare Tunnelのコマンド実行後、表示されるURLにアクセス
- 初期ログイン情報:
- ユーザー名:
Admin
- パスワード:
zabbix
- ユーザー名:
注意点
- PostgreSQL 18はZabbixサーバーが対応していないため、17を指定
- Windows環境では
host.docker.internal
を使用してDockerコンテナからホストのポートにアクセス - Cloudflare Tunnelは一時的なアクセス用なので、本格運用時は適切なトンネル設定を推奨
まとめ
Dockerを使用することで、Zabbixサーバーを簡単に構築できました。
Cloudflare Tunnelを活用することで、ファイアウォール設定なしに外部からアクセス可能になり、検証環境として活用できています。