Unable to start caddy as service. Permission denied on caddy

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 */
}

5. Links to relevant resources:

Make sure /home/pi/.local/opt/caddy-v2.9.1/bin/caddy also has the necessary permissions, so run ls -l on that directory/file to check and change if needed.

Thanks. for responding. It has the same permissions. All rwx.

My bad. I installed manually as I had done previously. I uninstalled and resinstalled following instructions

Install for Debian, Ubuntu, Raspbian

This resolved the “permission denied” error.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.