1. The problem I’m having:
While I can start caddy from the command line I want it to start when the system reboots, but I am unable to start caddy as service due to “permission denied” on “/usr/bin/caddy” but that file has execute permission for all.
ls -l /usr/bin/caddy
lrwxrwxrwx 1 pi pi 42 Mar 2 09:41 /usr/bin/caddy -> /home/pi/.local/opt/caddy-v2.9.1/bin/caddy
2. Error messages and/or full log output:
systemctl status caddy.service
× caddy.service - Caddy
Loaded: loaded (/etc/systemd/system/caddy.service; enabled; preset: enabled)
Active: failed (Result: exit-code) since Thu 2025-03-06 16:57:59 EST; 11min ago
Docs: https://caddyserver.com/docs/
Process: 3390 ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile (code=exited, status=203/EXEC)
Main PID: 3390 (code=exited, status=203/EXEC)
CPU: 43ms
Mar 06 16:57:59 raspberrypi systemd[1]: Starting caddy.service - Caddy...
Mar 06 16:57:59 raspberrypi (caddy)[3390]: caddy.service: Failed to execute /usr/bin/caddy: Permission denied
Mar 06 16:57:59 raspberrypi (caddy)[3390]: caddy.service: Failed at step EXEC spawning /usr/bin/caddy: Permission denied
Mar 06 16:57:59 raspberrypi systemd[1]: caddy.service: Main process exited, code=exited, status=203/EXEC
Mar 06 16:57:59 raspberrypi systemd[1]: caddy.service: Failed with result 'exit-code'.
Mar 06 16:57:59 raspberrypi systemd[1]: Failed to start caddy.service - Caddy..
journalctl -u caddy --no-pager | less +G
-- Boot 798f02193c5d462792dd25099b8cda90 --
Mar 06 13:24:36 raspberrypi systemd[1]: Starting caddy.service - Caddy...
Mar 06 13:24:36 raspberrypi (caddy)[816]: caddy.service: Failed to execute /usr/bin/caddy: Permission denied
Mar 06 13:24:36 raspberrypi (caddy)[816]: caddy.service: Failed at step EXEC spawning /usr/bin/caddy: Permission denied
Mar 06 13:24:36 raspberrypi systemd[1]: caddy.service: Main process exited, code=exited, status=203/EXEC
Mar 06 13:24:36 raspberrypi systemd[1]: caddy.service: Failed with result 'exit-code'.
Mar 06 13:24:36 raspberrypi systemd[1]: Failed to start caddy.service - Caddy.
Mar 06 16:52:28 raspberrypi systemd[1]: Starting caddy.service - Caddy...
Mar 06 16:52:28 raspberrypi (caddy)[3331]: caddy.service: Failed to execute /usr/bin/caddy: Permission denied
Mar 06 16:52:28 raspberrypi (caddy)[3331]: caddy.service: Failed at step EXEC spawning /usr/bin/caddy: Permission denied
Mar 06 16:52:28 raspberrypi systemd[1]: caddy.service: Main process exited, code=exited, status=203/EXEC
Mar 06 16:52:28 raspberrypi systemd[1]: caddy.service: Failed with result 'exit-code'.
Mar 06 16:52:28 raspberrypi systemd[1]: Failed to start caddy.service - Caddy.
Mar 06 16:57:59 raspberrypi systemd[1]: Starting caddy.service - Caddy...
Mar 06 16:57:59 raspberrypi (caddy)[3390]: caddy.service: Failed to execute /usr/bin/caddy: Permission denied
Mar 06 16:57:59 raspberrypi (caddy)[3390]: caddy.service: Failed at step EXEC spawning /usr/bin/caddy: Permission denied
Mar 06 16:57:59 raspberrypi systemd[1]: caddy.service: Main process exited, code=exited, status=203/EXEC
Mar 06 16:57:59 raspberrypi systemd[1]: caddy.service: Failed with result 'exit-code'.
Mar 06 16:57:59 raspberrypi systemd[1]: Failed to start caddy.service - Caddy.
3. Caddy version:
v2.9.1 h1:OEYiZ7DbCzAWVb6TNEkjRcSCRGHVoZsJinoDR/n9oaY=
4. How I installed and ran Caddy:
curl -sS https://webinstall.dev/caddy | bash
sudo mv .local/bin/caddy /usr/bin/.
chmod +x /usr/bin/caddy
wget https://raw.githubusercontent.com/caddyserver/dist/refs/heads/master/init/caddy.service
mv caddy.service /etc/systemd/system/caddy.service
a. System environment:
Raspberry Pi 3 Model B Rev 1.2
Debian GNU/Linux 12 (bookworm)
b. Command:
sudo systemctl start caddy.service
c. Service/unit/compose file:
Running on bare metal
d. My complete Caddy config:
{
debug
email redacted@post.com
}
redacted.noip.me {
encode gzip
log {
output file /var/log/caddy/emby_access.log {
roll_size_mb 5 # Set max size 5 MB
roll_local_time # use localhost time
roll_keep 2 # Keep at most 2 log files
roll_keep_days 7 # Keep log files for 7 days
}
}
reverse_proxy 192.168.1.151:8096
}
192.168.1.8 {
reverse_proxy 192.168.1.8 /* :480 */
}
http://pi.hole {
reverse_proxy 192.168.1.8 /* :480 */
}