initial commit
This commit is contained in:
commit
50dcfec65a
5 changed files with 127 additions and 0 deletions
30
appinfo.yml
Normal file
30
appinfo.yml
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
mainunit: zabbix-server.service
|
||||||
|
mainunitfile: zabbix-server.service.j2
|
||||||
|
ports:
|
||||||
|
- web
|
||||||
|
templatefiles:
|
||||||
|
- src: compose.yml.j2
|
||||||
|
dest: ~/compose.yml
|
||||||
|
exports:
|
||||||
|
web:
|
||||||
|
sites:
|
||||||
|
- proxyaddress: "http://127.0.0.1:{{ ports.web }}"
|
||||||
|
publicname: "{{ config.domainname }}"
|
||||||
|
configdefinition:
|
||||||
|
description: Zabbix config
|
||||||
|
type: object
|
||||||
|
additionalProperties: false
|
||||||
|
properties:
|
||||||
|
domainname:
|
||||||
|
type: string
|
||||||
|
description: The url that is used for the site
|
||||||
|
required:
|
||||||
|
- domainname
|
||||||
|
const:
|
||||||
|
image:
|
||||||
|
# Zabbix 7 (LTS) can't yet handle postgres 17
|
||||||
|
postgres: docker.io/library/postgres:16.6
|
||||||
|
# version 7.0.7 has a bug: https://support.zabbix.com/browse/ZBX-25765
|
||||||
|
zabbix: docker.io/zabbix/zabbix-server-pgsql:7.0.6-ubuntu
|
||||||
|
web: docker.io/zabbix/zabbix-web-nginx-pgsql:7.0.6-ubuntu
|
||||||
|
|
||||||
61
compose.yml.j2
Normal file
61
compose.yml.j2
Normal file
|
|
@ -0,0 +1,61 @@
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
# We put everything in a seperate network so it doesn't matter
|
||||||
|
# that the passwords in this file are simple and known - you can't access it.
|
||||||
|
networks:
|
||||||
|
zabbix: {}
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres-server:
|
||||||
|
image: {{ const.image.postgres }}
|
||||||
|
container_name: postgres-server
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=postgres
|
||||||
|
- PGDATA=/data/pgdata
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- {{ homedir }}/data:/data
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
- {{ homedir }}/appdefinition/dbsetup.sh:/docker-entrypoint-initdb.d/dbsetup.sh
|
||||||
|
healthcheck:
|
||||||
|
test: psql -U postgres -c "select version();" || exit 1
|
||||||
|
interval: 5s
|
||||||
|
timeout: 2s
|
||||||
|
retries: 3
|
||||||
|
zabbix:
|
||||||
|
image: {{ const.image.zabbix }}
|
||||||
|
container_name: zabbix
|
||||||
|
restart: always
|
||||||
|
volumes:
|
||||||
|
- /etc/timezone:/etc/timezone:ro
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=zabbix
|
||||||
|
- POSTGRES_PASSWORD=zabbix
|
||||||
|
- POSTGRES_DB=zabbix
|
||||||
|
- DB_SERVER_HOST=postgres-server
|
||||||
|
- TZ=Europe/Brussels
|
||||||
|
depends_on:
|
||||||
|
postgres-server:
|
||||||
|
condition: service_healthy
|
||||||
|
restart: true
|
||||||
|
init: true
|
||||||
|
web:
|
||||||
|
image: {{ const.image.web }}
|
||||||
|
container_name: web
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=zabbix
|
||||||
|
- POSTGRES_PASSWORD=zabbix
|
||||||
|
- POSTGRES_DB=zabbix
|
||||||
|
- DB_SERVER_HOST=postgres-server
|
||||||
|
- ZBX_SERVER_HOST=zabbix
|
||||||
|
- PHP_TZ=Europe/Brussels
|
||||||
|
- TZ=Europe/Brussels
|
||||||
|
restart: always
|
||||||
|
depends_on:
|
||||||
|
postgres-server:
|
||||||
|
condition: service_healthy
|
||||||
|
restart: true
|
||||||
|
ports:
|
||||||
|
- '127.0.0.1:{{ ports.web }}:8080'
|
||||||
16
dbsetup.sh
Normal file
16
dbsetup.sh
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# This file is executed INSIDE the postgres container, but only the very first time
|
||||||
|
# the database is created. If any side-effects of this script need to be performed
|
||||||
|
# again, execute into the container and try again. There is no need for authentication
|
||||||
|
# inside the container, the connection is trusted
|
||||||
|
|
||||||
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
|
||||||
|
CREATE USER zabbix WITH PASSWORD 'zabbix';
|
||||||
|
CREATE DATABASE zabbix;
|
||||||
|
GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
|
||||||
|
EOSQL
|
||||||
|
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname zabbix <<-EOSQL
|
||||||
|
GRANT ALL PRIVILEGES ON SCHEMA public TO zabbix;
|
||||||
|
EOSQL
|
||||||
3
readme
Normal file
3
readme
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
Work in progress.
|
||||||
|
Still needs a ppm template to be added.
|
||||||
|
Contact me if you're using the project!
|
||||||
17
zabbix-server.service.j2
Normal file
17
zabbix-server.service.j2
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
[Unit]
|
||||||
|
Description=Podman Compose based service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=exec
|
||||||
|
# If started incorrectly: stop it first (ie when started without systemd, systemd will know something is started
|
||||||
|
# and will not do anything when start is called on a unit that already is running)
|
||||||
|
ExecStartPre=-/usr/bin/podman-compose -f {{ homedir }}/compose.yml down
|
||||||
|
ExecStartPre={{ ppmbinary }} setup --do-not-enable-units
|
||||||
|
ExecStart=/usr/bin/podman-compose -f {{ homedir }}/compose.yml up
|
||||||
|
ExecStop=/usr/bin/podman-compose -f {{ homedir }}/compose.yml down
|
||||||
|
Restart=always
|
||||||
|
WorkingDirectory={{ homedir }}
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
Loading…
Add table
Add a link
Reference in a new issue