first commit

This commit is contained in:
cheetah.cat 2025-04-06 03:22:41 +02:00
commit ef5e82539e
11 changed files with 306 additions and 0 deletions

19
compose.yaml Normal file
View file

@ -0,0 +1,19 @@
services:
traefik:
image: traefik:latest
container_name: traefik
command:
- --api.insecure=true
- --api.dashboard=true
- --log.level=DEBUG
- --providers.docker=true
- --entrypoints.web.address=:80
# labels:
# - traefik.docker.network=docker_external
restart: always
ports:
- 80:80
- 8080:8080
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- .:/prod:ro

4
template/.env Normal file
View file

@ -0,0 +1,4 @@
SP_HOST=template.domain.tld
SP_SLUG=template
TRAEFIK_NETWORK=prod_default
TRAEFIK_BASIC_AUTH_FILE=/home/<user>/prod/template/auth

1
template/auth Normal file
View file

@ -0,0 +1 @@
<to be filled>

150
template/compose.yaml Normal file
View file

@ -0,0 +1,150 @@
networks:
traefik_network:
name: ${TRAEFIK_NETWORK}
external: true
services:
# Dispatcher
dispatcher:
image: git.cheetah.cat/smartpager/dispatcher:latest
volumes:
- ./dispatcher.json:/usr/src/app/config.json
networks:
- traefik_network
restart: unless-stopped
labels:
- traefik.http.middlewares.${SP_SLUG}_auth.basicauth.usersfile=/prod/${SP_SLUG}/auth
- traefik.docker.network=${TRAEFIK_NETWORK}
- traefik.http.routers.${SP_SLUG}_disp_main.rule=Host(`${SP_HOST}`) && PathPrefix(`/disp_main/`)
- traefik.http.routers.${SP_SLUG}_disp_main.service=${SP_SLUG}_disp_main
- traefik.http.routers.${SP_SLUG}_disp_main.middlewares=${SP_SLUG}_auth,${SP_SLUG}_disp_main_strip
- traefik.http.middlewares.${SP_SLUG}_disp_main_strip.stripprefix.prefixes=/disp_main
- traefik.http.routers.${SP_SLUG}_disp_cfg.rule=Host(`${SP_HOST}`) && PathPrefix(`/disp_cfg/`)
- traefik.http.routers.${SP_SLUG}_disp_cfg.service=${SP_SLUG}_disp_cfg
- traefik.http.routers.${SP_SLUG}_disp_cfg.middlewares=${SP_SLUG}_auth,${SP_SLUG}_disp_cfg_strip
- traefik.http.middlewares.${SP_SLUG}_disp_cfg_strip.stripprefix.prefixes=/disp_cfg
- traefik.http.services.${SP_SLUG}_disp_main.loadbalancer.server.port=3000
- traefik.http.services.${SP_SLUG}_disp_cfg.loadbalancer.server.port=3001
# Tabs
tabs:
image: git.cheetah.cat/smartpager/ui-tabs-frontend:latest
networks:
- traefik_network
restart: unless-stopped
labels:
- traefik.docker.network=${TRAEFIK_NETWORK}
- traefik.http.routers.${SP_SLUG}_tabs.middlewares=${SP_SLUG}_auth
- traefik.http.routers.${SP_SLUG}_tabs.rule=Host(`${SP_HOST}`) && (Path(`/`) || PathPrefix(`/fonts`) || PathPrefix(`/css`) || PathPrefix(`/js`))
- traefik.http.services.${SP_SLUG}_tabs.loadbalancer.server.port=3250
depends_on:
- dispatcher
# Wald/Grasbrand
msg_wbi_dwd:
image: git.cheetah.cat/smartpager/msg-wbi-dwd:latest
networks:
- traefik_network
restart: unless-stopped
environment:
DISPATCHER: "dispatcher:3000"
volumes:
- ./config_wbi_dwd.json:/usr/src/app/config.json
labels:
- traefik.docker.network=${TRAEFIK_NETWORK}
- traefik.http.routers.${SP_SLUG}_msg_wbi_dwd.rule=Host(`${SP_HOST}`) && PathPrefix(`/msg-brandgefahren_cfg/`)
- traefik.http.routers.${SP_SLUG}_msg_wbi_dwd.service=${SP_SLUG}_msg_wbi_dwd
- traefik.http.routers.${SP_SLUG}_msg_wbi_dwd.middlewares=${SP_SLUG}_auth,${SP_SLUG}_msg_wbi_dwd_strip
- traefik.http.middlewares.${SP_SLUG}_msg_wbi_dwd_strip.stripprefix.prefixes=/msg-brandgefahren_cfg
- traefik.http.services.${SP_SLUG}_msg_wbi_dwd.loadbalancer.server.port=3100
depends_on:
- dispatcher
# DWD
msg_dwd:
image: git.cheetah.cat/smartpager/msg-dwd:latest
networks:
- traefik_network
restart: unless-stopped
environment:
DISPATCHER: "dispatcher:3000"
volumes:
- ./config_dwd.json:/usr/src/app/config.json
labels:
- traefik.docker.network=${TRAEFIK_NETWORK}
- traefik.http.routers.${SP_SLUG}_msg_dwd.rule=Host(`${SP_HOST}`) && PathPrefix(`/msg-dwd_cfg/`)
- traefik.http.routers.${SP_SLUG}_msg_dwd.middlewares=${SP_SLUG}_auth,${SP_SLUG}_msg_dwd_strip
- traefik.http.middlewares.${SP_SLUG}_msg_dwd_strip.stripprefix.prefixes=/msg-dwd_cfg
- traefik.http.services.${SP_SLUG}_msg_dwd.loadbalancer.server.port=3050
depends_on:
- dispatcher
# Testalarm
msg_testalarm:
image: git.cheetah.cat/smartpager/msg-testalarm:latest
networks:
- traefik_network
restart: unless-stopped
environment:
DISPATCHER: "dispatcher:3000"
volumes:
- ./config_testalarm.json:/usr/src/app/config.json
labels:
- traefik.docker.network=${TRAEFIK_NETWORK}
- traefik.http.routers.${SP_SLUG}_msg_testalarm.rule=Host(`${SP_HOST}`) && PathPrefix(`/msg-testalarm_cfg/`)
- traefik.http.routers.${SP_SLUG}_msg_testalarm.middlewares=${SP_SLUG}_auth,${SP_SLUG}_msg_testalarm_strip
- traefik.http.middlewares.${SP_SLUG}_msg_testalarm_strip.stripprefix.prefixes=/msg-testalarm_cfg
- traefik.http.services.${SP_SLUG}_msg_testalarm.loadbalancer.server.port=3070
depends_on:
- dispatcher
# MoWaS
msg_mowas:
image: git.cheetah.cat/smartpager/msg-mowas:latest
networks:
- traefik_network
restart: unless-stopped
environment:
DISPATCHER: "dispatcher:3000"
volumes:
- ./config_mowas.json:/usr/src/app/config.json
labels:
- traefik.docker.network=${TRAEFIK_NETWORK}
- traefik.http.routers.${SP_SLUG}_msg_mowas.rule=Host(`${SP_HOST}`) && PathPrefix(`/msg-mowas_cfg/`)
- traefik.http.routers.${SP_SLUG}_msg_mowas.middlewares=${SP_SLUG}_auth,${SP_SLUG}_msg_mowas_strip
- traefik.http.middlewares.${SP_SLUG}_msg_mowas_strip.stripprefix.prefixes=/msg-mowas_cfg
- traefik.http.services.${SP_SLUG}_msg_mowas.loadbalancer.server.port=3090
depends_on:
- dispatcher
# Telegrambot
msg_telegrambot:
image: git.cheetah.cat/smartpager/msg-telegrambot:latest
networks:
- traefik_network
restart: unless-stopped
environment:
DISPATCHER: "dispatcher:3000"
volumes:
- ./config_telegrambot.json:/usr/src/app/config.json
labels:
- traefik.docker.network=${TRAEFIK_NETWORK}
- traefik.http.routers.${SP_SLUG}_msg_telegrambot.rule=Host(`${SP_HOST}`) && PathPrefix(`/msg-tg_cfg/`)
- traefik.http.routers.${SP_SLUG}_msg_telegrambot.middlewares=${SP_SLUG}_auth,${SP_SLUG}_msg_telegrambot_strip
- traefik.http.middlewares.${SP_SLUG}_msg_telegrambot_strip.stripprefix.prefixes=/msg-tg_cfg
- traefik.http.services.${SP_SLUG}_msg_telegrambot.loadbalancer.server.port=3060
depends_on:
- dispatcher
# METAR
msg_metar:
image: git.cheetah.cat/smartpager/msg-metar:latest
networks:
- traefik_network
restart: unless-stopped
environment:
DISPATCHER: "dispatcher:3000"
volumes:
- ./config_metar.json:/usr/src/app/config.json
labels:
- traefik.docker.network=${TRAEFIK_NETWORK}
- traefik.http.routers.${SP_SLUG}_msg_metar.rule=Host(`${SP_HOST}`) && PathPrefix(`/msg-metar_cfg/`)
- traefik.http.routers.${SP_SLUG}_msg_metar.middlewares=${SP_SLUG}_auth,${SP_SLUG}_msg_metar_strip
- traefik.http.middlewares.${SP_SLUG}_msg_metar_strip.stripprefix.prefixes=/msg-metar_cfg
- traefik.http.services.${SP_SLUG}_msg_metar.loadbalancer.server.port=3110
depends_on:
- dispatcher

