Server Farmer has 2 kinds of configuration settings: current server configuration and global configuration. Current server configuration options are either discovered or asked during the first setup run. Global configuration options are stored in /opt/farm/scripts/functions.custom file, as functions (which allows embedding conditions).

Current server configuration

During the first run, /opt/farm/setup.sh script will ask for several server-specific options. All answers will be stored in /etc/farmconfig file and used later. List of such settings:

namedescription
HOSTfull local hostname (including local domain, if any)
OSVERoperating system version
OSTYPEoperating system family (debian/redhat/empty)
HWTYPEplatform type (physical/guest/container)
SMTPSMTP server hostname (or 'true' if the current server has smtp role)
SYSLOGsyslog server hostname (or 'true' if the current server has syslog role)

Note that some extensions also ask for configuration settings. Most of such settings are described below, in "Configuration for unattended mode setup".

Global configuration

Global configuration settings are stored in /opt/farm/scripts/functions.custom file. The only way to change them is to fork https://github.com/serverfarmer/serverfarmer repository and edit them in your forked version (which anyway is the preferred way of installing Server Farmer). List of global settings:

namedescription
external_domaindomain with enabled catch-all, to which you have email access
internal_domaininternally used domain (behind NATs), across all your local networks
ssh_dedicated_key_storage_filenamessh dedicated key filename format, don't change unless you know what you're doing
ssh_management_key_storage_filenamessh management key filename format, don't change unless you know what you're doing
ssh_management_key_stringthis should be replaced with your public ssh key that you use to manage servers
gpg_backup_keyyour GPG key (if you have one) used to encrypt backups
local_backup_directorydirectory in the local filesystem, to which backups are generated
management_public_ip_rangepublic IP address range, from which connections from your management server can be originated
primary_admin_accountyour non-root login
notify_phoneyour mobile phone number
cacti_ssh_targetaddress of your Cacti instance, in scp-like format
extension_repositoryGithub.com base path, from which to install extensions
add_backup_extensionfilename format for backup files
stream_handlercommand that will receive backup stream on stdin, process it (compress, encrypt etc.) and push output stream on stdout

Configuration for unattended mode setup

A few extensions also have their configuration settings. Some of these settings, that are considered global, were put into global configuration, eg. cacti_ssh_target or notify_phone. All others, which can be specific to customer or server type (eg. different SNMP community strings in local and remote servers, or for less trusted customer), are either asked during the first extension setup, or taken from environment variables, if defined. List of such settings:

namedescription
NEWRELIC_LICENSElicense key associated with NewRelic account you want to use for this server
SNMP_COMMUNITYSNMP community for monitoring this server
SMTP_RELAYSMTP server to be used as external mail relay (must support TLS encryption on port 587), eg. smtp.gmail.com
SMTP_USERNAMESMTP username
SMTP_PASSWORDSMTP password
SMSAPI_USERNAMEsmsapi.pl username (used to send urgent notifications to notify_phone number in SMS messages)
SMSAPI_PASSWORDsmsapi.pl password
SMSAPI_FROMstring to be presented as SMS sender (have to be registered first at smsapi.pl)