services: zammad-postgresql: image: postgres:${POSTGRES_VERSION:-17.5-alpine} restart: ${ZAMMAD_RESTART:-always} volumes: - ${VOL_PATH:-/data}/zammad/postgresql:/var/lib/postgresql/data environment: - POSTGRES_DB=${POSTGRES_DB:-zammad_production} - POSTGRES_USER=${POSTGRES_USER:-zammad} - POSTGRES_PASSWORD=${POSTGRES_PASS:-zammad} networks: - internal zammad-redis: image: redis:${REDIS_VERSION:-7.4.5-alpine} restart: ${ZAMMAD_RESTART:-always} volumes: - ${VOL_PATH:-/data}/zammad/redis:/data networks: - internal zammad-memcached: image: memcached:${MEMCACHE_VERSION:-1.6.39-alpine} restart: ${ZAMMAD_RESTART:-always} volumes: - ${VOL_PATH:-/data}/zammad/memcached:/data networks: - internal command: memcached -m 256M zammad-elasticsearch: image: elasticsearch:${ELASTICSEARCH_VERSION:-8.19.2} restart: ${ZAMMAD_RESTART:-always} volumes: - ${VOL_PATH:-/data}/zammad/elasticsearch:/usr/share/elasticsearch/data environment: - discovery.type=single-node - xpack.security.enabled=false - ES_JAVA_OPTS=${ELASTICSEARCH_JAVA_OPTS:--Xms1g -Xmx1g} networks: - internal zammad-init: image: ${ZAMMAD_IMAGE:-ghcr.io/zammad/zammad:latest} restart: on-failure volumes: - ${VOL_PATH:-/data}/zammad/storage:/opt/zammad/storage environment: - TZ=${TZ:-America/Vancouver} - MEMCACHE_SERVERS=${MEMCACHE_SERVERS:-zammad-memcached:11211} - POSTGRESQL_DB=${POSTGRES_DB:-zammad_production} - POSTGRESQL_HOST=${POSTGRES_HOST:-zammad-postgresql} - POSTGRESQL_USER=${POSTGRES_USER:-zammad} - POSTGRESQL_PASS=${POSTGRES_PASS:-zammad} - POSTGRESQL_PORT=${POSTGRES_PORT:-5432} - POSTGRESQL_OPTIONS=${POSTGRESQL_OPTIONS:-?pool=50} - POSTGRESQL_DB_CREATE=${POSTGRESQL_DB_CREATE:-true} - REDIS_URL=${REDIS_URL:-redis://zammad-redis:6379} - ELASTICSEARCH_ENABLED=${ELASTICSEARCH_ENABLED:-true} - ELASTICSEARCH_SCHEMA=http - ELASTICSEARCH_HOST=${ELASTICSEARCH_HOST:-zammad-elasticsearch} - ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT:-9200} - NGINX_PORT=${NGINX_PORT:-8080} - NGINX_SERVER_NAME=${NGINX_SERVER_NAME:-_} - NGINX_SERVER_SCHEME=$scheme networks: - internal depends_on: - zammad-postgresql - zammad-redis - zammad-memcached - zammad-elasticsearch command: ["zammad-init"] user: 0:0 zammad-railsserver: image: ${ZAMMAD_IMAGE:-ghcr.io/zammad/zammad:latest} restart: ${ZAMMAD_RESTART:-always} volumes: - ${VOL_PATH:-/data}/zammad/storage:/opt/zammad/storage environment: - TZ=${TZ:-America/Vancouver} - MEMCACHE_SERVERS=${MEMCACHE_SERVERS:-zammad-memcached:11211} - POSTGRESQL_DB=${POSTGRES_DB:-zammad_production} - POSTGRESQL_HOST=${POSTGRES_HOST:-zammad-postgresql} - POSTGRESQL_USER=${POSTGRES_USER:-zammad} - POSTGRESQL_PASS=${POSTGRES_PASS:-zammad} - POSTGRESQL_PORT=${POSTGRES_PORT:-5432} - POSTGRESQL_OPTIONS=${POSTGRESQL_OPTIONS:-?pool=50} - REDIS_URL=${REDIS_URL:-redis://zammad-redis:6379} - ELASTICSEARCH_ENABLED=${ELASTICSEARCH_ENABLED:-true} - ELASTICSEARCH_SCHEMA=http - ELASTICSEARCH_HOST=${ELASTICSEARCH_HOST:-zammad-elasticsearch} - ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT:-9200} - NGINX_PORT=${NGINX_PORT:-8080} - NGINX_SERVER_NAME=${NGINX_SERVER_NAME:-_} - RAILS_TRUSTED_PROXIES=${RAILS_TRUSTED_PROXIES:-"['127.0.0.1', '::1']"} networks: - internal depends_on: - zammad-postgresql - zammad-redis - zammad-memcached - zammad-elasticsearch command: ["zammad-railsserver"] zammad-scheduler: image: ${ZAMMAD_IMAGE:-ghcr.io/zammad/zammad:latest} restart: ${ZAMMAD_RESTART:-always} volumes: - ${VOL_PATH:-/data}/zammad/storage:/opt/zammad/storage environment: - TZ=${TZ:-America/Vancouver} - MEMCACHE_SERVERS=${MEMCACHE_SERVERS:-zammad-memcached:11211} - POSTGRESQL_DB=${POSTGRES_DB:-zammad_production} - POSTGRESQL_HOST=${POSTGRES_HOST:-zammad-postgresql} - POSTGRESQL_USER=${POSTGRES_USER:-zammad} - POSTGRESQL_PASS=${POSTGRES_PASS:-zammad} - POSTGRESQL_PORT=${POSTGRES_PORT:-5432} - POSTGRESQL_OPTIONS=${POSTGRESQL_OPTIONS:-?pool=50} - REDIS_URL=${REDIS_URL:-redis://zammad-redis:6379} - ELASTICSEARCH_ENABLED=${ELASTICSEARCH_ENABLED:-true} - ELASTICSEARCH_SCHEMA=http - ELASTICSEARCH_HOST=${ELASTICSEARCH_HOST:-zammad-elasticsearch} - ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT:-9200} - NGINX_PORT=${NGINX_PORT:-8080} - NGINX_SERVER_NAME=${NGINX_SERVER_NAME:-_} networks: - internal depends_on: - zammad-postgresql - zammad-redis - zammad-memcached - zammad-elasticsearch command: ["zammad-scheduler"] zammad-websocket: image: ${ZAMMAD_IMAGE:-ghcr.io/zammad/zammad:latest} restart: ${ZAMMAD_RESTART:-always} volumes: - ${VOL_PATH:-/data}/zammad/storage:/opt/zammad/storage environment: - TZ=${TZ:-America/Vancouver} - MEMCACHE_SERVERS=${MEMCACHE_SERVERS:-zammad-memcached:11211} - POSTGRESQL_DB=${POSTGRES_DB:-zammad_production} - POSTGRESQL_HOST=${POSTGRES_HOST:-zammad-postgresql} - POSTGRESQL_USER=${POSTGRES_USER:-zammad} - POSTGRESQL_PASS=${POSTGRES_PASS:-zammad} - POSTGRESQL_PORT=${POSTGRES_PORT:-5432} - POSTGRESQL_OPTIONS=${POSTGRESQL_OPTIONS:-?pool=50} - REDIS_URL=${REDIS_URL:-redis://zammad-redis:6379} - ELASTICSEARCH_ENABLED=${ELASTICSEARCH_ENABLED:-true} - ELASTICSEARCH_SCHEMA=http - ELASTICSEARCH_HOST=${ELASTICSEARCH_HOST:-zammad-elasticsearch} - ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT:-9200} - NGINX_PORT=${NGINX_PORT:-8080} - NGINX_SERVER_NAME=${NGINX_SERVER_NAME:-_} networks: - internal depends_on: - zammad-postgresql - zammad-redis - zammad-memcached - zammad-elasticsearch command: ["zammad-websocket"] zammad-backup: image: ${ZAMMAD_IMAGE:-ghcr.io/zammad/zammad:latest} restart: ${ZAMMAD_RESTART:-always} volumes: - ${VOL_PATH:-/data}/zammad/backup:/var/tmp/zammad - ${VOL_PATH:-/data}/zammad/storage:/opt/zammad/storage:ro environment: - TZ=${TZ:-America/Vancouver} - MEMCACHE_SERVERS=${MEMCACHE_SERVERS:-zammad-memcached:11211} - POSTGRESQL_DB=${POSTGRES_DB:-zammad_production} - POSTGRESQL_HOST=${POSTGRES_HOST:-zammad-postgresql} - POSTGRESQL_USER=${POSTGRES_USER:-zammad} - POSTGRESQL_PASS=${POSTGRES_PASS:-zammad} - POSTGRESQL_PORT=${POSTGRES_PORT:-5432} - POSTGRESQL_OPTIONS=${POSTGRESQL_OPTIONS:-?pool=50} - REDIS_URL=${REDIS_URL:-redis://zammad-redis:6379} - ELASTICSEARCH_ENABLED=${ELASTICSEARCH_ENABLED:-true} - ELASTICSEARCH_SCHEMA=http - ELASTICSEARCH_HOST=${ELASTICSEARCH_HOST:-zammad-elasticsearch} - ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT:-9200} - BACKUP_DIR=/var/tmp/zammad - BACKUP_TIME=${BACKUP_TIME:-03:00} - HOLD_DAYS=${HOLD_DAYS:-10} - NGINX_PORT=${NGINX_PORT:-8080} - NGINX_SERVER_NAME=${NGINX_SERVER_NAME:-_} networks: - internal depends_on: - zammad-postgresql - zammad-redis - zammad-memcached - zammad-elasticsearch command: ["zammad-backup"] user: 0:0 zammad-nginx: image: ${ZAMMAD_IMAGE:-ghcr.io/zammad/zammad:latest} restart: ${ZAMMAD_RESTART:-always} volumes: - ${VOL_PATH:-/data}/zammad/storage:/opt/zammad/storage environment: - TZ=${TZ:-America/Vancouver} - MEMCACHE_SERVERS=${MEMCACHE_SERVERS:-zammad-memcached:11211} - POSTGRESQL_DB=${POSTGRES_DB:-zammad_production} - POSTGRESQL_HOST=${POSTGRES_HOST:-zammad-postgresql} - POSTGRESQL_USER=${POSTGRES_USER:-zammad} - POSTGRESQL_PASS=${POSTGRES_PASS:-zammad} - POSTGRESQL_PORT=${POSTGRES_PORT:-5432} - POSTGRESQL_OPTIONS=${POSTGRESQL_OPTIONS:-?pool=50} - REDIS_URL=${REDIS_URL:-redis://zammad-redis:6379} - ELASTICSEARCH_ENABLED=${ELASTICSEARCH_ENABLED:-true} - ELASTICSEARCH_SCHEMA=http - ELASTICSEARCH_HOST=${ELASTICSEARCH_HOST:-zammad-elasticsearch} - ELASTICSEARCH_PORT=${ELASTICSEARCH_PORT:-9200} - NGINX_PORT=${NGINX_PORT:-8080} - NGINX_SERVER_NAME=${NGINX_SERVER_NAME:-_} - NGINX_SERVER_SCHEME=$scheme - RAILS_TRUSTED_PROXIES=${RAILS_TRUSTED_PROXIES:-"['127.0.0.1', '::1']"} ports: - "${ZAMMAD_PORT:-8080}:${NGINX_PORT:-8080}" networks: - proxy - internal depends_on: - zammad-railsserver command: ["zammad-nginx"] networks: proxy: external: true internal: