Update to handle gandiv5 personal access tokens #49

Merged
decentral1se merged 2 commits from gabi/traefik:gandiv5 into master 2024-10-21 07:52:38 +00:00
5 changed files with 26 additions and 7 deletions

View File

@ -42,10 +42,16 @@ COMPOSE_FILE="compose.yml"
## Gandi, https://gandi.net
## note(3wc): only "V5" (new) API is supported, so far
#COMPOSE_FILE="$COMPOSE_FILE:compose.gandi.yml"
#GANDI_ENABLED=1
#COMPOSE_FILE="$COMPOSE_FILE:compose.gandi-api-key.yml"
#GANDI_API_KEY_ENABLED=1
#SECRET_GANDIV5_API_KEY_VERSION=v1
## Gandi, https://gandi.net
## note: uses GandiV5 Personal Access Token
#COMPOSE_FILE="$COMPOSE_FILE:compose.gandi-personal-access-token.yml"
#GANDI_PERSONAL_ACCESS_TOKEN_ENABLED=1
#SECRET_GANDIV5_PERSONAL_ACCESS_TOKEN_VERSION=v1
## DigitalOcean, https://digitalocean.com
#COMPOSE_FILE="$COMPOSE_FILE:compose.digitalocean.yml"
#DIGITALOCEAN_ENABLED=1

View File

@ -40,8 +40,10 @@ Letsencrypt DNS challenges.
`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.
`SECRETNAME` is from the compose file (e.g. `compose.gandi-api-key.yml`) e.g.
`gandiv5_api_key` and `SECRETVALUE` is the API key.
- 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.
6. Redeploy Traefik, using e.g. `abra app deploy YOURAPPDOMAIN -f`
[`abra`]: https://git.autonomic.zone/autonomic-cooperative/abra

View File

@ -0,0 +1,15 @@
version: "3.8"
services:
app:
environment:
- GANDIV5_PERSONAL_ACCESS_TOKEN_FILE=/run/secrets/gandiv5_pat
- LETS_ENCRYPT_DNS_CHALLENGE_ENABLED
- LETS_ENCRYPT_DNS_CHALLENGE_PROVIDER
secrets:
- gandiv5_pat
secrets:
gandiv5_pat:
decentral1se marked this conversation as resolved Outdated

I'd recommended making this much shorter to avoid errors when people have long domain names (${STACK_NAME}), see https://docs.coopcloud.tech/maintainers/handbook/#r015-long-secret-names for more.

I'd recommended making this much shorter to avoid errors when people have long domain names (`${STACK_NAME}`), see https://docs.coopcloud.tech/maintainers/handbook/#r015-long-secret-names for more.
Outdated
Review

Gotcha -- I initially had it shorter, but made it longer for consistency and to match the official traefik containers env naming as documented here: https://go-acme.github.io/lego/dns/gandiv5/

I didn't realize there was a character limit though, thanks so much for flagging! Will take a pass with a shorter name -- it may not pass through transparently into the container, so will probably have to map at some point, but will update when i get a chance to plumb it through :)

Gotcha -- I initially had it shorter, but made it longer for consistency and to match the official traefik containers env naming as documented here: https://go-acme.github.io/lego/dns/gandiv5/ I didn't realize there was a character limit though, thanks so much for flagging! Will take a pass with a shorter name -- it may not pass through transparently into the container, so will probably have to map at some point, but will update when i get a chance to plumb it through :)
Outdated
Review

Okay, actually that was super easy, didn't realize it was just the secret name when i responded last :)

Seems to be working on my test instance, but would appreciate a confirmation before merging in if you have time to test. As far as I can tell, should be good to go though

Okay, actually that was super easy, didn't realize it was just the secret name when i responded last :) Seems to be working on my test instance, but would appreciate a confirmation before merging in if you have time to test. As far as I can tell, should be good to go though
name: ${STACK_NAME}_gandiv5_pat_${SECRET_GANDIV5_PERSONAL_ACCESS_TOKEN_VERSION}
external: true

View File

@ -7,10 +7,6 @@ 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 }}
{{ if eq (env "DIGITALOCEAN_ENABLED") "1" }}
export DO_AUTH_TOKEN=$(cat "$DO_AUTH_TOKEN_FILE")
{{ end }}