Compare commits

..

48 Commits

Author SHA1 Message Date
philippr e2c16be2ff feat: adds basic auth middleware
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2023-05-10 15:35:52 +02:00
3wordchant 892f3c3124 chore: publish 2.2.0+v2.10.2 release
continuous-integration/drone/push Build is failing
2023-04-27 16:12:25 -04:00
3wordchant 4205f4911e Bump TRAEFIK_YML_VERSION 2023-04-27 16:12:03 -04:00
3wordchant 13eb4a782d chore: publish 2.2.0+v2.10.1 release 2023-04-27 15:58:01 -04:00
decentral1se b00a65a890 feat: routing bare metal
continuous-integration/drone/push Build is failing
2023-04-20 21:19:47 +02:00
moritz a213094d46 add timeout label
continuous-integration/drone/push Build is passing
2023-04-18 18:36:09 +02:00
moritz 8bb3adba81 add auto update and timeout env
continuous-integration/drone/push Build is passing
2023-04-18 18:26:15 +02:00
moritz a7bff09db6 chore: publish 2.1.0+v2.9.9 release
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
2023-04-04 18:26:39 +02:00
3wordchant 6167d41588 Add DNS challenge / wildcard instructions to README.md
[ci skip]
2023-03-06 20:58:19 -05:00
decentral1se 31330d967b chore: publish 2.0.4+v2.9.6 release
continuous-integration/drone/push Build is passing
2023-02-13 17:09:40 +01:00
decentral1se f23357c9cd fix: remove invalid tls label
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is passing
See coop-cloud/organising#412
2023-02-13 11:16:07 +01:00
3wordchant b6bb286282 Switch to self-hosted stack-ssh-deploy image [mass update]
continuous-integration/drone/push Build is passing
2023-01-21 11:49:56 -08:00
3wordchant 14a34c7b7f Fix CI by adding networks: [mass update]
continuous-integration/drone/push Build is passing
2023-01-20 11:58:41 -08:00
3wordchant 39bfdb4c82 Automatically generate catalogue on release [mass update]
continuous-integration/drone/push Build is failing
Re: coop-cloud/recipes-catalogue-json#4
2023-01-20 10:27:12 -08:00
3wordchant 1d43c68274 Update abra syntax in examples (finally) [mass update]
continuous-integration/drone/push Build is failing
2023-01-19 16:02:28 -08:00
cas f1cfb814dd chore: publish 2.0.3+v2.9.6 release
continuous-integration/drone/push Build is failing
2023-01-18 13:48:37 -08:00
philippr ece8807959 chore: publish 2.0.2+v2.9.5 release
continuous-integration/drone/push Build is failing
2022-12-02 11:09:17 +01:00
3wordchant a1e75e8c8b Revert to traefik.example.com templating
continuous-integration/drone/push Build is failing
2022-11-16 20:35:34 -08:00
3wordchant b62cb273ef Merge pull request 'Up versions to latest stable and one ping less to Google' (#38) from javielico/traefik:master into master
continuous-integration/drone/push Build is failing
Reviewed-on: #38
2022-11-11 19:32:15 +00:00
javielico 5f25a272cb One ping less to Google, swap for Quad9
continuous-integration/drone/pr Build is failing
2022-11-11 17:02:09 +00:00
javielico 4c7a272838 Up version to 2.9.4 2022-11-11 16:59:00 +00:00
3wordchant 2e68186042 chore: publish 2.0.0+v2.9.1 release
continuous-integration/drone/push Build is failing
2022-10-18 17:09:44 -04:00
3wordchant 975d8e01a4 Use $STACK_NAME for default router name..
continuous-integration/drone/push Build is failing
..instead of hard-coded `traefik`
2022-10-18 17:06:11 -04:00
trav fcff3a2d6a syntax
continuous-integration/drone/push Build is failing
minor
2022-10-13 16:51:46 +00:00
decentral1se 981d2a3808 chore: publish 1.1.1+v2.8.1 release
continuous-integration/drone/push Build is failing
2022-07-14 10:47:58 +02:00
philippr 29eb1058cd chore: publish 1.1.0+v2.8.0 release
continuous-integration/drone/push Build is failing
2022-07-01 11:35:28 +02:00
decentral1se df49a1f3b2 use domain env var
continuous-integration/drone/push Build is failing
2022-03-27 21:12:16 +02:00
3wordchant 099dcfaed0 Add compy support
continuous-integration/drone/push Build is failing
2022-03-26 23:49:10 +02:00
decentral1se 1d7542cd5f fix: drop minio config changes for now
New version is hard to config, unsure if this is needed.
2022-01-06 11:12:47 +01:00
decentral1se 5e1604322e fix: bump vendored config 2022-01-06 10:06:04 +01:00
decentral1se 36707989d2 fix: add missing entrypoints (matrix, minio) 2022-01-06 10:01:52 +01:00
decentral1se 29f90fe409 feat: minio port 2022-01-06 09:50:35 +01:00
decentral1se 8a48c5e507 chore: publish 1.0.1+v2.5.6 release 2021-12-28 03:38:36 +01:00
decentral1se 612d0cc6cc feat: matrix federation 2021-12-13 13:56:36 +01:00
3wordchant 36c7b740ab Merge pull request 'Add a slot for a second traefik-forward-auth' (#31) from forward-auth-2 into master
Reviewed-on: #31
2021-11-24 15:10:53 +00:00
3wordchant 59b0f8d645 Make sure variable names align, fix template 2021-11-23 12:40:17 +02:00
3wordchant 556c448c05 Align traefik-forward-auth 2nd var name with existing 2021-11-23 12:40:17 +02:00
3wordchant 26fcaaea69 Add a slot for a second traefik-forward-auth instance 2021-11-23 12:40:17 +02:00
3wordchant 02ebb1412f Goodbye, emojis! 😢
[ci skip]
2021-11-23 12:23:23 +02:00
3wordchant 8e91a5a3ee Minuscule .env tweak
continuous-integration/drone/push Build is failing
2021-10-14 00:44:40 +02:00
d1admin 3048d09cd8 fix: support configurable tfa service
continuous-integration/drone/push Build is failing
2021-10-14 00:43:56 +02:00
d1admin 2c9e980809 chore: remove old file
continuous-integration/drone/push Build is failing
2021-10-12 11:41:56 +02:00
d1admin ec47f5c9dd chore: first release 2021-10-12 11:41:53 +02:00
d1admin cf81dc543a chore: upgrade to 2.5.2 and add spaces
continuous-integration/drone/push Build is failing
2021-09-15 13:35:57 +02:00
d1admin 48f03d8fcf Remove 2222 port from host networking
continuous-integration/drone/push Build is failing
This was an old config for when we did host mode networking for gitea
ssh but now we use the SNI thing that seems to work.
2021-09-02 09:15:58 +02:00
decentral1se 8c6fe61e60 Merge pull request 'Allow prometheus metrics collection' (#28) from mirsal/traefik:prometheus-metrics into master
continuous-integration/drone/push Build is failing
Reviewed-on: #28
2021-08-10 06:19:46 +00:00
mirsal fc5aa70d27 Allow prometheus metrics collection
continuous-integration/drone/pr Build is failing
This patch adds a METRICS_ENABLED configuration variables which,
when switched on, defines a metrics entrypoint and enables the
built-in prometheus metrics exporter. This allows the monitoring
stack to collect and show traefik metrics
2021-08-09 23:28:15 +00:00
3wordchant 9e123afb07 Merge pull request 'COMPOSE_FILE=$COMPOSE_FILE:`, to combine 'em easier' (#27) from rejig-compose-vars into master
continuous-integration/drone/push Build is failing
Reviewed-on: #27
2021-08-07 17:55:05 +00:00
15 changed files with 171 additions and 38 deletions
+14 -6
View File
@@ -3,10 +3,12 @@ kind: pipeline
name: deploy to swarm-test.autonomic.zone
steps:
- name: deployment
image: decentral1se/stack-ssh-deploy:latest
image: git.coopcloud.tech/coop-cloud/stack-ssh-deploy:latest
settings:
host: swarm-test.autonomic.zone
stack: traefik
networks:
- proxy
deploy_key:
from_secret: drone_ssh_swarm_test
environment:
@@ -22,11 +24,17 @@ trigger:
- master
---
kind: pipeline
name: recipe release
name: generate recipe catalogue
steps:
- name: release a new version
image: thecoopcloud/drone-abra:latest
image: plugins/downstream
settings:
command: recipe traefik release
deploy_key:
from_secret: abra_bot_deploy_key
server: https://build.coopcloud.tech
token:
from_secret: drone_abra-bot_token
fork: true
repositories:
- coop-cloud/auto-recipes-catalogue-json
trigger:
event: tag
+34 -2
View File
@@ -1,4 +1,6 @@
TYPE=traefik
TIMEOUT=300
ENABLE_AUTO_UPDATE=true
DOMAIN=traefik.example.com
LETS_ENCRYPT_ENV=production
@@ -8,8 +10,7 @@ LETS_ENCRYPT_EMAIL=certs@example.com
# WARN, INFO etc.
LOG_LEVEL=WARN
# This is here so later lines can extend the definition; you likely don't wanna
# edit
# This is here so later lines can extend it; you likely don't wanna edit
COMPOSE_FILE="compose.yml"
#####################################################################
@@ -52,6 +53,23 @@ COMPOSE_FILE="compose.yml"
## Enable Keycloak
#COMPOSE_FILE="$COMPOSE_FILE:compose.keycloak.yml"
#KEYCLOAK_MIDDLEWARE_ENABLED=1
#KEYCLOAK_TFA_SERVICE=traefik-forward-auth_app
#KEYCLOAK_MIDDLEWARE_2_ENABLED=1
#KEYCLOAK_TFA_SERVICE_2=traefik-forward-auth_app
#####################################################################
# Prometheus metrics #
#####################################################################
## Enable prometheus metrics collection
## used used by the coop-cloud monitoring stack
#METRICS_ENABLED=1
#####################################################################
# File provider directory configuration #
# (Route bare metal and non-docker services on the machine!) #
#####################################################################
#FILE_PROVIDER_DIRECTORY_ENABLED=1
#####################################################################
# Additional services #
@@ -61,6 +79,10 @@ COMPOSE_FILE="compose.yml"
#COMPOSE_FILE="$COMPOSE_FILE:compose.smtp.yml"
#SMTP_ENABLED=1
## Compy
#COMPOSE_FILE="$COMPOSE_FILE:compose.compy.yml"
#COMPY_ENABLED=1
## Gitea SSH
# COMPOSE_FILE="$COMPOSE_FILE:compose.gitea.yml"
# GITEA_SSH_ENABLED=1
@@ -84,3 +106,13 @@ COMPOSE_FILE="compose.yml"
## Mumble
#COMPOSE_FILE="$COMPOSE_FILE:compose.mumble.yml"
#MUMBLE_ENABLED=1
## Matrix
#COMPOSE_FILE="$COMPOSE_FILE:compose.matrix.yml"
#MATRIX_FEDERATION_ENABLED=1
## BASIC_AUTH
## Use httpasswd to generate the secret
#COMPOSE_FILE="$COMPOSE_FILE:compose.basicauth.yml"
#BASIC_AUTH=1
#SECRET_USERSFILE_VERSION=v1
+25 -4
View File
@@ -7,11 +7,11 @@
<!-- metadata -->
* **Category**: Utilities
* **Status**: ?
* **Image**: [`traefik`](https://hub.docker.com/_/traefik), ❶💚, upstream
* **Image**: [`traefik`](https://hub.docker.com/_/traefik), 4, upstream
* **Healthcheck**: Yes
* **Backups**: No
* **Email**: N/A
* **Tests**: ❷💛
* **Tests**: 2
* **SSO**: ? (Keycloak)
<!-- endmetadata -->
@@ -19,8 +19,29 @@
1. Set up Docker Swarm and [`abra`]
2. `abra app new traefik`
3. `abra app YOURAPPDOMAIN config` - be sure to change `DOMAIN` to something that resolves to
3. `abra app config YOURAPPDOMAIN` - be sure to change `DOMAIN` to something that resolves to
your Docker swarm box
4. `abra app YOURAPPDOMAIN deploy`
4. `abra app deploy YOURAPPDOMAIN`
## Configuring wildcard SSL using DNS
Automatic certificate generation will Just Work™ for most recipes which use a fixed
number of subdomains. For some recipes which need to work across arbitrary
subdomains, like
[`federatedwiki`](https://git.coopcloud.tech/coop-cloud/federatedwiki/) and
[`go-ssb-room`](https://git.coopcloud.tech/coop-cloud/federatedwiki/), you'll
need to give Traefik access to your DNS provider so that it can carry out
Letsencrypt DNS challenges.
1. Use Gandi or OVH for DNS 🤡 (support for other providers can be easily added,
see [the `lego` docs](https://go-acme.github.io/lego/dns/#dns-providers).
2. Run `abra app config YOURAPPDOMAIN`
3. Uncomment e.g. `ENABLE_GANDI` and the related `SECRET_.._VERSION` line, e.g.
`SECRET_GANDIV5_API_KEY_VERSION`
4. Generate an API key for your provider
5. Run `abra app secret insert YOURAPPDOMAIN SECRETNAME v1 SECRETVALUE`, where
`SECRETNAME` is from the compose file (e.g. `compose.gandi.yml`) e.g.
`gandiv5_api_key` and `SECRETVALUE` is the API key.
6. Redeploy Traefik, using e.g. `abra app deploy YOURAPPDOMAIN -f`
[`abra`]: https://git.autonomic.zone/autonomic-cooperative/abra
+2 -2
View File
@@ -1,3 +1,3 @@
export TRAEFIK_YML_VERSION=v11
export FILE_PROVIDER_YML_VERSION=v2
export TRAEFIK_YML_VERSION=v16
export FILE_PROVIDER_YML_VERSION=v7
export ENTRYPOINT_VERSION=v2
+12
View File
@@ -0,0 +1,12 @@
version: "3.8"
services:
app:
environment:
- BASIC_AUTH
secrets:
- usersfile
secrets:
usersfile:
name: ${STACK_NAME}_usersfile_${SECRET_USERSFILE_VERSION}
external: true
+7
View File
@@ -0,0 +1,7 @@
version: "3.8"
services:
app:
environment:
- COMPY_ENABLED
ports:
- "9999:9999"
+2 -3
View File
@@ -10,6 +10,5 @@ services:
labels:
- "traefik.enable=true"
- "traefik.http.services.traefik.loadbalancer.server.port=web"
- "traefik.http.routers.traefik.entrypoints=web-secure"
- "traefik.http.routers.traefik.service=api@internal"
- "coop-cloud.${STACK_NAME}.app.version=v2.4.9-be23e1f6"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "traefik.http.routers.${STACK_NAME}.service=api@internal"
-3
View File
@@ -13,6 +13,3 @@ services:
- target: 443
published: 443
mode: host
- target: 2222
published: 2222
mode: host
+4 -1
View File
@@ -5,6 +5,9 @@ services:
app:
deploy:
labels:
- "traefik.http.routers.traefik.middlewares=keycloak@file"
- "traefik.http.routers.${STACK_NAME}.middlewares=keycloak@file"
environment:
- KEYCLOAK_MIDDLEWARE_ENABLED
- KEYCLOAK_TFA_SERVICE
- KEYCLOAK_MIDDLEWARE_2_ENABLED
- KEYCLOAK_TFA_SERVICE_2
+7
View File
@@ -0,0 +1,7 @@
version: "3.8"
services:
app:
environment:
- MATRIX_FEDERATION_ENABLED
ports:
- "8448:8448"
+9
View File
@@ -0,0 +1,9 @@
---
version: "3.8"
services:
app:
environment:
- MINIO_CONSOLE_ENABLED
ports:
- "9001:9001"
+16 -9
View File
@@ -1,7 +1,9 @@
---
version: "3.8"
services:
app:
image: "traefik:v2.4.11"
image: "traefik:v2.10.1"
# 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
@@ -11,6 +13,7 @@ services:
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "letsencrypt:/etc/letsencrypt"
- "file-providers:/etc/traefik/file-providers"
configs:
- source: traefik_yml
target: /etc/traefik/traefik.yml
@@ -38,17 +41,19 @@ services:
order: start-first
labels:
- "traefik.enable=true"
- "traefik.http.services.traefik.loadbalancer.server.port=web"
- "traefik.http.routers.traefik.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.traefik.entrypoints=web-secure"
- "traefik.http.routers.traefik.tls.certresolver=${LETS_ENCRYPT_ENV}"
- "traefik.http.routers.traefik.tls.options=default@file"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.middlewares=security@file"
- "coop-cloud.${STACK_NAME}.app.version=v2.4.9-be23e1f6"
- "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=web"
- "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure"
- "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=2.2.0+v2.10.2"
- "coop-cloud.${STACK_NAME}.timeout=${TIMEOUT:-120}"
networks:
proxy:
external: true
configs:
traefik_yml:
name: ${STACK_NAME}_traefik_yml_${TRAEFIK_YML_VERSION}
@@ -62,5 +67,7 @@ configs:
name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION}
file: entrypoint.sh.tmpl
template_driver: golang
volumes:
letsencrypt:
file-providers:
+14 -1
View File
@@ -4,11 +4,24 @@ http:
{{ if eq (env "KEYCLOAK_MIDDLEWARE_ENABLED") "1" }}
keycloak:
forwardAuth:
address: "http://traefik-forward-auth:4181"
address: "http://{{ env "KEYCLOAK_TFA_SERVICE" }}:4181"
trustForwardHeader: true
authResponseHeaders:
- X-Forwarded-User
{{ end }}
{{ if eq (env "KEYCLOAK_MIDDLEWARE_2_ENABLED") "1" }}
keycloak2:
forwardAuth:
address: "http://{{ env "KEYCLOAK_TFA_SERVICE_2" }}:4181"
trustForwardHeader: true
authResponseHeaders:
- X-Forwarded-User
{{ end }}
{{ if eq (env "BASIC_AUTH") "1" }}
basicauth:
basicAuth:
usersFile: "/run/secrets/usersfile"
{{ end }}
security:
headers:
frameDeny: true
-6
View File
@@ -1,6 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
]
}
+25 -1
View File
@@ -8,8 +8,14 @@ providers:
exposedByDefault: false
network: proxy
swarmMode: true
{{ if eq (env "FILE_PROVIDER_DIRECTORY_ENABLED") "1" }}
file:
directory: /etc/traefik/file-providers
watch: true
{{ else }}
file:
filename: /etc/traefik/file-provider.yml
{{ end }}
api:
dashboard: {{ env "DASHBOARD_ENABLED" }}
@@ -54,10 +60,28 @@ entrypoints:
mumble-udp:
address: ":64738/udp"
{{ end }}
{{ if eq (env "COMPY_ENABLED") "1" }}
compy:
address: ":9999"
{{ end }}
{{ if eq (env "METRICS_ENABLED") "1" }}
metrics:
address: ":8082"
{{ end }}
{{ if eq (env "MATRIX_FEDERATION_ENABLED") "1" }}
matrix-federation:
address: ":9001"
{{ end }}
ping:
entryPoint: web
{{ if eq (env "METRICS_ENABLED") "1" }}
metrics:
prometheus:
entryPoint: metrics
{{ end }}
certificatesResolvers:
staging:
acme:
@@ -84,5 +108,5 @@ certificatesResolvers:
provider: {{ (env "LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER") }}
resolvers:
- "1.1.1.1:53"
- "8.8.8.8:53"
- "9.9.9.9:53"
{{ end }}