caddy-dns / cloudflare

Caddy module: dns.providers.cloudflare
Apache License 2.0
441 stars 59 forks source link

Caddyfile not reading environment for api token #9

Closed Taubin closed 4 years ago

Taubin commented 4 years ago

I have added my cloudflare token to my environment, however my caddyfile will not read api from the environment and gives me an error.

Caddyfile:

s1.example.com {
tls {
    dns cloudflare {env.CLOUDFLARE_API_TOKEN}
}
encode gzip

root * /var/www/s1.example.com
file_server
}

Env output:

taubin@s1:~$ printenv
SHELL=/bin/bash
PWD=/home/taubin
LOGNAME=taubin
XDG_SESSION_TYPE=tty
MOTD_SHOWN=pam
HOME=/home/taubin
LANG=en_US.UTF-8
LESSCLOSE=/usr/bin/lesspipe %s %s
XDG_SESSION_CLASS=user
TERM=xterm-256color
LESSOPEN=| /usr/bin/lesspipe %s
USER=taubin
SHLVL=1
CLOUDFLARE_API_TOKEN=REDACTED BUT CONFIRMED
XDG_SESSION_ID=3
XDG_RUNTIME_DIR=/run/user/1000
SSH_CLIENT=203.86.205.64 55532 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
SSH_TTY=/dev/pts/0
_=/usr/bin/printenv

Error message in status:

taubin@s1:~$ sudo systemctl status caddy
● caddy.service - Caddy
     Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Wed 2020-06-03 04:37:43 CEST; 3s ago
       Docs: https://caddyserver.com/docs/
    Process: 1075 ExecStart=/usr/local/bin/caddy run --environ --config /etc/caddy/Caddyfile (code=exited, status=1/FAILURE)
   Main PID: 1075 (code=exited, status=1/FAILURE)

Jun 03 04:37:43 s1.example.com caddy[1075]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Jun 03 04:37:43 s1.example.com caddy[1075]: HOME=/var/lib/caddy
Jun 03 04:37:43 s1.example.com caddy[1075]: LOGNAME=caddy
Jun 03 04:37:43 s1.example.com caddy[1075]: USER=caddy
Jun 03 04:37:43 s1.example.com caddy[1075]: INVOCATION_ID=3e57708803144dc18e107cd1258c7875
Jun 03 04:37:43 s1.example.com caddy[1075]: JOURNAL_STREAM=9:23889
Jun 03 04:37:43 s1.example.com caddy[1075]: {"level":"info","ts":1591151863.9883575,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
Jun 03 04:37:43 s1.example.com caddy[1075]: run: adapting config using caddyfile: parsing caddyfile tokens for 'tls': /etc/caddy/Caddyfile:8 - Error during parsing: missing API token
Jun 03 04:37:43 s1.example.com systemd[1]: caddy.service: Main process exited, code=exited, status=1/FAILURE
Jun 03 04:37:43 s1.example.com systemd[1]: caddy.service: Failed with result 'exit-code'.

If I change the {env.CLOUDFLARE_API_TOKEN} to the actual token, it works just fine. I'm sure it's just something stupid I'm doing, but I haven't been able to resolve it.

mholt commented 4 years ago

You need to make sure it is in the env that Caddy sees. (Check the output of caddy environ or caddy run --environ with your service file.)