Compare commits

...

29 Commits

Author SHA1 Message Date
3wc
baba7ff87d Add default COMPOSE_FILE
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
2021-08-07 19:49:29 +02:00
3wc
e856591c97 COMPOSE_FILE=$COMPOSE_FILE:, to combine 'em easier
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/pr Build is failing
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
Some checks failed
continuous-integration/drone/push Build is failing
2021-08-07 14:24:39 +02:00
3wc
46010aeb95 Enable Gandi DNS challenge for Letsencrypt
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2021-07-18 16:30:22 +02:00
0421dd4747 Update traefik Docker tag to v2.4.11
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2021-07-16 07:03:32 +00:00
eb69ba9309 Expose host mode networking for mssql
Some checks failed
continuous-integration/drone/push Build is failing
See https://github.com/WASHNote/washnote-apps/issues/17.
2021-07-07 15:58:08 +02:00
21cd25f3d6 Quote and version headless
Some checks failed
continuous-integration/drone/push Build is failing
2021-06-27 20:19:04 +02:00
f9b3475086 Version v2.4.9; sync labels
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
2021-06-27 20:18:21 +02:00
ef443bae50 Add "headless mode" config
Some checks failed
continuous-integration/drone/push Build is failing
Closes https://git.autonomic.zone/coop-cloud/traefik/issues/24.
2021-06-27 20:17:41 +02:00
aacf00309e Update traefik Docker tag to v2.4.9
Some checks failed
continuous-integration/drone/pr Build is failing
continuous-integration/drone/push Build is failing
2021-06-23 07:03:18 +00:00
f73e38d143 Use new image namespace
Some checks failed
continuous-integration/drone/push Build is failing
2021-06-21 12:32:15 +02:00
661bec4727 Bump versions for CI
Some checks reported errors
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build encountered an error
2021-06-10 12:38:42 +02:00
7258b129c4 Support OVH configuration
Some checks failed
continuous-integration/drone/push Build is failing
See https://github.com/Autonomic-Cooperative/traefik/pull/1.
2021-06-10 12:36:54 +02:00
bbbdfc272d Merge pull request #1 from ahdinosaur/lets-encrypt-dns-challenge-ovh
add support for Let's Encrypt DNS-01 challenge (for wildcard domains)
2021-06-10 12:01:37 +02:00
2c81622d9a add support for Let's Encrypt DNS-01 challenge (for wildcard domains)
start with support for OVH provider, but in a way for others to be added in the future:

https://doc.traefik.io/traefik/https/acme/#dnschallenge
2021-06-10 14:53:17 +12:00
8ff2f3a294 Add missing env var
Some checks reported errors
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build encountered an error
2021-06-07 09:51:24 +02:00
2c745416fc Support mssql host mode connections
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone/tag Build is failing
2021-06-07 09:42:50 +02:00
d968028216 Push env vars to overriding configs
Some checks failed
continuous-integration/drone/push Build is failing
2021-06-05 23:02:36 +02:00
3wc
8d309bc7bf Entrypoint for SSB MUXRPC
Some checks failed
continuous-integration/drone/push Build is failing
2021-06-05 14:23:58 +02:00
18d8805c99 Remove trigger, we make the tags [ci skip] 2021-06-04 00:15:40 +02:00
bdff19882b Fix bad name in batch update script [ci skip] 2021-06-03 23:07:24 +02:00
fd9faeb021 Add release logic to CI [ci skip] 2021-06-03 23:01:32 +02:00
f26557bd40 Expose config var for RTMP port
Some checks failed
continuous-integration/drone/push Build is failing
2021-05-10 14:02:53 +02:00
2de31afe26 Use actual template language
Some checks failed
continuous-integration/drone/push Build is failing
2021-05-10 13:53:27 +02:00
028ad6ce62 Upgrade vendored config
Some checks failed
continuous-integration/drone/push Build is failing
2021-05-10 13:13:44 +02:00
ede226cea7 Add conditionl for peertube RMTP port
Some checks failed
continuous-integration/drone/push Build is failing
2021-05-10 13:04:53 +02:00
9a1dd29d01 Add RTMP optional port setup
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-10 12:58:10 +02:00
2428f5fabd Make foodsoft/gitea ports optional
All checks were successful
continuous-integration/drone/push Build is passing
Closes https://git.autonomic.zone/coop-cloud/traefik/issues/23.
2021-04-07 14:22:22 +02:00
17 changed files with 243 additions and 17 deletions

