Skip to content

Commit ffff89f

Browse files
committed
feat(zammad): add
1 parent 47e7065 commit ffff89f

File tree

6 files changed

+384
-5
lines changed

6 files changed

+384
-5
lines changed

README.md

Lines changed: 70 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,30 @@ This project is deployed in accordance to the [DargStack template](https://githu
88
## Table of Contents
99

1010

11-
1. [secrets](#secrets)
11+
1. [x-shared](#x-shared)
1212

13-
2. [services](#services)
13+
2. [secrets](#secrets)
1414

15-
3. [volumes](#volumes)
15+
3. [services](#services)
16+
17+
4. [volumes](#volumes)
18+
19+
20+
## x-shared
21+
22+
23+
- ### `zammad-service`
24+
25+
You can access the helpdesk at [zammad.app.localhost](https://zammad.app.localhost/).
1626

1727

1828
## secrets
1929

2030

31+
- ### `elasticsearch_password`
32+
33+
The search engine's password for the default user.
34+
2135
- ### `grafana_admin_email`
2236

2337
The observation dashboard's admin email.
@@ -197,6 +211,10 @@ This project is deployed in accordance to the [DargStack template](https://githu
197211

198212
You can check the database connector's setup logs using `portainer`.
199213

214+
- ### `elasticsearch`
215+
216+
You cannot access the search engine via a web interface.
217+
200218
- ### `geoip`
201219

202220
You cannot access the ip geolocator via a web interface.
@@ -209,6 +227,11 @@ This project is deployed in accordance to the [DargStack template](https://githu
209227

210228
You cannot access the jobber via a web interface.
211229

230+
- ### `memcached`
231+
232+
You cannot access the caching system via a web interface.
233+
command: memcached -m 256M
234+
212235
- ### `minio` ![development](https://img.shields.io/badge/-development-informational.svg?style=flat-square)
213236

214237
You can access the s3 console at [minio.app.localhost](https://minio.app.localhost/).
@@ -246,6 +269,10 @@ This project is deployed in accordance to the [DargStack template](https://githu
246269

247270
You can access reccoom's database via `adminer`.
248271

272+
- ### `redis`
273+
274+
You cannot access the caching system via a web interface.
275+
249276
- ### `redpanda`
250277

251278
You can access the event streaming platform's ui as described under `redpanda-console`.
@@ -274,6 +301,30 @@ This project is deployed in accordance to the [DargStack template](https://githu
274301

275302
You can access the main project's frontend at [app.localhost](https://app.localhost/).
276303

304+
- ### `zammad-backup`
305+
306+
You cannot access the helpdesk backup service via a web interface.
307+
308+
- ### `zammad-init`
309+
310+
You cannot access the helpdesk initialization service via a web interface.
311+
312+
- ### `zammad-nginx`
313+
314+
You can access the helpdesk at [zammad.app.localhost](https://zammad.app.localhost/).
315+
316+
- ### `zammad-railsserver`
317+
318+
You cannot access the helpdesk application server directly.
319+
320+
- ### `zammad-scheduler`
321+
322+
You cannot access the helpdesk scheduler directly.
323+
324+
- ### `zammad-websocket`
325+
326+
You cannot access the helpdesk websocket server directly.
327+
277328

278329
## volumes
279330

@@ -294,6 +345,10 @@ This project is deployed in accordance to the [DargStack template](https://githu
294345

295346
The change data capture's logs.
296347

348+
- ### `elasticsearch_data`
349+
350+
The search engine's data.
351+
297352
- ### `grafana_data`
298353

299354
The observation dashboard's data.
@@ -322,6 +377,10 @@ This project is deployed in accordance to the [DargStack template](https://githu
322377

323378
The recommendation database's data.
324379

380+
- ### `redis_data`
381+
382+
The caching system's data.
383+
325384
- ### `redpanda_data`
326385

327386
The message queue's data.
@@ -330,4 +389,12 @@ This project is deployed in accordance to the [DargStack template](https://githu
330389

331390
The frontend's data.
332391

392+
- ### `zammad-backup_data`
393+
394+
The helpdesk backup's data.
395+
396+
- ### `zammad_data`
397+
398+
The helpdesk's data.
399+
333400

src/development/certificates/mkcert.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,5 @@ create "traefik" \
3939
`# redpanda` "redpanda.app.localhost" \
4040
`# traefik` "traefik.app.localhost" \
4141
`# tusd` "tusd.app.localhost" \
42-
`# vibetype` "app.localhost" "www.app.localhost" "127.0.0.1" "0.0.0.0"
42+
`# vibetype` "app.localhost" "www.app.localhost" "127.0.0.1" "0.0.0.0" \
43+
`# zammad` "zammad.app.localhost"
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
elastic
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<string>

src/development/stack.yml

Lines changed: 114 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,31 @@
33
# Vibetype
44
# https://github.com/maevsi/vibetype/
55
---
6+
x-shared:
7+
zammad-service:
8+
&zammad-service # You can access the helpdesk at [zammad.app.localhost](https://zammad.app.localhost/).
9+
environment: &zammad-environment
10+
ELASTICSEARCH_HOST: elasticsearch
11+
MEMCACHE_SERVERS: memcached:11211
12+
POSTGRESQL_DB_CREATE: "false"
13+
POSTGRESQL_DB: zammad
14+
POSTGRESQL_HOST: postgres
15+
REDIS_URL: redis://redis:6379
16+
image: ghcr.io/zammad/zammad:6.5.2-90
17+
secrets:
18+
- source: elasticsearch_password
19+
target: /run/environment-variables/ELASTICSEARCH_PASS
20+
- source: postgres_role_service_zammad_username
21+
target: /run/environment-variables/POSTGRESQL_USER
22+
- source: postgres_role_service_zammad_password
23+
target: /run/environment-variables/POSTGRESQL_PASS
24+
volumes:
25+
- zammad_data:/opt/zammad/storage
26+
- ../production/configurations/zammad/docker-entrypoint.sh:/opt/zammad/bin/docker-entrypoint:ro
627
secrets:
28+
elasticsearch_password:
29+
# The search engine's password for the default user.
30+
file: ./secrets/elasticsearch/password.secret
731
grafana_admin_email:
832
# The observation dashboard's admin email.
933
file: ./secrets/grafana/admin_email.secret
@@ -166,6 +190,18 @@ services:
166190
- postgres_user
167191
volumes:
168192
- ../production/configurations/debezium-postgres-connector/entrypoint.sh:/entrypoint.sh:ro
193+
elasticsearch:
194+
# You cannot access the search engine via a web interface.
195+
environment:
196+
discovery.type: single-node
197+
ELASTIC_PASSWORD_FILE: /run/secrets/elasticsearch_password
198+
ES_JAVA_OPTS: -Xms1g -Xmx1g
199+
xpack.security.enabled: "false"
200+
image: elasticsearch:8.19.11
201+
secrets:
202+
- elasticsearch_password
203+
volumes:
204+
- elasticsearch_data:/usr/share/elasticsearch/data
169205
geoip:
170206
# You cannot access the ip geolocator via a web interface.
171207
image: ghcr.io/observabilitystack/geoip-api:2026-02
@@ -220,6 +256,10 @@ services:
220256
volumes:
221257
- ../production/backups/postgres/:/backups/
222258
- ./configurations/jobber/.jobber:/home/jobberuser/.jobber:ro
259+
memcached:
260+
# You cannot access the caching system via a web interface.
261+
# command: memcached -m 256M
262+
image: memcached:1.6.40-alpine
223263
minio: #DARGSTACK-REMOVE
224264
# You can access the s3 console at [minio.app.localhost](https://minio.app.localhost/).
225265
# You can access the s3 api service at [s3.app.localhost](https://s3.app.localhost/) if you want to access via cli from outside the stack.
@@ -404,6 +444,11 @@ services:
404444
- postgres_user
405445
volumes:
406446
- reccoom_postgres_data:/var/lib/postgresql/
447+
redis:
448+
# You cannot access the caching system via a web interface.
449+
image: redis:7.4.7-alpine
450+
volumes:
451+
- redis_data:/data
407452
redpanda:
408453
# You can access the event streaming platform's ui as described under `redpanda-console`.
409454
command:
@@ -573,6 +618,62 @@ services:
573618
- ../../../vibetype/:/srv/app/ #DARGSTACK-REMOVE
574619
- vibetype_data:/srv/app/node_modules #DARGSTACK-REMOVE
575620
- ./configurations/postgraphile/jwtRS256.key.pub:/run/environment-variables/NUXT_PUBLIC_VIO_AUTH_JWT_PUBLIC_KEY:ro
621+
zammad-backup:
622+
# You cannot access the helpdesk backup service via a web interface.
623+
<<: *zammad-service
624+
command: ["zammad-backup"]
625+
user: 0:0
626+
volumes:
627+
- zammad-backup_data:/var/tmp/zammad
628+
- zammad_data:/opt/zammad/storage:ro
629+
zammad-init:
630+
# You cannot access the helpdesk initialization service via a web interface.
631+
<<: *zammad-service
632+
command: ["zammad-init"]
633+
# depends_on:
634+
# - zammad-postgresql
635+
user: 0:0
636+
zammad-nginx:
637+
# You can access the helpdesk at [zammad.app.localhost](https://zammad.app.localhost/).
638+
<<: *zammad-service
639+
command: ["zammad-nginx"]
640+
deploy:
641+
labels:
642+
- traefik.enable=true
643+
- traefik.http.routers.zammad.entryPoints=web
644+
- traefik.http.routers.zammad.middlewares=redirectscheme #DARGSTACK-REMOVE
645+
- traefik.http.routers.zammad.rule=Host(`zammad.${STACK_DOMAIN}`)
646+
- traefik.http.routers.zammad_secure.entryPoints=web-secure
647+
- traefik.http.routers.zammad_secure.rule=Host(`zammad.${STACK_DOMAIN}`)
648+
- traefik.http.routers.zammad_secure.tls.options=mintls13@file #DARGSTACK-REMOVE
649+
- traefik.http.services.zammad.loadbalancer.server.port=8080
650+
# expose:
651+
# - "${NGINX_PORT:-8080}"
652+
# ports:
653+
# - "${NGINX_EXPOSE_PORT:-8080}:${NGINX_PORT:-8080}"
654+
# depends_on:
655+
# - zammad-railsserver
656+
# zammad-postgresql:
657+
# environment:
658+
# POSTGRES_DB: ${POSTGRES_DB:-zammad_production}
659+
# POSTGRES_USER: ${POSTGRES_USER:-zammad}
660+
# POSTGRES_PASSWORD: ${POSTGRES_PASS:-zammad}
661+
# image: postgres:${POSTGRES_VERSION:-17.7-alpine}
662+
# restart: ${RESTART:-always}
663+
# volumes:
664+
# - postgresql-data:/var/lib/postgresql/data
665+
zammad-railsserver:
666+
# You cannot access the helpdesk application server directly.
667+
<<: *zammad-service
668+
command: ["zammad-railsserver"]
669+
zammad-scheduler:
670+
# You cannot access the helpdesk scheduler directly.
671+
<<: *zammad-service
672+
command: ["zammad-scheduler"]
673+
zammad-websocket:
674+
# You cannot access the helpdesk websocket server directly.
675+
<<: *zammad-service
676+
command: ["zammad-websocket"]
576677
version: "3.7"
577678
volumes:
578679
debezium_kafka_configuration:
@@ -584,14 +685,17 @@ volumes:
584685
debezium_kafka_logs:
585686
# The change data capture's logs.
586687
{}
688+
elasticsearch_data:
689+
# The search engine's data.
690+
{}
587691
grafana_data:
588692
# The observation dashboard's data.
589693
{}
590694
minio_data:
591695
# The s3 server's data.
592696
{}
593697
pnpm_data:
594-
# The node package manager's data.
698+
# The node package manager's data.
595699
{}
596700
portainer_data:
597701
# The container manager's data.
@@ -605,9 +709,18 @@ volumes:
605709
reccoom_postgres_data:
606710
# The recommendation database's data.
607711
{}
712+
redis_data:
713+
# The caching system's data.
714+
{}
608715
redpanda_data:
609716
# The message queue's data.
610717
{}
611718
vibetype_data:
612719
# The frontend's data.
613720
{}
721+
zammad-backup_data:
722+
# The helpdesk backup's data.
723+
{}
724+
zammad_data:
725+
# The helpdesk's data.
726+
{}

0 commit comments

Comments
 (0)