abiosoft/caddy-docker

Not possible to build with Cloudflare plugin

njm2112 opened this issue · 5 comments

Resolution of this issue seems incorrectly to be indicated in this closed issue: #195 (comment)

when running docker build -t caddy --build-arg plugins=git,cloudflare,jwt,login,filter,cors,realip,filemanager,cache,expires github.com/abiosoft/caddy-docker.git, the build process clearly shows:

Sending build context to Docker daemon  109.6kB
Step 1/24 : FROM abiosoft/caddy:builder as builder
builder: Pulling from abiosoft/caddy
Digest: sha256:305e08cea6537ff651262d8a9c9fa1676b4f71dee96fa84f91352b3789a9d5b9
Status: Downloaded newer image for abiosoft/caddy:builder
 ---> 01e4c36185ca
Step 2/24 : ARG version="1.0.3"
 ---> Using cache
 ---> 3da066a92b94
Step 3/24 : ARG plugins="git,cors,realip,expires,cache,cloudflare"
 ---> Using cache
 ---> a5301b5c145b

First issue is that build is ignoring the plugins passed to it; why?

The plugins that are installed using the image built above are as follows:

me@NAS:/volume1/docker/_wip/caddy$ sudo docker exec -it caddy /bin/sh
/srv # caddy --plugins
Server types:
  http

Caddyfile loaders:
  short
  flag
  default

Other plugins:
  http.basicauth
  http.bind
  http.browse
  http.errors
  http.expvar
  http.ext
  http.fastcgi
  http.gzip
  http.header
  http.index
  http.internal
  http.limits
  http.log
  http.markdown
  http.mime
  http.pprof
  http.proxy
  http.push
  http.redir
  http.request_id
  http.rewrite
  http.root
  http.status
  http.templates
  http.timeouts
  http.websocket
  on
  tls
  tls.cluster.file

Second issue: where is the cloudflare plugin??? even if not accepting the plugins list I passed through to build, the cloudflare plugin is in the list that should be installed per the output of build so what gives?

Same problem here.

My solution:
Download caddy here with plugins and then -v like this
20200205120413.

My solution:
Download caddy here with plugins and then -v like this
20200205120413.

That actually works very well. This let me have the latest version of the tls.cloudflare plugin which supports CLOUDFLARE_DNS_API_TOKEN instead of email + key.

My solution is to build my own alpine-based docker containers .

FROM alpine:latest

ARG plugins=tls.dns.cloudflare

RUN apk add --no-cache curl libcap

RUN curl --silent --show-error --fail --location --header "Accept: application/tar+gzip, application/x-gzip, application/octet-stream" -o - \
      "https://caddyserver.com/download/linux/amd64?plugins=${plugins}&license=personal&telemetry=off" \
    | tar --no-same-owner -C /usr/bin/ -xz caddy \
 && chmod 0755 /usr/bin/caddy \
 && addgroup -S caddy \
 && adduser -D -S -s /sbin/nologin -G caddy caddy \
 && setcap cap_net_bind_service=+ep `readlink -f /usr/bin/caddy` \
 && /usr/bin/caddy -version

COPY Caddyfile /etc/Caddyfile

ENTRYPOINT ["/usr/bin/caddy"]
CMD ["--conf", "/etc/Caddyfile"]

Thanks yobasystems/alpine-caddy for the Dockerfile.

Use this new image which is valid and up-to-date:
https://hub.docker.com/r/adriel/caddy