` is the value the field must have to match.
- If prefixed with `*`, it performs a fast suffix match.
- If suffixed with `*`, it performs a fast prefix match.
@@ -267,6 +268,13 @@ Match requests with the `Foo` header containing `bar` OR `baz`.
}
```
+Match requests that do not have the `Foo` header field at all:
+```caddy-d
+@not_foo {
+ header !Foo
+}
+```
+
---
### header_regexp
diff --git a/src/docs/markdown/caddyfile/options.md b/src/docs/markdown/caddyfile/options.md
index af15e43..063c4fc 100644
--- a/src/docs/markdown/caddyfile/options.md
+++ b/src/docs/markdown/caddyfile/options.md
@@ -112,7 +112,7 @@ Sets a default TLS ServerName for when clients do not use SNI in their ClientHel
Causes all certificates to be issued internally by default, rather than through a (public) ACME CA such as Let's Encrypt. This is useful in development environments.
##### `acme_ca`
-Specifies the URL to the ACME CA's directory. It is strongly recommended to set this to Let's Encrypt's [staging endpoint](https://letsencrypt.org/docs/staging-environment/) for testing or development. Default: Let's Encrypt's production endpoint.
+Specifies the URL to the ACME CA's directory. It is strongly recommended to set this to Let's Encrypt's [staging endpoint](https://letsencrypt.org/docs/staging-environment/) for testing or development. Default: ZeroSSL and Let's Encrypt's production endpoints.
##### `acme_ca_root`
Specifies a PEM file that contains a trusted root certificate for ACME CA endpoints, if not in the system trust store.
diff --git a/src/docs/markdown/command-line.md b/src/docs/markdown/command-line.md
index d13f390..2f492d9 100644
--- a/src/docs/markdown/command-line.md
+++ b/src/docs/markdown/command-line.md
@@ -203,9 +203,9 @@ Prints CLI help text, optionally for a specific subcommand, then exits.
caddy list-modules
[--versions]
-Prints the Caddy modules that are installed, optionally with version information from their associated Go modules, then exits.
+Prints the Caddy modules that are installed, optionally with package and/or version information from their associated Go modules, then exits.
-NOTE: Due to [a bug in Go](https://github.com/golang/go/issues/29228), version information is only available if Caddy is built as a dependency and not as the main module. TODO: Link to docs that explain how to build Caddy with version info
+NOTE: Due to [a bug in Go](https://github.com/golang/go/issues/29228), version information is only available if Caddy is built as a dependency and not as the main module. Use [xcaddy](/docs/build#xcaddy) to make this easier.
diff --git a/src/docs/markdown/download.md b/src/docs/markdown/download.md
deleted file mode 100644
index 4f2cdcc..0000000
--- a/src/docs/markdown/download.md
+++ /dev/null
@@ -1,103 +0,0 @@
----
-title: "Download Caddy"
----
-
-# Download Caddy
-
-All our [official distributions](https://github.com/caddyserver/dist) come with only the standard modules. If you need third-party plugins, [build from source with xcaddy](/docs/build#xcaddy).
-
-
-
-## Static binaries
-
-You can **[download Caddy from GitHub](https://github.com/caddyserver/caddy/releases)**, where new releases are immediately published, and place it in your PATH.
-
-Using `curl`:
-
-curl -OL "https://github.com/caddyserver/caddy/releases/latest/download/ASSET"
-
-Using `wget`:
-
-wget "https://github.com/caddyserver/caddy/releases/latest/download/ASSET"
-
-
-Replace `ASSET` with the filename for your platform.
-
-
-## Docker
-
-docker pull caddy
-
-[**View on Docker Hub**](https://hub.docker.com/_/caddy)
-
-
-## Debian, Ubuntu, Raspbian
-
-echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" \
- | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
-sudo apt update
-sudo apt install caddy
-
-Installing this package automatically starts and runs Caddy for you as a systemd service named `caddy` using the [caddy.service](https://github.com/caddyserver/dist/blob/master/init/caddy.service) unit file.
-
-
-## Fedora, RedHat, CentOS
-
-Fedora or RHEL/CentOS 8:
-
-dnf install 'dnf-command(copr)'
-dnf copr enable @caddy/caddy
-dnf install caddy
-
-RHEL/CentOS 7:
-
-yum install yum-plugin-copr
-yum copr enable @caddy/caddy
-yum install caddy
-
-[**View the Caddy COPR**](https://copr.fedorainfracloud.org/coprs/g/caddy/caddy/)
-
-
-## Linux & Raspberry Pi
-
-You can use Webi to automate the processes of downloading the latest release and putting it in your PATH, without requiring admin permissions.
-
-curl -sS https://webinstall.dev/caddy | bash
-
-If you'd like a simple way to launch Caddy as a system service and bind to privilege ports, see the Webi [Caddy Cheat Sheet](https://webinstall.dev/caddy).
-
-To allow non-root users to bind to ports 80 and 443, use setcap.
-
-sudo setcap cap_net_bind_service=+ep $(readlink $(command -v caddy))
-
-
-## DigitalOcean
-
-[**Deploy a Caddy droplet on DigitalOcean**](https://marketplace.digitalocean.com/apps/caddy)
-
-
-## macOS
-
-**Homebrew**
-
-brew install caddy
-
-[**View the Homebrew formula**](https://formulae.brew.sh/formula/caddy)
-
-**Webi**
-
-curl -sS https://webinstall.dev/caddy | bash
-
-[**View the Webi installer**](https://github.com/webinstall/webi-installers/tree/master/caddy)
-
-## Windows 10 (Powershell)
-
-curl.exe -A MS https://webinstall.dev/caddy | powershell
-
-You may need to adjust the Windows firewall rules to allow non-localhost incoming connections.
-
-## Windows (Chocolatey)
-
-choco install caddy
-
-[**View the Chocolatey package**](https://chocolatey.org/packages/caddy)
diff --git a/src/docs/markdown/getting-started.md b/src/docs/markdown/getting-started.md
index 0c62442..a0c62bf 100644
--- a/src/docs/markdown/getting-started.md
+++ b/src/docs/markdown/getting-started.md
@@ -26,7 +26,7 @@ Welcome to Caddy! This tutorial will explore the basics of using Caddy and help
---
-**If you [installed Caddy](/docs/download) from a package manager, Caddy might already be running as a service. If so, please stop the service before doing this tutorial.**
+**If you [installed Caddy](/docs/install) from a package manager, Caddy might already be running as a service. If so, please stop the service before doing this tutorial.**
Let's start by running it:
diff --git a/src/docs/markdown/install.md b/src/docs/markdown/install.md
index dec8465..e45db6e 100644
--- a/src/docs/markdown/install.md
+++ b/src/docs/markdown/install.md
@@ -4,18 +4,80 @@ title: "Install"
# Install
-This page describes how to manually install Caddy as a service.
+This page describes various methods for installing Caddy on your system.
+
+**Official:**
+
+- [Static binaries](#static-binaries)
+- [Debian, Ubuntu, Raspbian](#debian-ubuntu-raspbian)
+- [Fedora, RedHat, CentOS](#fedora-redhat-centos)
+- [Docker](#docker)
+- [DigitalOcean](#digitalocean)
+- [Linux service](#linux-service)
+**Community-maintained:**
+
+- [Homebrew](#homebrew)
+- [Webi](#webi)
+- [Chocolatey](#chocolatey)
+
+
+## Static binaries
+
+Simply downloading a Caddy binary does not install it as a service, but can be useful in dev or when upgrading an existing installation.
+
+- [**View releases on GitHub**](https://github.com/caddyserver/caddy/releases) (expand "Assets")
+- [**Use our download page**](/download)
+
+
+## Debian, Ubuntu, Raspbian
+
+echo "deb [trusted=yes] https://apt.fury.io/caddy/ /" \
+ | sudo tee -a /etc/apt/sources.list.d/caddy-fury.list
+sudo apt update
+sudo apt install caddy
+
+Installing this package automatically starts and runs Caddy for you as a systemd service named `caddy` using our official [caddy.service](https://github.com/caddyserver/dist/blob/master/init/caddy.service) unit file.
+
+## Fedora, RedHat, CentOS
+
+Fedora or RHEL/CentOS 8:
+
+dnf install 'dnf-command(copr)'
+dnf copr enable @caddy/caddy
+dnf install caddy
+
+RHEL/CentOS 7:
+
+yum install yum-plugin-copr
+yum copr enable @caddy/caddy
+yum install caddy
+
+[**View the Caddy COPR**](https://copr.fedorainfracloud.org/coprs/g/caddy/caddy/)
+
+
+## Docker
+
+docker pull caddy
+
+[**View on Docker Hub**](https://hub.docker.com/_/caddy)
+
+## DigitalOcean
+
+[**Deploy a Caddy droplet on DigitalOcean**](https://marketplace.digitalocean.com/apps/caddy)
+
## Linux service
-Requirements:
+Manually install Caddy as a service on Linux with these instructions.
-- `caddy` binary that you [downloaded](/docs/download) or [built from source](/docs/build)
+**Requirements:**
+
+- `caddy` binary that you [downloaded](/download) or [built from source](/docs/build)
- `systemctl --version` 232 or newer
- `sudo` privileges
@@ -72,4 +134,37 @@ You can stop the service with:
Do not stop the service to change Caddy's configuration. Stopping the server will incur downtime. Use the reload command instead.
-Now that Caddy is installed, see our [Getting Started](/docs/getting-started) tutorial to learn how to use it!
\ No newline at end of file
+
+## Homebrew
+
+_Note: This is a community-maintained installation method._
+
+brew install caddy
+
+[**View the Homebrew formula**](https://formulae.brew.sh/formula/caddy)
+
+
+## Webi
+
+_Note: This is a community-maintained installation method._
+
+Linux and macOS:
+
+curl -sS https://webinstall.dev/caddy | bash
+
+Windows:
+
+curl.exe -A MS https://webinstall.dev/caddy | powershell
+
+You may need to adjust the Windows firewall rules to allow non-localhost incoming connections.
+
+[**View on Webi**](https://webinstall.dev/caddy)
+
+
+## Chocolatey
+
+_Note: This is a community-maintained installation method._
+
+choco install caddy
+
+[**View the Chocolatey package**](https://chocolatey.org/packages/caddy)
diff --git a/src/docs/markdown/v2-upgrade.md b/src/docs/markdown/v2-upgrade.md
index 6dc6ac0..28602c4 100644
--- a/src/docs/markdown/v2-upgrade.md
+++ b/src/docs/markdown/v2-upgrade.md
@@ -71,7 +71,7 @@ Caddy's default port is no longer `:2015`. Caddy 2's default port is `:443` or,
Caddy 2's default protocol is [_always_ HTTPS if a hostname or IP is known](/docs/automatic-https#overview). This is different from Caddy 1, where only public-looking domains used HTTPS by default. Now, _every_ site uses HTTPS (unless you disable it by explicitly specifying port `:80` or `http://`).
-IP addresses and localhost domains will be issued certificates from a [locally-trusted, embedded CA](/docs/automatic-https#local-https). All other domains will use Let's Encrypt. (This is all configurable.)
+IP addresses and localhost domains will be issued certificates from a [locally-trusted, embedded CA](/docs/automatic-https#local-https). All other domains will use ZeroSSL or Let's Encrypt. (This is all configurable.)
The storage structure of certificates and ACME resources has changed. Caddy 2 will probably obtain new certificates for your sites; but if you have a lot of certificates you can migrate them manually if it does not do it for you. See issues [#2955](https://github.com/caddyserver/caddy/issues/2955) and [#3124](https://github.com/caddyserver/caddy/issues/3124) for details.
diff --git a/src/includes/docs-nav.html b/src/includes/docs-nav.html
index 77acbbd..9ad0166 100644
--- a/src/includes/docs-nav.html
+++ b/src/includes/docs-nav.html
@@ -4,10 +4,9 @@
Wiki
Get Caddy
- Download
- Build from source
Install
-
+ Build from source
+
Tutorials
Getting Started