https://pimylifeup.com/raspberry-pi-caddy-web-server/ ``` sudo apt update sudo apt upgrade ``` ``` sudo apt remove apache2 ``` ``` sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asc curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy ``` ``` $ wget https://github.com/caddyserver/caddy/releases/download/v2.6.1/caddy_2.6.1_linux_arm64.tar.gz -O caddy.tar.gz $ mkdir caddy && tar -zxvf caddy.tar.gz -C caddy $ cd caddy $ mv caddy_linux_arm7 caddy ``` ``` sudo mkdir /etc/caddy sudo nano /etc/caddy/Caddyfile ``` ``` $ sudo setcap CAP_NET_BIND_SERVICE=+eip ./caddy ``` install/update acme client ``` $ sudo apt-get install certbot ``` to check acme version install the script ``` $ curl https://get.acme.sh | sh ``` !!!! run service ``` $ sudo ./caddy run --config Caddyfile ``` ## Run as Service [Reference](https://caddyserver.com/docs/running#unit-files) - Setup user / group ```shell $ sudo mv caddy /usr/bin/ $ caddy version $ sudo groupadd --system caddy $ sudo useradd --system \ --gid caddy \ --create-home \ --home-dir /var/lib/caddy \ --shell /usr/sbin/nologin \ --comment "Caddy web server" \ caddy ``` - create Caddyfile ```shell $ sudo mkdir /etc/caddy $ sudo nano /etc/caddy/Caddyfile ``` ```text homenetyth.ddnsking.com, homeyth.ddnsking.com { reverse_proxy 127.0.0.1:3000 { lb_policy first } } homenetyth.ddnsking.com:5001 { reverse_proxy https://192.168.0.16:5001 { transport http { tls tls_insecure_skip_verify } } } homenetyth.ddnsking.com:8080 { reverse_proxy http://192.168.0.174:8080 } ``` - create caddy.service ```shell $ sudo nano /etc/systemd/system/caddy.service ``` ```text # caddy.service # # For using Caddy with a config file. # # Make sure the ExecStart and ExecReload commands are correct # for your installation. # # See https://caddyserver.com/docs/install for instructions. # # WARNING: This service does not use the --resume flag, so if you # use the API to make changes, they will be overwritten by the # Caddyfile next time the service is restarted. If you intend to # use Caddy's API to configure it, add the --resume flag to the # `caddy run` command or use the caddy-api.service file instead. [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 --force TimeoutStopSec=5s LimitNOFILE=1048576 LimitNPROC=512 PrivateTmp=true ProtectSystem=full AmbientCapabilities=CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target ``` - Load the service ```shell $ sudo systemctl daemon-reload $ sudo systemctl enable --now caddy # verify service is running $ systemctl status caddy ``` - Service is ready - Future editing ```shell $ sudo nano /etc/caddy/Caddyfile ```