PageSourceSearch

https://mpolinowski.github.io/assets/js/b73fcd98.3057aae5.js

js mpolinowski.github.io collected 2026-10-03 09:40:44 UTC 30,655 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkmikes_dev_notebook=globalThis.webpackChunkmikes_dev_notebook||[]).push([[17799],{236777(r,e,n){n.r(e),n.d(e,{assets:()=>b,contentTitle:()=>o,default:()=>p,frontMatter:()=>t,metadata:()=>a,toc:()=>d});const a=JSON.parse('{"id":"DevOps/Zabbix/2020-07-20--zabbix-behind-nginx/index","title":"Zabbix Multi-Tenant NGINX Docker Ingress","description":"Mong Kok, Hong Kong","source":"@site/docs/DevOps/Zabbix/2020-07-20--zabbix-behind-nginx/index.md","sourceDirName":"DevOps/Zabbix/2020-07-20--zabbix-behind-nginx","slug":"/DevOps/Zabbix/2020-07-20--zabbix-behind-nginx/2020-07-20","permalink":"/docs/DevOps/Zabbix/2020-07-20--zabbix-behind-nginx/2020-07-20","draft":false,"unlisted":false,"editUrl":"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/DevOps/Zabbix/2020-07-20--zabbix-behind-nginx/index.md","tags":[{"inline":true,"label":"LINUX","permalink":"/docs/tags/linux"},{"inline":true,"label":"Zabbix","permalink":"/docs/tags/zabbix"}],"version":"current","sidebarPosition":9030,"frontMatter":{"sidebar_position":9030,"slug":"2020-07-20","title":"Zabbix Multi-Tenant NGINX Docker Ingress","authors":"mpolinowski","tags":["LINUX","Zabbix"]},"sidebar":"tutorialSidebar","previous":{"title":"Slack Notifications in DevOps","permalink":"/docs/DevOps/Zabbix/2020-09-05--slack-notifications-in-devops/2020-09-05"},"next":{"title":"Zabbix Company Logo","permalink":"/docs/DevOps/Zabbix/2020-07-19--zabbix-company-logo/2020-07-19"}}');var i=n(474848),s=n(28453);const t={sidebar_position:9030,slug:"2020-07-20",title:"Zabbix Multi-Tenant NGINX Docker Ingress",authors:"mpolinowski",tags:["LINUX","Zabbix"]},o=void 0,b={},d=[{value:"NGINX Setup",id:"nginx-setup",level:2},{value:"The Virtual App Network",id:"the-virtual-app-network",level:2},{value:"Adding your Zabbix Frontend",id:"adding-your-zabbix-frontend",level:3},{value:"Complete Zabbix Server Compose File",id:"complete-zabbix-server-compose-file",level:2}];function l(r){const e={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,s.R)(),...r.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(e.p,{children:(0,i.jsx)(e.img,{alt:"Mong Kok, Hong Kong",src:n(98930).A+"",width:"1500",height:"453"})}),"\n",(0,i.jsx)(e.p,{children:"I set up a Zabbix server using the official Compose file. The docker container managed by this file are already set up to use SSL certificates to enable you to access the web frontend using HTTPS. But my server already runs other services behind an NGINX proxy and I would like to just add an URL prefix and host the Zabbix frontend on the same URL that is already managed by this proxy."}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"#nginx-setup",children:"NGINX Setup"})}),"\n",(0,i.jsxs)(e.li,{children:[(0,i.jsx)(e.a,{href:"#the-virtual-app-network",children:"The Virtual App Network"}),"\n",(0,i.jsxs)(e.ul,{children:["\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"#adding-your-zabbix-frontend",children:"Adding your Zabbix Frontend"})}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(e.li,{children:(0,i.jsx)(e.a,{href:"#complete-zabbix-server-compose-file",children:"Complete Zabbix Server Compose File"})}),"\n"]}),"\n",(0,i.jsx)(e.h2,{id:"nginx-setup",children:"NGINX Setup"}),"\n",(0,i.jsxs)(e.p,{children:["I do have the following NGINX server block that host 3 Node.js web application on different prefix URLs on the same domain - currently this is ",(0,i.jsx)(e.code,{children:"localhost"})," in my testing environment and will be switched to an external URL with an CA certificate later. All I did below is that I added a fourth location block to the configuration file for my Zabbix frontend running on Port ",(0,i.jsx)(e.code,{children:"8080"}),":"]}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-cfg",children:'server {\r\n    listen       80;\r\n    listen  [::]:80;\r\n    server_name  localhost;\r\n\r\n    charset koi8-r;\r\n\r\n    # Gzip Compression\r\n    gzip                                    on;\r\n    gzip_disable                            "MSIE [1-6]\\.(?!.*SV1)";\r\n    gzip_proxied                            no-cache no-store private expired;\r\n    gzip_buffers                            16 8k;\r\n    gzip_comp_level                         6;\r\n    gzip_types                              text/plain application/javascript application/x-javascript text/javascript text/xml text/css;\r\n    gzip_vary                               on;\r\n\r\n    location / {\r\n        rewrite   ^/(.*)$  /en/$1  permanent;\r\n    }\r\n\r\n    root                                        /opt/wiki/wiki-en/public;\r\n\r\n    location /en/ {\r\n        add_header                              Cache-Control  "public, must-revalidate, proxy-revalidate, max-age=0";\r\n        proxy_set_header                        X-Forwarded-For $proxy_add_x_forwarded_for;\r\n        proxy_set_header                        X-NginX-Proxy true;\r\n        proxy_set_header                        X-Real-IP $remote_addr;\r\n        proxy_set_header                        X-Forwarded-Proto http;\r\n        proxy_hide_header                       X-Frame-Options;\r\n        proxy_set_header                        Accept-Encoding "";
1\r\n        proxy_http_version                      1.1;\r\n        proxy_set_header                        Upgrade $http_upgrade;\r\n        proxy_set_header                        Connection "upgrade";\r\n        proxy_set_header                        Host $host;\r\n        proxy_cache_bypass                      $http_upgrade;\r\n        proxy_max_temp_file_size                0;\r\n        proxy_redirect                          off;\r\n        proxy_read_timeout                      240s;\r\n        proxy_pass                              http://wiki_en:8888/;\r\n    }\r\n\r\n    location /fr/ {\r\n        add_header                              Cache-Control  "public, must-revalidate, proxy-revalidate, max-age=0";\r\n        proxy_set_header                        X-Forwarded-For $proxy_add_x_forwarded_for;\r\n        proxy_set_header                        X-NginX-Proxy true;\r\n        proxy_set_header                        X-Real-IP $remote_addr;\r\n        proxy_set_header                        X-Forwarded-Proto http;\r\n        proxy_hide_header                       X-Frame-Options;\r\n        proxy_set_header                        Accept-Encoding "";\r\n        proxy_http_version                      1.1;\r\n        proxy_set_header                        Upgrade $http_upgrade;\r\n        proxy_set_header                        Connection "upgrade";\r\n        proxy_set_header                        Host $host;\r\n        proxy_cache_bypass                      $http_upgrade;\r\n        proxy_max_temp_file_size                0;\r\n        proxy_redirect                          off;\r\n        proxy_read_timeout                      240s;\r\n        proxy_pass                              http://wiki_fr:8888/;\r\n        root                                    /opt/wiki/wiki-fr/public;\r\n    }\r\n\r\n    location /de/ {\r\n        add_header                              Cache-Control  "public, must-revalidate, proxy-revalidate, max-age=0";\r\n        proxy_set_header                        X-Forwarded-For $proxy_add_x_forwarded_for;\r\n        proxy_set_header                        X-NginX-Proxy true;\r\n        proxy_set_header                        X-Real-IP $remote_addr;\r\n        proxy_set_header                        X-Forwarded-Proto http;\r\n        proxy_hide_header                       X-Frame-Options;\r\n        proxy_set_header                        Accept-Encoding "";\r\n        proxy_http_version                      1.1;\r\n        proxy_set_header                        Upgrade $http_upgrade;\r\n        proxy_set_header                        Connection "upgrade";\r\n        proxy_set_header                        Host $host;\r\n        proxy_cache_bypass                      $http_upgrade;\r\n        proxy_max_temp_file_size                0;\r\n        proxy_redirect                          off;\r\n        proxy_read_timeout                      240s;\r\n        proxy_pass                              http://wiki_de:8888/;\r\n        root                                    /opt/wiki/wiki-de/public;\r\n    }\r\n\r\n    location /zabbix/ {\r\n        add_header                              Cache-Control  "public, must-revalidate, proxy-revalidate, max-age=0";\r\n        proxy_set_header                        X-Forwarded-For $proxy_add_x_forwarded_for;\r\n        proxy_set_header                        X-NginX-Proxy true;\r\n        proxy_set_header                        X-Real-IP $remote_addr;\r\n        proxy_set_header                        X-Forwarded-Proto http;\r\n        proxy_hide_header                       X-Frame-Options;\r\n        proxy_set_header                        Accept-Encoding "";\r\n        proxy_http_version                      1.1;\r\n        proxy_set_header                        Upgrade $http_upgrade;\r\n        proxy_set_header                        Connection "upgrade";\r\n        proxy_set_header                        Host $host;\r\n        proxy_cache_bypass                      $http_upgrade;\r\n        proxy_max_temp_file_size                0;\r\n        proxy_redirect                          off;\r\n        proxy_read_timeout                      240s;\r\n        proxy_pass                              http://docker-zabbix_zabbix-web-apache-pgsql_1:8080/;\r\n    }\r\n\r\n    error_page  404              /de/404.html;\r\n\r\n    # redirect server error pages to the static page /50x.html\r\n    #\r\n    error_page   500 502 503 504  /50x.html;\r\n    location = /50x.html {\r\n    root   /usr/share/nginx/html;\r\n    }\r\n}\n'})}),"\n",(0,i.jsxs)(e.p,{children:["The issue here is that all my apps are running inside virtual network that cannot be accessed from my host system. And at the moment the zabbix frontend is not connected to this network - this means my ",(0,i.jsx)(e.code,{children:"proxy_pass"})," to ",(0,i.jsx)(e.code,{children:"docker-zabbix_zabbix-web-apache-pgsql_1:8080"})," is going to fail."]}),"\n",(0,i.jsx)(e.h2,{id:"the-virtual-app-network",children:"The Virtual App Network"}),"\n",(0,i.jsx)(e.p,{children:"The virtual network is created with another compose file that is setting up my web applications:"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-yml",children:"version: '3.8'\r\nservices:\r\n  wiki_en:\r\n    image: my.gitlab.com:12345/wiki/wiki_container:latest\r\n    container_name: wiki_en\r\n    networks:\r\n      - gateway\r\n    restart: unless-stopped\r\n    volumes:\r\n      - /opt/wiki/wiki-en/public:/wiki/public\r\n\r\n  wiki_fr:\r\n    image: my.gitlab.com:12345/wiki/wiki_container:latest\r\n    container_name: wiki_fr\r\n    networks:\r\n      - gateway\r\n    restart: unless-stopped\r\n    volumes:\r\n      - /opt/wiki/wiki-fr/public:/wiki/public\r\n\r\n  wiki_de:\r\n    image: my.gitlab.com:12345/wiki/wiki_container:latest\r\n    container_name: wiki_de\r\n    networks:\r\n      - gateway\r\n    restart: unless-stopped\r\n    volumes:\r\n      - /opt/wiki/wiki-de/public:/wiki/public\r\n\r\n  ingress:\r\n    image: nginx:stable-alpine\r\n    container_name: ingress\r\n    networks:\r\n      - gateway\r\n    ports:\r\n      - '8
10:80'\r\n    restart: unless-stopped\r\n    volumes:\r\n      - /opt/wiki/docker_ingress:/etc/nginx/conf.d\r\n      - /opt/wiki/wiki-en:/opt/wiki/wiki-en\r\n      - /opt/wiki/wiki-fr:/opt/wiki/wiki-fr\r\n      - /opt/wiki/wiki-de:/opt/wiki/wiki-de\r\n\r\nnetworks:\r\n  gateway: {}\n"})}),"\n",(0,i.jsx)(e.h3,{id:"adding-your-zabbix-frontend",children:"Adding your Zabbix Frontend"}),"\n",(0,i.jsxs)(e.p,{children:["To add my Zabbix frontend to this virtual network I need to modify the ",(0,i.jsx)(e.a,{href:"#complete-zabbix-server-compose-file",children:"Zabbix Server Compose file"}),":"]}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-yml",children:"zabbix-web-apache-pgsql:\r\n  image: zabbix/zabbix-web-apache-pgsql:alpine-5.0-latest\r\n  networks:\r\n    zbx_net_backend:\r\n      ipv4_address: 172.16.239.104\r\n      aliases:\r\n        - zabbix-web-apache-pgsql\r\n        - zabbix-web-apache-alpine-pgsql\r\n        - zabbix-web-apache-pgsql-alpine\r\n    zbx_net_frontend:\r\n      ipv4_address: 172.16.238.104\r\n    wiki_gateway:\r\n      ipv4_address: 172.20.0.6\n"})}),"\n",(0,i.jsxs)(e.p,{children:["I added the ",(0,i.jsx)(e.code,{children:"wiki_gateway"})," as well as an IPv4 address - to check what IP addresses are available inside an Docker network you can inspect it. I simply added the Zabbix frontend container to my Wiki network manually and ran the inspect command to see what address was assigned to the container."]}),"\n",(0,i.jsxs)(e.p,{children:["First run ",(0,i.jsx)(e.code,{children:"docker ps"})," to find out your frontends Docker ",(0,i.jsx)(e.strong,{children:"Container ID"})," and ",(0,i.jsx)(e.strong,{children:"Container Name"}),":"]}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-bash",children:"docker ps\r\nCONTAINER ID        IMAGE                                             NAMES\r\n44dfd075af57        zabbix/zabbix-web-apache-pgsql:alpine-5.0-latest  docker-zabbix_zabbix-web-apache-pgsql_1\n"})}),"\n",(0,i.jsxs)(e.p,{children:["Then add the ",(0,i.jsx)(e.strong,{children:"Container ID"})," to the virtual network and inspect the network to see if it worked:"]}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-bash",children:"docker network connect wiki_gateway 44dfd075af57\r\n\r\ndocker inspect wiki_gateway\n"})}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-json",children:'[\r\n  {\r\n    "Name": "wiki_gateway",\r\n    "Id": "98f70ca5f7baf4f676029c31c9c68f3b3743521975becef326f97312a41c669b",\r\n    "Created": "2020-10-07T09:53:17.531329441Z",\r\n    "Scope": "local",\r\n    "Driver": "bridge",\r\n    "EnableIPv6": false,\r\n    "IPAM": {\r\n      "Driver": "default",\r\n      "Options": null,\r\n      "Config": [\r\n        {\r\n          "Subnet": "172.20.0.0/16",\r\n          "Gateway": "172.20.0.1"\r\n        }\r\n      ]\r\n    },\r\n    "Internal": false,\r\n    "Attachable": true,\r\n    "Ingress": false,\r\n    "ConfigFrom": {\r\n      "Network": ""\r\n    },\r\n    "ConfigOnly": false,\r\n    "Containers": {\r\n      "15c50c7d5997e3a7562e3b121cb795e9d22fdb614a869a532ca93a1d92637390": {\r\n        "Name": "wiki_de",\r\n        "EndpointID": "4eb0596b1cc0aaa046f9077512eb283a1063916e6072d707a97196ad40021e2e",\r\n        "MacAddress": "02:42:ac:14:00:03",\r\n        "IPv4Address": "172.20.0.3/16",\r\n        "IPv6Address": ""\r\n      },\r\n      "1af00ce71d4da9ccfe9800ebf1fcba5dbfd842d90b0fbe92e27f7bd1dac7c691": {\r\n        "Name": "wiki_fr",\r\n        "EndpointID": "c888701c3717aa73fcc3ce6b682626b8f31506935d6dd5cb3f9acae4ce62e5a7",\r\n        "MacAddress": "02:42:ac:14:00:02",\r\n        "IPv4Address": "172.20.0.2/16",\r\n        "IPv6Address": ""\r\n      },\r\n      "44dfd075af5789dab49f9e083d6fbb60ab4f5f74206a9190634675db48354636": {\r\n        "Name": "docker-zabbix_zabbix-web-apache-pgsql_1",\r\n        "EndpointID": "5c4a8b866d4f584d24d78a41d2aee06035899f0d14825dd698d99ee7689ae7ba",\r\n        "MacAddress": "02:42:ac:14:00:06",\r\n        "IPv4Address": "172.20.0.6/16",\r\n        "IPv6Address": ""\r\n      },\r\n      "9419eb378185058c9159ac9ec43d9e69725b55b7d454b901b01e815ffd3b7954": {\r\n        "Name": "ingress",\r\n        "EndpointID": "ca7898a11610bc10b6cd3be8e3de0274b82905998e90af91d333e063f7b75185",\r\n        "MacAddress": "02:42:ac:14:00:05",\r\n        "IPv4Address": "172.20.0.5/16",\r\n        "IPv6Address": ""\r\n      },\r\n      "d4ef7e3026a15b845e6d7bb2af0a9376d1482b67b3af1fa84ab546f45dc64470": {\r\n        "Name": "wiki_en",\r\n        "EndpointID": "5bacfc78a7cc4db5e57b33de499809d8b66f0d1198aed11a7c1a26f73663c68d",\r\n        "MacAddress": "02:42:ac:14:00:04",\r\n        "IPv4Address": "172.20.0.4/16",\r\n        "IPv6Address": ""\r\n      }\r\n    },\r\n    "Options": {},\r\n    "Labels": {\r\n      "com.docker.compose.network": "gateway",\r\n      "com.docker.compose.project": "wiki",\r\n      "com.docker.compose.version": "1.26.2"\r\n    }\r\n  }\r\n]\n'})}),"\n",(0,i.jsx)(e.p,{children:"You can see that the frontend container is now connected to the virtual network and assigned the following IP address (that I already used in the compose file above):"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-json",children:'"IPv4Address": "172.20.0.6/16",\n'})}),"\n",(0,i.jsxs)(e.p,{children:["Now ",(0,i.jsx)(e.code,{children:"docker-compose down"})," and ",(0,i.jsx)(e.code,{children:"docker-compose up -d"})," your Zabbix Server environemt and your frontend will automatically be connected to your virtual network and you should be able to access it with the ",(0,i.jsx)(e.code,{children:"/zabbix/"})," URL prefix on Port 80!"]}),"\n",(0,i.jsx)(e.p,{children:"I am now able to close the Port that I was previously using to access the Zabbix frontend and use my NGINX ingress on port 80 instead. I am happy with that :)"}),"\n",(0,i.jsx)(e.h2,{id:"complete-zabbix-server-compose-file",children:"Complete Zabbix Server Compose File"}),"\n",(0,i.jsx)(e.pre,{children:(0,i.jsx)(e.code,{className:"language-yml",children:'version: \'3.5\'\r\nservices:\r\n zabbix-server:\r\n  image: zabbix/zabbix-server-pgsql:alpine-5.0-latest\r\n  ports:\r\n   - "10051:10051"\r\n  volumes:\r\n   - /etc/localtime:/etc/localtime:ro\r\n   - /etc/timezone:/etc/timezone:ro\r\n   - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro\r\n   - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro\r\n   - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw\r\n   - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro\r\n   - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro\r\n   - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro\r\n   - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro\r\n  links:\r\n   - postgres-server:postgres-server\r\n   - zabbix-java-gateway:zabbix-java-gateway\r\n  ulimits:\r\n   nproc: 65535\r\n   nofile:\r\n    soft: 20000\r\n    hard: 40000\r\n  deploy:\r\n   resources:\r\n    limits:\r\n      cpus: \'0.70\'\r\n      memory: 1G\r\n    reservations:\r\n      cpus: \'0.5\'\r\n      memory: 512M\r\n  env_file:\r\n   - .env_db_pgsql\r\n   - .env_srv\r\n  secrets:\r\n   - POSTGRES_USER\r\n   - POSTGRES_PASSWORD\r\n  depends_on:\r\n   - postgres-server\r\n   - zabbix-java-gateway\r\n  networks:\r\n   zbx_net_backend:\r\n     ipv4_address: 172.16.239.101\r\n     aliases:\r\n      - zabbix-server\r\n      - zabbix-server-pgsql\r\n      - zabbix-server-alpine-pgsql\r\n      - zabbix-server-pgsql-alpine\r\n   zbx_net_frontend:\r\n     ipv4_address: 172.16.238.101\r\n  stop_grace_peri
1od: 30s\r\n  sysctls:\r\n   - net.ipv4.ip_local_port_range=1024 65000\r\n   - net.ipv4.conf.all.accept_redirects=0\r\n   - net.ipv4.conf.all.secure_redirects=0\r\n   - net.ipv4.conf.all.send_redirects=0\r\n  labels:\r\n   com.zabbix.description: "Zabbix server with PostgreSQL database support"\r\n   com.zabbix.company: "Zabbix LLC"\r\n   com.zabbix.component: "zabbix-server"\r\n   com.zabbix.dbtype: "pgsql"\r\n   com.zabbix.os: "alpine"\r\n\r\n zabbix-proxy-sqlite3:\r\n  image: zabbix/zabbix-proxy-sqlite3:alpine-5.0-latest\r\n  ports:\r\n   - "10061:10051"\r\n  volumes:\r\n   - /etc/localtime:/etc/localtime:ro\r\n   - /etc/timezone:/etc/timezone:ro\r\n   - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro\r\n   - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro\r\n   - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro\r\n   - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro\r\n   - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro\r\n  links:\r\n   - zabbix-server:zabbix-server\r\n   - zabbix-java-gateway:zabbix-java-gateway\r\n  ulimits:\r\n   nproc: 65535\r\n   nofile:\r\n    soft: 20000\r\n    hard: 40000\r\n  deploy:\r\n   resources:\r\n    limits:\r\n      cpus: \'0.70\'\r\n      memory: 512M\r\n    reservations:\r\n      cpus: \'0.3\'\r\n      memory: 256M\r\n  env_file:\r\n   - .env_prx\r\n   - .env_prx_sqlite3\r\n  depends_on:\r\n   - zabbix-java-gateway\r\n  networks:\r\n   zbx_net_backend:\r\n    ipv4_address: 172.16.239.102\r\n    aliases:\r\n     - zabbix-proxy-sqlite3\r\n     - zabbix-proxy-alpine-sqlite3\r\n     - zabbix-proxy-sqlite3-alpine\r\n   zbx_net_frontend:\r\n    ipv4_address: 172.16.238.102\r\n  stop_grace_period: 30s\r\n  labels:\r\n   com.zabbix.description: "Zabbix proxy with SQLite3 database support"\r\n   com.zabbix.company: "Zabbix LLC"\r\n   com.zabbix.component: "zabbix-proxy"\r\n   com.zabbix.dbtype: "sqlite3"\r\n   com.zabbix.os: "alpine"\r\n\r\n zabbix-proxy-mysql:\r\n  image: zabbix/zabbix-proxy-mysql:alpine-5.0-latest\r\n  ports:\r\n   - "10071:10051"\r\n  volumes:\r\n   - /etc/localtime:/etc/localtime:ro\r\n   - /etc/timezone:/etc/timezone:ro\r\n   - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro\r\n   - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro\r\n   - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro\r\n   - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro\r\n   - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro\r\n  links:\r\n   - zabbix-server:zabbix-server\r\n   - zabbix-java-gateway:zabbix-java-gateway\r\n  ulimits:\r\n   nproc: 65535\r\n   nofile:\r\n    soft: 20000\r\n    hard: 40000\r\n  deploy:\r\n   resources:\r\n    limits:\r\n      cpus: \'0.70\'\r\n      memory: 512M\r\n    reservations:\r\n      cpus: \'0.3\'\r\n      memory: 256M\r\n  env_file:\r\n   - .env_db_mysql_proxy\r\n   - .env_prx\r\n   - .env_prx_mysql\r\n  secrets:\r\n   - MYSQL_USER\r\n   - MYSQL_PASSWORD\r\n   - MYSQL_ROOT_PASSWORD\r\n  depends_on:\r\n   - mysql-server\r\n   - zabbix-java-gateway\r\n  networks:\r\n   zbx_net_backend:\r\n    ipv4_address: 172.16.239.103\r\n    aliases:\r\n     - zabbix-proxy-mysql\r\n     - zabbix-proxy-alpine-mysql\r\n     - zabbix-proxy-mysql-alpine\r\n   zbx_net_frontend:\r\n    ipv4_address: 172.16.238.103\r\n  stop_grace_period: 30s\r\n  labels:\r\n   com.zabbix.description: "Zabbix proxy with MySQL database support"\r\n   com.zabbix.company: "Zabbix LLC"\r\n   com.zabbix.component: "zabbix-proxy"\r\n   com.zabbix.dbtype: "mysql"\r\n   com.zabbix.os: "alpine"\r\n\r\n zabbix-web-apache-pgsql:\r\n  image: zabbix/zabbix-web-apache-pgsql:alpine-5.0-latest\r\n  ports:\r\n   - "7777:8080"\r\n   - "7778:8443"\r\n  links:\r\n   - postgres-server:postgres-server\r\n   - zabbix-server:zabbix-server\r\n  volumes:\r\n   - /etc/localtime:/etc/localtime:ro\r\n   - /etc/timezone:/etc/timezone:ro\r\n   - ./zbx_env/etc/ssl/apache2:/etc/ssl/apache2:ro\r\n   - ./zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro\r\n  deploy:\r\n   resources:\r\n    limits:\r\n      cpus: \'0.70\'\r\n      memory: 512M\r\n    reservations:\r\n      cpus: \'0.5\'\r\n      memory: 256M\r\n  env_file:\r\n   - .env_db_pgsql\r\n   - .env_web\r\n  secrets:\r\n   - POSTGRES_USER\r\n   - POSTGRES_PASSWORD\r\n  depends_on:\r\n   - postgres-server\r\n   - zabbix-server\r\n  healthcheck:\r\n   test: ["CMD", "curl", "-f", "http://localhost:8080/"]\r\n   interval: 10s\r\n   timeout: 5s\r\n   retries: 3\r\n   start_period: 30s\r\n  networks:\r\n   zbx_net_backend:\r\n    ipv4_address: 172.16.239.104\r\n    al
1iases:\r\n     - zabbix-web-apache-pgsql\r\n     - zabbix-web-apache-alpine-pgsql\r\n     - zabbix-web-apache-pgsql-alpine\r\n   zbx_net_frontend:\r\n    ipv4_address: 172.16.238.104\r\n   wiki_gateway:\r\n    ipv4_address: 172.20.0.6\r\n  stop_grace_period: 10s\r\n  sysctls:\r\n   - net.core.somaxconn=65535\r\n  labels:\r\n   com.zabbix.description: "Zabbix frontend on Apache web-server with PostgreSQL database support"\r\n   com.zabbix.company: "Zabbix LLC"\r\n   com.zabbix.component: "zabbix-frontend"\r\n   com.zabbix.webserver: "apache2"\r\n   com.zabbix.dbtype: "pgsql"\r\n   com.zabbix.os: "alpine"\r\n\r\n zabbix-web-nginx-pgsql:\r\n  image: zabbix/zabbix-web-nginx-pgsql:alpine-5.0-latest\r\n  ports:\r\n   - "8081:8080"\r\n   - "8443:8443"\r\n  links:\r\n   - postgres-server:postgres-server\r\n   - zabbix-server:zabbix-server\r\n  volumes:\r\n   - /etc/localtime:/etc/localtime:ro\r\n   - /etc/timezone:/etc/timezone:ro\r\n   - ./zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro\r\n   - ./zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro\r\n  deploy:\r\n   resources:\r\n    limits:\r\n      cpus: \'0.70\'\r\n      memory: 512M\r\n    reservations:\r\n      cpus: \'0.5\'\r\n      memory: 256M\r\n  env_file:\r\n   - .env_db_pgsql\r\n   - .env_web\r\n  secrets:\r\n   - POSTGRES_USER\r\n   - POSTGRES_PASSWORD\r\n  depends_on:\r\n   - postgres-server\r\n   - zabbix-server\r\n  healthcheck:\r\n   test: ["CMD", "curl", "-f", "http://localhost:8080/"]\r\n   interval: 10s\r\n   timeout: 5s\r\n   retries: 3\r\n   start_period: 30s\r\n  networks:\r\n   zbx_net_backend:\r\n    ipv4_address: 172.16.239.105\r\n    aliases:\r\n     - zabbix-web-nginx-pgsql\r\n     - zabbix-web-nginx-alpine-pgsql\r\n     - zabbix-web-nginx-pgsql-alpine\r\n   zbx_net_frontend:\r\n    ipv4_address: 172.16.238.105\r\n  stop_grace_period: 10s\r\n  sysctls:\r\n   - net.core.somaxconn=65535\r\n  labels:\r\n   com.zabbix.description: "Zabbix frontend on Nginx web-server with PostgreSQL database support"\r\n   com.zabbix.company: "Zabbix LLC"\r\n   com.zabbix.component: "zabbix-frontend"\r\n   com.zabbix.webserver: "nginx"\r\n   com.zabbix.dbtype: "pgsql"\r\n   com.zabbix.os: "alpine"\r\n\r\n zabbix-agent:\r\n  privileged: true\r\n  image: zabbix/zabbix-agent:alpine-5.0-latest\r\n  ports:\r\n   - "10050:10050"\r\n  volumes:\r\n   - /etc/localtime:/etc/localtime:ro\r\n   - /etc/timezone:/etc/timezone:ro\r\n   - ./zbx_env/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro\r\n   - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro\r\n   - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro\r\n   - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro\r\n  links:\r\n   - zabbix-server:zabbix-server\r\n  deploy:\r\n   resources:\r\n    limits:\r\n      cpus: \'0.2\'\r\n      memory: 128M\r\n    reservations:\r\n      cpus: \'0.1\'\r\n      memory: 64M\r\n   mode: global\r\n  env_file:\r\n   - .env_agent\r\n  privileged: true\r\n  pid: "host"\r\n  networks:\r\n   zbx_net_backend:\r\n    ipv4_address: 172.16.239.106\r\n    aliases:\r\n     - zabbix-agent\r\n     - zabbix-agent-passive\r\n     - zabbix-agent-alpine\r\n  stop_grace_period: 5s\r\n  labels:\r\n   com.zabbix.description: "Zabbix agent"\r\n   com.zabbix.company: "Zabbix LLC"\r\n   com.zabbix.component: "zabbix-agentd"\r\n   com.zabbix.os: "alpine"\r\n\r\n zabbix-java-gateway:\r\n  image: zabbix/zabbix-java-gateway:alpine-5.0-latest\r\n  ports:\r\n   - "10052:10052"\r\n  deploy:\r\n   resources:\r\n    limits:\r\n      cpus: \'0.5\'\r\n      memory: 512M\r\n    reservations:\r\n      cpus: \'0.25\'\r\n      memory: 256M\r\n  env_file:\r\n   - .env_java\r\n  networks:\r\n   zbx_net_backend:\r\n    ipv4_address: 172.16.239.107\r\n    aliases:\r\n     - zabbix-java-gateway\r\n     - zabbix-java-gateway-alpine\r\n  stop_grace_period: 5s\r\n  labels:\r\n   com.zabbix.description: "Zabbix Java Gateway"\r\n   com.zabbix.company: "Zabbix LLC"\r\n   com.zabbix.component: "java-gateway"\r\n   com.zabbix.os: "alpine"\r\n\r\n mysql-server:\r\n  image: mysql:8.0\r\n  command:\r\n   - mysqld\r\n   - --character-set-server=utf8\r\n   - --collation-server=utf8_bin\r\n   - --default-authentication-plugin=mysql_native_password\r\n  volumes:\r\n   - ./zbx_env/var/lib/mysql:/var/lib/mysql:rw\r\n  env_file:\r\n   - .env_db_mysql\r\n  secrets:\r\n   - MYSQL_USER\r\n   - MYSQL_PASSWORD\r\n   - MYSQL_ROOT_PASSWORD\r\n  stop_grace_peri
1od: 1m\r\n  networks:\r\n   zbx_net_backend:\r\n    ipv4_address: 172.16.239.109\r\n    aliases:\r\n     - mysql-server\r\n     - zabbix-database\r\n     - mysql-database\r\n\r\n postgres-server:\r\n  image: postgres:latest\r\n  volumes:\r\n   - ./zbx_env/var/lib/postgresql/data:/var/lib/postgresql/data:rw\r\n   - ./.ZBX_DB_CA_FILE:/run/secrets/root-ca.pem:ro\r\n   - ./.ZBX_DB_CERT_FILE:/run/secrets/server-cert.pem:ro\r\n   - ./.ZBX_DB_KEY_FILE:/run/secrets/server-key.pem:ro\r\n  env_file:\r\n   - .env_db_pgsql\r\n  secrets:\r\n   - POSTGRES_USER\r\n   - POSTGRES_PASSWORD\r\n  stop_grace_period: 1m\r\n  networks:\r\n   zbx_net_backend:\r\n    ipv4_address: 172.16.239.110\r\n    aliases:\r\n     - postgres-server\r\n     - pgsql-server\r\n     - pgsql-database\r\n\r\n db_data_mysql:\r\n  image: busybox\r\n  volumes:\r\n   - ./zbx_env/var/lib/mysql:/var/lib/mysql:rw\r\n\r\n db_data_pgsql:\r\n  image: busybox\r\n  volumes:\r\n   - ./zbx_env/var/lib/postgresql/data:/var/lib/postgresql/data:rw\r\n\r\nnetworks:\r\n  zbx_net_frontend:\r\n    driver: bridge\r\n    driver_opts:\r\n      com.docker.network.enable_ipv6: "false"\r\n    ipam:\r\n      driver: default\r\n      config:\r\n      - subnet: 172.16.238.0/24\r\n  zbx_net_backend:\r\n    driver: bridge\r\n    driver_opts:\r\n      com.docker.network.enable_ipv6: "false"\r\n    internal: true\r\n    ipam:\r\n      driver: default\r\n      config:\r\n      - subnet: 172.16.239.0/24\r\n  wiki_gateway:\r\n    external: true\r\n    name: wiki_gateway\r\n\r\nsecrets:\r\n  MYSQL_USER:\r\n    file: ./.MYSQL_USER\r\n  MYSQL_PASSWORD:\r\n    file: ./.MYSQL_PASSWORD\r\n  MYSQL_ROOT_PASSWORD:\r\n    file: ./.MYSQL_ROOT_PASSWORD\r\n  POSTGRES_USER:\r\n    file: ./.POSTGRES_USER\r\n  POSTGRES_PASSWORD:\r\n    file: ./.POSTGRES_PASSWORD\n'})})]})}function p(r={}){const{wrapper:e}={...(0,s.R)(),...r.components};return e?(0,i.jsx)(e,{...r,children:(0,i.jsx)(l,{...r})}):l(r)}},98930(r,e,n){const a=n.p+"assets/images/photo-kt443t6d_64hdh43hfh6dgjdfhg4_d-f985125af0f6a52c9cbf979638322176.jpg";n.d(e,["A",0,a])},28453(r,e,n){n.d(e,{R:()=>t,x:()=>o});var a=n(296540);const i={},s=a.createContext(i);function t(r){const e=a.useContext(s);return a.useMemo(function(){return"function"==typeof r?r(e):{...e,...r}},[e,r])}function o(r){let e;return e=r.disableParentContext?"function"==typeof r.components?r.components(i):r.components||i:t(r.components),a.createElement(s.Provider,{value:e},r.children)}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.