commit ef5e82539e6ee77cadcc2b96d6efd3126884baa4 Author: cheetah.cat Date: Sun Apr 6 03:22:41 2025 +0200 first commit diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..4bd36f1 --- /dev/null +++ b/compose.yaml @@ -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 \ No newline at end of file diff --git a/template/.env b/template/.env new file mode 100644 index 0000000..8227cdb --- /dev/null +++ b/template/.env @@ -0,0 +1,4 @@ +SP_HOST=template.domain.tld +SP_SLUG=template +TRAEFIK_NETWORK=prod_default +TRAEFIK_BASIC_AUTH_FILE=/home//prod/template/auth \ No newline at end of file diff --git a/template/auth b/template/auth new file mode 100644 index 0000000..53734ff --- /dev/null +++ b/template/auth @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/template/compose.yaml b/template/compose.yaml new file mode 100644 index 0000000..7bb9c58 --- /dev/null +++ b/template/compose.yaml @@ -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 \ No newline at end of file diff --git a/template/config_dwd.json b/template/config_dwd.json new file mode 100644 index 0000000..7534619 --- /dev/null +++ b/template/config_dwd.json @@ -0,0 +1,8 @@ +{ + "pager": { + "url": "http:///api/message/advanced" + }, + "germanUmlautSupport": true, + "regions": [ + ] +} \ No newline at end of file diff --git a/template/config_metar.json b/template/config_metar.json new file mode 100644 index 0000000..4ebca7d --- /dev/null +++ b/template/config_metar.json @@ -0,0 +1,7 @@ +{ + "pager": { + "url": "http://127.0.0.1:3000/api/message/advanced" + }, + "alarms": [ + ] +} \ No newline at end of file diff --git a/template/config_mowas.json b/template/config_mowas.json new file mode 100644 index 0000000..87b1b91 --- /dev/null +++ b/template/config_mowas.json @@ -0,0 +1,8 @@ +{ + "pager": { + "url": "http://127.0.0.1:3000/api/message/advanced" + }, + "germanUmlautSupport": true, + "regions": [ + ] +} \ No newline at end of file diff --git a/template/config_telegrambot.json b/template/config_telegrambot.json new file mode 100644 index 0000000..e8a4ec8 --- /dev/null +++ b/template/config_telegrambot.json @@ -0,0 +1,8 @@ +{ + "bottoken": "", + "pager": { + "url": "http://127.0.0.1:3000/api/message/advanced" + }, + "deliveryModes": [ + ] +} \ No newline at end of file diff --git a/template/config_testalarm.json b/template/config_testalarm.json new file mode 100644 index 0000000..4ebca7d --- /dev/null +++ b/template/config_testalarm.json @@ -0,0 +1,7 @@ +{ + "pager": { + "url": "http://127.0.0.1:3000/api/message/advanced" + }, + "alarms": [ + ] +} \ No newline at end of file diff --git a/template/config_wbi_dwd.json b/template/config_wbi_dwd.json new file mode 100644 index 0000000..eabdcfa --- /dev/null +++ b/template/config_wbi_dwd.json @@ -0,0 +1,8 @@ +{ + "pager": { + "url": "http://127.0.0.1:3000/api/message/advanced" + }, + "alarms": [ + ], + "germanUmlautSupport": false +} diff --git a/template/dispatcher.json b/template/dispatcher.json new file mode 100644 index 0000000..56dd866 --- /dev/null +++ b/template/dispatcher.json @@ -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://:8080/calls", + "username": "test", + "password": "testsucks", + "duplexTimeout": 300 + }, + "pnet": { + "enabled": false, + "duplexTimeout": 10 + }, + "tetracontrol": { + "enabled": false, + "endpoint": ":80", + "username": "user", + "password": "password", + "duplexTimeout": 300 + } + }, + "pagers": { + "birdyslim": { + "enabled": false, + "rxchain": { + "lorawan": false, + "events": { + "webhook": false, + "mqtt": false + } + } + } + }, + "boskrypt": { + "enabled": false, + "keys": { + } + }, + "deliveryPresets": { + } +}