Compare commits

..
Author SHA1 Message Date
fauno 99936080ae doc: trusted ips context
continuous-integration/drone/pr Build is failing
2026-08-25 18:08:28 -03:00
fauno 7610c9f4db feat: trusted ips
continuous-integration/drone/pr Build is failing
when traefik is behind a reverse proxy, we need to tell it which
networks to trust with x-real-ip headers
2026-08-25 16:46:35 -03:00
8 changed files with 8 additions and 66 deletions
+2 -17
View File
@@ -139,14 +139,10 @@ WRITE_TIMEOUT=0s
#####################################################################
## Enable prometheus metrics collection
## Metrics are served unauthenticated on :8082, reachable only from
## other services on the proxy network (e.g. monitoring-ng's Alloy,
## which auto-discovers it via the prometheus.io/scrape label)
## used used by the coop-cloud monitoring stack
## BASIC_AUTH should also be enabled
#COMPOSE_FILE="$COMPOSE_FILE:compose.metrics.yml"
#METRICS_ENABLED=1
## Setting METRICS_FQDN also adds a public metrics endpoint (behind
## basic auth). BASIC_AUTH should be enabled for this.
#METRICS_FQDN=metrics.traefik.example.com
#####################################################################
@@ -215,8 +211,6 @@ WRITE_TIMEOUT=0s
## Garage
#COMPOSE_FILE="$COMPOSE_FILE:compose.garage.yml"
#GARAGE_RPC_ENABLED=1
#COMPOSE_FILE="$COMPOSE_FILE:compose.garage-admin.yml"
#GARAGE_ADMIN_ENABLED=1
## Nextcloud Talk HPB
#COMPOSE_FILE="$COMPOSE_FILE:compose.nextcloud-talk-hpb.yml"
@@ -249,12 +243,3 @@ WRITE_TIMEOUT=0s
#
# https://doc.traefik.io/traefik/reference/install-configuration/entrypoints/#opt-forwardedHeaders-trustedIPs
#TRUSTED_IPS="['10.13.12.1']" # 10.13.12.1 is an example
## Rate limits
# You can enable universal rate limits by setting RATE_LIMIT_EVERYTHING
# to true, otherwise each app needs to export their own middleware labels.
#
# https://doc.traefik.io/traefik/reference/routing-configuration/http/middlewares/ratelimit/
#RATE_LIMIT_EVERYTHING=false
#RATE_LIMIT_AVERAGE=100
#RATE_LIMIT_BURST=200
+2 -2
View File
@@ -1,4 +1,4 @@
export TRAEFIK_YML_VERSION=v37
export FILE_PROVIDER_YML_VERSION=v14
export TRAEFIK_YML_VERSION=v34
export FILE_PROVIDER_YML_VERSION=v12
export ENTRYPOINT_VERSION=v5
export ANUBIS_YML_VERSION=v1
-10
View File
@@ -1,10 +0,0 @@
version: "3.8"
services:
app:
environment:
- GARAGE_ADMIN_ENABLED
ports:
- target: 3903
published: 3903
protocol: tcp
mode: host
-6
View File
@@ -3,9 +3,3 @@ services:
app:
environment:
- METRICS_ENABLED
deploy:
labels:
# lets monitoring-ng's Alloy auto-discover and scrape metrics-internal
# via the proxy network.
- "prometheus.io/scrape=true"
- "prometheus.io/port=8082"
+3 -3
View File
@@ -3,7 +3,7 @@ version: "3.8"
services:
app:
image: "traefik:v3.7.13"
image: "traefik:v3.7.10"
# Note(decentral1se): *please do not* add any additional ports here.
# Doing so could break new installs with port conflicts. Please use
# the usual `compose.$app.yml` approach for any additional ports
@@ -57,12 +57,12 @@ services:
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "traefik.http.routers.${STACK_NAME}.service=api@internal"
- "traefik.http.routers.${STACK_NAME}.middlewares=security@file"
- "coop-cloud.${STACK_NAME}.version=6.2.0+v3.7.12"
- "coop-cloud.${STACK_NAME}.version=6.1.0+v3.7.10"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT}"
- "backupbot.backup=${ENABLE_BACKUPS:-true}"
socket-proxy:
image: lscr.io/linuxserver/socket-proxy:3.4.4
image: lscr.io/linuxserver/socket-proxy:3.4.3
deploy:
endpoint_mode: dnsrr
environment:
+1 -15
View File
@@ -22,11 +22,6 @@ http:
basicAuth:
usersFile: "/run/secrets/usersfile"
{{ end }}
ip-rate-limit:
rateLimit:
average: {{ or (env "RATE_LIMIT_AVERAGE") "100" }}
burst: {{ or (env "RATE_LIMIT_BURST") "200" }}
period: "1s"
security:
headers:
frameDeny: true
@@ -37,7 +32,6 @@ http:
stsSeconds: "31536000"
{{ if eq (env "METRICS_ENABLED") "1" }}
routers:
{{ if ne (env "METRICS_FQDN") "" }}
traefik-metrics:
rule: "Host(`{{ env "METRICS_FQDN" }}`)"
entrypoints:
@@ -47,14 +41,6 @@ http:
middlewares:
- basicauth@file
service: prometheus@internal
{{ end }}
# reachable from other services on the proxy network only (this port
# isn't published to the host), without auth
traefik-metrics-internal:
rule: "PathPrefix(`/`)"
entrypoints:
- metrics-internal
service: prometheus@internal
{{ end }}
tls:
@@ -75,4 +61,4 @@ tls:
certificates:
- certFile: /run/secrets/ssl_cert
keyFile: /run/secrets/ssl_key
{{ end }}
{{ end }}
-1
View File
@@ -1 +0,0 @@
1. compose.metrics.yml now adds prometheus.io/scrape labels so services like monitoring-ng can automatically discover and scrape Traefik's metrics.
-12
View File
@@ -51,10 +51,6 @@ entrypoints:
{{ if ne (env "TRUSTED_IPS") "" }}
forwardedHeaders:
trustedIPs: {{ env "TRUSTED_IPS" }}
{{ end }}
{{ if eq (env "RATE_LIMIT_EVERYTHING") "true" }}
middlewares:
- "ip-rate-limit@file"
{{ end }}
transport:
respondingTimeouts:
@@ -83,10 +79,6 @@ entrypoints:
garage-rpc:
address: ":3901"
{{- end }}
{{- if eq (env "GARAGE_ADMIN_ENABLED") "1" }}
garage-admin:
address: ":3903"
{{- end }}
{{- if eq (env "FOODSOFT_SMTP_ENABLED") "1" }}
foodsoft-smtp:
address: ":2525"
@@ -139,10 +131,6 @@ entrypoints:
onion:
address: ":9052"
{{- end }}
{{- if eq (env "METRICS_ENABLED") "1" }}
metrics-internal:
address: ":8082"
{{- end }}
ping:
entryPoint: web