diff --git a/README.md b/README.md index c24120e7..4f9d881f 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 @@ -159,6 +161,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 @@ -262,6 +272,42 @@ This project is deployed in accordance to the [DargStack template](https://githu You can access the main project's frontend at [localhost](https://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 @@ -306,4 +352,20 @@ This project is deployed in accordance to the [DargStack template](https://githu The message queue'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/certificates/mkcert.sh b/src/development/certificates/mkcert.sh index 2b514453..3e661cc3 100755 --- a/src/development/certificates/mkcert.sh +++ b/src/development/certificates/mkcert.sh @@ -29,13 +29,15 @@ done create "root" create "traefik" \ - `# adminer` "adminer.localhost" \ - `# grafana` "grafana.localhost" \ - `# minio` "minio.localhost" \ - `# portainer` "portainer.localhost" \ - `# postgraphile` "postgraphile.localhost" \ - `# prometheus` "prometheus.localhost" \ - `# redpanda` "redpanda.localhost" \ - `# traefik` "traefik.localhost" \ - `# tusd` "tusd.localhost" \ - `# vibetype` "localhost" "www.localhost" "127.0.0.1" "0.0.0.0" \ No newline at end of file + "adminer.localhost" \ + "grafana.localhost" \ + "minio.localhost" \ + "portainer.localhost" \ + "postgraphile.localhost" \ + "prometheus.localhost" \ + "redpanda.localhost" \ + "traefik.localhost" \ + "tusd.localhost" \ + "zammad.localhost" \ + "localhost" "www.localhost" "127.0.0.1" "0.0.0.0" + diff --git a/src/development/stack.yml b/src/development/stack.yml index 23238f01..1397b5fe 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. @@ -100,6 +103,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.localhost](https://adminer.localhost/). @@ -325,7 +391,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:17-3.5-alpine + image: imresamu/postgis:17-3.5.2-alpine3.21 ports: #DARGSTACK-REMOVE - 5432:5432 #DARGSTACK-REMOVE secrets: @@ -374,6 +440,7 @@ services: - postgres_user volumes: - ../../../reccoom/:/srv/app/ + redpanda: # You can access the event streaming platform's ui as described under `redpanda-console`. command: @@ -553,8 +620,80 @@ services: - ${PNPM_STORE_DIR}:/srv/.pnpm-store/ #DARGSTACK-REMOVE - ./certificates/:/srv/certificates/ #DARGSTACK-REMOVE - ../../../vibetype/:/srv/app/ #DARGSTACK-REMOVE - - ./configurations/postgraphile/jwtRS256.key.pub:/run/environment-variables/NUXT_PUBLIC_VIO_AUTH_JWT_PUBLIC_KEY:ro -version: "3.7" + - ./configurations/postgraphile/jwtRS256.key.pub:/run/environment-variables/NUXT_PUB1LIC_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"] + volumes: debezium_kafka_configuration: # The change data capture's configuration. @@ -583,3 +722,15 @@ volumes: redpanda_data: # The message queue's data. {} + 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 + {}