Let’s add few more basic modules:

Podzir

Add following to compose.yml:

144  podzir:
145    image: registry.gitlab.com/tekelija/tekelija/tekelija-podzir:latest
146    environment:
147      - AUTHSERVER__ISSUER=https://authenticatomatic.domain.com
148      - SERILOG__WRITETO__SEQ__ARGS__SERVERURL=http://seq:5341
149      - SERILOG__MINIMUMLEVEL__DEFAULT=Debug
150      - SERILOG__MINIMUMLEVEL__OVERRIDE__OpenIddict=Information
151      - SERILOG__MINIMUMLEVEL__OVERRIDE__Microsoft=Information
152      - MESSAGEBUS__URL=rabbitmq://rabbit
153      - CONNECTIONSTRINGS__PODZIR=server=mssql;initial catalog=podzir;user id=sa;password=<YourStrong!Passw0rd>;encrypt=false;
154      - TZ=Europe/Ljubljana
155      - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
156    hostname: podzir
157    depends_on:
158      - mssql

As usual, some settings should be changed if needed.

As for Caddyfile, add highlighted lines:

40    handle @allegro {
41        reverse_proxy allegro
42    }
43
44    @podzir host podzir.domain.com
45
46    handle @podzir {
47        reverse_proxy podzir
48    }
49
50    handle {

As usual, complete files are here: compose.yml and Caddyfile

And again and again, one docker compose up -d && docker compose restart caddy should pull, create and restart what needs to be pulled, created and restarted and https://podzir.domain.com/health should response with some healthcheck data.

Spin

Add following to compose.yml:

160  spin:
161    image: registry.gitlab.com/tekelija/tekelija/tekelija-spin3:latest
162    environment:
163      - SERILOG__WRITETO__SEQ__ARGS__SERVERURL=http://seq:5341
164      - SERILOG__MINIMUMLEVEL__DEFAULT=Debug
165      - SERILOG__MINIMUMLEVEL__OVERRIDE__OpenIddict=Information
166      - SERILOG__MINIMUMLEVEL__OVERRIDE__Microsoft=Information
167      - MESSAGEBUS__URL=rabbitmq://rabbit
168      - SPIN__URI=http://spin3.branko.logos.si/api
169      - AUTHSERVER__ISSUER=https://authenticatomatic.domain.com
170      - TZ=Europe/Ljubljana
171      - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
172    hostname: spin

And Caddyfile:

46    handle @podzir {
47        reverse_proxy podzir
48    }
49
50    @spin host spin.domain.com
51
52    handle @spin {
53        reverse_proxy spin
54    }
55
56    handle {

Complete files, again, are here: compose.yml and Caddyfile

docker compose up -d && docker compose restart caddy should do another pull and https://spin.domain.com/health should also be alive, showing that another module is working as well.

Remote GIS

To be use remote GIS service we need to have client certificate and we need to put it somewhere where our stack can read it. Following usual pattern (create volume, update compose.yml, update Caddyfile) we need to create volume for the certificate:

docker volume create --label reco-remotegis reco-remotegis

Copy .pfx certifcate to created volume and update compose.yml:

19  reco-prometheus:
20    external: true
21  reco-remotegis:
22    external: true
175...
176  remotegis:
177    image: registry.gitlab.com/tekelija/tekelija-remotegis:latest
178    environment:
179      - SERILOG__WRITETO__SEQ__ARGS__SERVERURL=http://seq:5341
180      - SERILOG__MINIMUMLEVEL__DEFAULT=Debug
181      - SERILOG__MINIMUMLEVEL__OVERRIDE__OpenIddict=Information
182      - SERILOG__MINIMUMLEVEL__OVERRIDE__Microsoft=Information
183      - MESSAGEBUS__URL=rabbitmq://rabbit
184      - REMOTEGIS__CERTFILE=/app/cert/certificate-name.pfx
185      - REMOTEGIS__EXTRACTCOORDINATESFROMSHAPEURI=https://vgis3d.urszr.si:8443/psa/psa/
186      - REMOTEGIS__GETADDRESSURI=https://vgis3d.urszr.si:8443/dws-0.0.1/call/
187      - REMOTEGIS__LOCATIONSEARCHURI=https://vgis3d.urszr.si:8443/ses/
188      - REMOTEGIS__RESPONSIBLEUNITSURI=https://gis.xlab.si/dws/call/
189      - REMOTEGIS__VERIFYSSL=false
190      - AUTHSERVER__ISSUER=https://authenticatomatic.domain.com
191      - TZ=Europe/Ljubljana
192      - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
193    volumes:
194      - reco-remotegis:/app/cert
195    hostname: remotegis

Change settings to fit your needs, as usual and add another configuration to Caddyfile:

 1    handle @spin {
 2        reverse_proxy spin
 3    }
 4
 5    @remotegis host remotegis.domain.com
 6
 7    handle @remotegis {
 8        reverse_proxy remotegis
 9    }
10
11    handle {

Complete files are here: compose.yml and Caddyfile

docker compose up -d && docker compose restart caddy should do another pull and https://remotegis.domain.com/health should return 200 ok with some comforting health message.

Ticket Changelog

This one will be essentialy same as others - compose.yml:

197  ticketchangelog:
198    image: registry.gitlab.com/tekelija/tekelija/tekelija-allegro-ticketchangelog:latest
199    environment:
200      - SERILOG__WRITETO__SEQ__ARGS__SERVERURL=http://seq:5341
201      - SERILOG__MINIMUMLEVEL__DEFAULT=Debug
202      - SERILOG__MINIMUMLEVEL__OVERRIDE__OpenIddict=Information
203      - SERILOG__MINIMUMLEVEL__OVERRIDE__Microsoft=Information
204      - MESSAGEBUS__URL=rabbitmq://rabbit
205      - AUTHSERVER__ISSUER=https://authenticatomatic.domain.com
206      - TZ=Europe/Ljubljana
207      - ASPNETCORE_FORWARDEDHEADERS_ENABLED=true
208      - TICKETCHANGELOG__DATABASE=mongodb
209      - TICKETCHANGELOG__CONNECTIONSTRING=mongodb://root:pass@mongodb:27017/ticket-log
210    hostname: ticketchangelog
211    depends_on:
212      - mongodb

We are using mongodb as backend store here. It may be something else, so change configuration as wanted.

Caddyfile is painfully same:

52    handle @spin {
53        reverse_proxy spin
54    }
55
56    @remotegis host remotegis.domain.com
57
58    handle @remotegis {
59        reverse_proxy remotegis
60    }
61
62    handle {

Complete files: compose.yml and Caddyfile

And, of course docker compose up -d && docker compose restart caddy and https://ticketchangelog.domain.com/health should answer, again.