0
Fork 0
mirror of https://github.com/caddyserver/caddy.git synced 2024-12-23 22:27:38 -05:00
caddy/dist/init/linux-systemd/README.md
2016-05-12 15:08:06 +02:00

2.3 KiB
Raw Blame History

systemd unit for caddy

Please do not hesitate to ask if you have any questions.

Quickstart

  • Install the unit configuration file: cp caddy.service /etc/systemd/system/
  • Reload the systemd daemon: systemctl daemon-reload
  • Make sure to configure the service unit before starting caddy.
  • Start caddy: systemctl start caddy.service
  • Enable the service (automatically start on boot): systemctl enable caddy.service
  • A folder .caddy will be created inside the home directory of the user that runs caddy; you can change that by providing an environment variable HOME, i.e. Environment=HOME=/var/lib/caddy will result in /var/lib/caddy/.caddy.

Configuration

  • Do not edit the systemd unit file directly. Instead, use systemd's builtin tools:
    • systemctl edit caddy.service to make user-local modifications
    • systemctl edit --full caddy.service for system-wide ones
  • In most cases it is enough to override the ExecStart directive.
    • systemd needs absolute paths, therefore make sure that the path to caddy is correct.
    • example:
[Service]
; an empty value clears the original (and preceding) settings
ExecStart=
ExecStart=/usr/bin/caddy -conf="/etc/caddy/myCaddy.conf" -agree -email="my@mail.address"
  • To view the resulting configuration use systemctl cat caddy
  • Double check permissions of your document root path. The user caddy runs as needs to have access to it. For example:
# caddy would run as        www-data:www-data
# serving, in this example: /var/www

sudo -u www-data -g www-data -s \
  ls -hlAS /var/www

Tips

  • Use log stdout and errors stderr in your Caddyfile to utilize journalctl.
  • journalctl is systemd's log query tool.
  • Let's say you want all the log entries since the last boot, beginning from the last entry: journalctl --reverse --boot --unit caddy.service
  • To follow caddy's log output: journalctl -fu caddy.service
  • Send a signal to a service unit's main PID, e.g. have caddy reload its config: systemctl kill --signal=USR1 caddy.service
  • If you have more files that start with caddy like a caddy.timer, caddy.path, or caddy.socket then it is important to append .service. Although if caddy.service is all you have, then you can just use caddy without any extension, such as in: systemctl status caddy