* 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