v2.11.268812.5 MB
Apache-2.0 AND CC-BY-NC-SA-4.0
strict
core24
Fast, multi-platform web server with automatic HTTPS
## Unofficial snap ##
Caddy is a powerful, extensible platform to serve your sites, services, and
apps, written in Go.
Most people use Caddy as a web server or proxy, but at its core, Caddy is a
server of servers. With the requisite modules, it can take on the role of any
long-running process!
Configuration is both dynamic and exportable with Caddy's API. Although no
config file is required, you can still use them; most people's favorite way of
configuring Caddy is using the Caddyfile. The format of the config document
takes many forms with config adapters, but Caddy's native config language is
JSON.
---
This particular snap has a few key features:
1) Intended for use on Ubuntu Core
caddy is setup as a daemon so that Ubuntu Core machines can use it!
This means that the configuration is intended to be passed in a fashion
useful for Ubuntu Core devices, snap config values. Instead of creating a
Caddyfile, set the JSON corresponding to your desired configuration as a
config value via:
snap set caddy config='{...}'
caddy-wrapper will consume this configuration value and pass that to caddy.
2) Useful with other snaps
Instead of serving the content from the caddy snap itself (also supported),
instead other snaps can provide the content caddy serves. As long as the
implement the caddy-content slot which properly exposes the file hierarchy,
caddy can access that file tree and serve the content! To do so, run:
snap connect caddy:caddy-content <snap>:caddy-content
Provider snaps should expose the content as READ to "<foo>", and that
content should be available to caddy at "$SNAP/var/www/<foo>"
3) Extensible
A check is involved just in-case end-users run caddy add-package. As this
behaviour modifies the caddy binary itself and snaps are read-only, the caddy
binary is instead copied to the writable area and that modified caddy binary
is the one being used to add and remove modules. Whether the modified caddy
binary is the one being used or not can be checked (or set) with:
snap get caddy modified
Modules can be specified by the gadget snap which caddy will fetch on first
installation via the default-configure hook.
Importantly, configuration is handled via snap config values. Because Caddy's
API uses JSON for configuration, this is a natural choice. For an example of a
simple test, refer to the project README on the website.
Of course, for users opting to use the CLI directly any method for supplying a
configuration can be used.
Caddy is a powerful, extensible platform to serve your sites, services, and
apps, written in Go.
Most people use Caddy as a web server or proxy, but at its core, Caddy is a
server of servers. With the requisite modules, it can take on the role of any
long-running process!
Configuration is both dynamic and exportable with Caddy's API. Although no
config file is required, you can still use them; most people's favorite way of
configuring Caddy is using the Caddyfile. The format of the config document
takes many forms with config adapters, but Caddy's native config language is
JSON.
---
This particular snap has a few key features:
1) Intended for use on Ubuntu Core
caddy is setup as a daemon so that Ubuntu Core machines can use it!
This means that the configuration is intended to be passed in a fashion
useful for Ubuntu Core devices, snap config values. Instead of creating a
Caddyfile, set the JSON corresponding to your desired configuration as a
config value via:
snap set caddy config='{...}'
caddy-wrapper will consume this configuration value and pass that to caddy.
2) Useful with other snaps
Instead of serving the content from the caddy snap itself (also supported),
instead other snaps can provide the content caddy serves. As long as the
implement the caddy-content slot which properly exposes the file hierarchy,
caddy can access that file tree and serve the content! To do so, run:
snap connect caddy:caddy-content <snap>:caddy-content
Provider snaps should expose the content as READ to "<foo>", and that
content should be available to caddy at "$SNAP/var/www/<foo>"
3) Extensible
A check is involved just in-case end-users run caddy add-package. As this
behaviour modifies the caddy binary itself and snaps are read-only, the caddy
binary is instead copied to the writable area and that modified caddy binary
is the one being used to add and remove modules. Whether the modified caddy
binary is the one being used or not can be checked (or set) with:
snap get caddy modified
Modules can be specified by the gadget snap which caddy will fetch on first
installation via the default-configure hook.
Importantly, configuration is handled via snap config values. Because Caddy's
API uses JSON for configuration, this is a natural choice. For an example of a
simple test, refer to the project README on the website.
Of course, for users opting to use the CLI directly any method for supplying a
configuration can be used.
Update History
v2.10.2 (673) → v2.11.2 (688)7 Mar 2026, 06:41 UTC
v2.10.2 673 → 67331 Jan 2026, 06:17 UTC
v2.10.2 (673)13 Dec 2025, 09:47 UTC
2 Apr 2018, 17:29 UTC
6 Mar 2026, 06:24 UTC
13 Dec 2025, 09:47 UTC