From 0f7242d5597e61641f5cd28427064cd7293a000f Mon Sep 17 00:00:00 2001 From: Erik Huelsmann Date: Fri, 25 Aug 2023 20:37:11 +0200 Subject: [PATCH] Take advantage of the ability to have 'ledgersmb.XXX.yaml' config files --- README.md | 41 ++++++++++++++++++++++++++ docker-compose.yml | 8 +++++ start.sh | 73 +++++++++++++++++++++++++++++++++------------- 3 files changed, 101 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index ed0494b..8db3611 100644 --- a/README.md +++ b/README.md @@ -202,6 +202,47 @@ The following parameters are now supported to set mail preferences: # Advanced setup +## Changing configuration + +The configuration file is stored in /srv/ledgersmb/local/conf/. By mounting +that directory using a bind-mount to a location outside the container, +configuration can be changed between container starts: + +```plain + $ docker run -d -p 5762:5762 --name myledger \ + --mount 'type=bind,src=/home/ledgersmb/conf,dst=/srv/ledgersmb/local/conf \ + -e POSTGRES_HOST= ledgersmb/ledgersmb:latest +``` + +## Overriding or adding configuration + +By pre-creating a configuration file in the mounted configuration directory, +the standard configuration generation process in the container can be overruled: + +```plain + $ cat < /home/ledgersmb/conf/ledgersmb.yaml + ... YOUR CONFIG HERE ... + EOF + $ docker run -d -p 5762:5762 --name myledger \ + --mount 'type=bind,src=/home/ledgersmb/conf,dst=/srv/ledgersmb/local/conf \ + -e POSTGRES_HOST= ledgersmb/ledgersmb:latest +``` + +If you do not want to completely overrule the configuration generated, but instead +supplement the configuration, you can put incremental configuration snippets in +files named `ledgersmb.XXX.yaml` in the same folder. E.g.: + +```plain + $ cat < /home/ledgersmb/conf/ledgersmb.001.yaml + logging: + file: ledgersmb.logging + EOF +``` + +[Documentation with respect to the available configuration +keys](https://github.com/ledgersmb/LedgerSMB/blob/master/doc/conf/ledgersmb.yaml) +is available in the LedgerSMB repository. + ## Docker Compose with reverse proxy The `docker-compose-reverseproxy.yml` file shows a docker-compose setup diff --git a/docker-compose.yml b/docker-compose.yml index bf197fe..4a90dcd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,6 +32,14 @@ services: depends_on: - postgres image: ghcr.io/ledgersmb/ledgersmb:1.10 + volumes: + # In order to store the configuration outside the image, allowing it to + # be edited between container restarts, uncomment the section below and + # change the 'source' to the directory where you want the configuration + # to be stored. + # - type: bind + # - source: /home/ledgersmb/conf + # - target: /srv/ledgersmb/local/conf networks: - internal - default diff --git a/start.sh b/start.sh index 7e48a70..83ec3c1 100755 --- a/start.sh +++ b/start.sh @@ -1,7 +1,7 @@ #!/bin/bash cd /srv/ledgersmb - +mkdir ./local/conf/ if [[ -n "$SSMTP_ROOT" ]]; then echo "\$SSMTP_ROOT set; parameter is deprecated and will be ignored" LSMB_HAVE_DEPRECATED=1 @@ -68,27 +68,58 @@ if [[ -n "$LSMB_HAVE_DEPRECATED" ]]; then fi -if [[ ! -f ledgersmb.conf ]]; then - cat </tmp/ledgersmb.conf -[main] -cache_templates = 1 -[database] -host = $POSTGRES_HOST -port = $POSTGRES_PORT -default_db = $DEFAULT_DB -[mail] -${LSMB_MAIL_SMTPHOST:+smtphost=$LSMB_MAIL_SMTPHOST -}${LSMB_MAIL_SMTPPORT:+smtpport=$LSMB_MAIL_SMTPPORT -}${LSMB_MAIL_SMTPSENDER_HOSTNAME:+smtpsender_hostname=$LSMB_MAIL_SMTPSENDER_HOSTNAME -}${LSMB_MAIL_SMTPTLS:+smtptls=$LSMB_MAIL_SMTPTLS -}${LSMB_MAIL_SMTPUSER:+smtpuser=$LSMB_MAIL_SMTPUSER -}${LSMB_MAIL_SMTPPASS:+smtppass=$LSMB_MAIL_SMTPPASS -}${LSMB_MAIL_SMTPAUTHMECH:+smtpauthmech=$LSMB_MAIL_SMTPAUTHMECH -} -[proxy] -ip=${PROXY_IP:-172.17.0.1/12} +if [[ ! -f ./local/conf/ledgersmb.yaml ]]; then + cat <./local/conf/ledgersmb.yaml +paths: + $class: Beam::Wire + config: + UI: ./UI/ + UI_cache: lsmb_templates/ + +db: + $class: LedgerSMB::Database::Factory + connect_data: + host: $POSTGRES_HOST + port: $POSTGRES_PORT + +mail: + transport: + $class: LedgerSMB::Mailer::TransportSMTP + host: $LSMB_MAIL_SMTPHOST + port: $LSMB_MAIL_SMTPPORT + helo: $LSMB_MAIL_SMTPSENDER_HOSTNAME + tls: $LSMB_MAIL_SMTPTLS + +miscellaneous: + $class: Beam::Wire + config: + proxy_ip: ${PROXY_IP:-172.17.0.1/12} + +ui: + class: LedgerSMB::Template::UI + method: new_UI + lifecycle: eager + args: + cache: + $ref: paths/UI_cache + root: + $ref: paths/UI EOF - export LSMB_CONFIG_FILE='/tmp/ledgersmb.conf' + + if [[ -n "" ]] + then + cat <./local/conf/ledgersmb.000.yaml +mail: + transport: + sasl_password: '' + sasl_username: + $class: Authen::SASL + mechanism: $LSMB_MAIL_SMTPAUTHMECH + callback: + user: $LSMB_MAIL_SMTPUSER + pass: $LSMB_MAIL_SMTPPASS +EOF + fi fi # start ledgersmb