Compare commits

...

9 Commits

Author SHA1 Message Date
devydave e34a0e909d feat: adds crowdsec 2026-07-18 13:04:43 +02:00
fauno 4f1b71c8d6 fix(anubis): prevent forward warning on logs (#116)
> trustForwardHeader is not configured: this creates an inconsistent
> security behavior where some X-Forwarded headers (e.g.
> X-Forwarded-For, X-Forwarded-Proto) are removed but others (e.g.
> X-Forwarded-Prefix) are forwarded untouched. Please set it to false to
> remove all X-Forwarded headers, or true to trust them all.

<!--
Thank you for doing recipe maintenance work!
Please mark all checklist items which are relevant for your changes.
Please remove the checklist items which are not relevant for your changes.
Feel free to remove this comment.
-->

* [x] I have deployed and tested my changes
* [ ] I have [updated relevant versions in `abra.sh`](https://docs.coopcloud.tech/maintainers/upgrade/#updating-versions-in-the-abrash)
* [ ] I have made my environment variable changes [backwards compatible](https://docs.coopcloud.tech/maintainers/upgrade/#backwards-compatible-environment-variable-changes)
* [ ] I have added a [release note entry](https://docs.coopcloud.tech/maintainers/upgrade/#creating-new-release-notes)

Reviewed-on: coop-cloud/traefik#116
Reviewed-by: decentral1se <2+decentral1se@noreply.git.coopcloud.tech>
Reviewed-by: p4u1 <133+p4u1@noreply.git.coopcloud.tech>
Co-authored-by: f <f@sutty.nl>
Co-committed-by: f <f@sutty.nl>
2026-07-17 13:04:51 +00:00
renovate-bot 37a73bb791 chore(deps): update traefik docker tag to v3.7.8 (#121)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [traefik](https://github.com/containous/traefik) | patch | `v3.7.7` -> `v3.7.8` |

>  **Important**
>
> Release Notes retrieval for this PR were skipped because no github.com credentials were available.
> If you are self-hosted, please see [this instruction](https://github.com/renovatebot/renovate/blob/master/docs/usage/examples/self-hosting.md#githubcom-token-for-release-notes).

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Reviewed-on: coop-cloud/traefik#121
Reviewed-by: p4u1 <133+p4u1@noreply.git.coopcloud.tech>
Reviewed-by: decentral1se <2+decentral1se@noreply.git.coopcloud.tech>
Co-authored-by: Renovate Bot <renovate@coopcloud.tech>
Co-committed-by: Renovate Bot <renovate@coopcloud.tech>
2026-07-17 13:02:48 +00:00
p4u1 25c219f844 chore: publish 6.0.0+v3.7.7 release 2026-07-10 10:27:21 +02:00
renovate-bot ef0d154bb1 chore(deps): update traefik docker tag to v3.7.7 (#118)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [traefik](https://github.com/containous/traefik) | patch | `v3.7.5` -> `v3.7.7` |

>  **Important**
>
> Release Notes retrieval for this PR were skipped because no github.com credentials were available.
> If you are self-hosted, please see [this instruction](https://github.com/renovatebot/renovate/blob/master/docs/usage/examples/self-hosting.md#githubcom-token-for-release-notes).

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Reviewed-on: coop-cloud/traefik#118
Reviewed-by: decentral1se <2+decentral1se@noreply.git.coopcloud.tech>
Co-authored-by: Renovate Bot <renovate@coopcloud.tech>
Co-committed-by: Renovate Bot <renovate@coopcloud.tech>
2026-07-10 08:09:03 +00:00
renovate-bot adeaf5afa3 chore(deps): update lscr.io/linuxserver/socket-proxy docker tag to v3.4.2 (#120)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [lscr.io/linuxserver/socket-proxy](https://github.com/linuxserver/docker-socket-proxy/packages) ([source](https://github.com/linuxserver/docker-socket-proxy)) | patch | `3.4.1` -> `3.4.2` |

>  **Important**
>
> Release Notes retrieval for this PR were skipped because no github.com credentials were available.
> If you are self-hosted, please see [this instruction](https://github.com/renovatebot/renovate/blob/master/docs/usage/examples/self-hosting.md#githubcom-token-for-release-notes).

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Reviewed-on: coop-cloud/traefik#120
Reviewed-by: decentral1se <2+decentral1se@noreply.git.coopcloud.tech>
Co-authored-by: Renovate Bot <renovate@coopcloud.tech>
Co-committed-by: Renovate Bot <renovate@coopcloud.tech>
2026-07-10 08:07:00 +00:00
renovate-bot ad8a7f1bd9 chore(deps): update lscr.io/linuxserver/socket-proxy docker tag to v3.4.1 (#117)
This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [lscr.io/linuxserver/socket-proxy](https://github.com/linuxserver/docker-socket-proxy/packages) ([source](https://github.com/linuxserver/docker-socket-proxy)) | patch | `3.4.0` -> `3.4.1` |

>  **Important**
>
> Release Notes retrieval for this PR were skipped because no github.com credentials were available.
> If you are self-hosted, please see [this instruction](https://github.com/renovatebot/renovate/blob/master/docs/usage/examples/self-hosting.md#githubcom-token-for-release-notes).

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xNzMuMSIsInVwZGF0ZWRJblZlciI6IjQxLjE3My4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->

Reviewed-on: coop-cloud/traefik#117
Reviewed-by: decentral1se <2+decentral1se@noreply.git.coopcloud.tech>
Co-authored-by: Renovate Bot <renovate@coopcloud.tech>
Co-committed-by: Renovate Bot <renovate@coopcloud.tech>
2026-07-01 17:41:09 +00:00
decentral1se 81869a049e fix: matrix-federation entrypoint on :8448 to match published port
compose.matrix.yml publishes container port 8448, but the entrypoint
was on :9001 — federation traffic hit no listener. :9001 also collided
with the minio-console entrypoint.

e94da63371

Thx for @notplants.
2026-07-01 12:52:06 +02:00
p4u1 f47a200c0b fix: ensure large uploads work (#107)
<!--
Thank you for doing recipe maintenance work!
Please mark all checklist items which are relevant for your changes.
Please remove the checklist items which are not relevant for your changes.
Feel free to remove this comment.
-->

* [x] I have deployed and tested my changes
* [x] I have [updated relevant versions in `abra.sh`](https://docs.coopcloud.tech/maintainers/upgrade/#updating-versions-in-the-abrash)
* [x] I have made my environment variable changes [backwards compatible](https://docs.coopcloud.tech/maintainers/upgrade/#backwards-compatible-environment-variable-changes)
* [ ] I have added a [release note entry](https://docs.coopcloud.tech/maintainers/upgrade/#creating-new-release-notes)

---------

Co-authored-by: f <f@sutty.nl>
Reviewed-on: coop-cloud/traefik#107
Reviewed-by: decentral1se <2+decentral1se@noreply.git.coopcloud.tech>
Co-authored-by: p4u1 <p4u1_f4u1@riseup.net>
Co-committed-by: p4u1 <p4u1_f4u1@riseup.net>
2026-07-01 10:41:22 +00:00
11 changed files with 159 additions and 8 deletions
+13
View File
@@ -15,6 +15,13 @@ LOG_MAX_AGE=1
# This is here so later lines can extend it; you likely don't wanna edit
COMPOSE_FILE="compose.yml"
# Increase read timeout (or change it to 0s) to ensure large file
# uploads work.
#
# https://doc.traefik.io/traefik/reference/install-configuration/entrypoints/#opt-transport-respondingTimeouts-readTimeout
READ_TIMEOUT=60s
WRITE_TIMEOUT=0s
#####################################################################
# General settings #
#####################################################################
@@ -216,5 +223,11 @@ COMPOSE_FILE="compose.yml"
#ANUBIS_SERVE_ROBOTS_TXT=true
#ANUBIS_SLOG_LEVEL=INFO
## Crowdsec
#COMPOSE_FILE="$COMPOSE_FILE:compose.crowdsec.yml"
#CROWDSEC_ENABLED=1
#CROWDSEC_BOUNCER_ENABLED=1
#CROWDSEC_TRAEFIK_BOUNCER_API_KEY="some-api-key"
## Enable onion service support
#ONION_ENABLED=1
+46
View File
@@ -72,6 +72,52 @@ After deploying these changes, go to each recipe that supports Anubis
and follow the process there. **Enabling Anubis here is not enough for
protection your apps.**
## Crowdsec
IMPORTANT even though Crowdsec is Open Source, the software sends information of the attacker IP and what decision(ban or captcha) to a centralized server for communit managed block lists.
On first deployment you need to generate an empty secret, because the lapi key is created at runtime.
```
abra app secret insert <domain> crowdsec_lapi_key v1
```
Then deploy your traefik recipe with the crowdsec compose and variables enabled and set `CROWDSEC_BOUNCER_ENABLED=0` to prevent initializing the bouncer that has no key yet.
When traefik is running, generate the LAPI key with the following command:
```
abra app run <domain> crowdsec cscli bouncers add crowdsecBouncer
```
After that insert the LAPI key(command below) and redeploy traefik with `CROWDSEC_BOUNCER_ENABLED=1` and `CROWDSEC_TRAEFIK_CONFIG_VERSION=v2`.
```
abra app secret insert <domain> crowdsec_lapi_key v2 -f -t <path-to/lapi-key-file>
```
When it is up and running go to the recipe you want to protect and add the following snippet and redeploy.
```
---
version: "3.8"
services:
app:
deploy:
labels:
- "traefik.http.routers.${STACK_NAME}.middlewares=crowdsec@file"
```
You can see if it is working by checking the ban list.
```
abra app run <domain> crowdsec cscli decisions list
```
When there are not bans yet you can try by banning your own IP.
```
abra app run <domain> crowdsec cscli decisions add --ip <your-ip> -d 10m # this will be effective 10min
```
Remove it with:
```
abra app run <domain> crowdsec cscli decisions remove --ip <your-ip> # this can still take a few minutes because of cache
```
## Enabling onion service
Uncomment the line in the config setting `ONION_ENABLED=1`. This will create a new entrypoint on port 9052 which can be used to bypass forced SSL. For more details, see the [onion recipe](https://recipes.coopcloud.tech/onion).
+3 -2
View File
@@ -1,3 +1,4 @@
export TRAEFIK_YML_VERSION=v31
export FILE_PROVIDER_YML_VERSION=v12
export TRAEFIK_YML_VERSION=v33
export FILE_PROVIDER_YML_VERSION=v15
export ENTRYPOINT_VERSION=v5
export CROWDSEC_TRAEFIK_CONFIG_VERSION=v1
+1
View File
@@ -5,6 +5,7 @@ services:
deploy:
labels:
- "traefik.http.middlewares.anubis.forwardauth.address=http://anubis:8080/.within.website/x/cmd/anubis/api/check"
- "traefik.http.middlewares.anubis.forwardauth.trustForwardHeader=true"
anubis:
image: "ghcr.io/techarohq/anubis:v1.25.0"
environment:
+42
View File
@@ -0,0 +1,42 @@
version: "3.8"
services:
app:
deploy:
labels:
- "traefik.http.routers.${STACK_NAME}.middlewares=crowdsec@file"
secrets:
- crowdsec_lapi_key
crowdsec:
image: crowdsecurity/crowdsec:v1.7.8
environment:
GID: "${GID-1000}"
COLLECTIONS: "crowdsecurity/linux crowdsecurity/traefik"
volumes:
- crowdsec-db:/var/lib/crowdsec/data/
- crowdsec-config:/etc/crowdsec/
- traefik-logs:/var/log/traefik/:ro
configs:
- source: crowdsec_traefik_config
target: /etc/crowdsec/acquis.d/traefik_config.yaml
mode: 0555
networks:
- internal
deploy:
update_config:
failure_action: rollback
order: stop-first
configs:
crowdsec_traefik_config:
name: ${STACK_NAME}_crowdsec_traefik_${CROWDSEC_TRAEFIK_CONFIG_VERSION}
file: crowdsec_traefik_config.yaml.tmpl
template_driver: golang
secrets:
crowdsec_lapi_key:
external: true
name: ${STACK_NAME}_crowdsec_lapi_key_${SECRET_CROWDSEC_LAPI_KEY_VERSION}
volumes:
crowdsec-db:
crowdsec-config:
+7 -3
View File
@@ -3,7 +3,7 @@ version: "3.8"
services:
app:
image: "traefik:v3.7.5"
image: "traefik:v3.7.8"
# 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
@@ -19,6 +19,7 @@ services:
volumes:
- "letsencrypt:/etc/letsencrypt"
- "file-providers:/etc/traefik/file-providers"
- "traefik-logs:/var/log/traefik"
configs:
- source: traefik_yml
target: /etc/traefik/traefik.yml
@@ -34,6 +35,8 @@ services:
- DASHBOARD_ENABLED
- LOG_LEVEL
- ${LOG_MAX_AGE:-0}
- READ_TIMEOUT=${READ_TIMEOUT:-60s}
- WRITE_TIMEOUT=${WRITE_TIMEOUT:-0s}
healthcheck:
test: ["CMD", "traefik", "healthcheck"]
interval: 30s
@@ -55,12 +58,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=5.1.1+v3.6.15"
- "coop-cloud.${STACK_NAME}.version=6.0.0+v3.7.7"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT}"
- "backupbot.backup=${ENABLE_BACKUPS:-true}"
socket-proxy:
image: lscr.io/linuxserver/socket-proxy:3.4.0
image: lscr.io/linuxserver/socket-proxy:3.4.2
deploy:
endpoint_mode: dnsrr
environment:
@@ -119,3 +122,4 @@ configs:
volumes:
letsencrypt:
file-providers:
traefik-logs:
+5
View File
@@ -0,0 +1,5 @@
filenames:
- /var/log/traefik/*
labels:
type: traefik
+11 -1
View File
@@ -22,6 +22,16 @@ http:
basicAuth:
usersFile: "/run/secrets/usersfile"
{{ end }}
{{ if eq (env "CROWDSEC_ENABLED") "1" }}
crowdsec:
plugin:
bouncer:
enabled: {{ if eq (env "CROWDSEC_BOUNCER_ENABLED") "1" }}true{{ else }}false{{ end }}
logLevel: DEBUG
crowdsecMode: live
crowdsecLapiKey: "{{ if eq (env "CROWDSEC_BOUNCER_ENABLED") "1" }}{{ secret "crowdsec_lapi_key" }}{{ else }}please_set_CROWDSEC_BOUNCER_ENABLED_to_1{{ end }}"
crowdsecLapiHost: crowdsec:8080
{{ end }}
security:
headers:
frameDeny: true
@@ -61,4 +71,4 @@ tls:
certificates:
- certFile: /run/secrets/ssl_cert
keyFile: /run/secrets/ssl_key
{{ end }}
{{ end }}
+13
View File
@@ -0,0 +1,13 @@
!Breaking: Starting with v3.6.16, the Docker provider requires Docker API version v1.40 or above (Docker Engine v19.03). Users running older (end of life) versions of Docker Engine should update their Docker Engine or use the DOCKER_API_VERSION environment variable to override the API version used by Traefik.
letsencrypt: Avoid HTTP-01 challenge if `LETS_ENCRYPT_DNS_CHALLENGE_ENABLED` is set, in order to rely on DNS-01 challenges for servers not exposed to the internet.
matrix-federation: Entrypoint was changed to :8448 to match published port
fix: ensure large uploads work. You can now set the following env vars:
- READ_TIMEOUT
- WRITE_TIMEOUT
cloudflare: Add Cloudflare as DNS provider
For more information take a look at the migration guide: https://doc.traefik.io/traefik/v3.7/migrate/v3/#v377
-1
View File
@@ -1 +0,0 @@
letsencrypt: Avoid HTTP-01 challenge if `LETS_ENCRYPT_DNS_CHALLENGE_ENABLED` is set, in order to rely on DNS-01 challenges for servers not exposed to the internet.
+18 -1
View File
@@ -5,6 +5,11 @@ core:
log:
level: {{ env "LOG_LEVEL" }}
maxAge: {{ env "LOG_MAX_AGE" }}
{{- if eq (env "CROWDSEC_ENABLED") "1" }}
filePath: "/var/log/traefik/traefik.log"
accessLog:
filePath: "/var/log/traefik/access.log"
{{- end }}
providers:
swarm:
@@ -33,6 +38,10 @@ entrypoints:
to: web-secure
web-secure:
address: ":443"
transport:
respondingTimeouts:
readTimeout: {{ env "READ_TIMEOUT" }}
writeTimeout: {{ env "WRITE_TIMEOUT" }}
http:
encodedCharacters:
allowEncodedSlash: true
@@ -96,7 +105,7 @@ entrypoints:
{{- end }}
{{- if eq (env "MATRIX_FEDERATION_ENABLED") "1" }}
matrix-federation:
address: ":9001"
address: ":8448"
{{- end }}
{{- if eq (env "NEXTCLOUD_TALK_HPB_ENABLED") "1" }}
nextcloud-talk-hpb:
@@ -153,3 +162,11 @@ certificatesResolvers:
- "1.1.1.1:53"
- "9.9.9.9:53"
{{- end }}
{{ if eq (env "CROWDSEC_ENABLED") "1" }}
experimental:
plugins:
bouncer:
moduleName: github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin
version: v1.6.0
{{- end }}