From 490fb7ee1a3a6aeb158f51aad5d3896aa2fe86da Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 25 Jul 2026 05:30:07 +0000 Subject: [PATCH 1/6] chore(deps)!: update ghcr.io/maevsi/sqitch docker tag to v12 --- src/production/sqitch/compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/production/sqitch/compose.yaml b/src/production/sqitch/compose.yaml index 39aaab60..22281621 100644 --- a/src/production/sqitch/compose.yaml +++ b/src/production/sqitch/compose.yaml @@ -3,5 +3,5 @@ services: deploy: update_config: order: stop-first - image: ghcr.io/maevsi/sqitch:11.1.9 + image: ghcr.io/maevsi/sqitch:12.0.1 volumes: (( prune )) From dd2843978ef26bc15ff2e05823f3b185120205f7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 02:57:30 +0000 Subject: [PATCH 2/6] chore(deps)!: update grafana/grafana docker tag to v13 --- src/development/grafana/compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/development/grafana/compose.yaml b/src/development/grafana/compose.yaml index 8f0f7147..3c5e8b3c 100644 --- a/src/development/grafana/compose.yaml +++ b/src/development/grafana/compose.yaml @@ -40,7 +40,7 @@ services: timeout: 5s retries: 3 start_period: 30s - image: grafana/grafana:12.4.6 + image: grafana/grafana:13.1.1 secrets: - grafana-admin-email - grafana-admin-password From e63f285b1289da3630306e724335df24091c3e6d Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Mon, 27 Jul 2026 23:47:51 +0000 Subject: [PATCH 3/6] chore(release): 20.0.0-beta.1 [skip ci] ## [20.0.0-beta.1](https://github.com/maevsi/stack/compare/19.1.9...20.0.0-beta.1) (2026-07-27) --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 01148b5e..408e1013 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## [20.0.0-beta.1](https://github.com/maevsi/stack/compare/19.1.9...20.0.0-beta.1) (2026-07-27) + ## [19.1.9](https://github.com/maevsi/stack/compare/19.1.8...19.1.9) (2026-07-27) ## [19.1.8](https://github.com/maevsi/stack/compare/19.1.7...19.1.8) (2026-07-27) From e8280d4e551523bd44252f4cc02d18b58b405b78 Mon Sep 17 00:00:00 2001 From: Jonas Thelemann Date: Tue, 28 Jul 2026 01:37:40 +0200 Subject: [PATCH 4/6] feat(zammad)!: upgrade to v7 --- src/development/zammad/compose.yaml | 6 +- .../configurations/docker-entrypoint.sh | 56 ++++++++++--------- 2 files changed, 33 insertions(+), 29 deletions(-) diff --git a/src/development/zammad/compose.yaml b/src/development/zammad/compose.yaml index 10aafac1..25908d56 100644 --- a/src/development/zammad/compose.yaml +++ b/src/development/zammad/compose.yaml @@ -16,7 +16,7 @@ x-shared: POSTGRESQL_HOST: postgres POSTGRESQL_OPTIONS: ?pool=50 REDIS_URL: redis://redis:6379 - image: ghcr.io/zammad/zammad:6.5.2-90 + image: ghcr.io/zammad/zammad:7.1.1-0035 secrets: - source: elasticsearch-password target: /run/environment-variables/ELASTICSEARCH_PASS @@ -26,7 +26,7 @@ x-shared: target: /run/environment-variables/POSTGRESQL_PASS volumes: - zammad-data:/opt/zammad/storage - - ./configurations/docker-entrypoint.sh:/docker-entrypoint.sh:ro + - ./configurations/docker-entrypoint.sh:/opt/zammad/bin/docker-entrypoint:ro services: zammad-backup: # You cannot access the helpdesk backup service via a web interface. @@ -36,7 +36,7 @@ services: volumes: - zammad-backup-data:/var/tmp/zammad - zammad-data:/opt/zammad/storage:ro - - ./configurations/docker-entrypoint.sh:/docker-entrypoint.sh:ro + - ./configurations/docker-entrypoint.sh:/opt/zammad/bin/docker-entrypoint:ro zammad-init: # You cannot access the helpdesk initialization service via a web interface. <<: *zammad-service diff --git a/src/development/zammad/configurations/docker-entrypoint.sh b/src/development/zammad/configurations/docker-entrypoint.sh index 9d364edd..31901165 100755 --- a/src/development/zammad/configurations/docker-entrypoint.sh +++ b/src/development/zammad/configurations/docker-entrypoint.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -set -e +set -o errexit # START of maevsi entrypoint script customization ENVIRONMENT_VARIABLES_PATH="/run/environment-variables" @@ -45,46 +45,50 @@ load_environment_variables : "${NGINX_CLIENT_MAX_BODY_SIZE:=50M}" : "${NGINX_SERVER_NAME:=_}" : "${NGINX_SERVER_SCHEME:=\$scheme}" -: "${POSTGRESQL_DB:=zammad_production}" : "${POSTGRESQL_DB_CREATE:=true}" -: "${POSTGRESQL_HOST:=zammad-postgresql}" -: "${POSTGRESQL_PORT:=5432}" -: "${POSTGRESQL_USER:=zammad}" -: "${POSTGRESQL_PASS:=zammad}" -: "${POSTGRESQL_OPTIONS:=}" -: "${RAILS_ENV:=production}" -: "${RAILS_LOG_TO_STDOUT:=true}" -: "${RAILS_TRUSTED_PROXIES:=127.0.0.1,::1}" -: "${ZAMMAD_DIR:=/opt/zammad}" : "${ZAMMAD_RAILSSERVER_HOST:=zammad-railsserver}" : "${ZAMMAD_RAILSSERVER_PORT:=3000}" : "${ZAMMAD_WEBSOCKET_HOST:=zammad-websocket}" : "${ZAMMAD_WEBSOCKET_PORT:=6042}" +: "${RESTORE_DIR:=/var/tmp/zammad/restore}" -# Support both ZAMMAD_WEB_CONCURRENCY (as recommended by the Zammad docker stack & documentation) -# and WEB_CONCURRENCY (Zammad and Rails default). -: "${ZAMMAD_WEB_CONCURRENCY:=0}" -: "${WEB_CONCURRENCY:=${ZAMMAD_WEB_CONCURRENCY}}" -export WEB_CONCURRENCY - -ESCAPED_POSTGRESQL_PASS=$(echo "$POSTGRESQL_PASS" | sed -e 's/[\/&]/\\&/g') -export DATABASE_URL="postgres://${POSTGRESQL_USER}:${ESCAPED_POSTGRESQL_PASS}@${POSTGRESQL_HOST}:${POSTGRESQL_PORT}/${POSTGRESQL_DB}${POSTGRESQL_OPTIONS}" +function check_no_restore_running { + echo 'Checking for active restore operations...' + until [ ! -d "${RESTORE_DIR}" ] || [ -z "$(ls "${RESTORE_DIR}")" ]; do + echo " waiting for restore to finish..." + sleep 2 + done +} function check_zammad_ready { + check_no_restore_running + + echo 'Checking if Zammad is ready...' # Verify that migrations have been ran and seeds executed to process ENV vars like FQDN correctly. until bundle exec rails r 'ActiveRecord::Migration.check_all_pending!; Translation.any? || raise' &> /dev/null; do - echo "waiting for init container to finish install or update..." + echo " waiting for init container to finish install or update..." sleep 2 done } +function check_postgresql_ready { + echo 'Checking if PostgreSQL is ready...' + + # Strip possible surrounding brackets from IPv6 addresses. + CLEAN_POSTGRESQL_HOST=${POSTGRESQL_HOST#[}; CLEAN_POSTGRESQL_HOST=${CLEAN_POSTGRESQL_HOST%]} + + until (pg_isready -q -h "$CLEAN_POSTGRESQL_HOST" -p "$POSTGRESQL_PORT"); do + echo " waiting for postgresql server to be ready..." + sleep 1 + done +} + # zammad init if [ "$1" = 'zammad-init' ]; then # install / update zammad - until (echo > /dev/tcp/"${POSTGRESQL_HOST}"/"${POSTGRESQL_PORT}") &> /dev/null; do - echo "waiting for postgresql server to be ready..." - sleep 1 - done + check_postgresql_ready + + check_no_restore_running # check if database exists / update to new version echo "initialising / updating database..." @@ -176,7 +180,7 @@ elif [ "$1" = 'zammad-nginx' ]; then elif [ "$1" = 'zammad-railsserver' ]; then check_zammad_ready - echo "starting railsserver... with WEB_CONCURRENCY=${WEB_CONCURRENCY}" + echo "starting railsserver..." #shellcheck disable=SC2101 exec bundle exec puma -b tcp://[::]:"${ZAMMAD_RAILSSERVER_PORT}" -e "${RAILS_ENV}" @@ -199,7 +203,7 @@ elif [ "$1" = 'zammad-websocket' ]; then # zammad-backup elif [ "$1" = 'zammad-backup' ]; then - check_zammad_ready + check_postgresql_ready echo "starting backup..." From c6d478acb5f40026cb7168e7495c6252e63b4016 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Jul 2026 02:57:24 +0000 Subject: [PATCH 5/6] chore(deps)!: update elasticsearch docker tag to v9 --- src/development/elasticsearch/compose.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/development/elasticsearch/compose.yaml b/src/development/elasticsearch/compose.yaml index ac261c61..1f9cf6a4 100644 --- a/src/development/elasticsearch/compose.yaml +++ b/src/development/elasticsearch/compose.yaml @@ -25,7 +25,7 @@ services: # timeout: 10s # retries: 3 # start_period: 60s - image: elasticsearch:8.19.19 + image: elasticsearch:9.4.4 secrets: - source: elasticsearch-keystore-password uid: "1000" From b1ac7af828d279a995af0b04566e5a1ee7fed380 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 28 Jul 2026 02:22:36 +0000 Subject: [PATCH 6/6] chore(release): 20.0.0-beta.2 [skip ci] ## [20.0.0-beta.2](https://github.com/maevsi/stack/compare/20.0.0-beta.1...20.0.0-beta.2) (2026-07-28) --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 408e1013..58ecc3de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,5 @@ +## [20.0.0-beta.2](https://github.com/maevsi/stack/compare/20.0.0-beta.1...20.0.0-beta.2) (2026-07-28) + ## [20.0.0-beta.1](https://github.com/maevsi/stack/compare/19.1.9...20.0.0-beta.1) (2026-07-27) ## [19.1.9](https://github.com/maevsi/stack/compare/19.1.8...19.1.9) (2026-07-27)