Compare commits

...
Author SHA1 Message Date
fauno 2a2947160b doc: release notes
continuous-integration/drone/pr Build is failing
2026-10-08 11:40:34 -03:00
fauno c18fca9d7c feat: period is also configurable
continuous-integration/drone/pr Build is failing
2026-10-08 11:24:14 -03:00
fauno 21ea1dd698 feat: implement basic rate limiting by ip address
continuous-integration/drone/pr Build is failing
2026-10-03 01:31:30 -03:00
5 changed files with 28 additions and 3 deletions
+10
View File
@@ -249,3 +249,13 @@ WRITE_TIMEOUT=0s
# #
# https://doc.traefik.io/traefik/reference/install-configuration/entrypoints/#opt-forwardedHeaders-trustedIPs # 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 #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
#RATE_LIMIT_PERIOD=1s
+2 -2
View File
@@ -1,4 +1,4 @@
export TRAEFIK_YML_VERSION=v36 export TRAEFIK_YML_VERSION=v37
export FILE_PROVIDER_YML_VERSION=v13 export FILE_PROVIDER_YML_VERSION=v14
export ENTRYPOINT_VERSION=v5 export ENTRYPOINT_VERSION=v5
export ANUBIS_YML_VERSION=v1 export ANUBIS_YML_VERSION=v1
+5
View File
@@ -22,6 +22,11 @@ http:
basicAuth: basicAuth:
usersFile: "/run/secrets/usersfile" usersFile: "/run/secrets/usersfile"
{{ end }} {{ end }}
ip-rate-limit:
rateLimit:
average: {{ or (env "RATE_LIMIT_AVERAGE") "100" }}
burst: {{ or (env "RATE_LIMIT_BURST") "200" }}
period: {{ or (env "RATE_LIMIT_PERIOD") "1s" }}
security: security:
headers: headers:
frameDeny: true frameDeny: true
+6
View File
@@ -0,0 +1,6 @@
# Rate limits
You can enable rate limits globally by updating the .env file for
Traefik. Per-app rate limits need to be supported by each app!
Limits can be tested with benchmarking tools like `wrk`.
+4
View File
@@ -65,6 +65,10 @@ entrypoints:
allowEncodedPercent: true allowEncodedPercent: true
allowEncodedQuestionMark: true allowEncodedQuestionMark: true
allowEncodedHash: true allowEncodedHash: true
{{ if eq (env "RATE_LIMIT_EVERYTHING") "true" }}
middlewares:
- "ip-rate-limit@file"
{{ end }}
{{- if eq (env "GITEA_SSH_ENABLED") "1" }} {{- if eq (env "GITEA_SSH_ENABLED") "1" }}
gitea-ssh: gitea-ssh:
address: ":2222" address: ":2222"