Compare commits

..

18 Commits

Author SHA1 Message Date
b538fa1509 feat: error pages
See coop-cloud/organising#115 (comment).
2021-11-14 00:34:57 +01:00
3wc
8e91a5a3ee Minuscule .env tweak 2021-10-14 00:44:40 +02:00
3048d09cd8 fix: support configurable tfa service 2021-10-14 00:43:56 +02:00
2c9e980809 chore: remove old file 2021-10-12 11:41:56 +02:00
ec47f5c9dd chore: first release 2021-10-12 11:41:53 +02:00
cf81dc543a chore: upgrade to 2.5.2 and add spaces 2021-09-15 13:35:57 +02:00
48f03d8fcf Remove 2222 port from host networking
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
8c6fe61e60 Merge pull request 'Allow prometheus metrics collection' (#28) from mirsal/traefik:prometheus-metrics into master
Reviewed-on: coop-cloud/traefik#28
2021-08-10 06:19:46 +00:00
fc5aa70d27 Allow prometheus metrics collection
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
9e123afb07 Merge pull request 'COMPOSE_FILE=$COMPOSE_FILE:`, to combine 'em easier' (#27) from rejig-compose-vars into master
Reviewed-on: coop-cloud/traefik#27
2021-08-07 17:55:05 +00:00
3wc
baba7ff87d Add default COMPOSE_FILE 2021-08-07 19:49:29 +02:00
3wc
e856591c97 COMPOSE_FILE=$COMPOSE_FILE:, to combine 'em easier
Thanks, @mirsal
2021-08-07 17:03:52 +02:00
3wc
8bcd8f054e Add missing Mumble vars to .env.sample 2021-08-07 17:03:20 +02:00
3wc
a9a513e8da Add Mumble TCP/UDP ports 2021-08-07 14:24:39 +02:00
3wc
46010aeb95 Enable Gandi DNS challenge for Letsencrypt 2021-07-18 16:30:22 +02:00
0421dd4747 Update traefik Docker tag to v2.4.11 2021-07-16 07:03:32 +00:00
eb69ba9309 Expose host mode networking for mssql
See https://github.com/WASHNote/washnote-apps/issues/17.
2021-07-07 15:58:08 +02:00
21cd25f3d6 Quote and version headless 2021-06-27 20:19:04 +02:00
13 changed files with 152 additions and 42 deletions

View File

@ -8,49 +8,87 @@ LETS_ENCRYPT_EMAIL=certs@example.com
# WARN, INFO etc.
LOG_LEVEL=WARN
# This is here so later lines can extend it; you likely don't wanna edit
COMPOSE_FILE="compose.yml"
#####################################################################
# General settings #
#####################################################################
## Host-mode networking
#COMPOSE_FILE="$COMPOSE_FILE:compose.host.yml"
## "Headless mode" (no domain configured)
#COMPOSE_FILE="$COMPOSE_FILE:compose.headless.yml"
#####################################################################
# Automatic DNS set-up for Letsencrypt #
#####################################################################
## Enable dns challenge (for wildcard domains)
## https://doc.traefik.io/traefik/https/acme/#dnschallenge
#LETS_ENCRYPT_DNS_CHALLENGE_ENABLED=1
#LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER=ovh
## OVH configuration
# COMPOSE_FILE="compose.yml:compose.ovh.yml"
# OVH_ENABLED=1
# OVH_APPLICATION_KEY=
# OVH_ENDPOINT=
# SECRET_OVH_APP_SECRET_VERSION=v1
# SECRET_OVH_CONSUMER_KEY=v1
## OVH, https://ovh.com
#COMPOSE_FILE="$COMPOSE_FILE:compose.ovh.yml"
#OVH_ENABLED=1
#OVH_APPLICATION_KEY=
#OVH_ENDPOINT=
#SECRET_OVH_APP_SECRET_VERSION=v1
#SECRET_OVH_CONSUMER_KEY=v1
## Gandi, https://gandi.net
## note(3wc): only "V5" (new) API is supported, so far
#COMPOSE_FILE="$COMPOSE_FILE:compose.gandi.yml"
#GANDI_ENABLED=1
#SECRET_GANDIV5_API_KEY_VERSION=v1
#####################################################################
# Keycloak log-in #
#####################################################################
## Enable Keycloak
#COMPOSE_FILE="compose.yml:compose.keycloak.yml"
#COMPOSE_FILE="$COMPOSE_FILE:compose.keycloak.yml"
#KEYCLOAK_MIDDLEWARE_ENABLED=1
#KEYCLOAK_TFA_SERVICE=traefik-forward-auth_app
#####################################################################
# Prometheus metrics #
#####################################################################
## Enable prometheus metrics collection
## used used by the coop-cloud monitoring stack
#METRICS_ENABLED=1
#####################################################################
# Additional services #
#####################################################################
## SMTP port 587
#COMPOSE_FILE="compose.yml:compose.smtp.yml"
#COMPOSE_FILE="$COMPOSE_FILE:compose.smtp.yml"
#SMTP_ENABLED=1
## Gitea SSH
# COMPOSE_FILE="compose.yml:compose.gitea.yml"
# COMPOSE_FILE="$COMPOSE_FILE:compose.gitea.yml"
# GITEA_SSH_ENABLED=1
## Foodsoft SMTP
# COMPOSE_FILE="compose.yml:compose.foodsoft.yml"
# COMPOSE_FILE="$COMPOSE_FILE:compose.foodsoft.yml"
# FOODSOFT_SMTP_ENABLED=1
## Peertube RTMP
# COMPOSE_FILE="compose.yml:compose.peertube.yml"
# PEERTUBE_RTMP_ENABLED=1
#COMPOSE_FILE="$COMPOSE_FILE:compose.peertube.yml"
#PEERTUBE_RTMP_ENABLED=1
## Secure Scuttlebutt MUXRPC
# COMPOSE_FILE="compose.yml:compose.ssb.yml"
# SSB_MUXRPC_ENABLED=1
#COMPOSE_FILE="$COMPOSE_FILE:compose.ssb.yml"
#SSB_MUXRPC_ENABLED=1
## MSSQL
# COMPOSE_FILE="compose.yml:compose.mssql.yml"
# MSSQL_ENABLED=1
#COMPOSE_FILE="$COMPOSE_FILE:compose.mssql.yml"
#MSSQL_ENABLED=1
## Host-mode networking
#COMPOSE_FILE="compose.yml:compose.host.yml"
## "Headless mode" (no domain configured)
#COMPOSE_FILE="compose.yml:compose.headless.yml"
## Mumble
#COMPOSE_FILE="$COMPOSE_FILE:compose.mumble.yml"
#MUMBLE_ENABLED=1

View File

@ -1,3 +1,3 @@
export TRAEFIK_YML_VERSION=v9
export FILE_PROVIDER_YML_VERSION=v2
export ENTRYPOINT_VERSION=v1
export TRAEFIK_YML_VERSION=v12
export FILE_PROVIDER_YML_VERSION=v3
export ENTRYPOINT_VERSION=v2

15
compose.gandi.yml Normal file
View File

@ -0,0 +1,15 @@
version: "3.8"
services:
app:
environment:
- GANDIV5_API_KEY_FILE=/run/secrets/gandiv5_api_key
- LETS_ENCRYPT_DNS_CHALLENGE_ENABLED
- LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER
secrets:
- gandiv5_api_key
secrets:
gandiv5_api_key:
name: ${STACK_NAME}_gandiv5_api_key_${SECRET_GANDIV5_API_KEY_VERSION}
external: true

View File

@ -12,3 +12,4 @@ services:
- "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"

View File

@ -13,6 +13,3 @@ services:
- target: 443
published: 443
mode: host
- target: 2222
published: 2222
mode: host

View File

@ -8,3 +8,4 @@ services:
- "traefik.http.routers.traefik.middlewares=keycloak@file"
environment:
- KEYCLOAK_MIDDLEWARE_ENABLED
- KEYCLOAK_TFA_SERVICE

View File

@ -4,4 +4,7 @@ services:
environment:
- MSSQL_ENABLED
ports:
- "1433:1433"
- target: 1433
published: 1433
protocol: tcp
mode: host

9
compose.mumble.yml Normal file
View File

@ -0,0 +1,9 @@
version: "3.8"
services:
app:
environment:
- MUMBLE_ENABLED
ports:
- "64738:64738/udp"
# note (3wc): see https://github.com/docker/compose/issues/7627
- "64737-64739:64737-64739/tcp"

View File

@ -1,7 +1,9 @@
---
version: "3.8"
services:
app:
image: "traefik:v2.4.9"
image: "traefik:v2.5.2"
# 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
@ -45,10 +47,29 @@ services:
- "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
- "coop-cloud.${STACK_NAME}.version=1.0.0+v2.5.2"
web:
image: tarampampam/error-pages:2.2.0
environment:
- TEMPLATE_NAME=shuffle
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.http.services.error-pages-service.loadbalancer.server.port=8080"
- "traefik.http.routers.error-router.entrypoints=web-secure"
- "traefik.http.routers.error-router.rule=HostRegexp(`{host:.+}`)"
- "traefik.http.routers.error-router.priority=10"
- "traefik.http.routers.error-router.middlewares=error-pages-middleware@docker"
- "traefik.http.middlewares.error-pages-middleware.errors.status=400-599"
- "traefik.http.middlewares.error-pages-middleware.errors.service=error-pages-service@docker"
- "traefik.http.middlewares.error-pages-middleware.errors.query=/{status}.html"
networks:
proxy:
external: true
configs:
traefik_yml:
name: ${STACK_NAME}_traefik_yml_${TRAEFIK_YML_VERSION}
@ -62,5 +83,6 @@ configs:
name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION}
file: entrypoint.sh.tmpl
template_driver: golang
volumes:
letsencrypt:

