Most people use Caddy as a web server or proxy, but at its core, Caddy is a server of servers. With the , it can take on the role of any long-running process!
Configuration is both dynamic and exportable with . Although no config files required, you can still use them; most people's favorite way of configuring Caddy is using the . The format of the config document takes many forms with , but Caddy's native config language is .
Caddy compiles for all major platforms and has no runtime dependencies.
cat /lib/systemd/system/caddy.service
# caddy.service
#
# For using Caddy with a config file.
#
# Make sure the ExecStart and ExecReload commands are correct
# for your installation.
#
# See https://caddyserver.com/docs/install for instructions.
#
# WARNING: This service does not use the --resume flag, so if you
# use the API to make changes, they will be overwritten by the
# Caddyfile next time the service is restarted. If you intend to
# use Caddy's API to configure it, add the --resume flag to the
# `caddy run` command or use the caddy-api.service file instead.
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
Type=notify
User=caddy
Group=caddy
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
Once you are happy with the config and service file you can now start.