# Docker IcingaWeb2 [![Build Status](https://git.ao-it.net/docker/icingaweb2/actions/workflows/docker-build.yml/badge.svg?branch=main&event=push)](https://git.ao-it.net/docker/icingaweb2/actions?workflow=docker-build.yml&actor=0&status=0) Designed with [https://git.ao-it.net/docker/icinga2](https://git.ao-it.net/docker/icinga2) ## quick start If you have a functional icinga2 instance only without icingaweb2: ```bash git clone https://git.ao-it.net/docker/icingaweb2 cd icingaweb2 cp env.sample .env nano .env # edit your settings docker compose up -d ``` For a full deployment see: [comming soon ...]() ## understand environment For the configuration (primarily the initial setup) I use a similar method as: https://hub.docker.com/r/icinga/icingaweb2 * In my case a prefix like `ICINGAWEB2_CONF` refers a configuration file. * After the first `.` it follows the `Section` from this ini file. * After the second `.` it follows the `Key` from this `Section` before. * And after the `=` is comes the `value`. So will this: ``` ICINGAWEB2_CONF.global.config_backend=db ``` create this: ```ini [global] config_backend = db ``` --- ### vars icingaweb2 prefix | file | ref --- | --- | --- ICINGAWEB2_CONF | /etc/icingaweb2/config.ini | [General Configuration](https://icinga.com/docs/icinga-web/latest/doc/03-Configuration/#configuration-general) ICINGAWEB2_RESOURCES | /etc/icingaweb2/resources.ini | [Resources](https://icinga.com/docs/icinga-web/latest/doc/04-Resources/#resources) ICINGAWEB2_AUTH | /etc/icingaweb2/authentication.ini | [Authentication](https://icinga.com/docs/icinga-web/latest/doc/05-Authentication/#authentication) ICINGAWEB2_GROUPS | /etc/icingaweb2/groups.ini | [Groups](https://icinga.com/docs/icinga-web/latest/doc/05-Authentication/#groups) ICINGAWEB2_ROLES | /etc/icingaweb2/roles.ini | [Roles](https://icinga.com/docs/icinga-web/latest/doc/06-Security/#roles) ### vars modules prefix | module | file | ref --- | --- | --- | --- ICINGAWEB2_ICINGADB_CONF | icingadb | /etc/icingaweb2/modules/icingadb/config.ini | [General Configuration](https://icinga.com/docs/icinga-db-web/latest/doc/03-Configuration/#general-configuration) ICINGAWEB2_ICINGADB_REDIS | icingadb | /etc/icingaweb2/modules/icingadb/redis.ini | [Redis® Configuration](https://icinga.com/docs/icinga-db-web/latest/doc/03-Configuration/#redis-configuration) ICINGAWEB2_ICINGADB_API | icingadb | /etc/icingaweb2/modules/icingadb/commandtransports.ini | [Command Transport Configuration](https://icinga.com/docs/icinga-db-web/latest/doc/03-Configuration/#command-transport-configuration) ICINGAWEB2_GRAFANA_CONF | grafana | /etc/icingaweb2/modules/grafana/config.ini | [General Configuration](https://github.com/NETWAYS/icingaweb2-module-grafana/blob/main/doc/03-module-configuration.md) ICINGAWEB2_GRAFANA_AUTH | grafana | /etc/icingaweb2/modules/grafana/grafana.ini | [Grafana Preparations](https://github.com/NETWAYS/icingaweb2-module-grafana/blob/main/doc/02-installation.md) ICINGAWEB2_GRAFANA_GRAPH | grafana | /etc/icingaweb2/modules/grafana/graphs.ini | [Graph Configuration](https://github.com/NETWAYS/icingaweb2-module-grafana/blob/main/doc/04-graph-configuration.md) --- ### static vars var | description --- | --- ICINGAWEB2_CONF_ONCE | if true: all configuration setups (above) run only on fist setup. ICINGAWEB2_DB_RESOURCE_NAME | needed for setup scrip to know witch database is used for users ICINGAWEB2_DEFAULT_ADMIN_USER | default admin username ICINGAWEB2_DEFAULT_ADMIN_PASS | default admin password ### easy setup If you use the example, than you kan setup the `env.sample`. All required variables are included and insert the values ​​in the correct places. Hint: in this file all vars dont have the `2` behind icingaweb2 or icinga. Vars for the container have the `2` ## example See [compose.yml](compose.yml). This is for environment priview ```yaml services: icingaweb2: image: git.ao-it.net/docker/icingaweb2 environment: - ICINGAWEB2_CONF_ONCE=true - ICINGAWEB2_CONF__logging__log=php - ICINGAWEB2_CONF__logging__level=ERROR - ICINGAWEB2_CONF__logging__application=icingaweb2 - ICINGAWEB2_CONF__global__config_backend=db - ICINGAWEB2_CONF__global__config_resource=${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db} - ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__type=db - ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__db=mysql - ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__host=${ICINGAWEB_DB_HOST:-db_icingaweb} - ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__dbname=${ICINGAWEB_DB:-icingaweb} - ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__username=${ICINGAWEB_DB_USER:-icingaweb} - ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__password=${ICINGAWEB_DB_PASS:-icingaweb} - ICINGAWEB2_RESOURCES__${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db}__charset=utf8mb4 - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__type=db - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__db=mysql - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__host=${ICINGA_DB_HOST:-db_icinga} - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__dbname=${ICINGA_DB:-icingadb} - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__username=${ICINGA_DB_USER:-icingadb} - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__password=${ICINGA_DB_PASS:-icingadb} - ICINGAWEB2_RESOURCES__${ICINGAWDB_RESOURCE_NAME:-icingadb}__charset=utf8mb4 - ICINGAWEB2_AUTH__icingaweb2__backend=db - ICINGAWEB2_AUTH__icingaweb2__resource=${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db} - ICINGAWEB2_GROUPS__icingaweb2__backend=db - ICINGAWEB2_GROUPS__icingaweb2__resource=${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db} - ICINGAWEB2_ROLES__${ICINGAWEB_DEFAULT_ADMIN_ROLE:-Administrators}__groups=${ICINGAWEB_DEFAULT_ADMIN_ROLE:-Administrators} - ICINGAWEB2_ROLES__${ICINGAWEB_DEFAULT_ADMIN_ROLE:-Administrators}__permissions="*" - ICINGAWEB2_ROLES__${ICINGAWEB_DEFAULT_ADMIN_ROLE:-Administrators}__users=${ICINGAWEB_DEFAULT_ADMIN_USER:-icingaadmin} - ICINGAWEB2_ICINGADB_CONF__icingadb__resource=icingadb - ICINGAWEB2_ICINGADB_REDIS__redis1__host=redis - ICINGAWEB2_ICINGADB_REDIS__redis1__port=6379 - ICINGAWEB2_ICINGADB_API__icinga2__transport=api - ICINGAWEB2_ICINGADB_API__icinga2__host=icinga2 - ICINGAWEB2_ICINGADB_API__icinga2__port=5665 - ICINGAWEB2_ICINGADB_API__icinga2__username=icingaweb - ICINGAWEB2_ICINGADB_API__icinga2__password=icingaweb - ICINGAWEB2_DB_RESOURCE_NAME=${ICINGAWEB_DB_RESOURCE_NAME:-icingaweb_db} - ICINGAWEB2_DEFAULT_ADMIN_USER=${ICINGAWEB_DEFAULT_ADMIN_USER:-icingaadmin} - ICINGAWEB2_DEFAULT_ADMIN_PASS=${ICINGAWEB_DEFAULT_ADMIN_PASS:-icingaadmin} ``` If you ask why the hell vars with `.` : - Due to the dynamic translation of variables to ini files, some modules use this peculiarity. - currently in the module `grafana` in file `grafana.ini` - https://stackoverflow.com/questions/2821043/allowed-characters-in-linux-environment-variable-names You can remove the environment var `ICINGAWEB2_CONF_ONCE` whan will changes in `compose.yml` environment deploy every time if the container starts. You can use this for future config changes, but this isn't tested and i am not sure i will recommend this... For now be save and use it only for inital setup.