forked from coop-cloud/traefik
Compare commits
35 Commits
improve-do
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 08669fcd60 | |||
| bac3f30609 | |||
| 1fb6925846 | |||
| d164d2870e | |||
| 795592ea3c | |||
| b67ed0ca88 | |||
| 5f977f1cca | |||
| ee344cce5d | |||
| 27cc7efb72 | |||
|
324933a9cc
|
|||
| dc3e50838f | |||
| d59f6e0302 | |||
| c2cdfd80b6 | |||
| 139202fa9c | |||
| de7989f3ca | |||
| d3bf1bce24 | |||
| 1ce9d9ca72 | |||
| a233438f80 | |||
|
ed257bd0b2
|
|||
| 7dd833dbec | |||
| d5f19d3b11 | |||
|
f16f434877
|
|||
| 5d656ccb72 | |||
| fa55efb0c3 | |||
| 98fe0de193 | |||
| 0238b73f77 | |||
| 5df55f7833 | |||
| 92650aa12a | |||
| 0e38a772e9 | |||
| f469a1a90e | |||
| 0d85f97200 | |||
| ac33efe73a | |||
| a135d170bb | |||
| fa7cf3e17b | |||
| d05c81b4d7 |
37
.env.sample
37
.env.sample
@ -1,5 +1,5 @@
|
|||||||
TYPE=traefik
|
TYPE=traefik
|
||||||
TIMEOUT=300
|
#TIMEOUT=300
|
||||||
ENABLE_AUTO_UPDATE=true
|
ENABLE_AUTO_UPDATE=true
|
||||||
ENABLE_BACKUPS=true
|
ENABLE_BACKUPS=true
|
||||||
|
|
||||||
@ -19,8 +19,14 @@ COMPOSE_FILE="compose.yml"
|
|||||||
# General settings #
|
# General settings #
|
||||||
#####################################################################
|
#####################################################################
|
||||||
|
|
||||||
## Host-mode networking
|
## Ingress-mode port publishing for ports 80 and 443
|
||||||
#COMPOSE_FILE="$COMPOSE_FILE:compose.host.yml"
|
##
|
||||||
|
## /!\ Using this prevents the use of any compose override adding
|
||||||
|
## published ports to the traefik_app service (almost all of them)
|
||||||
|
## and it prevents the use of IPv6 for ingress traffic.
|
||||||
|
## Do not uncomment unless you know exactly what you are doing
|
||||||
|
##
|
||||||
|
#COMPOSE_FILE="$COMPOSE_FILE:compose.no-host.yml"
|
||||||
|
|
||||||
## "Headless mode" (no domain configured)
|
## "Headless mode" (no domain configured)
|
||||||
#COMPOSE_FILE="$COMPOSE_FILE:compose.headless.yml"
|
#COMPOSE_FILE="$COMPOSE_FILE:compose.headless.yml"
|
||||||
@ -30,8 +36,10 @@ COMPOSE_FILE="compose.yml"
|
|||||||
#####################################################################
|
#####################################################################
|
||||||
|
|
||||||
## Enable dns challenge (for wildcard domains)
|
## Enable dns challenge (for wildcard domains)
|
||||||
## https://doc.traefik.io/traefik/https/acme/#dnschallenge
|
## https://go-acme.github.io/lego/dns/#dns-providers
|
||||||
#LETS_ENCRYPT_DNS_CHALLENGE_ENABLED=1
|
#LETS_ENCRYPT_DNS_CHALLENGE_ENABLED=1
|
||||||
|
## *Currently* one of ovh, gandi, gandiv5, digitalocean, azure, porkbun.
|
||||||
|
## Uncomment the corresponding provider below to insert your secret token/key.
|
||||||
#LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER=ovh
|
#LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER=ovh
|
||||||
|
|
||||||
## OVH, https://ovh.com
|
## OVH, https://ovh.com
|
||||||
@ -70,6 +78,14 @@ COMPOSE_FILE="compose.yml"
|
|||||||
#AZURE_RESOURCE_GROUP=
|
#AZURE_RESOURCE_GROUP=
|
||||||
#SECRET_AZURE_SECRET_VERSION=v1
|
#SECRET_AZURE_SECRET_VERSION=v1
|
||||||
|
|
||||||
|
## Porkbun, https://porkbun.com
|
||||||
|
## To insert your secrets:
|
||||||
|
## abra app secret insert 1312.net pb_api_key v1 pk1_413
|
||||||
|
## abra app secret insert 1312.net pb_s_api_key v1 sk1_612
|
||||||
|
#COMPOSE_FILE="$COMPOSE_FILE:compose.porkbun.yml"
|
||||||
|
#SECRET_PORKBUN_API_KEY_VERSION=v1
|
||||||
|
#SECRET_PORKBUN_SECRET_API_KEY_VERSION=v1
|
||||||
|
|
||||||
#####################################################################
|
#####################################################################
|
||||||
# Manual wildcard certificate insertion #
|
# Manual wildcard certificate insertion #
|
||||||
#####################################################################
|
#####################################################################
|
||||||
@ -175,3 +191,16 @@ COMPOSE_FILE="compose.yml"
|
|||||||
## Nextcloud Talk HPB
|
## Nextcloud Talk HPB
|
||||||
#COMPOSE_FILE="$COMPOSE_FILE:compose.nextcloud-talk-hpb.yml"
|
#COMPOSE_FILE="$COMPOSE_FILE:compose.nextcloud-talk-hpb.yml"
|
||||||
#NEXTCLOUD_TALK_HPB_ENABLED=1
|
#NEXTCLOUD_TALK_HPB_ENABLED=1
|
||||||
|
|
||||||
|
## Anubis
|
||||||
|
#COMPOSE_FILE="$COMPOSE_FILE:compose.anubis.yml"
|
||||||
|
#ANUBIS_COOKIE_DOMAIN=example.com
|
||||||
|
#ANUBIS_DOMAIN=anubis.example.com
|
||||||
|
#ANUBIS_REDIRECT_DOMAINS=
|
||||||
|
#ANUBIS_OG_PASSTHROUGH=true
|
||||||
|
#ANUBIS_OG_EXPIRY_TIME=1h
|
||||||
|
#ANUBIS_OG_CACHE_CONSIDER_HOST=true
|
||||||
|
#ANUBIS_SERVE_ROBOTS_TXT=true
|
||||||
|
|
||||||
|
## Enable onion service support
|
||||||
|
#ONION_ENABLED=1
|
||||||
|
|||||||
16
.gitea/PULL_REQUEST_TEMPLATE.md
Normal file
16
.gitea/PULL_REQUEST_TEMPLATE.md
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
name: "Traefik pull request template"
|
||||||
|
about: "Traefik pull request template"
|
||||||
|
---
|
||||||
|
|
||||||
|
<!--
|
||||||
|
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.
|
||||||
|
-->
|
||||||
|
|
||||||
|
* [ ] 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)
|
||||||
28
README.md
28
README.md
@ -5,7 +5,7 @@
|
|||||||
> https://docs.traefik.io
|
> https://docs.traefik.io
|
||||||
|
|
||||||
<!-- metadata -->
|
<!-- metadata -->
|
||||||
* **Maintainer**: [@p4u1](https://git.coopcloud.tech/p4u1), [@decentral1se](https://git.coopcloud.tech/decentral1se)
|
* **Maintainer**: [@p4u1](https://git.coopcloud.tech/p4u1), [@decentral1se](https://git.coopcloud.tech/decentral1se), [@javielico](https://git.coopcloud.tech/javielico)
|
||||||
* **Status**: `stable`
|
* **Status**: `stable`
|
||||||
* **Category**: Utilities
|
* **Category**: Utilities
|
||||||
* **Features**: ?
|
* **Features**: ?
|
||||||
@ -42,17 +42,37 @@ subdomains, like
|
|||||||
need to give Traefik access to your DNS provider so that it can carry out
|
need to give Traefik access to your DNS provider so that it can carry out
|
||||||
Letsencrypt DNS challenges.
|
Letsencrypt DNS challenges.
|
||||||
|
|
||||||
1. Use Gandi or OVH for DNS 🤡 (support for other providers can be easily added,
|
1. Use Gandi, OVH, DO, Azure, or PorkBun for DNS 🤡 (support for other providers
|
||||||
see [the `lego` docs](https://go-acme.github.io/lego/dns/#dns-providers).
|
can be easily added, see
|
||||||
|
[the `lego` docs](https://go-acme.github.io/lego/dns/#dns-providers).
|
||||||
2. Run `abra app config YOURAPPDOMAIN`
|
2. Run `abra app config YOURAPPDOMAIN`
|
||||||
3. Uncomment e.g. `ENABLE_GANDI` and the related `SECRET_.._VERSION` line, e.g.
|
3. Uncomment e.g. `ENABLE_GANDI` and the related `SECRET_.._VERSION` line, e.g.
|
||||||
`SECRET_GANDIV5_API_KEY_VERSION`
|
`SECRET_GANDIV5_API_KEY_VERSION`
|
||||||
4. Generate an API key for your provider
|
4. Set `LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER` to your provider, e.g. `gandi`
|
||||||
|
4. Generate an API key for your provider, probably using their web interface.
|
||||||
5. Run `abra app secret insert YOURAPPDOMAIN SECRETNAME v1 SECRETVALUE`, where
|
5. Run `abra app secret insert YOURAPPDOMAIN SECRETNAME v1 SECRETVALUE`, where
|
||||||
`SECRETNAME` is from the compose file (e.g. `compose.gandi-api-key.yml`) e.g.
|
`SECRETNAME` is from the compose file (e.g. `compose.gandi-api-key.yml`) e.g.
|
||||||
`gandiv5_api_key` and `SECRETVALUE` is the API key.
|
`gandiv5_api_key` and `SECRETVALUE` is the API key.
|
||||||
- For Gandi, you can use either the deprecated API Key or a GandiV5 Personal
|
- For Gandi, you can use either the deprecated API Key or a GandiV5 Personal
|
||||||
Access Token, in which case use compose.gandi-personal-access-token.yml.
|
Access Token, in which case use compose.gandi-personal-access-token.yml.
|
||||||
|
- See comments for each provider in your env file for specific instructions
|
||||||
6. Redeploy Traefik, using e.g. `abra app deploy YOURAPPDOMAIN -f`
|
6. Redeploy Traefik, using e.g. `abra app deploy YOURAPPDOMAIN -f`
|
||||||
|
|
||||||
|
## Blocking scrapers with [Anubis](https://anubis.techaro.lol/)
|
||||||
|
|
||||||
|
Uncomment the lines on the Anubis section of the configuration. Set
|
||||||
|
a domain name for the cookies and a domain that will serve Anubis
|
||||||
|
redirection service. Optionally and for [added
|
||||||
|
security](https://anubis.techaro.lol/docs/admin/configuration/redirect-domains),
|
||||||
|
set a list of the domain names for the apps that are going to be
|
||||||
|
protected.
|
||||||
|
|
||||||
|
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.**
|
||||||
|
|
||||||
|
## 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).
|
||||||
|
|
||||||
[`abra`]: https://git.autonomic.zone/autonomic-cooperative/abra
|
[`abra`]: https://git.autonomic.zone/autonomic-cooperative/abra
|
||||||
|
|||||||
2
abra.sh
2
abra.sh
@ -1,3 +1,3 @@
|
|||||||
export TRAEFIK_YML_VERSION=v28
|
export TRAEFIK_YML_VERSION=v29
|
||||||
export FILE_PROVIDER_YML_VERSION=v11
|
export FILE_PROVIDER_YML_VERSION=v11
|
||||||
export ENTRYPOINT_VERSION=v5
|
export ENTRYPOINT_VERSION=v5
|
||||||
|
|||||||
29
compose.anubis.yml
Normal file
29
compose.anubis.yml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
version: "3.8"
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
deploy:
|
||||||
|
labels:
|
||||||
|
- "traefik.http.middlewares.anubis.forwardauth.address=http://anubis:8080/.within.website/x/cmd/anubis/api/check"
|
||||||
|
anubis:
|
||||||
|
image: "ghcr.io/techarohq/anubis:v1.25.0"
|
||||||
|
environment:
|
||||||
|
BIND: ":8080"
|
||||||
|
TARGET: " "
|
||||||
|
REDIRECT_DOMAINS: "${ANUBIS_REDIRECT_DOMAINS}"
|
||||||
|
COOKIE_DOMAIN: "${ANUBIS_COOKIE_DOMAIN}"
|
||||||
|
PUBLIC_URL: "https://${ANUBIS_DOMAIN}"
|
||||||
|
OG_PASSTHROUGH: "${ANUBIS_OG_PASSTHROUGH}"
|
||||||
|
OG_EXPIRY_TIME: "${ANUBIS_OG_EXPIRY_TIME}"
|
||||||
|
OG_CACHE_CONSIDER_HOST: "${ANUBIS_OG_CACHE_CONSIDER_HOST}"
|
||||||
|
SERVE_ROBOTS_TXT: "${ANUBIS_SERVE_ROBOTS_TXT}"
|
||||||
|
networks:
|
||||||
|
- proxy
|
||||||
|
deploy:
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.anubis.rule=Host(`${ANUBIS_DOMAIN}`)"
|
||||||
|
- "traefik.http.routers.anubis.tls.certresolver=${LETS_ENCRYPT_ENV}"
|
||||||
|
- "traefik.http.routers.anubis.entrypoints=web-secure"
|
||||||
|
- "traefik.http.services.anubis.loadbalancer.server.port=8080"
|
||||||
|
- "traefik.http.routers.anubis.service=anubis"
|
||||||
@ -4,4 +4,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- COMPY_ENABLED
|
- COMPY_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "9999:9999"
|
- target: 9999
|
||||||
|
published: 9999
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
|||||||
@ -4,4 +4,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- FOODSOFT_SMTP_ENABLED
|
- FOODSOFT_SMTP_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "2525:2525"
|
- target: 2525
|
||||||
|
published: 2525
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
|||||||
@ -4,4 +4,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- GITEA_SSH_ENABLED
|
- GITEA_SSH_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "2222:2222"
|
- target: 2222
|
||||||
|
published: 2222
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
|||||||
@ -1,15 +1,2 @@
|
|||||||
---
|
---
|
||||||
version: "3.8"
|
version: "3.8"
|
||||||
|
|
||||||
services:
|
|
||||||
app:
|
|
||||||
deploy:
|
|
||||||
update_config:
|
|
||||||
order: stop-first
|
|
||||||
ports:
|
|
||||||
- target: 80
|
|
||||||
published: 80
|
|
||||||
mode: host
|
|
||||||
- target: 443
|
|
||||||
published: 443
|
|
||||||
mode: host
|
|
||||||
|
|||||||
@ -4,4 +4,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- IRC_ENABLED
|
- IRC_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "6697:6697"
|
- target: 6697
|
||||||
|
published: 6697
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
|||||||
@ -4,4 +4,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- MATRIX_FEDERATION_ENABLED
|
- MATRIX_FEDERATION_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "8448:8448"
|
- target: 8448
|
||||||
|
published: 8448
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
|||||||
@ -6,4 +6,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- MINIO_CONSOLE_ENABLED
|
- MINIO_CONSOLE_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "9001:9001"
|
- target: 9001
|
||||||
|
published: 9001
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
|||||||
@ -4,6 +4,11 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- MUMBLE_ENABLED
|
- MUMBLE_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "64738:64738/udp"
|
- target: 64738
|
||||||
# note (3wc): see https://github.com/docker/compose/issues/7627
|
published: 64738
|
||||||
- "64737-64739:64737-64739/tcp"
|
protocol: udp
|
||||||
|
mode: host
|
||||||
|
- target: 64738
|
||||||
|
published: 64738
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
|||||||
@ -4,5 +4,11 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- NEXTCLOUD_TALK_HPB_ENABLED
|
- NEXTCLOUD_TALK_HPB_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "3478:3478/udp"
|
- target: 3478
|
||||||
- "3478:3478/tcp"
|
published: 3478
|
||||||
|
protocol: udp
|
||||||
|
mode: host
|
||||||
|
- target: 3478
|
||||||
|
published: 3478
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
16
compose.no-host.yml
Normal file
16
compose.no-host.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
ports:
|
||||||
|
- target: 80
|
||||||
|
published: 80
|
||||||
|
protocol: tcp
|
||||||
|
mode: ingress
|
||||||
|
- target: 443
|
||||||
|
published: 443
|
||||||
|
protocol: tcp
|
||||||
|
mode: ingress
|
||||||
|
deploy:
|
||||||
|
endpoint_mode: vip
|
||||||
@ -4,4 +4,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- PEERTUBE_RTMP_ENABLED
|
- PEERTUBE_RTMP_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "1935:1935"
|
- target: 1935
|
||||||
|
published: 1935
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
|||||||
18
compose.porkbun.yml
Normal file
18
compose.porkbun.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
app:
|
||||||
|
environment:
|
||||||
|
- PORKBUN_API_KEY_FILE=/run/secrets/pb_api_key
|
||||||
|
- PORKBUN_SECRET_API_KEY_FILE=/run/secrets/pb_s_api_key
|
||||||
|
secrets:
|
||||||
|
- pb_api_key
|
||||||
|
- pb_s_api_key
|
||||||
|
|
||||||
|
secrets:
|
||||||
|
pb_api_key:
|
||||||
|
name: ${STACK_NAME}_pb_api_key_${SECRET_PORKBUN_API_KEY_VERSION}
|
||||||
|
external: true
|
||||||
|
pb_s_api_key:
|
||||||
|
name: ${STACK_NAME}_pb_s_api_key_${SECRET_PORKBUN_SECRET_API_KEY_VERSION}
|
||||||
|
external: true
|
||||||
@ -6,4 +6,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- SMTP_ENABLED
|
- SMTP_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "587:587"
|
- target: 587
|
||||||
|
published: 587
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
|||||||
@ -4,4 +4,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- SSB_MUXRPC_ENABLED
|
- SSB_MUXRPC_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "8008:8008"
|
- target: 8008
|
||||||
|
published: 8008
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
|||||||
@ -4,4 +4,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- WEB_ALT_ENABLED
|
- WEB_ALT_ENABLED
|
||||||
ports:
|
ports:
|
||||||
- "8000:8000"
|
- target: 8000
|
||||||
|
published: 8000
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
|||||||
19
compose.yml
19
compose.yml
@ -3,13 +3,19 @@ version: "3.8"
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
app:
|
app:
|
||||||
image: "traefik:v3.6.5"
|
image: "traefik:v3.6.10"
|
||||||
# Note(decentral1se): *please do not* add any additional ports here.
|
# Note(decentral1se): *please do not* add any additional ports here.
|
||||||
# Doing so could break new installs with port conflicts. Please use
|
# Doing so could break new installs with port conflicts. Please use
|
||||||
# the usual `compose.$app.yml` approach for any additional ports
|
# the usual `compose.$app.yml` approach for any additional ports
|
||||||
ports:
|
ports:
|
||||||
- "80:80"
|
- target: 80
|
||||||
- "443:443"
|
published: 80
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
|
- target: 443
|
||||||
|
published: 443
|
||||||
|
protocol: tcp
|
||||||
|
mode: host
|
||||||
volumes:
|
volumes:
|
||||||
- "letsencrypt:/etc/letsencrypt"
|
- "letsencrypt:/etc/letsencrypt"
|
||||||
- "file-providers:/etc/traefik/file-providers"
|
- "file-providers:/etc/traefik/file-providers"
|
||||||
@ -37,9 +43,10 @@ services:
|
|||||||
command: traefik
|
command: traefik
|
||||||
entrypoint: /custom-entrypoint.sh
|
entrypoint: /custom-entrypoint.sh
|
||||||
deploy:
|
deploy:
|
||||||
|
endpoint_mode: dnsrr
|
||||||
update_config:
|
update_config:
|
||||||
failure_action: rollback
|
failure_action: rollback
|
||||||
order: start-first
|
order: stop-first
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=web"
|
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=web"
|
||||||
@ -48,8 +55,8 @@ services:
|
|||||||
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
|
- "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}"
|
||||||
- "traefik.http.routers.${STACK_NAME}.service=api@internal"
|
- "traefik.http.routers.${STACK_NAME}.service=api@internal"
|
||||||
- "traefik.http.routers.${STACK_NAME}.middlewares=security@file"
|
- "traefik.http.routers.${STACK_NAME}.middlewares=security@file"
|
||||||
- "coop-cloud.${STACK_NAME}.version=3.9.0+v3.6.5"
|
- "coop-cloud.${STACK_NAME}.version=4.0.0+v3.6.10"
|
||||||
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
|
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT}"
|
||||||
- "backupbot.backup=${ENABLE_BACKUPS:-true}"
|
- "backupbot.backup=${ENABLE_BACKUPS:-true}"
|
||||||
|
|
||||||
socket-proxy:
|
socket-proxy:
|
||||||
|
|||||||
10
release/3.10.0+v3.6.7
Normal file
10
release/3.10.0+v3.6.7
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
Short summary of the latest changes:
|
||||||
|
|
||||||
|
* Traefik has been upgraded with a patch release, no issues expected.
|
||||||
|
* "CurveP256" has been included to the TLS options.
|
||||||
|
* The default TIMEOUT value has been removed from the label directly.
|
||||||
|
* Anubis support is here, try out `compose.anubis.yml` and see the README.md for more.
|
||||||
|
* Onion services with Tor are not supported! See the README.md for more.
|
||||||
|
* There are now officially 3 recipe maintainers for Traefik!
|
||||||
|
|
||||||
|
All changes: https://git.coopcloud.tech/coop-cloud/traefik/compare/3.9.0+v3.6.5...master
|
||||||
11
release/4.0.0+v3.6.10
Normal file
11
release/4.0.0+v3.6.10
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
Short summary of the latest changes:
|
||||||
|
|
||||||
|
* Exposed ports have been switched to host-mode port publishing by default
|
||||||
|
This adds support for IPv6 ingress, which means that after deploying this
|
||||||
|
change, DNS AAAA records can be made to point to the relevant IPv6
|
||||||
|
address and Traefik will handle public IPv6 ingress traffic (including ACME
|
||||||
|
HTTP-01 challenges)
|
||||||
|
|
||||||
|
/!\ This is a breaking change. It is still possible to revert ports 80 and
|
||||||
|
443 to ingress-mode (the previous default) but keep in mind that there
|
||||||
|
is no longer an easy way to publish additional ports in ingress mode.
|
||||||
@ -11,14 +11,14 @@ providers:
|
|||||||
endpoint: "tcp://socket-proxy:2375"
|
endpoint: "tcp://socket-proxy:2375"
|
||||||
exposedByDefault: false
|
exposedByDefault: false
|
||||||
network: proxy
|
network: proxy
|
||||||
{{ if eq (env "FILE_PROVIDER_DIRECTORY_ENABLED") "1" }}
|
{{- if eq (env "FILE_PROVIDER_DIRECTORY_ENABLED") "1" }}
|
||||||
file:
|
file:
|
||||||
directory: /etc/traefik/file-providers
|
directory: /etc/traefik/file-providers
|
||||||
watch: true
|
watch: true
|
||||||
{{ else }}
|
{{- else }}
|
||||||
file:
|
file:
|
||||||
filename: /etc/traefik/file-provider.yml
|
filename: /etc/traefik/file-provider.yml
|
||||||
{{ end }}
|
{{- end }}
|
||||||
|
|
||||||
api:
|
api:
|
||||||
dashboard: {{ env "DASHBOARD_ENABLED" }}
|
dashboard: {{ env "DASHBOARD_ENABLED" }}
|
||||||
@ -42,86 +42,90 @@ entrypoints:
|
|||||||
allowEncodedPercent: true
|
allowEncodedPercent: true
|
||||||
allowEncodedQuestionMark: true
|
allowEncodedQuestionMark: true
|
||||||
allowEncodedHash: true
|
allowEncodedHash: true
|
||||||
{{ if eq (env "GITEA_SSH_ENABLED") "1" }}
|
{{- if eq (env "GITEA_SSH_ENABLED") "1" }}
|
||||||
gitea-ssh:
|
gitea-ssh:
|
||||||
address: ":2222"
|
address: ":2222"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "P2PANDA_ENABLED") "1" }}
|
{{- if eq (env "P2PANDA_ENABLED") "1" }}
|
||||||
p2panda-udp-v4:
|
p2panda-udp-v4:
|
||||||
address: ":2022/udp"
|
address: ":2022/udp"
|
||||||
p2panda-udp-v6:
|
p2panda-udp-v6:
|
||||||
address: ":2023/udp"
|
address: ":2023/udp"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "GARAGE_RPC_ENABLED") "1" }}
|
{{- if eq (env "GARAGE_RPC_ENABLED") "1" }}
|
||||||
garage-rpc:
|
garage-rpc:
|
||||||
address: ":3901"
|
address: ":3901"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "FOODSOFT_SMTP_ENABLED") "1" }}
|
{{- if eq (env "FOODSOFT_SMTP_ENABLED") "1" }}
|
||||||
foodsoft-smtp:
|
foodsoft-smtp:
|
||||||
address: ":2525"
|
address: ":2525"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "SMTP_ENABLED") "1" }}
|
{{- if eq (env "SMTP_ENABLED") "1" }}
|
||||||
smtp-submission:
|
smtp-submission:
|
||||||
address: ":587"
|
address: ":587"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "PEERTUBE_RTMP_ENABLED") "1" }}
|
{{- if eq (env "PEERTUBE_RTMP_ENABLED") "1" }}
|
||||||
peertube-rtmp:
|
peertube-rtmp:
|
||||||
address: ":1935"
|
address: ":1935"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "WEB_ALT_ENABLED") "1" }}
|
{{- if eq (env "WEB_ALT_ENABLED") "1" }}
|
||||||
web-alt:
|
web-alt:
|
||||||
address: ":8000"
|
address: ":8000"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "SSB_MUXRPC_ENABLED") "1" }}
|
{{- if eq (env "SSB_MUXRPC_ENABLED") "1" }}
|
||||||
ssb-muxrpc:
|
ssb-muxrpc:
|
||||||
address: ":8008"
|
address: ":8008"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "MSSQL_ENABLED") "1" }}
|
{{- if eq (env "MSSQL_ENABLED") "1" }}
|
||||||
mssql:
|
mssql:
|
||||||
address: ":1433"
|
address: ":1433"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "MUMBLE_ENABLED") "1" }}
|
{{- if eq (env "MUMBLE_ENABLED") "1" }}
|
||||||
mumble:
|
mumble:
|
||||||
address: ":64738"
|
address: ":64738"
|
||||||
mumble-udp:
|
mumble-udp:
|
||||||
address: ":64738/udp"
|
address: ":64738/udp"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "COMPY_ENABLED") "1" }}
|
{{- if eq (env "COMPY_ENABLED") "1" }}
|
||||||
compy:
|
compy:
|
||||||
address: ":9999"
|
address: ":9999"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "IRC_ENABLED") "1" }}
|
{{- if eq (env "IRC_ENABLED") "1" }}
|
||||||
irc:
|
irc:
|
||||||
address: ":6697"
|
address: ":6697"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "METRICS_ENABLED") "1" }}
|
{{- if eq (env "METRICS_ENABLED") "1" }}
|
||||||
metrics:
|
metrics:
|
||||||
address: ":8082"
|
address: ":8082"
|
||||||
http:
|
http:
|
||||||
middlewares:
|
middlewares:
|
||||||
- basicauth@file
|
- basicauth@file
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "MATRIX_FEDERATION_ENABLED") "1" }}
|
{{- if eq (env "MATRIX_FEDERATION_ENABLED") "1" }}
|
||||||
matrix-federation:
|
matrix-federation:
|
||||||
address: ":9001"
|
address: ":9001"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
{{ if eq (env "NEXTCLOUD_TALK_HPB_ENABLED") "1" }}
|
{{- if eq (env "NEXTCLOUD_TALK_HPB_ENABLED") "1" }}
|
||||||
nextcloud-talk-hpb:
|
nextcloud-talk-hpb:
|
||||||
address: ":3478"
|
address: ":3478"
|
||||||
nextcloud-talk-hpb-udp:
|
nextcloud-talk-hpb-udp:
|
||||||
address: ":3478/udp"
|
address: ":3478/udp"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
|
{{- if eq (env "ONION_ENABLED") "1" }}
|
||||||
|
onion:
|
||||||
|
address: ":9052"
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
ping:
|
ping:
|
||||||
entryPoint: web
|
entryPoint: web
|
||||||
|
|
||||||
{{ if eq (env "METRICS_ENABLED") "1" }}
|
{{- if eq (env "METRICS_ENABLED") "1" }}
|
||||||
metrics:
|
metrics:
|
||||||
prometheus:
|
prometheus:
|
||||||
entryPoint: metrics
|
entryPoint: metrics
|
||||||
addRoutersLabels: true
|
addRoutersLabels: true
|
||||||
addServicesLabels: true
|
addServicesLabels: true
|
||||||
{{ end }}
|
{{- end }}
|
||||||
|
|
||||||
certificatesResolvers:
|
certificatesResolvers:
|
||||||
staging:
|
staging:
|
||||||
@ -131,23 +135,23 @@ certificatesResolvers:
|
|||||||
caServer: "https://acme-staging-v02.api.letsencrypt.org/directory"
|
caServer: "https://acme-staging-v02.api.letsencrypt.org/directory"
|
||||||
httpChallenge:
|
httpChallenge:
|
||||||
entryPoint: web
|
entryPoint: web
|
||||||
{{ if eq (env "LETS_ENCRYPT_DNS_CHALLENGE_ENABLED") "1" }}
|
{{- if eq (env "LETS_ENCRYPT_DNS_CHALLENGE_ENABLED") "1" }}
|
||||||
dnsChallenge:
|
dnsChallenge:
|
||||||
provider: {{ (env "LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER") }}
|
provider: {{ (env "LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER") }}
|
||||||
resolvers:
|
resolvers:
|
||||||
- "1.1.1.1:53"
|
- "1.1.1.1:53"
|
||||||
- "8.8.8.8:53"
|
- "8.8.8.8:53"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
production:
|
production:
|
||||||
acme:
|
acme:
|
||||||
email: {{ env "LETS_ENCRYPT_EMAIL" }}
|
email: {{ env "LETS_ENCRYPT_EMAIL" }}
|
||||||
storage: /etc/letsencrypt/production-acme.json
|
storage: /etc/letsencrypt/production-acme.json
|
||||||
httpChallenge:
|
httpChallenge:
|
||||||
entryPoint: web
|
entryPoint: web
|
||||||
{{ if eq (env "LETS_ENCRYPT_DNS_CHALLENGE_ENABLED") "1" }}
|
{{- if eq (env "LETS_ENCRYPT_DNS_CHALLENGE_ENABLED") "1" }}
|
||||||
dnsChallenge:
|
dnsChallenge:
|
||||||
provider: {{ (env "LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER") }}
|
provider: {{ (env "LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER") }}
|
||||||
resolvers:
|
resolvers:
|
||||||
- "1.1.1.1:53"
|
- "1.1.1.1:53"
|
||||||
- "9.9.9.9:53"
|
- "9.9.9.9:53"
|
||||||
{{ end }}
|
{{- end }}
|
||||||
|
|||||||
Reference in New Issue
Block a user