View File

@ -7,4 +7,8 @@ export OVH_CONSUMER_KEY=$(cat "$OVH_CONSUMER_KEY_FILE")
export OVH_APPLICATION_SECRET=$(cat "$OVH_APPLICATION_SECRET_FILE")
{{ end }}
{{ if eq (env "GANDI_ENABLED") "1" }}
export GANDIV5_API_KEY=$(cat "$GANDIV5_API_KEY_FILE")
{{ end }}
/entrypoint.sh "$@"

View File

@ -4,7 +4,7 @@ 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

View File

@ -1,6 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base"
]
}

View File

@ -48,10 +48,26 @@ entrypoints:
mssql:
address: ":1433"
{{ end }}
{{ if eq (env "MUMBLE_ENABLED") "1" }}
mumble:
address: ":64738"
mumble-udp:
address: ":64738/udp"
{{ end }}
{{ if eq (env "METRICS_ENABLED") "1" }}
metrics:
address: ":8082"
{{ end }}
ping:
entryPoint: web
{{ if eq (env "METRICS_ENABLED") "1" }}
metrics:
prometheus:
entryPoint: metrics
{{ end }}
certificatesResolvers:
staging:
acme:
@ -60,13 +76,23 @@ certificatesResolvers:
caServer: "https://acme-staging-v02.api.letsencrypt.org/directory"
httpChallenge:
entryPoint: web
{{ if eq (env "LETS_ENCRYPT_DNS_CHALLENGE_ENABLED") "1" }}
dnsChallenge:
provider: {{ (env "LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER") }}
resolvers:
- "1.1.1.1:53"
- "8.8.8.8:53"
{{ end }}
production:
acme:
email: {{ env "LETS_ENCRYPT_EMAIL" }}
storage: /etc/letsencrypt/production-acme.json
httpChallenge:
entryPoint: web
{{ if eq (env "LETS_ENCRYPT_DNS_CHALLENGE_ENABLED") "1" }}
dnsChallenge:
provider: {{ (env "LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER") }}
{{ end }}
{{ if eq (env "LETS_ENCRYPT_DNS_CHALLENGE_ENABLED") "1" }}
dnsChallenge:
provider: {{ (env "LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER") }}
resolvers:
- "1.1.1.1:53"
- "8.8.8.8:53"
{{ end }}