Skip to content

Instantly share code, notes, and snippets.

Last active Dec 27, 2019
What would you like to do?
FreeBSD Caddy init script
# PROVIDE: caddy
# REQUIRE: networking
# KEYWORD: shutdown
# Add the following lines to /etc/rc.conf to enable caddy:
# caddy_enable (bool): Set to "NO" by default.
# Set it to "YES" to enable caddy
# caddy_cert_email (str): Set to "" by default.
# Defines the SSL certificate issuer email. By providing an
# email address you automatically agree to's
# general terms and conditions
# caddy_bin_path (str): Set to "/usr/local/bin/caddy" by default.
# Provides the path to the caddy server executable
# caddy_cpu (str): Set to "99%" by default.
# Configures, how much CPU capacity caddy may gain
# caddy_config_path (str): Set to "/usr/local/www/Caddyfile" by default.
# Defines the path for the configuration file caddy will load on boot
# caddy_run_user (str): Set to "root" by default.
# Defines the user that caddy will run on
. /etc/rc.subr
load_rc_config $name
: ${caddy_enable:=no}
: ${caddy_cert_email=""}
: ${caddy_bin_path="/usr/local/bin/caddy"}
: ${caddy_cpu="99%"} # was a bug for me that caused a crash within jails
: ${caddy_config_path="/usr/local/www/Caddyfile"}
: ${caddy_run_user="root"}
if [ "$caddy_cert_email" = "" ]
echo "rc variable \$caddy_cert_email is not set. Please provide a valid SSL certificate issuer email."
exit 1
command="${caddy_bin_path} -log ${logfile} -cpu ${caddy_cpu} -conf ${caddy_config_path} -agree -email ${caddy_cert_email}"
caddy_start() {
echo "Starting ${name}..."
/usr/sbin/daemon -u ${caddy_run_user} -c -p ${pidfile} -f ${command}
caddy_status() {
if [ -f ${pidfile} ]; then
echo "${name} is running as $(cat $pidfile)."
echo "${name} is not running."
return 1
caddy_stop() {
if [ ! -f ${pidfile} ]; then
echo "${name} is not running."
return 1
echo -n "Stopping ${name}..."
kill -KILL $(cat $pidfile) 2> /dev/null && echo "stopped"
rm -f ${pidfile}
run_rc_command "$1"
Copy link

everettcomstock commented Dec 27, 2019

David, could you provide an example of how this file is used? I'm new to FreeBSD and I'm not sure if this is a file that I should create somewhere on my server, or if it is a command that I should run in the shell. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment