Skip to content

Instantly share code, notes, and snippets.

@arnaudrenaud
Created Apr 12, 2021
Embed
What would you like to do?
Cannot start Caddy as a service with systemd (Ubuntu 20.04)

1. Caddy version (caddy version):

v2.3.0

2. How I run Caddy:

I followed the official instructions to install Caddy on Ubuntu and set it up as a service under system (https://caddyserver.com/docs/install#linux-service).

I am able to get Caddy to run by itself but not as a systemd service.

a. System environment:

Ubuntu 20.04

b. Command:

sudo systemctl daemon-reload
sudo systemctl start caddy

c. Service/unit/compose file:

[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
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

d. My complete Caddyfile or JSON config:

arnaudrenaud.com {
        redir https://www.arnaudrenaud.com{uri}
}

www.arnaudrenaud.com {
        root * /home/ubuntu/apps/art-portfolio
        file_server
        encode gzip
        log {
                output file /home/ubuntu/logs/www.log
        }
}

webhooks.arnaudrenaud.com {
        reverse_proxy localhost:9000
        log {
                output file /home/ubuntu/logs/webhooks.log
        }
}

3. The problem I'm having:

sudo systemctl start caddy results in:

Job for caddy.service failed because a timeout was exceeded.
See "systemctl status caddy.service" and "journalctl -xe" for details.

The ExecStart command from caddy.service does start Caddy correctly when run directly in the shell.

4. Error messages and/or full log output:

journalctl -xef -u caddy.service:

Apr 12 13:21:13 vps-52918bf9 systemd[1]: Starting Caddy...
-- Subject: A start job for unit caddy.service has begun execution
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit caddy.service has begun execution.
--
-- The job identifier is 4455.
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: caddy.HomeDir=/var/lib/caddy
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: caddy.AppDataDir=/var/lib/caddy/.local/share/caddy
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: caddy.AppConfigDir=/var/lib/caddy/.config/caddy
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: caddy.ConfigAutosavePath=/var/lib/caddy/.config/caddy/autosave.json
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: caddy.Version=v2.3.0
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: runtime.GOOS=linux
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: runtime.GOARCH=amd64
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: runtime.Compiler=gc
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: runtime.NumCPU=1
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: runtime.GOMAXPROCS=1
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: runtime.Version=go1.15.6
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: os.Getwd=/
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: LANG=C.UTF-8
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: NOTIFY_SOCKET=/run/systemd/notify
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: HOME=/var/lib/caddy
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: LOGNAME=caddy
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: USER=caddy
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: INVOCATION_ID=a99c86336d714fc79cf882e027a6a1e3
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: JOURNAL_STREAM=9:224723
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233673.6763065,"msg":"using provided configuration","config_file":"/etc/caddy/Caddyfile","config_adapter":""}
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233673.6789289,"logger":"admin","msg":"admin endpoint started","address":"tcp/localhost:2019","enforce_origin":false,"origins":["localhost:2019","[::1]:2019","127.0.0.1:2019"]}
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233673.6793787,"logger":"http","msg":"server is listening only on the HTTPS port but has no TLS connection policies; adding one to enable TLS","server_name":"srv0","https_port":443}
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233673.6795354,"logger":"http","msg":"enabling automatic HTTP->HTTPS redirects","server_name":"srv0"}
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233673.680931,"logger":"http","msg":"enabling automatic TLS certificate management","domains":["webhooks.arnaudrenaud.com","www.arnaudrenaud.com","arnaudrenaud.com"]}
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233673.6814835,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc00022b570"}
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233673.684435,"logger":"tls","msg":"cleaned up storage units"}
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233673.7044687,"msg":"autosaved config","file":"/var/lib/caddy/.config/caddy/autosave.json"}
Apr 12 13:21:13 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233673.7046242,"msg":"serving initial configuration"}
Apr 12 13:22:43 vps-52918bf9 systemd[1]: caddy.service: start operation timed out. Terminating.
Apr 12 13:22:43 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233763.7282844,"msg":"shutting down apps then terminating","signal":"SIGTERM"}
Apr 12 13:22:44 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233764.7288136,"logger":"tls.cache.maintenance","msg":"stopped background certificate maintenance","cache":"0xc00022b570"}
Apr 12 13:22:45 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233765.229118,"logger":"admin","msg":"stopped previous server"}
Apr 12 13:22:45 vps-52918bf9 caddy[14888]: {"level":"info","ts":1618233765.2291603,"msg":"shutdown done","signal":"SIGTERM"}
Apr 12 13:22:45 vps-52918bf9 systemd[1]: caddy.service: Failed with result 'timeout'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- The unit caddy.service has entered the 'failed' state with result 'timeout'.
Apr 12 13:22:45 vps-52918bf9 systemd[1]: Failed to start Caddy.
-- Subject: A start job for unit caddy.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit caddy.service has finished with a failure.
--
-- The job identifier is 4455 and the job result is failed.

5. What I already tried:

Browsed existing topics on Caddy forum mentioning the same problem, tried to change a few config options in caddy.service. Also tried commands mentioned in this tutorial: https://www.digitalocean.com/community/tutorials/how-to-host-a-website-with-caddy-on-ubuntu-18-04.

6. Links to relevant resources:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment