Caddy 0.9.5 Released

I’m pleased to announce the release of Caddy version 0.9.5. It is a good idea for everyone to upgrade soon.

As usual, this was a group effort. Thank you to everyone who contributed to make this possible!

3 Likes

Great! I when I discovered it this morning, I thought, how could I have missed it, but I see now it hasn’t been out that long.

On that topic, what is the recommended way to upgrade? I now usually redownload a release file, try to remember which extensions I was using, and then copy it over the old one. Is there a better way? Is there a way to construct a URL that has all the necessary options?? Upgrades are almost once a month, so there must be a more automated way to take care of one’s infrastructure needs. How do other people do this?

That makes me wonder, what happens if a build release doesn’t have an extension that the site is using, does it just fail to run, or is it just that feature that won’t work?

An automated Caddy install goes something like this:

$ curl -o "caddy.tar.gz" "https://caddyserver.com/download/..."
$ tar -xzf caddy.tar.gz caddy
$ sudo setcap cap_net_bind_service=+ep caddy
$ mv caddy /usr/local/bin caddy
$ kill -SIGINT $(pgrep caddy) && caddy

This is more or less what getcaddy.com does.

In the future we’ll make updates easier – even automatic. But for now, just remember what plugins you have. You can use caddy -plugins to get a list.

2 Likes

Funny! Basically the answer is: use https://getcaddy.com
But which features can be specified is not clear. The source at getcaddy.com give the example of git,mailout. The full output of caddy -plugins is:

Server types:
  http
  dns

Caddyfile loaders:
  short
  flag
  default

Other plugins:
  dns.auto
  dns.bind
  dns.cache
  dns.chaos
  dns.dnssec
  dns.errors
  dns.etcd
  dns.file
  dns.health
  dns.httpproxy
  dns.kubernetes
  dns.loadbalance
  dns.log
  dns.pprof
  dns.prometheus
  dns.proxy
  dns.rewrite
  dns.root
  dns.secondary
  dns.whoami
  http.awslambda
  http.basicauth
  http.bind
  http.browse
  http.cors
  http.errors
  http.expires
  http.expvar
  http.ext
  http.fastcgi
  http.filemanager
  http.filter
  http.git
  http.gzip
  http.header
  http.hugo
  http.internal
  http.ipfilter
  http.jsonp
  http.jwt
  http.locale
  http.log
  http.mailout
  http.markdown
  http.maxrequestbody
  http.mime
  http.minify
  http.multipass
  http.pprof
  http.prometheus
  http.proxy
  http.ratelimit
  http.realip
  http.redir
  http.rewrite
  http.root
  http.search
  http.status
  http.templates
  http.timeouts
  http.upload
  http.websocket
  shutdown
  startup
  tls
  tls.dns.cloudflare
  tls.dns.digitalocean
  tls.dns.dnsimple
  tls.dns.dyn
  tls.dns.gandi
  tls.dns.googlecloud
  tls.dns.linode
  tls.dns.namecheap
  tls.dns.ovh
  tls.dns.rfc2136
  tls.dns.route53
  tls.dns.vultr
  tls.storage.file

Is it only possible to specify the http.X features without the prefix?? But not all of them are listed on the webpage (nor do they work). And how about the DNS server type? And the DNS providers? Is there a full API for specifying on the command line what exactly one wants to get?

If line 3 is really needed for both new installs and upgrades, it should be incorporated in getcaddy.com’s script.

The 4th line, nowadays I get cp: cannot create regular file '/usr/local/bin/caddy': Text file busy if it’s still running. So in that case a reshuffle of lines 4 and 5 like:

kill -INT $(pgrep caddy)
mv caddy /usr/local/bin/
caddy

That’s the download link. After choosing your configuration on the download page, right-click the download button for your platform and copy the link URL, that goes there.

No, when you replace the file you need to give it the capabilities to bind to low ports again.