8
template/config_dwd.json Normal file
View file

@ -0,0 +1,8 @@
{
"pager": {
"url": "http://<DISPATCHER>/api/message/advanced"
},
"germanUmlautSupport": true,
"regions": [
]
}

View file

@ -0,0 +1,7 @@
{
"pager": {
"url": "http://127.0.0.1:3000/api/message/advanced"
},
"alarms": [
]
}

View file

@ -0,0 +1,8 @@
{
"pager": {
"url": "http://127.0.0.1:3000/api/message/advanced"
},
"germanUmlautSupport": true,
"regions": [
]
}

View file

@ -0,0 +1,8 @@
{
"bottoken": "",
"pager": {
"url": "http://127.0.0.1:3000/api/message/advanced"
},
"deliveryModes": [
]
}

View file

@ -0,0 +1,7 @@
{
"pager": {
"url": "http://127.0.0.1:3000/api/message/advanced"
},
"alarms": [
]
}

View file

@ -0,0 +1,8 @@
{
"pager": {
"url": "http://127.0.0.1:3000/api/message/advanced"
},
"alarms": [
],
"germanUmlautSupport": false
}

86
template/dispatcher.json Normal file
View file

@ -0,0 +1,86 @@
{
"general": {
"port": 3000,
"configPort": 3001,
"configWebInterfaceEnabled": true
},
"connectors": {
"dummy": {
"enabled": true,
"duplexTimeout": 300
},
"pocsag": {
"enabled": false,
"duplexTimeout": 300,
"mqttserver": "mqtt://host:1883",
"username": "",
"password": "",
"topic": "pocsagtx/transmit"
},
"pagernetzAT": {
"enabled": false,
"duplexTimeout": 300
},
"ecityruf": {
"enabled": false,
"duplexTimeout": 180
},
"emPuppettering": {
"enabled": false,
"duplexTimeout": "250"
},
"emessage": {
"enabled": false,
"username": "",
"password": "",
"duplexTimeout": 180,
"responseTimeout": 320,
"startInterval": 5,
"2wayS_BackChannel": true
},
"lorawan": {
"enabled": false,
"duplexTimeout": 1800,
"mqttserver": "mqtt://eu1.cloud.thethings.network:1883",
"username": "",
"password": ""
},
"dapnet": {
"enabled": false,
"endpoint": "http://<DAPNETCore>:8080/calls",
"username": "test",
"password": "testsucks",
"duplexTimeout": 300
},
"pnet": {
"enabled": false,
"duplexTimeout": 10
},
"tetracontrol": {
"enabled": false,
"endpoint": "<TC_IP>:80",
"username": "user",
"password": "password",
"duplexTimeout": 300
}
},
"pagers": {
"birdyslim": {
"enabled": false,
"rxchain": {
"lorawan": false,
"events": {
"webhook": false,
"mqtt": false
}
}
}
},
"boskrypt": {
"enabled": false,
"keys": {
}
},
"deliveryPresets": {
}
}