Zammad will now run

This commit is contained in:
2025-10-15 12:36:45 -07:00
parent 70eeeb07f5
commit 867655e84e
3 changed files with 92 additions and 71 deletions
+3
View File
@@ -1,5 +1,7 @@
# Zammad # Zammad
Proxy port: 8080 on zammad-nginx
Zammad has good support for their own repo, probably better to use that one. Zammad has good support for their own repo, probably better to use that one.
This is just Zammad for my own This is just Zammad for my own
@@ -7,3 +9,4 @@ Official Documenation: https://docs.zammad.org/en/latest/install/docker-compose.
Official Repository: https://github.com/zammad/zammad-docker-compose/blob/master/docker-compose.yml Official Repository: https://github.com/zammad/zammad-docker-compose/blob/master/docker-compose.yml
chmod data directory to 1000:1000
+49 -55
View File
@@ -1,9 +1,9 @@
--- ---
version: "3.8"
x-shared: x-shared:
zammad-service: &zammad-service zammad-service: &zammad-service
environment: &zammad-environment environment: &zammad-environment
# Core database and caching
MEMCACHE_SERVERS: ${MEMCACHE_SERVERS:-zammad-memcached:11211} MEMCACHE_SERVERS: ${MEMCACHE_SERVERS:-zammad-memcached:11211}
POSTGRESQL_DB: ${POSTGRES_DB:-zammad_production} POSTGRESQL_DB: ${POSTGRES_DB:-zammad_production}
POSTGRESQL_HOST: ${POSTGRES_HOST:-zammad-postgresql} POSTGRESQL_HOST: ${POSTGRES_HOST:-zammad-postgresql}
@@ -11,70 +11,71 @@ x-shared:
POSTGRESQL_PASS: ${POSTGRES_PASS:-zammad} POSTGRESQL_PASS: ${POSTGRES_PASS:-zammad}
POSTGRESQL_PORT: ${POSTGRES_PORT:-5432} POSTGRESQL_PORT: ${POSTGRES_PORT:-5432}
POSTGRESQL_OPTIONS: ${POSTGRESQL_OPTIONS:-?pool=50} POSTGRESQL_OPTIONS: ${POSTGRESQL_OPTIONS:-?pool=50}
POSTGRESQL_DB_CREATE: POSTGRESQL_DB_CREATE: ${POSTGRESQL_DB_CREATE:-true}
REDIS_URL: ${REDIS_URL:-redis://zammad-redis:6379} REDIS_URL: ${REDIS_URL:-redis://zammad-redis:6379}
S3_URL: # Storage (S3 optional; leave empty for local)
S3_URL: ${S3_URL:-}
# Backup settings # Backup settings
BACKUP_DIR: "${BACKUP_DIR:-/var/tmp/zammad}" BACKUP_DIR: "${BACKUP_DIR:-/var/tmp/zammad}"
BACKUP_TIME: "${BACKUP_TIME:-03:00}" BACKUP_TIME: "${BACKUP_TIME:-03:00}"
HOLD_DAYS: "${HOLD_DAYS:-10}" HOLD_DAYS: "${HOLD_DAYS:-10}"
TZ: "${TZ:-Europe/Berlin}" TZ: "${TZ:-Europe/Berlin}"
# Allow passing in these variables via .env: # Elasticsearch (defaults enable it with basic config)
AUTOWIZARD_JSON: ELASTICSEARCH_ENABLED: ${ELASTICSEARCH_ENABLED:-true}
AUTOWIZARD_RELATIVE_PATH: ELASTICSEARCH_SCHEMA: ${ELASTICSEARCH_SCHEMA:-http}
ELASTICSEARCH_ENABLED: ELASTICSEARCH_HOST: ${ELASTICSEARCH_HOST:-zammad-elasticsearch}
ELASTICSEARCH_SCHEMA: ELASTICSEARCH_PORT: ${ELASTICSEARCH_PORT:-9200}
ELASTICSEARCH_HOST: ELASTICSEARCH_USER: ${ELASTICSEARCH_USER:-}
ELASTICSEARCH_PORT: ELASTICSEARCH_PASS: ${ELASTICSEARCH_PASS:-}
ELASTICSEARCH_USER: ELASTICSEARCH_NAMESPACE: ${ELASTICSEARCH_NAMESPACE:-zammad}
ELASTICSEARCH_PASS: ELASTICSEARCH_REINDEX: ${ELASTICSEARCH_REINDEX:-}
ELASTICSEARCH_NAMESPACE: # Zammad app config (no strict defaults; override in .env)
ELASTICSEARCH_REINDEX: AUTOWIZARD_JSON: ${AUTOWIZARD_JSON:-}
NGINX_PORT: AUTOWIZARD_RELATIVE_PATH: ${AUTOWIZARD_RELATIVE_PATH:-}
NGINX_CLIENT_MAX_BODY_SIZE: ZAMMAD_HTTP_TYPE: ${ZAMMAD_HTTP_TYPE:-}
NGINX_SERVER_NAME: ZAMMAD_FQDN: ${ZAMMAD_FQDN:-}
NGINX_SERVER_SCHEME: ZAMMAD_WEB_CONCURRENCY: ${ZAMMAD_WEB_CONCURRENCY:-}
RAILS_TRUSTED_PROXIES: ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS: ${ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS:-}
ZAMMAD_HTTP_TYPE: ZAMMAD_PROCESS_SCHEDULED_JOBS_WORKERS: ${ZAMMAD_PROCESS_SCHEDULED_JOBS_WORKERS:-}
ZAMMAD_FQDN: ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS: ${ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS:-}
ZAMMAD_WEB_CONCURRENCY: # Deprecated (kept for compatibility)
ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS: ZAMMAD_SESSION_JOBS_CONCURRENT: ${ZAMMAD_SESSION_JOBS_CONCURRENT:-}
ZAMMAD_PROCESS_SCHEDULED_JOBS_WORKERS: # NGINX defaults
ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS: NGINX_PORT: ${NGINX_PORT:-8080}
# ZAMMAD_SESSION_JOBS_CONCURRENT is deprecated, please use ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS instead. NGINX_CLIENT_MAX_BODY_SIZE: ${NGINX_CLIENT_MAX_BODY_SIZE:-50M}
ZAMMAD_SESSION_JOBS_CONCURRENT: NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_}
# Variables used by ngingx-proxy container for reverse proxy creations NGINX_SERVER_SCHEME: $scheme
# for docs refer to https://github.com/nginx-proxy/nginx-proxy RAILS_TRUSTED_PROXIES: ${RAILS_TRUSTED_PROXIES:-"['127.0.0.1', '::1']"}
VIRTUAL_HOST: # Proxy vars (for nginx-proxy/acme-companion integration)
VIRTUAL_PORT: VIRTUAL_HOST: ${VIRTUAL_HOST:-}
# Variables used by acme-companion for retrieval of LetsEncrypt certificate VIRTUAL_PORT: ${VIRTUAL_PORT:-}
# for docs refer to https://github.com/nginx-proxy/acme-companion LETSENCRYPT_HOST: ${LETSENCRYPT_HOST:-}
LETSENCRYPT_HOST: LETSENCRYPT_EMAIL: ${LETSENCRYPT_EMAIL:-}
LETSENCRYPT_EMAIL:
image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.5.1} image: ${IMAGE_REPO:-ghcr.io/zammad/zammad}:${VERSION:-6.5.2}
restart: ${RESTART:-always} restart: ${RESTART:-always}
volumes: volumes:
- zammad-storage:/opt/zammad/storage - ${VOL_PATH:-./data}/zammad/storage:/opt/zammad/storage
depends_on: depends_on:
- zammad-memcached - zammad-memcached
- zammad-postgresql - zammad-postgresql
- zammad-redis - zammad-redis
- zammad-elasticsearch # Conditional via ELASTICSEARCH_ENABLED, but include for safety
services: services:
zammad-backup: zammad-backup:
<<: *zammad-service <<: *zammad-service
command: ["zammad-backup"] command: ["zammad-backup"]
volumes: volumes:
- zammad-backup:/var/tmp/zammad - ${VOL_PATH:-./data}/zammad/backup:${BACKUP_DIR:-/var/tmp/zammad}
- zammad-storage:/opt/zammad/storage:ro - ${VOL_PATH:-./data}/zammad/storage:/opt/zammad/storage:ro
user: 0:0 user: 0:0
zammad-elasticsearch: zammad-elasticsearch:
image: elasticsearch:${ELASTICSEARCH_VERSION:-8.19.2} image: elasticsearch:${ELASTICSEARCH_VERSION:-8.19.2}
restart: ${RESTART:-always} restart: ${RESTART:-always}
volumes: volumes:
- elasticsearch-data:/usr/share/elasticsearch/data - ${VOL_PATH:-./data}/elasticsearch:/usr/share/elasticsearch/data
environment: environment:
discovery.type: single-node discovery.type: single-node
xpack.security.enabled: 'false' xpack.security.enabled: 'false'
@@ -85,6 +86,9 @@ services:
command: ["zammad-init"] command: ["zammad-init"]
depends_on: depends_on:
- zammad-postgresql - zammad-postgresql
- zammad-memcached
- zammad-redis
- zammad-elasticsearch # Ensures full init if enabled
restart: on-failure restart: on-failure
user: 0:0 user: 0:0
@@ -98,8 +102,8 @@ services:
command: ["zammad-nginx"] command: ["zammad-nginx"]
expose: expose:
- "${NGINX_PORT:-8080}" - "${NGINX_PORT:-8080}"
ports: #ports:
- "${NGINX_EXPOSE_PORT:-8080}:${NGINX_PORT:-8080}" # - "${NGINX_EXPOSE_PORT:-8080}:${NGINX_PORT:-8080}"
depends_on: depends_on:
- zammad-railsserver - zammad-railsserver
@@ -111,7 +115,7 @@ services:
image: postgres:${POSTGRES_VERSION:-17.5-alpine} image: postgres:${POSTGRES_VERSION:-17.5-alpine}
restart: ${RESTART:-always} restart: ${RESTART:-always}
volumes: volumes:
- postgresql-data:/var/lib/postgresql/data - ${VOL_PATH:-./data}/postgresql:/var/lib/postgresql/data
zammad-railsserver: zammad-railsserver:
<<: *zammad-service <<: *zammad-service
@@ -121,7 +125,7 @@ services:
image: redis:${REDIS_VERSION:-7.4.5-alpine} image: redis:${REDIS_VERSION:-7.4.5-alpine}
restart: ${RESTART:-always} restart: ${RESTART:-always}
volumes: volumes:
- redis-data:/data - ${VOL_PATH:-./data}/redis:/data
zammad-scheduler: zammad-scheduler:
<<: *zammad-service <<: *zammad-service
@@ -131,14 +135,4 @@ services:
<<: *zammad-service <<: *zammad-service
command: ["zammad-websocket"] command: ["zammad-websocket"]
volumes: # No named volumes defined; using bind mounts to ./data/* subdirs for easy local access
elasticsearch-data:
driver: local
postgresql-data:
driver: local
redis-data:
driver: local
zammad-backup:
driver: local
zammad-storage:
driver: local
+40 -16
View File
@@ -9,15 +9,21 @@
# RESTART=always # RESTART=always
# Base path for all persistent data (defaults to ./data relative to docker-compose.yml)
VOL_PATH=./data
TZ="America/Vancouver"
COMPOSE_PROJECT_NAME=zammad
# Use a fixed Zammad version rather than the default. If you do so, # Use a fixed Zammad version rather than the default. If you do so,
# you are responsible to update this to newer patch level versions yourself. # you are responsible to update this to newer patch level versions yourself.
# The tag format is zammad-VERSION-BUILD (e.g., zammad-6.5.1-1). Check https://hub.docker.com/r/zammad/zammad-docker-compose/tags for latest.
# VERSION=6.5.1 # VERSION=6.5.1
# You can also use floating versions that will give you automatic updates: # You can also use floating versions that will give you automatic updates:
# VERSION=6.2 # all patchlevel updates # VERSION=6.2 # all patchlevel updates
# VERSION=6 # including minor updates # VERSION=6 # including minor updates
# VERSION=latest # all updates of stable versions, including major # VERSION=latest # all updates of stable versions, including major
# VERSION=develop # bleeding-edge development version # VERSION=develop # bleeding-edge development version
# IMAGE_REPO=ghcr.io/zammad/zammad # IMAGE_REPO=zammad/zammad-docker-compose
# ELASTICSEARCH_VERSION=8.19.2 # ELASTICSEARCH_VERSION=8.19.2
# MEMCACHE_SERVERS=zammad-memcached:11211 # MEMCACHE_SERVERS=zammad-memcached:11211
@@ -26,37 +32,55 @@
# REDIS_VERSION=7.4.5-alpine # REDIS_VERSION=7.4.5-alpine
# POSTGRES_VERSION=17.5-alpine # POSTGRES_VERSION=17.5-alpine
# RAILS_TRUSTED_PROXIES=
# ZAMMAD_HTTP_TYPE=
# ZAMMAD_FQDN=
# NGINX_PORT=8080
# NGINX_EXPOSE_PORT=8080
# NGINX_CLIENT_MAX_BODY_SIZE=50M
# POSTGRES_DB=zammad_production # POSTGRES_DB=zammad_production
# POSTGRES_PASS=zammad # POSTGRES_PASS=zammad
# POSTGRES_USER=zammad # POSTGRES_USER=zammad
# POSTGRES_HOST=zammad-postgresql # POSTGRES_HOST=zammad-postgresql
# POSTGRES_PORT=5432 # POSTGRES_PORT=5432
# POSTGRESQL_OPTIONS=?pool=50 # POSTGRESQL_OPTIONS=?pool=50
# POSTGRESQL_DB_CREATE=true
# ELASTICSEARCH_ENABLED=true
# ELASTICSEARCH_SCHEMA=http # ELASTICSEARCH_SCHEMA=http
# ELASTICSEARCH_HOST=zammad-elasticsearch # ELASTICSEARCH_HOST=zammad-elasticsearch
# ELASTICSEARCH_PORT=9200 # ELASTICSEARCH_PORT=9200
# ELASTICSEARCH_USER=elastic # ELASTICSEARCH_USER= # Leave empty if no auth (xpack.security.enabled=false)
# ELASTICSEARCH_PASS=zammad # ELASTICSEARCH_PASS=
# ELASTICSEARCH_NAMESPACE=zammad # ELASTICSEARCH_NAMESPACE=zammad
# ELASTICSEARCH_REINDEX=true # ELASTICSEARCH_REINDEX= # Set to 'true' to force reindex
# ELASTICSEARCH_JAVA_OPTS=-Xms1g -Xmx1g # ELASTICSEARCH_JAVA_OPTS=-Xms1g -Xmx1g
# Variables used by ngingx-proxy container for reverse proxy creations, # RAILS_TRUSTED_PROXIES= # Default: ['127.0.0.1', '::1']
# ZAMMAD_HTTP_TYPE= # e.g., 'https'
# ZAMMAD_FQDN= # e.g., yourdomain.com
# NGINX_PORT=8080
# NGINX_EXPOSE_PORT=8080
# NGINX_CLIENT_MAX_BODY_SIZE=50M
# NGINX_SERVER_NAME=_ # '_' matches all; set to your FQDN/IP for restriction
# NGINX_SERVER_SCHEME=$scheme # Or force 'http'/'https'
# Backup settings
# BACKUP_DIR=/var/tmp/zammad
# BACKUP_TIME=03:00
# HOLD_DAYS=10
# TZ=Europe/Berlin
# App tuning (scale workers as needed)
# ZAMMAD_WEB_CONCURRENCY= # e.g., 4 for more concurrent web connections
# ZAMMAD_PROCESS_SESSIONS_JOBS_WORKERS= # e.g., 2
# ZAMMAD_PROCESS_SCHEDULED_JOBS_WORKERS=1
# ZAMMAD_PROCESS_DELAYED_JOBS_WORKERS= # e.g., 3
# Variables used by nginx-proxy container for reverse proxy creations,
# for docs refer to https://github.com/nginx-proxy/nginx-proxy. # for docs refer to https://github.com/nginx-proxy/nginx-proxy.
# VIRTUAL_HOST= # VIRTUAL_HOST=yourdomain.com
# VIRTUAL_PORT= # VIRTUAL_PORT=80
# Variables used by acme-companion for retrieval of LetsEncrypt certificate, # Variables used by acme-companion for retrieval of LetsEncrypt certificate,
# for docs refer to https://github.com/nginx-proxy/acme-companion. # for docs refer to https://github.com/nginx-proxy/acme-companion.
# LETSENCRYPT_HOST= # LETSENCRYPT_HOST=yourdomain.com
# LETSENCRYPT_EMAIL= # LETSENCRYPT_EMAIL=admin@yourdomain.com
############################################# #############################################
# scenarios/add-cloudflare-tunnel.yml # scenarios/add-cloudflare-tunnel.yml