run caddy as a system service

main
Yik Teng Hie 3 years ago
parent 85f0e23a9c
commit 8a73f289bf

@ -55,3 +55,118 @@ $ curl https://get.acme.sh | sh
``` ```
$ sudo ./caddy run --config Caddyfile $ 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
```

Loading…
Cancel
Save