diff --git a/zammad/README.md b/zammad/README.md index 897c345..fc963a8 100644 --- a/zammad/README.md +++ b/zammad/README.md @@ -1,7 +1,9 @@ # Zammad -Work in progress. +Zammad has good support for their own repo, probably better to use that one. +This is just Zammad for my own Official Documenation: https://docs.zammad.org/en/latest/install/docker-compose.html -Official Repository: https://github.com/zammad/zammad-docker-compose/blob/master/docker-compose.yml \ No newline at end of file +Official Repository: https://github.com/zammad/zammad-docker-compose/blob/master/docker-compose.yml + diff --git a/zammad/docker-compose.yml b/zammad/docker-compose.yml new file mode 100644 index 0000000..3f1d3db --- /dev/null +++ b/zammad/docker-compose.yml @@ -0,0 +1,144 @@ +--- +version: "3.8" + +x-shared: + zammad-service: &zammad-service + environment: &zammad-environment + 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: + 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_PASS: + ELASTICSEARCH_NAMESPACE: + ELASTICSEARCH_REINDEX: + NGINX_PORT: + NGINX_CLIENT_MAX_BODY_SIZE: + NGINX_SERVER_NAME: + NGINX_SERVER_SCHEME: + 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_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.1} + restart: ${RESTART:-always} + volumes: + - zammad-storage:/opt/zammad/storage + depends_on: + - zammad-memcached + - zammad-postgresql + - zammad-redis + +services: + zammad-backup: + <<: *zammad-service + command: ["zammad-backup"] + volumes: + - zammad-backup:/var/tmp/zammad + - zammad-storage:/opt/zammad/storage:ro + user: 0:0 + + zammad-elasticsearch: + image: elasticsearch:${ELASTICSEARCH_VERSION:-8.19.2} + restart: ${RESTART:-always} + volumes: + - elasticsearch-data:/usr/share/elasticsearch/data + environment: + discovery.type: single-node + xpack.security.enabled: 'false' + ES_JAVA_OPTS: ${ELASTICSEARCH_JAVA_OPTS:--Xms1g -Xmx1g} + + zammad-init: + <<: *zammad-service + command: ["zammad-init"] + depends_on: + - zammad-postgresql + restart: on-failure + user: 0:0 + + zammad-memcached: + command: memcached -m 256M + image: memcached:${MEMCACHE_VERSION:-1.6.39-alpine} + restart: ${RESTART:-always} + + zammad-nginx: + <<: *zammad-service + command: ["zammad-nginx"] + expose: + - "${NGINX_PORT:-8080}" + ports: + - "${NGINX_EXPOSE_PORT:-8080}:${NGINX_PORT:-8080}" + depends_on: + - zammad-railsserver + + zammad-postgresql: + environment: + POSTGRES_DB: ${POSTGRES_DB:-zammad_production} + POSTGRES_USER: ${POSTGRES_USER:-zammad} + POSTGRES_PASSWORD: ${POSTGRES_PASS:-zammad} + image: postgres:${POSTGRES_VERSION:-17.5-alpine} + restart: ${RESTART:-always} + volumes: + - postgresql-data:/var/lib/postgresql/data + + zammad-railsserver: + <<: *zammad-service + command: ["zammad-railsserver"] + + zammad-redis: + image: redis:${REDIS_VERSION:-7.4.5-alpine} + restart: ${RESTART:-always} + volumes: + - redis-data:/data + + zammad-scheduler: + <<: *zammad-service + command: ["zammad-scheduler"] + + zammad-websocket: + <<: *zammad-service + command: ["zammad-websocket"] + +volumes: + elasticsearch-data: + driver: local + postgresql-data: + driver: local + redis-data: + driver: local + zammad-backup: + driver: local + zammad-storage: + driver: local \ No newline at end of file diff --git a/zammad/env-sample b/zammad/env-sample new file mode 100644 index 0000000..da710a1 --- /dev/null +++ b/zammad/env-sample @@ -0,0 +1,118 @@ +############################################# +# Docker Environment Variables +# https://docs.zammad.org/en/latest/install/docker-compose/environment.html +############################################# + +############################################# +# docker-compose.yml - These variables only need to be set if they do not have the default value. +############################################# + +# RESTART=always + +# 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. +# VERSION=6.5.1 +# You can also use floating versions that will give you automatic updates: +# VERSION=6.2 # all patchlevel updates +# VERSION=6 # including minor updates +# VERSION=latest # all updates of stable versions, including major +# VERSION=develop # bleeding-edge development version +# IMAGE_REPO=ghcr.io/zammad/zammad + +# ELASTICSEARCH_VERSION=8.19.2 +# MEMCACHE_SERVERS=zammad-memcached:11211 +# MEMCACHE_VERSION=1.6.39-alpine +# REDIS_URL=redis://zammad-redis:6379 +# REDIS_VERSION=7.4.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_PASS=zammad +# POSTGRES_USER=zammad +# POSTGRES_HOST=zammad-postgresql +# POSTGRES_PORT=5432 +# POSTGRESQL_OPTIONS=?pool=50 + +# ELASTICSEARCH_SCHEMA=http +# ELASTICSEARCH_HOST=zammad-elasticsearch +# ELASTICSEARCH_PORT=9200 +# ELASTICSEARCH_USER=elastic +# ELASTICSEARCH_PASS=zammad +# ELASTICSEARCH_NAMESPACE=zammad +# ELASTICSEARCH_REINDEX=true +# ELASTICSEARCH_JAVA_OPTS=-Xms1g -Xmx1g + +# 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= + +############################################# +# scenarios/add-cloudflare-tunnel.yml +############################################# + +# CLOUDFLARE_TUNNEL_TOKEN=mytoken + +############################################# +# scenarios/add-external-network-to-nginx.yml +############################################# + +# ZAMMAD_NGINX_EXTERNAL_NETWORK=mynetwork + +############################################# +# scenarios/add-external-network-to-elasticsearch.yml +############################################# + +# ZAMMAD_ELASTICSEARCH_EXTERNAL_NETWORK=mynetwork + +############################################# +# scenarios/add-hostport-to-elasticsearch.yml +############################################# + +# Defaults to 9200, set this if you need another value. +# ELASTICSEARCH_EXPOSE_HTTP_PORT=9200 + +############################################# +# scenarios/add-ollama.yml +############################################# + +# OLLAMA_PULL_MODEL=llama3.2 + +############################################# +# scenarios/apply-resource-limits.yml +############################################# + +# By loading the scenario, these default limits +# are applied. Uncomment and change if needed. + +# ZAMMAD_BACKUP_RESOURCES_LIMITS_CPUS=1.0 +# ZAMMAD_BACKUP_RESOURCES_LIMITS_MEMORY=500m +# ZAMMAD_ELASTICSEARCH_RESOURCES_LIMITS_CPUS=1.0 +# ZAMMAD_ELASTICSEARCH_RESOURCES_LIMITS_MEMORY=1G +# ZAMMAD_INIT_RESOURCES_LIMITS_CPUS=1.0 +# ZAMMAD_INIT_RESOURCES_LIMITS_MEMORY=500M +# ZAMMAD_MEMCACHED_RESOURCES_LIMITS_CPUS=1.0 +# ZAMMAD_MEMCACHED_RESOURCES_LIMITS_MEMORY=500M +# ZAMMAD_NGINX_RESOURCES_LIMITS_CPUS=1.0 +# ZAMMAD_NGINX_RESOURCES_LIMITS_MEMORY=500M +# ZAMMAD_POSTGRESQL_RESOURCES_LIMITS_CPUS=1.0 +# ZAMMAD_POSTGRESQL_RESOURCES_LIMITS_MEMORY=500M +# ZAMMAD_RAILSSERVER_RESOURCES_LIMITS_CPUS=1.0 +# ZAMMAD_RAILSSERVER_RESOURCES_LIMITS_MEMORY=500M +# ZAMMAD_REDIS_RESOURCES_LIMITS_CPUS=1.0 +# ZAMMAD_REDIS_RESOURCES_LIMITS_MEMORY=500M +# ZAMMAD_SCHEDULER_RESOURCES_LIMITS_CPUS=1.0 +# ZAMMAD_SCHEDULER_RESOURCES_LIMITS_MEMORY=500M +# ZAMMAD_WEBSOCKET_RESOURCES_LIMITS_CPUS=1.0 +# ZAMMAD_WEBSOCKET_RESOURCES_LIMITS_MEMORY=500M \ No newline at end of file