Skip to content

Commit f913dfc

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

File tree

6 files changed

+389
-5
lines changed

6 files changed

+389
-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: 105 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,34 @@
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_SCHEMA: https
12+
ELASTICSEARCH_USER: elastic
13+
MEMCACHE_SERVERS: memcached:11211
14+
POSTGRESQL_DB_CREATE: "false"
15+
POSTGRESQL_DB: zammad
16+
POSTGRESQL_HOST: postgres
17+
POSTGRESQL_OPTIONS: ?pool=50
18+
REDIS_URL: redis://redis:6379
19+
image: ghcr.io/zammad/zammad:6.5.2-90
20+
secrets:
21+
- source: elasticsearch_password
22+
target: /run/environment-variables/ELASTICSEARCH_PASS
23+
- source: postgres_role_service_zammad_username
24+
target: /run/environment-variables/POSTGRESQL_USER
25+
- source: postgres_role_service_zammad_password
26+
target: /run/environment-variables/POSTGRESQL_PASS
27+
volumes:
28+
- zammad_data:/opt/zammad/storage
29+
- ../production/configurations/zammad/docker-entrypoint.sh:/docker-entrypoint.sh:ro
630
secrets:
31+
elasticsearch_password:
32+
# The search engine's password for the default user.
33+
file: ./secrets/elasticsearch/password.secret
734
grafana_admin_email:
835
# The observation dashboard's admin email.
936
file: ./secrets/grafana/admin_email.secret
@@ -166,6 +193,20 @@ services:
166193
- postgres_user
167194
volumes:
168195
- ../production/configurations/debezium-postgres-connector/entrypoint.sh:/entrypoint.sh:ro
196+
elasticsearch:
197+
# You cannot access the search engine via a web interface.
198+
environment:
199+
discovery.type: single-node
200+
network.publish_host: elasticsearch
201+
ELASTIC_PASSWORD_FILE: /run/secrets/elasticsearch_password
202+
image: elasticsearch:8.19.11
203+
secrets:
204+
- source: elasticsearch_password
205+
uid: "1000"
206+
gid: "1000"
207+
mode: 0o400
208+
volumes:
209+
- elasticsearch_data:/usr/share/elasticsearch/data
169210
geoip:
170211
# You cannot access the ip geolocator via a web interface.
171212
image: ghcr.io/observabilitystack/geoip-api:2026-02
@@ -220,6 +261,10 @@ services:
220261
volumes:
221262
- ../production/backups/postgres/:/backups/
222263
- ./configurations/jobber/.jobber:/home/jobberuser/.jobber:ro
264+
memcached:
265+
# You cannot access the caching system via a web interface.
266+
image: memcached:1.6.40-alpine
267+
# command: memcached -m 256M
223268
minio: #DARGSTACK-REMOVE
224269
# You can access the s3 console at [minio.app.localhost](https://minio.app.localhost/).
225270
# 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 +449,11 @@ services:
404449
- postgres_user
405450
volumes:
406451
- reccoom_postgres_data:/var/lib/postgresql/
452+
redis:
453+
# You cannot access the caching system via a web interface.
454+
image: redis:7.4.7-alpine
455+
volumes:
456+
- redis_data:/data
407457
redpanda:
408458
# You can access the event streaming platform's ui as described under `redpanda-console`.
409459
command:
@@ -573,6 +623,48 @@ services:
573623
- ../../../vibetype/:/srv/app/ #DARGSTACK-REMOVE
574624
- vibetype_data:/srv/app/node_modules #DARGSTACK-REMOVE
575625
- ./configurations/postgraphile/jwtRS256.key.pub:/run/environment-variables/NUXT_PUBLIC_VIO_AUTH_JWT_PUBLIC_KEY:ro
626+
zammad-backup:
627+
# You cannot access the helpdesk backup service via a web interface.
628+
<<: *zammad-service
629+
command: ["zammad-backup"]
630+
user: 0:0
631+
volumes:
632+
- zammad-backup_data:/var/tmp/zammad
633+
- zammad_data:/opt/zammad/storage:ro
634+
- ../production/configurations/zammad/docker-entrypoint.sh:/docker-entrypoint.sh:ro
635+
zammad-init:
636+
# You cannot access the helpdesk initialization service via a web interface.
637+
<<: *zammad-service
638+
command: ["zammad-init"]
639+
# depends_on:
640+
# - zammad-postgresql
641+
user: 0:0
642+
zammad-nginx:
643+
# You can access the helpdesk at [zammad.app.localhost](https://zammad.app.localhost/).
644+
<<: *zammad-service
645+
command: ["zammad-nginx"]
646+
deploy:
647+
labels:
648+
- traefik.enable=true
649+
- traefik.http.routers.zammad.entryPoints=web
650+
- traefik.http.routers.zammad.middlewares=redirectscheme #DARGSTACK-REMOVE
651+
- traefik.http.routers.zammad.rule=Host(`zammad.${STACK_DOMAIN}`)
652+
- traefik.http.routers.zammad_secure.entryPoints=web-secure
653+
- traefik.http.routers.zammad_secure.rule=Host(`zammad.${STACK_DOMAIN}`)
654+
- traefik.http.routers.zammad_secure.tls.options=mintls13@file #DARGSTACK-REMOVE
655+
- traefik.http.services.zammad.loadbalancer.server.port=8080
656+
zammad-railsserver:
657+
# You cannot access the helpdesk application server directly.
658+
<<: *zammad-service
659+
command: ["zammad-railsserver"]
660+
zammad-scheduler:
661+
# You cannot access the helpdesk scheduler directly.
662+
<<: *zammad-service
663+
command: ["zammad-scheduler"]
664+
zammad-websocket:
665+
# You cannot access the helpdesk websocket server directly.
666+
<<: *zammad-service
667+
command: ["zammad-websocket"]
576668
version: "3.7"
577669
volumes:
578670
debezium_kafka_configuration:
@@ -584,14 +676,17 @@ volumes:
584676
debezium_kafka_logs:
585677
# The change data capture's logs.
586678
{}
679+
elasticsearch_data:
680+
# The search engine's data.
681+
{}
587682
grafana_data:
588683
# The observation dashboard's data.
589684
{}
590685
minio_data:
591686
# The s3 server's data.
592687
{}
593688
pnpm_data:
594-
# The node package manager's data.
689+
# The node package manager's data.
595690
{}
596691
portainer_data:
597692
# The container manager's data.
@@ -605,9 +700,18 @@ volumes:
605700
reccoom_postgres_data:
606701
# The recommendation database's data.
607702
{}
703+
redis_data:
704+
# The caching system's data.
705+
{}
608706
redpanda_data:
609707
# The message queue's data.
610708
{}
611709
vibetype_data:
612710
# The frontend's data.
613711
{}
712+
zammad-backup_data:
713+
# The helpdesk backup's data.
714+
{}
715+
zammad_data:
716+
# The helpdesk's data.
717+
{}

0 commit comments

Comments
 (0)