View File

@ -14,8 +14,19 @@ steps:
STACK_NAME: traefik
LETS_ENCRYPT_ENV: production
LETS_ENCRYPT_EMAIL: helo@autonomic.zone
TRAEFIK_YML_VERSION: v3
FILE_PROVIDER_YML_VERSION: v2
TRAEFIK_YML_VERSION: v4
FILE_PROVIDER_YML_VERSION: v3
ENTRYPOINT_VERSION: v1
trigger:
branch:
- master
---
kind: pipeline
name: recipe release
steps:
- name: release a new version
image: thecoopcloud/drone-abra:latest
settings:
command: recipe traefik release
deploy_key:
from_secret: abra_bot_deploy_key

View File

@ -8,19 +8,79 @@ 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
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, 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
#####################################################################
# 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_FILE:compose.gitea.yml"
# GITEA_SSH_ENABLED=1
## Foodsoft SMTP
# COMPOSE_FILE="$COMPOSE_FILE:compose.foodsoft.yml"
# FOODSOFT_SMTP_ENABLED=1
## Host-mode networking
#COMPOSE_FILE="compose.yml:compose.host.yml"
## Peertube RTMP
#COMPOSE_FILE="$COMPOSE_FILE:compose.peertube.yml"
#PEERTUBE_RTMP_ENABLED=1
## Secure Scuttlebutt MUXRPC
#COMPOSE_FILE="$COMPOSE_FILE:compose.ssb.yml"
#SSB_MUXRPC_ENABLED=1
## MSSQL
#COMPOSE_FILE="$COMPOSE_FILE:compose.mssql.yml"
#MSSQL_ENABLED=1
## Mumble
#COMPOSE_FILE="$COMPOSE_FILE:compose.mumble.yml"
#MUMBLE_ENABLED=1

View File

@ -1,2 +1,3 @@
export TRAEFIK_YML_VERSION=v5
export FILE_PROVIDER_YML_VERSION=v1
export TRAEFIK_YML_VERSION=v11
export FILE_PROVIDER_YML_VERSION=v2
export ENTRYPOINT_VERSION=v2

7
compose.foodsoft.yml Normal file
View File

@ -0,0 +1,7 @@
version: "3.8"
services:
app:
environment:
- FOODSOFT_SMTP_ENABLED
ports:
- "2525:2525"

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

7
compose.gitea.yml Normal file
View File

@ -0,0 +1,7 @@
version: "3.8"
services:
app:
environment:
- GITEA_SSH_ENABLED
ports:
- "2222:2222"

15
compose.headless.yml Normal file
View File

@ -0,0 +1,15 @@
---
version: "3.8"
services:
app:
deploy:
update_config:
failure_action: rollback
order: start-first
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"

10
compose.mssql.yml Normal file
View File

@ -0,0 +1,10 @@
version: "3.8"
services:
app:
environment:
- MSSQL_ENABLED
ports:
- 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"

21
compose.ovh.yml Normal file
View File

