From 26d20ee92729e687f5598bb50afa21654f212e0d Mon Sep 17 00:00:00 2001 From: huzaifaedhi2 Date: Thu, 22 May 2025 20:05:50 +0200 Subject: [PATCH 1/3] feat(zammad): add config to stack.yml --- src/development/certificates/mkcert.sh | 3 +- src/development/stack.yml | 143 +++++++++++++++++++++++++ 2 files changed, 145 insertions(+), 1 deletion(-) diff --git a/src/development/certificates/mkcert.sh b/src/development/certificates/mkcert.sh index b17c4055..25c841c4 100755 --- a/src/development/certificates/mkcert.sh +++ b/src/development/certificates/mkcert.sh @@ -39,4 +39,5 @@ create "traefik" \ `# redpanda` "redpanda.app.localhost" \ `# traefik` "traefik.app.localhost" \ `# tusd` "tusd.app.localhost" \ - `# vibetype` "app.localhost" "www.app.localhost" "127.0.0.1" "0.0.0.0" \ No newline at end of file + `# vibetype` "app.localhost" "www.app.localhost" "127.0.0.1" "0.0.0.0" \ + `# zammad` "zammad.app.localhost" \ No newline at end of file diff --git a/src/development/stack.yml b/src/development/stack.yml index f64f6755..26745547 100644 --- a/src/development/stack.yml +++ b/src/development/stack.yml @@ -404,6 +404,148 @@ services: - postgres_user volumes: - reccoom_postgres_data:/var/lib/postgresql/ + zammad-elasticsearch: + image: zammad/zammad-docker-compose:latest + restart: always + volumes: + - zammad_elasticsearch_data:/usr/share/elasticsearch/data + environment: + - discovery.type=single-node + + zammad-init: + image: zammad/zammad-docker-compose:latest + restart: on-failure + depends_on: + - postgres + - zammad-elasticsearch + environment: + - POSTGRESQL_HOST=postgres + - POSTGRESQL_USER=${POSTGRES_USER} + - POSTGRESQL_PASS=${POSTGRES_PASSWORD} + - POSTGRESQL_DB=zammad + - ELASTICSEARCH_HOST=zammad-elasticsearch + - ELASTICSEARCH_PORT=9200 + - ZAMMAD_RAILSSERVER_HOST=zammad-railsserver + - ZAMMAD_WEBSOCKET_HOST=zammad-websocket + - NGINX_SERVER_NAME=zammad.${STACK_DOMAIN} + - REDIS_URL=redis://zammad-redis:6379 + secrets: + - source: postgres_user + target: POSTGRESQL_USER + - source: postgres_password + target: POSTGRESQL_PASS + command: ["zammad-init"] + + zammad-railsserver: + image: zammad/zammad-docker-compose:latest + restart: always + depends_on: + - zammad-init + environment: + - POSTGRESQL_HOST=postgres + - POSTGRESQL_USER=${POSTGRES_USER} + - POSTGRESQL_PASS=${POSTGRES_PASSWORD} + - POSTGRESQL_DB=zammad + - ELASTICSEARCH_HOST=zammad-elasticsearch + - ELASTICSEARCH_PORT=9200 + - ZAMMAD_RAILSSERVER_HOST=zammad-railsserver + - ZAMMAD_WEBSOCKET_HOST=zammad-websocket + - REDIS_URL=redis://zammad-redis:6379 + secrets: + - source: postgres_user + target: POSTGRESQL_USER + - source: postgres_password + target: POSTGRESQL_PASS + deploy: + labels: + - traefik.enable=true + - traefik.http.routers.zammad-railsserver.entryPoints=web + - traefik.http.routers.zammad-railsserver.middlewares=redirectscheme + - traefik.http.routers.zammad-railsserver.rule=Host(`zammad.${STACK_DOMAIN}`) && PathPrefix(`/api`) + - traefik.http.routers.zammad-railsserver_secure.entryPoints=web-secure + - traefik.http.routers.zammad-railsserver_secure.rule=Host(`zammad.${STACK_DOMAIN}`) && PathPrefix(`/api`) + - traefik.http.routers.zammad-railsserver_secure.tls.options=mintls13@file + - traefik.http.services.zammad-railsserver.loadbalancer.server.port=3000 + + zammad-scheduler: + image: zammad/zammad-docker-compose:latest + restart: always + depends_on: + - zammad-init + environment: + - POSTGRESQL_HOST=postgres + - POSTGRESQL_USER=${POSTGRES_USER} + - POSTGRESQL_PASS=${POSTGRES_PASSWORD} + - POSTGRESQL_DB=zammad + - ELASTICSEARCH_HOST=zammad-elasticsearch + - ELASTICSEARCH_PORT=9200 + - ZAMMAD_RAILSSERVER_HOST=zammad-railsserver + - ZAMMAD_WEBSOCKET_HOST=zammad-websocket + - REDIS_URL=redis://zammad-redis:6379 + + secrets: + - source: postgres_user + target: POSTGRESQL_USER + - source: postgres_password + target: POSTGRESQL_PASS + command: ["zammad-scheduler"] + + zammad-redis: + image: redis:7-alpine + restart: always + + zammad-websocket: + image: zammad/zammad-docker-compose:latest + restart: always + depends_on: + - zammad-init + environment: + - POSTGRESQL_HOST=postgres + - POSTGRESQL_USER=${POSTGRES_USER} + - POSTGRESQL_PASS=${POSTGRES_PASSWORD} + - POSTGRESQL_DB=zammad + - ELASTICSEARCH_HOST=zammad-elasticsearch + - ELASTICSEARCH_PORT=9200 + - ZAMMAD_RAILSSERVER_HOST=zammad-railsserver + - ZAMMAD_WEBSOCKET_HOST=zammad-websocket + - REDIS_URL=redis://zammad-redis:6379 + secrets: + - source: postgres_user + target: POSTGRESQL_USER + - source: postgres_password + target: POSTGRESQL_PASS + command: ["zammad-websocket"] + deploy: + labels: + - traefik.enable=true + - traefik.http.routers.zammad-websocket.entryPoints=web + - traefik.http.routers.zammad-websocket.middlewares=redirectscheme + - traefik.http.routers.zammad-websocket.rule=Host(`zammad.${STACK_DOMAIN}`) && PathPrefix(`/ws`) + - traefik.http.routers.zammad-websocket_secure.entryPoints=web-secure + - traefik.http.routers.zammad-websocket_secure.rule=Host(`zammad.${STACK_DOMAIN}`) && PathPrefix(`/ws`) + - traefik.http.routers.zammad-websocket_secure.tls.options=mintls13@file + - traefik.http.services.zammad-websocket.loadbalancer.server.port=6042 + + zammad-nginx: + image: zammad/zammad-docker-compose:latest + restart: always + depends_on: + - zammad-railsserver + - zammad-websocket + environment: + - NGINX_SERVER_NAME=zammad.${STACK_DOMAIN} + - REDIS_URL=redis://zammad-redis:6379 + deploy: + labels: + - traefik.enable=true + - traefik.http.routers.zammad.entryPoints=web + - traefik.http.routers.zammad.middlewares=redirectscheme + - traefik.http.routers.zammad.rule=Host(`zammad.${STACK_DOMAIN}`) + - traefik.http.routers.zammad_secure.entryPoints=web-secure + - traefik.http.routers.zammad_secure.rule=Host(`zammad.${STACK_DOMAIN}`) + - traefik.http.routers.zammad_secure.tls.options=mintls13@file + - traefik.http.services.zammad.loadbalancer.server.port=80 + redpanda: # You can access the event streaming platform's ui as described under `redpanda-console`. command: @@ -611,3 +753,4 @@ volumes: vibetype_data: # The frontend's data. {} + zammad_elasticsearch_data: {} From 2fc6d2bd73c52457437f5b48d545f0269f3094b8 Mon Sep 17 00:00:00 2001 From: huzaifaedhi2 Date: Mon, 26 May 2025 22:24:18 +0200 Subject: [PATCH 2/3] fix: use postgres role --- src/development/stack.yml | 54 ++++++++++++++++++++++++--------------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/src/development/stack.yml b/src/development/stack.yml index 26745547..9030175e 100644 --- a/src/development/stack.yml +++ b/src/development/stack.yml @@ -333,7 +333,7 @@ services: POSTGRES_DB_FILE: /run/secrets/postgres_db POSTGRES_PASSWORD_FILE: /run/secrets/postgres_password POSTGRES_USER_FILE: /run/secrets/postgres_user - image: postgis/postgis:18-3.6-alpine + image: imresamu/postgis:18-3.6-alpine ports: #DARGSTACK-REMOVE - 5432:5432 #DARGSTACK-REMOVE secrets: @@ -405,7 +405,7 @@ services: volumes: - reccoom_postgres_data:/var/lib/postgresql/ zammad-elasticsearch: - image: zammad/zammad-docker-compose:latest + image: bitnami/elasticsearch:${ELASTICSEARCH_VERSION:-8.18.0} restart: always volumes: - zammad_elasticsearch_data:/usr/share/elasticsearch/data @@ -418,10 +418,13 @@ services: depends_on: - postgres - zammad-elasticsearch + volumes: + - zammad_storage:/opt/zammad/storage environment: + - POSTGRESQL_DB_CREATE=false - POSTGRESQL_HOST=postgres - - POSTGRESQL_USER=${POSTGRES_USER} - - POSTGRESQL_PASS=${POSTGRES_PASSWORD} + - POSTGRESQL_USER_FILE=/run/secrets/POSTGRESQL_USER + - POSTGRESQL_PASS_FILE=/run/secrets/POSTGRESQL_PASS - POSTGRESQL_DB=zammad - ELASTICSEARCH_HOST=zammad-elasticsearch - ELASTICSEARCH_PORT=9200 @@ -430,9 +433,9 @@ services: - NGINX_SERVER_NAME=zammad.${STACK_DOMAIN} - REDIS_URL=redis://zammad-redis:6379 secrets: - - source: postgres_user + - source: postgres_role_service_zammad_username target: POSTGRESQL_USER - - source: postgres_password + - source: postgres_role_service_zammad_password target: POSTGRESQL_PASS command: ["zammad-init"] @@ -443,8 +446,8 @@ services: - zammad-init environment: - POSTGRESQL_HOST=postgres - - POSTGRESQL_USER=${POSTGRES_USER} - - POSTGRESQL_PASS=${POSTGRES_PASSWORD} + - POSTGRESQL_USER_FILE=/run/secrets/POSTGRESQL_USER + - POSTGRESQL_PASS_FILE=/run/secrets/POSTGRESQL_PASS - POSTGRESQL_DB=zammad - ELASTICSEARCH_HOST=zammad-elasticsearch - ELASTICSEARCH_PORT=9200 @@ -452,10 +455,12 @@ services: - ZAMMAD_WEBSOCKET_HOST=zammad-websocket - REDIS_URL=redis://zammad-redis:6379 secrets: - - source: postgres_user + - source: postgres_role_service_zammad_username target: POSTGRESQL_USER - - source: postgres_password + - source: postgres_role_service_zammad_password target: POSTGRESQL_PASS + volumes: + - zammad_storage:/opt/zammad/storage deploy: labels: - traefik.enable=true @@ -466,6 +471,7 @@ services: - traefik.http.routers.zammad-railsserver_secure.rule=Host(`zammad.${STACK_DOMAIN}`) && PathPrefix(`/api`) - traefik.http.routers.zammad-railsserver_secure.tls.options=mintls13@file - traefik.http.services.zammad-railsserver.loadbalancer.server.port=3000 + command: ["zammad-railsserver"] zammad-scheduler: image: zammad/zammad-docker-compose:latest @@ -474,8 +480,8 @@ services: - zammad-init environment: - POSTGRESQL_HOST=postgres - - POSTGRESQL_USER=${POSTGRES_USER} - - POSTGRESQL_PASS=${POSTGRES_PASSWORD} + - POSTGRESQL_USER_FILE=/run/secrets/POSTGRESQL_USER + - POSTGRESQL_PASS_FILE=/run/secrets/POSTGRESQL_PASS - POSTGRESQL_DB=zammad - ELASTICSEARCH_HOST=zammad-elasticsearch - ELASTICSEARCH_PORT=9200 @@ -484,9 +490,9 @@ services: - REDIS_URL=redis://zammad-redis:6379 secrets: - - source: postgres_user + - source: postgres_role_service_zammad_username target: POSTGRESQL_USER - - source: postgres_password + - source: postgres_role_service_zammad_password target: POSTGRESQL_PASS command: ["zammad-scheduler"] @@ -501,8 +507,8 @@ services: - zammad-init environment: - POSTGRESQL_HOST=postgres - - POSTGRESQL_USER=${POSTGRES_USER} - - POSTGRESQL_PASS=${POSTGRES_PASSWORD} + - POSTGRESQL_USER_FILE=/run/secrets/POSTGRESQL_USER + - POSTGRESQL_PASS_FILE=/run/secrets/POSTGRESQL_PASS - POSTGRESQL_DB=zammad - ELASTICSEARCH_HOST=zammad-elasticsearch - ELASTICSEARCH_PORT=9200 @@ -510,9 +516,9 @@ services: - ZAMMAD_WEBSOCKET_HOST=zammad-websocket - REDIS_URL=redis://zammad-redis:6379 secrets: - - source: postgres_user + - source: postgres_role_service_zammad_username target: POSTGRESQL_USER - - source: postgres_password + - source: postgres_role_service_zammad_password target: POSTGRESQL_PASS command: ["zammad-websocket"] deploy: @@ -530,21 +536,28 @@ services: image: zammad/zammad-docker-compose:latest restart: always depends_on: + - zammad-init - zammad-railsserver - zammad-websocket environment: - NGINX_SERVER_NAME=zammad.${STACK_DOMAIN} - REDIS_URL=redis://zammad-redis:6379 + volumes: + - zammad_storage:/opt/zammad/storage + deploy: labels: - traefik.enable=true + - traefik.http.routers.zammad.rule=Host(`zammad.${STACK_DOMAIN}`) - traefik.http.routers.zammad.entryPoints=web - traefik.http.routers.zammad.middlewares=redirectscheme - - traefik.http.routers.zammad.rule=Host(`zammad.${STACK_DOMAIN}`) - - traefik.http.routers.zammad_secure.entryPoints=web-secure - traefik.http.routers.zammad_secure.rule=Host(`zammad.${STACK_DOMAIN}`) + - traefik.http.routers.zammad_secure.entryPoints=web-secure + - traefik.http.routers.zammad_secure.tls=true - traefik.http.routers.zammad_secure.tls.options=mintls13@file - traefik.http.services.zammad.loadbalancer.server.port=80 + command: ["zammad-nginx"] + command: ["sh", "-c", "sleep 60 && zammad-nginx"] redpanda: # You can access the event streaming platform's ui as described under `redpanda-console`. @@ -754,3 +767,4 @@ volumes: # The frontend's data. {} zammad_elasticsearch_data: {} + zammad_storage: {} From ea509304d0cb411dc71533b4b86cb8d41de4b449 Mon Sep 17 00:00:00 2001 From: Sven Thelemann Date: Tue, 10 Jun 2025 23:27:36 +0200 Subject: [PATCH 3/3] feat(zammad): use x-shared section An x-shared section was added to the stack.yml file, similar as in the original docker-compose yaml file to reuse environment settings etc. in several Zammad services. --- README.md | 66 +++++++++++++++- src/development/stack.yml | 159 +++++++++++++++++++++++++++++++++++++- 2 files changed, 221 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e6a66709..72e47c46 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,11 @@ This project is deployed in accordance to the [DargStack template](https://githu 1. [secrets](#secrets) - 2. [services](#services) + 2. [x-shared](#x-shared) - 3. [volumes](#volumes) + 3. [services](#services) + + 4. [volumes](#volumes) ## secrets @@ -167,6 +169,14 @@ This project is deployed in accordance to the [DargStack template](https://githu The captcha provider's application key. +## x-shared + + + - ### `zammad-service` + + shared environment, image, volumes + + ## services @@ -274,6 +284,42 @@ This project is deployed in accordance to the [DargStack template](https://githu You can access the main project's frontend at [app.localhost](https://app.localhost/). + - ### `zammad-backup` + + Zammad backup. + + - ### `zammad-elasticsearch` + + Zammad Elastisearch. + + - ### `zammad-init` + + Zammad initialization. + + - ### `zammad-memcached` + + Zammad memcached. + + - ### `zammad-nginx` + + You can access the Zammad frontend at [zammad.localhost](https://zammad.localhost/). + + - ### `zammad-railsserver` + + Zammad railsserver. + + - ### `zammad-redis` + + Zammad redis. + + - ### `zammad-scheduler` + + Zammad scheduler. + + - ### `zammad-websocket` + + Zammad websocket. + ## volumes @@ -330,4 +376,20 @@ This project is deployed in accordance to the [DargStack template](https://githu The frontend's data. + - ### `zammad-backup` + + Zammad's backup data + + - ### `zammad-elasticsearch-data` + + Zammad's elastisearch data + + - ### `zammad-redis-data` + + Zammad's redis data + + - ### `zammad-storage` + + Zammad's storage data + diff --git a/src/development/stack.yml b/src/development/stack.yml index 9030175e..1707b276 100644 --- a/src/development/stack.yml +++ b/src/development/stack.yml @@ -3,6 +3,9 @@ # Vibetype # https://github.com/maevsi/vibetype/ --- + +#version: "3.7" + secrets: grafana_admin_email: # The observation dashboard's admin email. @@ -106,6 +109,69 @@ secrets: vibetype_turnstile-key: # The captcha provider's application key. file: ./secrets/vibetype/turnstile-key.secret + +x-shared: + zammad-service: &zammad-service + # shared environment, image, volumes + environment: &zammad-environment + MEMCACHE_SERVERS: ${MEMCACHE_SERVERS:-zammad-memcached:11211} + POSTGRESQL_DB: zammad + POSTGRESQL_HOST: postgres + POSTGRESQL_USER: zammad + POSTGRESQL_PASS: zammad + POSTGRESQL_PORT: 5432 + POSTGRESQL_OPTIONS: ${POSTGRESQL_OPTIONS:-?pool=50} + POSTGRESQL_DB_CREATE: "false" + REDIS_URL: ${REDIS_URL:-redis://zammad-redis:6379} + S3_URL: + # Backup settings + BACKUP_DIR: "${BACKUP_DIR:-/var/tmp/zammad}" + BACKUP_TIME: "${BACKUP_TIME:-03:00}" + HOLD_DAYS: "${HOLD_DAYS:-10}" + TZ: "${TZ:-Europe/Berlin}" + # Allow passing in these variables via .env: + AUTOWIZARD_JSON: + AUTOWIZARD_RELATIVE_PATH: + ELASTICSEARCH_ENABLED: + ELASTICSEARCH_SCHEMA: + ELASTICSEARCH_HOST: + ELASTICSEARCH_PORT: + ELASTICSEARCH_USER: ${ELASTICSEARCH_USER:-elastic} + ELASTICSEARCH_PASS: ${ELASTICSEARCH_PASS:-zammad} + ELASTICSEARCH_NAMESPACE: + ELASTICSEARCH_REINDEX: + NGINX_PORT: 8080 + NGINX_CLIENT_MAX_BODY_SIZE: + NGINX_SERVER_NAME: zammad.${STACK_DOMAIN} + NGINX_SERVER_SCHEME: https + RAILS_TRUSTED_PROXIES: + ZAMMAD_HTTP_TYPE: + ZAMMAD_FQDN: + ZAMMAD_WEB_CONCURRENCY: + ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS: + ZAMMAD_PROCESS_SCHEDULED_JOBS_WORKERS: + ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS: + ZAMMAD_RAILSSERVER_HOST: zammad-railsserver + ZAMMAD_WEBSOCKET_HOST: zammad-websocket + # ZAMMAD_SESSION_JOBS_CONCURRENT is deprecated, please use ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS instead. + ZAMMAD_SESSION_JOBS_CONCURRENT: + # Variables used by ngingx-proxy container for reverse proxy creations + # for docs refer to https://github.com/nginx-proxy/nginx-proxy + VIRTUAL_HOST: + VIRTUAL_PORT: + # Variables used by acme-companion for retrieval of LetsEncrypt certificate + # for docs refer to https://github.com/nginx-proxy/acme-companion + LETSENCRYPT_HOST: + LETSENCRYPT_EMAIL: + + image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.5.0-89} + volumes: + - zammad-storage:/opt/zammad/storage + depends_on: + - zammad-memcached + - postgresql + - zammad-redis + services: adminer: # You can access the database's frontend at [adminer.app.localhost](https://adminer.app.localhost/). @@ -405,6 +471,7 @@ services: volumes: - reccoom_postgres_data:/var/lib/postgresql/ zammad-elasticsearch: + # You cannot access the search engine via a web interface. image: bitnami/elasticsearch:${ELASTICSEARCH_VERSION:-8.18.0} restart: always volumes: @@ -413,6 +480,7 @@ services: - discovery.type=single-node zammad-init: + # You cannot access the helpdesk initialization container via a web interface. image: zammad/zammad-docker-compose:latest restart: on-failure depends_on: @@ -440,6 +508,7 @@ services: command: ["zammad-init"] zammad-railsserver: + # You can access the helpdesk's API at [zammad.app.localhost/api](https://zammad.app.localhost/api/). image: zammad/zammad-docker-compose:latest restart: always depends_on: @@ -474,6 +543,7 @@ services: command: ["zammad-railsserver"] zammad-scheduler: + # You cannot access the helpdesk job scheduler via a web interface. image: zammad/zammad-docker-compose:latest restart: always depends_on: @@ -497,10 +567,12 @@ services: command: ["zammad-scheduler"] zammad-redis: + # You cannot access the helpdesk's redis instance via a web interface. image: redis:7-alpine restart: always zammad-websocket: + # You cannot access the helpdesk's websocket server via a web interface. image: zammad/zammad-docker-compose:latest restart: always depends_on: @@ -533,6 +605,7 @@ services: - traefik.http.services.zammad-websocket.loadbalancer.server.port=6042 zammad-nginx: + # You can access the helpdesk's frontend at [zammad.app.localhost](https://zammad.app.localhost/). image: zammad/zammad-docker-compose:latest restart: always depends_on: @@ -728,6 +801,78 @@ services: - ../../../vibetype/:/srv/app/ #DARGSTACK-REMOVE - vibetype_data:/srv/app/node_modules #DARGSTACK-REMOVE - ./configurations/postgraphile/jwtRS256.key.pub:/run/environment-variables/NUXT_PUBLIC_VIO_AUTH_JWT_PUBLIC_KEY:ro + zammad-backup: + # Zammad backup. + <<: *zammad-service + command: ["zammad-backup"] + volumes: + - zammad-backup:/var/tmp/zammad + - zammad-storage:/opt/zammad/storage:ro + user: 0:0 + + zammad-elasticsearch: + # Zammad Elastisearch. + image: bitnami/elasticsearch:${ELASTICSEARCH_VERSION:-8.18.0} + volumes: + - zammad-elasticsearch-data:/bitnami/elasticsearch/data + environment: + # Enable authorization without HTTPS. For external access with + # SSL termination, use solutions like nginx-proxy-manager. + ELASTICSEARCH_ENABLE_SECURITY: 'true' + ELASTICSEARCH_SKIP_TRANSPORT_TLS: 'true' + ELASTICSEARCH_ENABLE_REST_TLS: 'false' + # ELASTICSEARCH_USER is hardcoded to 'elastic' in the container. + ELASTICSEARCH_PASSWORD: ${ELASTICSEARCH_PASS:-zammad} + + zammad-init: + # Zammad initialization. + <<: *zammad-service + command: ["zammad-init"] + depends_on: + - postgresql + user: 0:0 + + zammad-memcached: + # Zammad memcached. + command: memcached -m 256M + image: memcached:${MEMCACHE_VERSION:-1.6.38-alpine} + + zammad-nginx: + # You can access the Zammad frontend at [zammad.localhost](https://zammad.localhost/). + <<: *zammad-service + deploy: + labels: + - traefik.enable=true + - traefik.http.routers.zammad.entryPoints=web + - traefik.http.routers.zammad.middlewares=redirectscheme #DARGSTACK-REMOVE + - traefik.http.routers.zammad.rule=Host(`zammad.${STACK_DOMAIN}`) + - traefik.http.routers.zammad_secure.entryPoints=web-secure + - traefik.http.routers.zammad_secure.rule=Host(`zammad.${STACK_DOMAIN}`) + - traefik.http.routers.zammad_secure.tls.options=mintls13@file #DARGSTACK-REMOVE + - traefik.http.services.zammad.loadbalancer.server.port=8080 + command: ["zammad-nginx"] + + zammad-railsserver: + # Zammad railsserver. + <<: *zammad-service + command: ["zammad-railsserver"] + + zammad-redis: + # Zammad redis. + image: redis:${REDIS_VERSION:-7.4.3-alpine} + volumes: + - zammad-redis-data:/data + + zammad-scheduler: + # Zammad scheduler. + <<: *zammad-service + command: ["zammad-scheduler"] + + zammad-websocket: + # Zammad websocket. + <<: *zammad-service + command: ["zammad-websocket"] + version: "3.7" volumes: debezium_kafka_configuration: @@ -766,5 +911,15 @@ volumes: vibetype_data: # The frontend's data. {} - zammad_elasticsearch_data: {} - zammad_storage: {} + zammad-elasticsearch-data: + # Zammad's elastisearch data + {} + zammad-redis-data: + # Zammad's redis data + {} + zammad-backup: + # Zammad's backup data + {} + zammad-storage: + # Zammad's storage data + {}