Skip to content

Commit ee7daab

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

File tree

6 files changed

+392
-5
lines changed

6 files changed

+392
-5
lines changed

README.md

Lines changed: 69 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,10 @@ 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+
212234
- ### `minio` ![development](https://img.shields.io/badge/-development-informational.svg?style=flat-square)
213235

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

247269
You can access reccoom's database via `adminer`.
248270

271+
- ### `redis`
272+
273+
You cannot access the caching system via a web interface.
274+
249275
- ### `redpanda`
250276

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

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

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

278328
## volumes
279329

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

295345
The change data capture's logs.
296346

347+
- ### `elasticsearch_data`
348+
349+
The search engine's data.
350+
297351
- ### `grafana_data`
298352

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

323377
The recommendation database's data.
324378

379+
- ### `redis_data`
380+
381+
The caching system's data.
382+
325383
- ### `redpanda_data`
326384

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

331389
The frontend's data.
332390

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

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: 102 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,32 @@
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+
ELASTICSEARCH_USER: elastic
12+
MEMCACHE_SERVERS: memcached:11211
13+
POSTGRESQL_DB_CREATE: "false"
14+
POSTGRESQL_DB: zammad
15+
POSTGRESQL_HOST: postgres
16+
REDIS_URL: redis://redis:6379
17+
image: ghcr.io/zammad/zammad:6.5.2-90
18+
secrets:
19+
- source: elasticsearch_password
20+
target: /run/environment-variables/ELASTICSEARCH_PASS
21+
- source: postgres_role_service_zammad_username
22+
target: /run/environment-variables/POSTGRESQL_USER
23+
- source: postgres_role_service_zammad_password
24+
target: /run/environment-variables/POSTGRESQL_PASS
25+
volumes:
26+
- zammad_data:/opt/zammad/storage
27+
- ../production/configurations/zammad/docker-entrypoint.sh:/opt/zammad/bin/docker-entrypoint:ro
628
secrets:
29+
elasticsearch_password:
30+
# The search engine's password for the default user.
31+
file: ./secrets/elasticsearch/password.secret
732
grafana_admin_email:
833
# The observation dashboard's admin email.
934
file: ./secrets/grafana/admin_email.secret
@@ -166,6 +191,19 @@ services:
166191
- postgres_user
167192
volumes:
168193
- ../production/configurations/debezium-postgres-connector/entrypoint.sh:/entrypoint.sh:ro
194+
elasticsearch:
195+
# You cannot access the search engine via a web interface.
196+
environment:
197+
discovery.type: single-node
198+
ELASTIC_PASSWORD_FILE: /run/secrets/elasticsearch_password
199+
image: elasticsearch:8.19.11
200+
secrets:
201+
- source: elasticsearch_password
202+
uid: "1000"
203+
gid: "1000"
204+
mode: 0o400
205+
volumes:
206+
- elasticsearch_data:/usr/share/elasticsearch/data
169207
geoip:
170208
# You cannot access the ip geolocator via a web interface.
171209
image: ghcr.io/observabilitystack/geoip-api:2026-02
@@ -220,6 +258,10 @@ services:
220258
volumes:
221259
- ../production/backups/postgres/:/backups/
222260
- ./configurations/jobber/.jobber:/home/jobberuser/.jobber:ro
261+
memcached:
262+
# You cannot access the caching system via a web interface.
263+
image: memcached:1.6.40-alpine
264+
# command: memcached -m 256M
223265
minio: #DARGSTACK-REMOVE
224266
# You can access the s3 console at [minio.app.localhost](https://minio.app.localhost/).
225267
# 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 +446,11 @@ services:
404446
- postgres_user
405447
volumes:
406448
- reccoom_postgres_data:/var/lib/postgresql/
449+
redis:
450+
# You cannot access the caching system via a web interface.
451+
image: redis:7.4.7-alpine
452+
volumes:
453+
- redis_data:/data
407454
redpanda:
408455
# You can access the event streaming platform's ui as described under `redpanda-console`.
409456
command:
@@ -573,6 +620,48 @@ services:
573620
- ../../../vibetype/:/srv/app/ #DARGSTACK-REMOVE
574621
- vibetype_data:/srv/app/node_modules #DARGSTACK-REMOVE
575622
- ./configurations/postgraphile/jwtRS256.key.pub:/run/environment-variables/NUXT_PUBLIC_VIO_AUTH_JWT_PUBLIC_KEY:ro
623+
zammad-backup:
624+
# You cannot access the helpdesk backup service via a web interface.
625+
<<: *zammad-service
626+
command: ["zammad-backup"]
627+
user: 0:0
628+
volumes:
629+
- zammad-backup_data:/var/tmp/zammad
630+
- zammad_data:/opt/zammad/storage:ro
631+
- ../production/configurations/zammad/docker-entrypoint.sh:/docker-entrypoint.sh:ro
632+
zammad-init:
633+
# You cannot access the helpdesk initialization service via a web interface.
634+
<<: *zammad-service
635+
command: ["zammad-init"]
636+
# depends_on:
637+
# - zammad-postgresql
638+
user: 0:0
639+
zammad-nginx:
640+
# You can access the helpdesk at [zammad.app.localhost](https://zammad.app.localhost/).
641+
<<: *zammad-service
642+
command: ["zammad-nginx"]
643+
deploy:
644+
labels:
645+
- traefik.enable=true
646+
- traefik.http.routers.zammad.entryPoints=web
647+
- traefik.http.routers.zammad.middlewares=redirectscheme #DARGSTACK-REMOVE
648+
- traefik.http.routers.zammad.rule=Host(`zammad.${STACK_DOMAIN}`)
649+
- traefik.http.routers.zammad_secure.entryPoints=web-secure
650+
- traefik.http.routers.zammad_secure.rule=Host(`zammad.${STACK_DOMAIN}`)
651+
- traefik.http.routers.zammad_secure.tls.options=mintls13@file #DARGSTACK-REMOVE
652+
- traefik.http.services.zammad.loadbalancer.server.port=8080
653+
zammad-railsserver:
654+
# You cannot access the helpdesk application server directly.
655+
<<: *zammad-service
656+
command: ["zammad-railsserver"]
657+
zammad-scheduler:
658+
# You cannot access the helpdesk scheduler directly.
659+
<<: *zammad-service
660+
command: ["zammad-scheduler"]
661+
zammad-websocket:
662+
# You cannot access the helpdesk websocket server directly.
663+
<<: *zammad-service
664+
command: ["zammad-websocket"]
576665
version: "3.7"
577666
volumes:
578667
debezium_kafka_configuration:
@@ -584,14 +673,17 @@ volumes:
584673
debezium_kafka_logs:
585674
# The change data capture's logs.
586675
{}
676+
elasticsearch_data:
677+
# The search engine's data.
678+
{}
587679
grafana_data:
588680
# The observation dashboard's data.
589681
{}
590682
minio_data:
591683
# The s3 server's data.
592684
{}
593685
pnpm_data:
594-
# The node package manager's data.
686+
# The node package manager's data.
595687
{}
596688
portainer_data:
597689
# The container manager's data.
@@ -605,9 +697,18 @@ volumes:
605697
reccoom_postgres_data:
606698
# The recommendation database's data.
607699
{}
700+
redis_data:
701+
# The caching system's data.
702+
{}
608703
redpanda_data:
609704
# The message queue's data.
610705
{}
611706
vibetype_data:
612707
# The frontend's data.
613708
{}
709+
zammad-backup_data:
710+
# The helpdesk backup's data.
711+
{}
712+
zammad_data:
713+
# The helpdesk's data.
714+
{}

0 commit comments

Comments
 (0)