I am using docker to connect to the controller. I hadn’t updated in a while and when I did a update on the docker the controller is no longer able to connect. I have a flashing green light. I did a reset on the photon board and was able to connect to the Particle cloud but when I flashed the controller, the controller is back to green flashing and the Dashboard shows waiting on datastore
Below is my current docker-compose file.
# DO NOT EDIT: THIS FILE WILL BE RESET DURING UPDATES
#
# This file contains configuration for the shared Brewblox services
#
# If you need to make change to any of the shared services,
# you can do so in docker-compose.yml.
#
# For more information, see https://docs.docker.com/compose/extends/
networks:
default:
driver_opts:
com.docker.network.bridge.name: br-${COMPOSE_PROJECT_NAME}
version: "3.7"
services:
eventbus:
image: ghcr.io/brewblox/mosquitto:${BREWBLOX_RELEASE}
restart: unless-stopped
labels:
# MQTT
- traefik.tcp.routers.mqtt.entrypoints=mqtt
- traefik.tcp.routers.mqtt.rule=HostSNI(`*`)
- traefik.tcp.routers.mqtt.tls=false
- traefik.tcp.routers.mqtt.service=mqtt
- traefik.tcp.services.mqtt.loadBalancer.server.port=1884
# MQTTS with TLS termination by traefik
- traefik.tcp.routers.mqtts.entrypoints=mqtts
- traefik.tcp.routers.mqtts.rule=HostSNI(`*`)
- traefik.tcp.routers.mqtts.tls=true
- traefik.tcp.routers.mqtts.service=mqtts
- traefik.tcp.services.mqtts.loadBalancer.server.port=1884
# MQTT over websockets
- traefik.http.services.eventbus.loadbalancer.server.port=15675
volumes:
- type: bind
source: /mnt/user/appdata/mosquitto
target: /mosquitto/include
victoria:
image: victoriametrics/victoria-metrics:v1.88.0
restart: unless-stopped
labels:
- traefik.http.services.victoria.loadbalancer.server.port=8428
volumes:
- type: bind
source: /mnt/user/appdata/victoria
target: /victoria-metrics-data
command: >-
--retentionPeriod=100y
--influxMeasurementFieldSeparator=/
--http.pathPrefix=/victoria
--search.latencyOffset=10s
redis:
image: redis:6.0
restart: unless-stopped
labels:
- traefik.enable=false
volumes:
- type: bind
source: /mnt/user/appdata/redis
target: /data
command: --appendonly yes
history:
image: ghcr.io/brewblox/brewblox-history:${BREWBLOX_RELEASE}
restart: unless-stopped
volumes:
- type: bind
source: /etc/localtime
target: /etc/localtime
read_only: true
# Privileged to avoid a bug in libseccomp for Debian Buster hosts
# This flag should be removed when Debian Buster is no longer supported
# For an explanation: https://github.com/sdr-enthusiasts/Buster-Docker-Fixes
privileged: true
# auth:
# image: ghcr.io/brewblox/brewblox-auth:${BREWBLOX_RELEASE}
# restart: unless-stopped
# environment:
# - BREWBLOX_AUTH_ENABLED={{ config.auth.enabled }}
# - BREWBLOX_AUTH_IGNORE=/|/(ui|shared)/.*
# volumes:
# - type: bind
# source: ./auth
# target: /app/data
# - type: bind
# source: /etc/localtime
# target: /etc/localtime
# read_only: true
traefik:
image: traefik:2.10
restart: unless-stopped
labels:
- traefik.http.routers.api.rule=PathPrefix(`/api`) || PathPrefix(`/dashboard`)
- traefik.http.routers.api.service=api@internal
- traefik.http.middlewares.prefix-strip.stripprefixregex.regex=/[^/]+
volumes:
- type: bind
source: /mnt/user/appdata/traefik
target: /config
read_only: true
- type: bind
source: /var/run/docker.sock
target: /var/run/docker.sock
- type: bind
source: /etc/localtime
target: /etc/localtime
read_only: true
ports:
- "${BREWBLOX_PORT_HTTP:-80}:${BREWBLOX_PORT_HTTP:-80}"
- "${BREWBLOX_PORT_HTTPS:-443}:${BREWBLOX_PORT_HTTPS:-443}"
- "${BREWBLOX_PORT_MQTT:-1884}:${BREWBLOX_PORT_MQTT:-1883}"
- "${BREWBLOX_PORT_MQTTS:-8883}:${BREWBLOX_PORT_MQTTS:-8883}"
command: >-
--api.dashboard=true
--providers.docker=true
--providers.docker.constraints="LabelRegex(`com.docker.compose.project`, `${COMPOSE_PROJECT_NAME}`)"
--providers.docker.defaultrule="PathPrefix(`/{{ index .Labels \"com.docker.compose.service\" }}`)"
--providers.file.directory=/config
--entrypoints.web.address=:${BREWBLOX_PORT_HTTP}
--entrypoints.websecure.address=:${BREWBLOX_PORT_HTTPS}
--entrypoints.websecure.http.tls=true
--entrypoints.mqtt.address=:${BREWBLOX_PORT_MQTT}/tcp
--entrypoints.mqtts.address=:${BREWBLOX_PORT_MQTTS}/tcp
ui:
image: ghcr.io/brewblox/brewblox-ui:${BREWBLOX_RELEASE}
restart: unless-stopped
labels:
- traefik.http.routers.ui.rule=PathPrefix(`/ui`) || Path(`/`)
volumes:
- type: bind
source: /etc/localtime
target: /etc/localtime
read_only: true
hass:
image: brewblox/brewblox-hass:edge
restart: unless-stopped
command: >-
--hass-mqtt-host=192.168.1.229
--hass-mqtt-port=1883
sparkone:
image: ghcr.io/brewblox/brewblox-devcon-spark:${BREWBLOX_RELEASE}
volumes:
- type: bind
source: /etc/localtime
target: /etc/localtime
read_only: true
- type: bind
source: /mnt/user/appdata/brewblox
target: /app/backup
# volumes:
# #- /mnt/user/appdata/brewblox
# - /spark/backup:/app/backup
privileged: true
restart: unless-stopped
command: >-
--name=sparkone
--device-id=1C0029001247343339383037
--device-host=192.168.1.80
# brewblox:
# url: https://192.168.1.229:37443/ # URL of brewblox install
# fields: # List of Brewblox services
# temp: "spark-one/Ferment Beer Sensor/value[degC]" # Every item is defined with the brewfather variable as key
# aux_temp: "spark-one/Ferment Fridge Sensor/value[degC]" # and the Brewblox variable name as value
# ext_temp: "spark-one/Kamertemperatuur sensor/value[degC]" # Brewblox variables are formatted as {service}/{field}
# gravity: "tilt/Blue/Specific gravity" # https://github.com/BrewBlox/brewblox-tilt
# brewersfriend:
# url: https://log.brewersfriend.com/stream/454497935965b2bdf539bfd326a0d09949d1fdc4 # replace with your URL from brewfather settings page (Custom Stream)
# interval: 900 # number of seconds between updates, minimum 900 seconds, 0 stop after run
# Data to be submitted & defaults
# brewersfrienddata:
# name: F1 # Device name
# temp: None # Beer temp
# aux_temp: None # Fridge temp
# ext_temp: None # Room temp
# temp_unit: C # C, F, K
# gravity: None # Gravity
# gravity_unit: G # G, P
# pressure: None # Pressure
# pressure_unit: None # PSI, BAR, KPA
# ph: None # pH
# comment: None # comment
# beer: None # Beer name
# {% if config.usb_proxy.enabled %}
# usb-proxy:
# image: ghcr.io/brewblox/brewblox-usb-proxy:${BREWBLOX_RELEASE}
# restart: unless-stopped
# privileged: true
# labels:
# - traefik.enable=false
# volumes:
# - /dev:/dev
# # - type: bind
# # source: /dev
# # target: /dev
# {% endif %}
# {% if config.reflector.enabled %}
# {% for interface in config.reflector.interfaces %}
# reflector-{{interface}}:
# image: yuxzhu/mdns-reflector:latest
# restart: unless-stopped
# network_mode: host
# command: mdns-reflector -fn4 {{interface}} br-${COMPOSE_PROJECT_NAME}
# labels:
# - traefik.enable=false
# {% endfor %}
# {% endif %}
````Preformatted text`
Here are some of the logs.
The firmware on your Spark is not compatible with your current version of Brewblox. You must update the Spark firmware. Do you see an option to do so from the Dashboard? Can you show us a screenshot?
There isn’t an option, or a way to select services…
There used to be a way for me to see the Spark controller whether the firmware was updated to date or not.
This feels reminiscent of an issue I’ve had in the past. I remember grabbing a Raspberry Pi and plugging in the Spark over USB to flash the firmware. I also run my Brewblox instance remotely in a virtual machine. Not sure if there is any other option to update the firmware other than USB.
I’m using docker right now and it’s plugged into the host machine. I’m not sure I have any more pi’s around to see if that works. I was hoping it was an issue with my compose file or an issue with the container that would be an easy update.
Why have you commented the auth service?
It must be running. If stopping the auth service would disable authentication, that would be very bad design. That is why it is disabled with a flag and not the existence of the service.
I’ve tried the brewblox-ctl but Unraid only allows admin rights to login and run commands via terminal and when I try to use brewblox-ctl I always get errors due to trying to run it via root.
I saw the updated docker-compose but the spark container was removed and didn’t move much past that. Do I still need to add it in?
Here is what my compose currenlty looks like. WIth the updated compose, the UI isn’t loading.
We have a docker-compose.shared.yml file, which is managed by us and can be overwritten.
We also have docker-compose.yml, which contains the non-system containers, usually the just the decvon-spark services.
For reference, this is my docker-compose.shared.yml:
I see in your file, the MQTT port is different in traefik, perhaps just hardcode the ports like my file.
You also still have some templated placeholders between {{ }} that jinja replaces with the actual config.
I’ve been able to redo the docker compose and updating the mounts. All the containers are up and running but I’m still not able to access the UI. I also noticed that there isn’t an environment variable to define the Spark IP address. Does the Discovery=all do that instead?
When I go to the http url I get a 404 error but when I go to https I get site can’t be reached.
Here are the logs.
For the auth container:
INFO: Will watch for changes in these directories: ['/app/data']
INFO: Uvicorn running on http://0.0.0.0:5000 (Press CTRL+C to quit)
INFO: Started reloader process [1] using WatchFiles
For all the containers:
eventbus-1 | 1724269172: mosquitto version 2.0.18 starting
sparkone-1 | 2024/08/21 14:39:34.561 [I:brewblox_devcon_spark.app_factory:88] name='sparkone' debug=False trace=False debugger=False mqtt_protocol='mqtt' mqtt_host='eventbus' mqtt_port=1883 state_topic='brewcast/state' history_topic='brewcast/history' datastore_topic='brewcast/datastore' blocks_topic='brewcast/spark/blocks' http_client_interval=datetime.timedelta(seconds=1) http_client_interval_max=datetime.timedelta(seconds=60) http_client_backoff=1.1 datastore_host='history' datastore_port=5000 datastore_path='/history/datastore' datastore_fetch_timeout=datetime.timedelta(seconds=300) datastore_flush_delay=datetime.timedelta(seconds=5) datastore_shutdown_timeout=datetime.timedelta(seconds=2) device_id='1C0029001247343339383037' discovery= device_host='192.168.1.80' device_port=8332 usb_proxy_host='usb-proxy' usb_proxy_port=5000 mock=False simulation=False simulation_port=45909 simulation_display_port=46743 simulation_workdir=Po:5000/history/datastore'
redis-1 | 1:C 21 Aug 2024 19:39:32.212 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
sparkone-1 | 2024/08/21 14:39:34.579 [I:brewblox_devcon_spark.synchronization:148] Service temperature unit set to degF
redis-1 | 1:C 21 Aug 2024 19:39:32.212 # Redis version=6.0.20, bits=64, commit=00000000, modified=0, pid=1, just started
eventbus-1 | 1724269172: Config loaded from /mosquitto/config/mosquitto.conf.
redis-1 | 1:C 21 Aug 2024 19:39:32.212 # Configuration loaded
redis-1 | 1:M 21 Aug 2024 19:39:32.214 * Running mode=standalone, port=6379.
eventbus-1 | 1724269172: Warning: File /mosquitto/include/externals.passwd has world readable permissions. Future versions will refuse to load this file.
eventbus-1 | To fix this, use `chmod 0700 /mosquitto/include/externals.passwd`.
victoria-1 | 2024-08-21T19:39:32.824Z info VictoriaMetrics/lib/logger/flag.go:12 build version: victoria-metrics-20240214-141427-tags-v1.98.0-0-gbaaa88001
victoria-1 | 2024-08-21T19:39:32.824Z info VictoriaMetrics/lib/logger/flag.go:13 command-line flags
victoria-1 | 2024-08-21T19:39:32.824Z info VictoriaMetrics/lib/logger/flag.go:20 -envflag.enable="true"
eventbus-1 | 1724269172: Opening ipv4 listen socket on port 1883.
victoria-1 | 2024-08-21T19:39:32.824Z info VictoriaMetrics/lib/logger/flag.go:20 -envflag.prefix="VM_"
eventbus-1 | 1724269172: Opening ipv4 listen socket on port 1884.
eventbus-1 | 1724269172: Opening websockets listen socket on port 15675.
eventbus-1 | 1724269172: mosquitto version 2.0.18 running
redis-1 | 1:M 21 Aug 2024 19:39:32.214 # Server initialized
victoria-1 | 2024-08-21T19:39:32.824Z info VictoriaMetrics/lib/logger/flag.go:20 -http.pathPrefix="/victoria"
victoria-1 | 2024-08-21T19:39:32.824Z info VictoriaMetrics/lib/logger/flag.go:20 -influxMeasurementFieldSeparator="/"
redis-1 | 1:M 21 Aug 2024 19:39:32.214 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
sparkone-1 | 2024/08/21 14:39:34.595 [I:brewblox_devcon_spark.state_machine:100] >>> CONNECTED (TCP)
redis-1 | 1:M 21 Aug 2024 19:39:32.214 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled (set to 'madvise' or 'never').
redis-1 | 1:M 21 Aug 2024 19:39:32.255 * DB loaded from append only file: 0.040 seconds
redis-1 | 1:M 21 Aug 2024 19:39:32.255 * Ready to accept connections
sparkone-1 | 2024/08/21 14:39:34.595 [I:brewblox_devcon_spark.synchronization:99] prompting handshake...
sparkone-1 | 2024/08/21 14:39:34.623 [I:brewblox_devcon_spark.command:90] name='BREWBLOX' firmware_version='39c3cde0' proto_version='e9b2f8b9' firmware_date='2023-02-22' proto_date='2023-02-09' system_version='3.2.0' platform='photon' reset_reason_hex='78' reset_data_hex='00' device_id='1C0029001247343339383037' reset_reason='DFU_MODE' reset_data='NOT_SPECIFIED'
sparkone-1 | 2024/08/21 14:39:34.623 [W:brewblox_devcon_spark.state_machine:130] Handshake error: incompatible firmware
sparkone-1 | 2024/08/21 14:39:34.623 [I:brewblox_devcon_spark.state_machine:156] >>> ACKNOWLEDGED
sparkone-1 | 2024/08/21 14:39:34.623 [I:brewblox_devcon_spark.command:90] name='BREWBLOX' firmware_version='39c3cde0' proto_version='e9b2f8b9' firmware_date='2023-02-22' proto_date='2023-02-09' system_version='3.2.0' platform='photon' reset_reason_hex='78' reset_data_hex='00' device_id='1C0029001247343339383037' reset_reason='DFU_MODE' reset_data='NOT_SPECIFIED'
sparkone-1 | 2024/08/21 14:39:34.623 [W:brewblox_devcon_spark.state_machine:130] Handshake error: incompatible firmware
sparkone-1 | 2024/08/21 14:39:34.623 [I:brewblox_devcon_spark.state_machine:156] >>> ACKNOWLEDGED
sparkone-1 | 2024/08/21 14:39:34.623 [E:brewblox_devcon_spark.synchronization:67] Sync subroutine failed: sync handshake - IncompatibleFirmware(424: )
sparkone-1 | 2024/08/21 14:39:34.623 [E:brewblox_devcon_spark.synchronization:194] Incompatible firmware version detected
victoria-1 | 2024-08-21T19:39:32.824Z info VictoriaMetrics/lib/logger/flag.go:20 -retentionPeriod="100y"
victoria-1 | 2024-08-21T19:39:32.824Z info VictoriaMetrics/lib/logger/flag.go:20 -search.latencyOffset="10s"
victoria-1 | 2024-08-21T19:39:32.824Z info VictoriaMetrics/app/victoria-metrics/main.go:73 starting VictoriaMetrics at "[:8428]"...
victoria-1 | 2024-08-21T19:39:32.824Z info VictoriaMetrics/app/vmstorage/main.go:106 opening storage at "victoria-metrics-data" with -retentionPeriod=100y
victoria-1 | 2024-08-21T19:39:32.840Z info VictoriaMetrics/lib/memory/memory.go:42 limiting caches to 80994506342 bytes, leaving 53996337562 bytes to the OS according to -memory.allowedPercent=60
victoria-1 | 2024-08-21T19:39:34.707Z info VictoriaMetrics/app/vmstorage/main.go:120 successfully opened storage "victoria-metrics-data" in 1.882 seconds; partsCount: 442; blocksCount: 65912; rowsCount: 378470277; sizeBytes: 545181954
victoria-1 | 2024-08-21T19:39:34.710Z info VictoriaMetrics/app/vmselect/promql/rollup_result_cache.go:126 loading rollupResult cache from "victoria-metrics-data/cache/rollupResult"...
victoria-1 | 2024-08-21T19:39:34.724Z info VictoriaMetrics/app/vmselect/promql/rollup_result_cache.go:155 loaded rollupResult cache from "victoria-metrics-data/cache/rollupResult" in 0.014 seconds; entriesCount: 0, sizeBytes: 0
victoria-1 | 2024-08-21T19:39:34.724Z info VictoriaMetrics/app/victoria-metrics/main.go:84 started VictoriaMetrics in 1.900 seconds
history-1 | 2024/08/21 14:39:33.209 [I:brewblox_history.app_factory:49] name='history' debug=False debugger=False mqtt_protocol='mqtt' mqtt_host='eventbus' mqtt_port=1883 redis_host='redis' redis_port=6379 victoria_protocol='http' victoria_host='victoria' victoria_port=8428 victoria_path='/victoria' history_topic='brewcast/history' datastore_topic='brewcast/datastore' ranges_interval=datetime.timedelta(seconds=10) metrics_interval=datetime.timedelta(seconds=10) minimum_step=datetime.timedelta(seconds=10) query_duration_default=datetime.timedelta(days=1) query_desired_points=1000
victoria-1 | 2024-08-21T19:39:34.724Z info VictoriaMetrics/lib/httpserver/httpserver.go:117 starting server at http://127.0.0.1:8428/
victoria-1 | 2024-08-21T19:39:34.724Z info VictoriaMetrics/lib/httpserver/httpserver.go:118 pprof handlers are exposed at http://127.0.0.1:8428/debug/pprof/
auth-1 | INFO: Will watch for changes in these directories: ['/app/data']
auth-1 | INFO: Uvicorn running on http://0.0.0.0:5000 (Press CTRL+C to quit)
traefik-1 | time="2024-08-21T14:39:33-05:00" level=info msg="Configuration loaded from flags."
auth-1 | INFO: Started reloader process [1] using WatchFiles
ui-1 | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
ui-1 | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
ui-1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
ui-1 | 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
ui-1 | 10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf differs from the packaged version
ui-1 | /docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
ui-1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
ui-1 | /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
ui-1 | /docker-entrypoint.sh: Configuration complete; ready for start up
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: using the "epoll" event method
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: nginx/1.27.0
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: built by gcc 13.2.1 20231014 (Alpine 13.2.1_git20231014)
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: OS: Linux 6.1.99-Unraid
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 40960:40960
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker processes
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 29
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 30
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 31
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 32
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 33
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 34
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 35
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 36
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 37
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 38
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 39
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 40
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 41
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 42
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 43
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 44
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 45
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 46
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 47
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 48
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 49
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 50
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 51
ui-1 | 2024/08/21 14:39:32 [notice] 1#1: start worker process 52
our ctl tool migrates the env settings to config settings here:
And then regenerates the config files with the templates.
I think maybe your traefik config files might need to be updated and your docker-compose.yml to not remap the ports. Here is my traefik.yml. I do not have MQTT on custom ports, only http/https.
Traefik proxies to the right container and is configured to run on these ports instead of docker remapping them.
# DO NOT EDIT: THIS FILE WILL BE RESET DURING UPDATES
#
# This file contains static configuration for the Traefik proxy.
# It is generated using the brewblox.yml settings.
#
# If you need to replace it with custom configuration,
# you can set a custom value for `traefik.static_config_file` in brewblox.yml.
#
# For more information, see: https://doc.traefik.io/traefik/getting-started/configuration-overview/#the-static-configuration
api:
dashboard: true
providers:
docker:
constraints: "LabelRegex(`com.docker.compose.project`, `brewblox`)"
defaultRule: 'PathPrefix(`/{{ index .Labels "com.docker.compose.service" }}`)'
file:
directory: /config/dynamic
entryPoints:
websecure:
address: :8443
http:
tls: True
middlewares:
- cors@file
- auth@file
web:
address: :8080
http:
middlewares:
- cors@file
- auth@file
redirections:
entryPoint:
to: websecure
admin:
address: :9600
http:
middlewares:
- cors@file
mqtt:
address: :1883/tcp
mqtts:
address: :8883/tcp
@Bob_Steers stopped working at Brewblox last month, but might still be able to give some insight.
All templates are here:
The traefik dynamic config doesn’t have any templated parameters for now, but it should be present (traefik/dynamic/brewblox-provider.yml).
This is likely what’s causing you problems. Traefik expects container and host ports to match, otherwise redirects get lost. You want to use 70:70, 9443:9443, and 1885:1885, and then to apply those ports in traefik static config at /mnt/user/appdata/traefik/traefik.yml.
# DO NOT EDIT: THIS FILE WILL BE RESET DURING UPDATES
#
# This file contains static configuration for the Traefik proxy.
# It is generated using the brewblox.yml settings.
#
# If you need to replace it with custom configuration,
# you can set a custom value for `traefik.static_config_file` in brewblox.yml.
#
# For more information, see: https://doc.traefik.io/traefik/getting-started/configuration-overview/#the-static-configuration
api:
dashboard: true
providers:
docker:
constraints: "LabelRegex(`com.docker.compose.project`, `{{ config.compose.project }}`)"
defaultRule: 'PathPrefix(`/{% raw %}{{ index .Labels "com.docker.compose.service" }}{% endraw %}`)'
file:
directory: /config/static
entryPoints:
websecure:
address: :9443
http:
tls: True
middlewares:
- cors@file
- auth@file
# web:
# address: :70
# http:
# middlewares:
# - cors@file
# - auth@file
# # {% if config.traefik.redirect_http %}
# redirections:
# entryPoint:
# to: websecure
# # {% endif %}
web:
address: :70
http:
middlewares:
- cors@file
- auth@file
redirections:
entryPoint:
to: websecure
admin:
address: :9600
http:
middlewares:
- cors@file
mqtt:
address: :1885/tcp
mqtts:
address: :8883/tcp
I’m still trying to get this working. Now I have an error message, how can I get the auth@file created?
time="2024-08-28T13:12:54-05:00" level=info msg="Configuration loaded from file: /config/traefik.yml"
time="2024-08-28T13:12:54-05:00" level=error msg="middleware \"auth@file\" does not exist" entryPointName=web routerName=web-to-websecure@internal
time="2024-08-28T13:12:54-05:00" level=error msg="middleware \"auth@file\" does not exist" entryPointName=web routerName=web-to-websecure@internal