diff --git a/caddysetup.md b/caddysetup.md index aae7741..7d3dd07 100644 --- a/caddysetup.md +++ b/caddysetup.md @@ -54,4 +54,119 @@ $ curl https://get.acme.sh | sh ``` $ sudo ./caddy run --config Caddyfile -``` \ No newline at end of file +``` + +## 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 +```