#!/bin/sh # shellcheck disable=1091,2223,2154,2034 # # 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 letsencrypt.org'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_user (str): Set to "root" by default. # Defines the user that caddy will run on # # caddy_group (str): Set to "wheel" by default. # Defines the group that caddy files will be attached to # # caddy_logfile (str) Set to "/var/log/caddy.log" by default. # Defines where the process log file is written, this is not a web access log # # caddy_env (str) Set to "" by default. # This allows environment variable to be set that may be required, for example when using "DNS Challenge" account credentials are required. # e.g. (in your rc.conf) caddy_env="CLOUDFLARE_EMAIL=me@domain.com CLOUDFLARE_API_KEY=my_api_key" # . /etc/rc.subr name="caddy" rcvar="${name}_enable" 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_logfile="/var/log/caddy.log"} : ${caddy_user="root"} : ${caddy_group="wheel"} if [ "$caddy_cert_email" = "" ] then echo "rc variable \$caddy_cert_email is not set. Please provide a valid SSL certificate issuer email." exit 1 fi pidfile="/var/run/${name}.pid" procname="${caddy_bin_path}" #enabled builtin pid checking for start / stop command="/usr/sbin/daemon" command_args="-p ${pidfile} /usr/bin/env ${caddy_env} ${procname} -cpu ${caddy_cpu} -log stdout -conf ${caddy_config_path} -agree -email ${caddy_cert_email} < /dev/null >> ${caddy_logfile} 2>&1" start_precmd="caddy_startprecmd" caddy_startprecmd() { if [ ! -e "${pidfile}" ]; then install -o "${caddy_user}" -g "${caddy_group}" "/dev/null" "${pidfile}" fi if [ ! -e "${caddy_logfile}" ]; then install -o "${caddy_user}" -g "${caddy_group}" "/dev/null" "${caddy_logfile}" fi } required_files="${caddy_config_path}" run_rc_command "$1"