You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+20-1Lines changed: 20 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -21,7 +21,7 @@ requested (this is a multi-value alternative to DOMAINNAME)
21
21
*`PROXY_LOGLEVEL` - Log level for HAProxy (default: `notice`)
22
22
*`HTTP_PORT` - The container binds to this port for handling HTTP requests (default: `80`)
23
23
*`HTTPS_PORT` - The container binds to this port for handling HTTPS requests (default: `443`)
24
-
*`HTTPS_FORWARDED_PORT` - The port set in the `X-Forwarded-Port` header of requests send to the Manager/Keycloak (default: `%[dst_port]` this is the HAProxy port)
24
+
*`HTTPS_FORWARDED_PORT` - The port set in the `X-Forwarded-Port` header of requests sent to the Manager/Keycloak (default: `%[dst_port]` this is the HAProxy port)
25
25
*`NAMESERVER` - The nameserver hostname and port used for resolving the Manager/Keycloak hosts (default: `127.0.0.11:53`)
26
26
*`MANAGER_HOST` - Hostname of OpenRemote Manager (default: `manager`)
27
27
*`MANAGER_WEB_PORT` - Web server port of OpenRemote Manager (default `8080`)
@@ -33,6 +33,7 @@ requested (this is a multi-value alternative to DOMAINNAME)
33
33
*`LOGFILE` - Location of log file for entrypoint script to write to in addition to stdout (default `none`)
34
34
*`AWS_ROUTE53_ROLE` - AWS Route53 Role ARN to be assumed when trying to generate wildcard certificates using Route53 DNS zone, specifically for cross account updates (default `none`)
35
35
*`LE_EXTRA_ARGS` - Can be used to add additional arguments to the certbot command (default `none`)
36
+
*`DISABLE_ACME` - Disable certbot/ACME initialization and renewal logic in the entrypoint; useful when TLS is terminated externally such as with ACM on an AWS load balancer (accepted true values: `1`, `true`, `yes`, `on`)
36
37
*`SISH_HOST` - Defines the destination hostname for forwarding requests that begin with `gw-` used in combination with `SISH_PORT`
37
38
*`SISH_PORT` - Defined the destination port for forwarding requests tha begin with `gw-` used in combination with `SISH_HOST`
38
39
*`MQTT_RATE_LIMIT` - Enable rate limiting for MQTT connections (connections/s)
@@ -57,3 +58,21 @@ If you use an Ingress, reconfigure the `HTTPS_FORWARDED_PORT` to the HTTPS port
57
58
58
59
You will also need to set the `NAMESERVER` environment variable to the cluster DNS (usually 10.96.0.10:53).
59
60
The cluster DNS typically only resolves fully qualified hostnames, so make sure to set these using the `MANAGER_HOST` and `KEYCLOAK_HOST` environment variables (e.g. `manager.default.svc.cluster.local`).
61
+
62
+
## Edge-Terminated TLS
63
+
64
+
If TLS is terminated upstream before traffic reaches this pod, for example by an AWS NLB with ACM, an ALB, an ingress controller, or another reverse proxy, then:
65
+
66
+
* Set `DISABLE_ACME=true` to disable certbot initialization and renewal in the container
67
+
* Use `HAPROXY_CONFIG=/etc/haproxy/haproxy-edge-terminated-tls.cfg`
68
+
* Set `HTTP_PORT` to a non-privileged container port such as `8080`
69
+
* Set `HTTPS_FORWARDED_PORT=443` so upstream services see the original external HTTPS port
70
+
* Configure the upstream load balancer or proxy to forward decrypted HTTP traffic to the pod `HTTP_PORT`
71
+
72
+
For MQTT in the same setup, if MQTT TLS is also terminated upstream:
73
+
74
+
* Terminate TLS on the upstream listener (for example external port `8883`)
75
+
* Forward plaintext TCP traffic from that listener to the pod's MQTT port
76
+
* The provided `haproxy-edge-terminated-tls.cfg` listens for MQTT on `MANAGER_MQTT_PORT` and forwards it to the configured manager MQTT backend
77
+
78
+
The `haproxy-edge-terminated-tls.cfg` file removes local TLS certificate usage from the pod and preserves the usual `X-Forwarded-*` HTTP headers for upstream applications. Do not use this config if HTTPS or MQTT TLS is still passed through to the pod.
0 commit comments