Setup Caddy Web Server

— 1 minute read

Goal:

  • setup caddy web server as user sys­temd ser­vice

Steps:

  • cre­ate work­ing di­rec­tory (workdir)
    mkdir -p ~/admin/caddy
    
  • down­load caddy v2 into workdir
  • Allow non root to lis­ten on port 80 & 443
    sudo setcap cap_net_bind_service=+ep ./caddy
    
  • cre­ate a Caddyfile in ~/admin/caddy. A sim­ple re­verse proxy ex­am­ple
    example.com {
        reverse_proxy localhost:8000
    }
    
  • add this sys­temd unit file into ~/.config/systemd/user/caddy.service
    [Unit]
    Description=Caddy Web Server
    After=network.target
    
    [Service]
    Type=simple
    Restart=on-failure
    RestartSec=10
    ExecStart=/home/deployr/admin/caddy/caddy run
    WorkingDirectory=/home/deployr/admin/caddy
    LimitNOFILE=4096
    PIDFile=/var/run/caddy/caddy.pid
    
    [Install]
    WantedBy=default.target
    
  • make sure your user al­ready enable linger to start the ser­vice as user on boot. Login as root then run
    loginctl enable-linger deployr
    
  • re­load sys­temd
    systemctl --user daemon-reload
    
  • en­able caddy on boot
    systemctl --user enable caddy.service
    
  • start it
    systemctl --user start caddy.service
    
  • check if it run­ning well
    systemctl --user status caddy.service
    
  • to check the log use journalctl
    journalctl -f --user-unit=caddy