@ -0,0 +1,21 @@
version: "3.8"
services:
app:
environment:
- OVH_APPLICATION_KEY
- OVH_APPLICATION_SECRET_FILE=/run/secrets/ovh_app_secret
- OVH_CONSUMER_KEY_FILE=/run/secrets/ovh_consumer_key
- OVH_ENABLED
- OVH_ENDPOINT
secrets:
- ovh_app_secret
- ovh_consumer_key
secrets:
ovh_app_secret:
name: ${STACK_NAME}_ovh_app_secret_${SECRET_OVH_APP_SECRET_VERSION}
external: true
ovh_consumer_key:
name: ${STACK_NAME}_ovh_consumer_key_${SECRET_OVH_CONSUMER_KEY}
external: true

7
compose.peertube.yml Normal file
View File

@ -0,0 +1,7 @@
version: "3.8"
services:
app:
environment:
- PEERTUBE_RTMP_ENABLED
ports:
- "1935:1935"

View File

@ -3,5 +3,7 @@ version: "3.8"
services:
app:
environment:
- SMTP_ENABLED
ports:
- "587:587"

7
compose.ssb.yml Normal file
View File

@ -0,0 +1,7 @@
version: "3.8"
services:
app:
environment:
- SSB_MUXRPC_ENABLED
ports:
- "8008:8008"

View File

@ -1,12 +1,13 @@
version: "3.8"
services:
app:
image: "traefik:v2.4.8"
image: "traefik:v2.4.11"
# 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
ports:
- "80:80"
- "443:443"
- "2222:2222"
- "2525:2525"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "letsencrypt:/etc/letsencrypt"
@ -15,20 +16,22 @@ services:
target: /etc/traefik/traefik.yml
- source: file_provider_yml
target: /etc/traefik/file-provider.yml
- source: entrypoint
target: /custom-entrypoint.sh
mode: 0555
networks:
- proxy
environment:
- DASHBOARD_ENABLED
- FOODSOFT_SMTP_ENABLED
- GITEA_SSH_ENABLED
- LOG_LEVEL
- SMTP_ENABLED
healthcheck:
test: ["CMD", "traefik", "healthcheck"]
interval: 30s
timeout: 10s
retries: 10
start_period: 1m
command: traefik
entrypoint: /custom-entrypoint.sh
deploy:
update_config:
failure_action: rollback
@ -42,17 +45,22 @@ 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.8-d7d63b0d
- "coop-cloud.${STACK_NAME}.app.version=v2.4.9-be23e1f6"
networks:
proxy:
external: true
configs:
traefik_yml:
name: ${STACK_NAME}_traefik_yml_${TRAEFIK_YML_VERSION}
file: traefik.yml
file: traefik.yml.tmpl
template_driver: golang
file_provider_yml:
name: ${STACK_NAME}_file_provider_yml_${FILE_PROVIDER_YML_VERSION}
file: file-provider.yml
file: file-provider.yml.tmpl
template_driver: golang
entrypoint:
name: ${STACK_NAME}_entrypoint_${ENTRYPOINT_VERSION}
file: entrypoint.sh.tmpl
template_driver: golang
volumes:
letsencrypt:

14
entrypoint.sh.tmpl Normal file
View File

@ -0,0 +1,14 @@
#!/bin/sh
set -e
{{ if eq (env "OVH_ENABLED") "1" }}
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

@ -36,6 +36,24 @@ entrypoints:
smtp-submission:
address: ":587"
{{ end }}
{{ if eq (env "PEERTUBE_RTMP_ENABLED") "1" }}
peertube-rtmp:
address: ":1935"
{{ end }}
{{ if eq (env "SSB_MUXRPC_ENABLED") "1" }}
ssb-muxrpc:
address: ":8008"
{{ end }}
{{ if eq (env "MSSQL_ENABLED") "1" }}
mssql:
address: ":1433"
{{ end }}
{{ if eq (env "MUMBLE_ENABLED") "1" }}
mumble:
address: ":64738"
mumble-udp:
address: ":64738/udp"
{{ end }}
ping:
entryPoint: web
@ -48,9 +66,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") }}
resolvers:
- "1.1.1.1:53"
- "8.8.8.8:53"
{{ end }}