* Get download link from https://caddyserver.com/download
* If you want Caddy to serve on 80/443 port, have multiple IP-s and bind TrueNAS GUI to different one (System->General).
/mnt/nas/adm/caddy/Caddyfile
/mnt/nas/adm/caddy/env
/mnt/nas/adm/caddy/start.sh
/mnt/nas/adm/caddy/upgrade.sh
make scripts executable
start Caddy when system starts
Tasks->Init/Shutdown Scripts->Add
Description: Caddy start
Type: Script: /mnt/nas/adm/caddy/start.sh
When: Post init
check Caddy periodically
Tasks->Cron Jobs
Description: Caddy
Command: /mnt/nas/adm/caddy/start.sh
Run As User: root
Schedule: Daily
upgrade Caddy periodically
Tasks->Cron Jobs
Description: Caddy upgrade
Command: /mnt/nas/adm/caddy/upgrade.sh
Run As User: root
Schedule: Monthly
Code:
mkdir -p /mnt/nas/adm/caddy
wget -O /mnt/nas/adm/caddy/caddy "https://caddyserver.com/api/download?os=freebsd&arch=amd64&idempotency=52747663821567"
chmod +x /mnt/nas/adm/caddy/caddy
* If you want Caddy to serve on 80/443 port, have multiple IP-s and bind TrueNAS GUI to different one (System->General).
/mnt/nas/adm/caddy/Caddyfile
Code:
http:// { bind 192.168.1.1 respond Hello }
/mnt/nas/adm/caddy/env
Code:
XDG_DATA_HOME=/mnt/nas/adm/caddy/data XDG_CONFIG_HOME=/mnt/nas/adm/caddy/config
/mnt/nas/adm/caddy/start.sh
Code:
#!/bin/sh env=/mnt/nas/adm/caddy/env bin=/mnt/nas/adm/caddy/caddy log=/mnt/nas/adm/caddy/caddy.log pid=/mnt/nas/adm/caddy/caddy.pid con=/mnt/nas/adm/caddy/Caddyfile caddy_start(){ sysctl -w kern.ipc.maxsockbuf=3014656 ${bin} start --config ${con} --envfile ${env} --pidfile ${pid} >> ${log} 2>&1 if [ $? -eq 0 ] && ps -ax -o pid | grep -q "$(cat ${pid})"; then echo "Caddy started" echo "Log: ${log}" else echo "Error: Caddy failed to start" echo "Check the caddy log: ${log}" fi } if [ -z $(pgrep caddy) ] && [ ! -f ${pid} ]; then caddy_start fi if [ -z $(pgrep caddy) ] && [ -f ${pid} ]; then rm ${pid} caddy_start fi if [ -n $(pgrep caddy) ] && [ ! -f ${pid} ]; then kill -9 $(pgrep caddy) caddy_start fi if [ -n $(pgrep caddy) ] && [ -f ${pid} ] && [ $(pgrep caddy) -ne $(cat ${pid}) ]; then rm ${pid} kill -9 $(pgrep caddy) caddy_start fi
/mnt/nas/adm/caddy/upgrade.sh
Code:
#!/bin/sh /mnt/nas/adm/caddy/caddy upgrade /mnt/nas/adm/caddy/caddy stop /mnt/nas/adm/caddy/start.sh
make scripts executable
Code:
chmod +x /mnt/nas/adm/caddy/start.sh chmod +x /mnt/nas/adm/caddy/upgrade.sh
start Caddy when system starts
Tasks->Init/Shutdown Scripts->Add
Description: Caddy start
Type: Script: /mnt/nas/adm/caddy/start.sh
When: Post init
check Caddy periodically
Tasks->Cron Jobs
Description: Caddy
Command: /mnt/nas/adm/caddy/start.sh
Run As User: root
Schedule: Daily
upgrade Caddy periodically
Tasks->Cron Jobs
Description: Caddy upgrade
Command: /mnt/nas/adm/caddy/upgrade.sh
Run As User: root
Schedule: Monthly