Search K
Appearance
Appearance
This is a full list of configuration options available in directadmin.conf file. Each config option section will include default option value and description.
If the value does not exist in the directadmin.conf the default value will be used.
Adding a value to the directadmin.conf would override the internal default.
directadmin.conf values from CLI Use the following steps:
da config-set variable value
systemctl restart directadminExample:
da config-set letsencrypt 1
systemctl restart directadminaccept_cloudflare_proxy_requests=0When this option is enabled DirectAdmin on start will load Cloudflare edge nodes IPv4 and IPv6 networks.
If incomming connection is from Cloudflare networks the header CF-Connecting-IP will be used to determine end user IP address.
This option should be enabled if access to the DirectAdmin GUI is being proxied through Cloudflare. It will make sure real client IP instead of Cloudflare edge node is used.
Note: When using Cloudflare to proxy requests to DirectAdmin GUI please make sure DirectAdmin is using one of the ports supported by Cloudflare, the default DirectAdmin port 2222 are not being proxyed by Cloudflare. We recommend changing it to port=2096 for HTTPS access.
access_control_allow_origin=Ability to add Access-Control-Allow-Origin HTTP header to DirectAdmin. Comma/whitespace separated entries are trimmed, example usage:
access_control_allow_origin=http://www.domain.com, https://www.otherdomain.com:8080acme_server_cert_account=Email address of an ACME account used to issue server host name certificate. Empty value uses default admin user email address.
acme_server_cert_additional_domains=A comma separated list of additional domain names to include in the server host name TLS certificate.
Example value: additional.example.com,*.example.net
Note: Server host name is always included in the certificate. If no additional domains are needed this configuration option should be set to an empty value.
acme_server_cert_dns_provider=Name of custom DNS provider passed to lego tool when issuing server host name certificate.
Example value: cloudlflare
List of supported DNS providers.
acme_server_cert_dns_provider_env_file=/usr/local/directadmin/conf/ca.dnsproviderA file with additional environment variables that are passed to lego tool when issuing server host name certificate.
Example file contents:
CLOUDFLARE_DNS_API_TOKEN=...List of supported DNS providers.
acme_server_cert_enabled=0When set to 1 ACME will be used to automatically acquire and renew server host name TLS certificate.
acme_server_cert_key_type=ec256TLS key type and size to use for server host name certificate. Can be set to:
ec256 Elliptic Curve DSA Curve P-256 keyec384 Elliptic Curve DSA Curve P-384 keyrsa2048 RSA 2048 bit keyrsa3072 RSA 3072 bit keyrsa4096 RSA 4096 bit keyrsa8196 RSA 8196 bit keyacme_server_cert_provider=Automatic certificate provider to use for issuing server host name TLS certificate. Can be set to:
letsencrypt - to use LetsEncrypt ACME provider.letsencrypt-staging - to use LetsEnctypt staging environment (useful only for testing).zerossl - to use ZeroSSL ACME provider.default_acme_provider.⚠️ DEPRECATED: DirectAdmin 1.691
add_domain_to_domainips=0DirectAdmin can manage /etc/virtual/domainips and /etc/virtual/helo_data files for exim to use, to pick which IP should be used when sending email.
| Value | Comment |
|---|---|
| 0 | DirectAdmin does not manage /etc/virtual/domainips and helo_data files, all domains are sending mails from server IP |
| 1 | DirectAdmin sets user owned IP in files, domains on dedicated IP will use own IP as outgoing. If multiple owned IPs assigned to a domain, the first value added will have priority, when in question. helo_data is populated using the main domain of the user that owns the IP with mail.maindomain.tld |
| 2 | DirectAdmin use RDNS to form helo_data file for given IP. /etc/virtual/domainips behavior as with value 1 |
To disable the feature set add_domain_to_domainips to 0 and delete /etc/virtual/domainips /etc/virtual/helo_data files.
Related: How to manage domain IPS file
addip=/usr/local/directadmin/scripts/addipScripts called by DA to add IPs to/from the nework device.
*Related: removeip *
add_non_readable_files_to_strict_backup=1If any file is non readable by user (chmod 0) the permissions for it will be set to 600 (directories to 700) during the backup creation time as the backup needs this as a minimum to read the file as a non-root backup. The restore will not reset these files/folders to chmod 0, they'll be left as 600 (700 for dirs).
The new data location for those files will be backup/domains/non_readable_files/.
Since this feature copies files to a 2nd location before backup, significant amounts of disk usage will be used if the files being backed up (eg: apache owned files) are not readable by the User.
The related backup_apache_files_list=1 will use the same tree parsing.
Related: backup_apache_files_list | strict_backup_permissions
add_userdb_quota=1To control adding quota value next to virtual user line in /etc/virtual/domain.com/passwd like this:
fred:$1$SdbJQZ6r$R5FmKrayU3FvPksLTd.7X0:501:12::/home/username/imap/domain.com/fred/bin/false:userdb_quota_rule=*:bytes=50MStarting from version 1.59.5, the command used is as follows:
doveadm -f flow quota get -u 'email@domain.com'Where the Type=STORAGE Value= (returns in in KB) is used for the internal ~/imap total.
Note: the doveadm return value only returns the size of data used, not actual disk space used. One block is always used, regardless of how small the file is, so the "Apparent Size" field will not be shown in the account hover-over usage. Also the indexes do take up space, but are not included in the actual message quota.
admindir=./data/adminPath for admin data related to the serverpath. You're not likely going to want to change this.
Related: serverpath
admin_helper=admin.site-helper.comThe URL used for the help button in Admin panel.
Related: reseller_helper | user_helper
admin_ssl_check_retries=1Tells DirectAdmin's check for the .ssl.next_retry file which is what the GUI would create during its requests. Shut this off temporarily if your server is making too many LetsEncrypt/ZeroSSL requests.
Related: admin_ssl_install_to_missing | admin_ssl_replace_all_expired_invalid | admin_ssl_poll_frequency | Automatic SSL Certificates
admin_ssl_cert_on_create=1Controls if a new certificate should be created when a new domain, subdomain, or domain pointer are created.
Default is 1. Set to 0 to disable the creation of certificates when new hosts are created.
Related: Disable Certificate creation on new domains
admin_ssl_install_to_missing=0Install certificates to hosts which do not have any.
Related: admin_ssl_check_retries | admin_ssl_replace_all_expired_invalid | admin_ssl_poll_frequency
admin_ssl_poll_frequency=5m:15m:30m:1h:12h:1dA frequency to poll certificates for hosts:
less than 30minutes: every 5 minutes
30m-1h: every 15 minutes
1h-4hrs: every 30 minutes
4h-1day: hourly
2nd,3rd days: every 12 hours
4th day onward: once per dayTime units will all be case specific: s,m,h,d,w,M,y where m is minute, M is Month. No units will be treated as seconds, since that's how they're intended to end up anyway. Note that there are no spaces after the numbers before the units (1 d will end up being one second).
When a trigger is done, it must save that NEXT window to the next_trigger file.
Related: admin_ssl_check_retries | admin_ssl_replace_all_expired_invalid | admin_ssl_install_to_missing
admin_ssl_replace_all_expired_invalid=0DirectAdmin can automatically fix the old/existing/expired/invalid certificates.
| Value | Comment |
|---|---|
| 0 | Disabled |
| 1 | Any fully expired/invalid LetsEncrypt certificate will automatically be brought back to life following the polling schedule |
| 2 | Any fully expired/invalid certificates will automatically be brought back to life, following the polling schedule. This includes non-LetsEncrypt (Eg: EV) certs, so be careful if you use this option. |
Does not poll for empty certs. It's not recommended to leave this feature turned on all the time due to it's higher-than-average resource requirements. Use it when needed, then turn it off (TODO: lower polling frequency).
Related: admin_ssl_check_retries | admin_ssl_poll_frequency | admin_ssl_poll_frequency
admin_ssl_default_wildcard=1Default choice for the Admin SSL feature, if a zone should try a wildcard dns-01 based LetsEncrypt request (default), or a httpd-01 request. Applies to new domain, pointers and wildcard checkbox default value on the Admin SSL page.
| Value | Comment |
|---|---|
| 0 | Web-based http-01 LetsEncrypt challenge will be used. Useful if most domains have external DNS not controlled by DirectAmdin. |
| 1 | DNS-based dns-01 LetsEncrypt challenge. Recommended as it saves multiple requests for other subdomains on the system. Web-based http-01 is still attempted as a fallback if dns-01 fails. |
Related: letsencrypt_multidomain_cert
admin_ssl_cert_per_vh=1For Admin SSL generated non-wildcard certificates, each Host will attempt to generate it's own certificate. Subdomains below a domain will each get their own cert, saving the need to generate a new multi-host master certificate for each new subdomain created. This saves the need to request a new multi-host SSL certificate for the entire domain and existing subdomains, for any new subdomain created. The new subdomain would get it's own certifiate.
| Value | Comment |
|---|---|
| 0 | Admin SSL certificates for a domain will be geneated with all known subdomains/hosts in one multi-host certificate. Each host is checked/validated by the ACME provider. |
| 1 | Admin SSL will create a new SSL certificate for each domain, for each subdomain, as well as a certificate for each domain pointer, and each subdomain on a pointer. |
Related: admin_ssl_cert_per_vh
ajax=1Enable ajax functions in DirectAdmin panel.
ajax_cache_max_time=1800Maximum time for ajax cache.
ajax_list_max=20Maximum ajax list size.
ajax_search_max_time=2.000000The maximum ajax search time.
allow_backup_encryption=0Ability to password encrypt backups from all levels. To enable, change allow_backup_encryption to 1. This feature was implemented for backup storage to be GDPR compliant. The following files are used to encrypt/decrypt the data:
/usr/local/directadmin/scripts/encrypt_file.sh
/usr/local/directadmin/scripts/decrypt_file.sh
To customize them, use the standard DirectAdmin customization procedure, e.g., create the /usr/local/directadmin/scripts/custom/ directory, copy files into it, and modify the file there. DirectAdmin will detect the custom script and use it instead.
allow_backup_exclude_path=1Allow users to control exclude list by creating a file /home/username/.backup_exclude_paths with paths to be skipped by backup task. The format of the file must be relative to /home/user and should not include a /home/user prefix, example:
domains/domain.com/awstats
presentation/videoThis will add '--exclude-from=/home/username/.backup_exclude_paths' just after the '-C /home/username' option in the creation of BOTH the home.tar.gz and the user's backup .tar.gz (the option uses tar exclude-file option).
allow_backup_exit_code_one=1The option which controls a backup error depending on exit status after backup script finishes. Default is 1, which means 1 (and 256) is accepted an will not throw an error. If you change it to 0, then then the exit code 1 (and 256) are no longer ok, and DA will throw an error.
Example: When compressing a tar.gz file if a source file changes or goes missing during that creation, tar can throw either code 1 or 256.
allow_dns_underscore=1Allow using underscore "_" character in NS records for domains.
allow_domain_special_characters=1Allow adding domains with special characters. Set to 0 to block special characters in domain names. Some versions of named do not like them.
Related: convert_to_punycode
allow_foreign_key=0By default, the session key login system is only permitted for 127.0.0.1 . Change to 1 to allow non-local IP addresses to login using the session key system.
allow_forwarder_pipe=1Allow processing email through email pipes (usually used as mail forwarder to script).
allow_incoming_email_on_suspend=0Change to 1 to allow suspended domains to still receive emails. The pop/imap/smtp authentication will still be disabled.
If you turn this feature on, make sure that no accounts or domains are currently suspended, or they'll be stuck in limbo using the other suspension method.
Note: If the backup box has this option enabled, ensure that this option is also enabled on the box being restored to. Else, suspended email accounts won't be unsuspended on the new box when the User account is unsuspended.
allow_numeric_username=0Change to 1 to override checks to allow a username that starts with a number. Not recommended for most Operating Systems.
allow_push_autoupdate=1Allow the latest version of DirectAdmin to be pushed to this server, as needed. For example, security updates.
allow_reseller_oversell=1Allow resellers to sell more features than they are allowed.
allow_reseller_to_backup_users=1Allow a Reseller to Backup/Restore their Users (this is separate from User Backup/Restore).
allow_ttl_override=1Allows users to control whether they can set per record TTL values. For example, if enabled, regular users can go to user level -> DNS Management -> Override TTL value.
Value that's set there will force all records to use that same value for the domain it is configured for.
Admin users can do the same in admin level -> DNS Administration.
allow_upper_case_username=0Change to 1 to allow a username that has uppercase letters. Not recommended.
allow_user_exec=0To give your Users the ability to use the API to run scripts (potentially dangerous, so use at your own risk).
command=/path/to/program
options=your --list=of "options"Command must be a simple filename. Don't include options in the command, just the command filename, that's it. The options will be placed after the command. Command must be the full path from top level /. No local commands allowed.
2>&1
will be added to the end of the command to catch the stderr output to stdin.
Output from DA on a successful run will look like this:
error=0&exit=12345&result=outputtextIf error=1, then there was a problem and the error message will be set in "text".
exit=1234 is the result number of the exec function. It's controlled by the return value of your script.
result=outputtext is the usual url encoded text that your script produces.
Note that there is a timeout (set in the Admin Settings). DA will kill the program with SIGTERM if it runs out of time.
Also, do not run any script/programs that require stdin unless you pipe it from a file with <.
always_load_all_script_env_vars=0This determines whether DA loads in the environmental variables from all_pre.sh and all_post.sh scripts for the session.
apacheca=/etc/httpd/conf/ssl.crt/server.caPath to the Apache/Nginx Certificate Authority file. For nginx, the default will be: /etc/nginx/ssl.crt/server.ca
Related: SSL Certificate Locations
apachecert=/etc/httpd/conf/ssl.crt/server.crtPath to the Apache/Nginx Certificate file. For Nginx, the default will be: /etc/nginx/ssl.crt/server.crt
Related: SSL Certificate Locations
apacheconf=/etc/httpd/conf/extra/directadmin-vhosts.confLocation of the main httpd.conf where DA will add the User httpd.conf "Include" lines. For Nginx, the default will be: /etc/nginx/directadmin-vhosts.conf
apacheips=/etc/httpd/conf/ips.confLocation of the ips.conf used by DA for adding baseline Apache VirtualHosts for shared IPs. For Nginx, the default will be: /etc/nginx/directadmin-ips.conf
apachekey=/etc/httpd/conf/ssl.key/server.keyPath to apache/nginx Certificate Key file. For Nginx, the default will be: /etc/nginx/ssl.key/server.key
Related: SSL Certificate Locations
apachelogdir=/var/log/httpd/domainsLocation where the domains' error, access, and bytes logs are stored. For Nginx, the default will be: /var/log/nginx/domains
apachemimetypes=/etc/mime.typesMime.types file used to look up file extension types to include in HTTP header replies.
⚠️ DEPRECATED: DirectAdmin 1.696
autoupdate=1Controls whether Directadmin auto-updates feature is enabled (1) or disabled (0).
autopatch=1Controls whether Directadmin same version hot-fix updates is enabled (1) or disabled (0).
awstats=1Set to 1 to enable Awstats for DirectAdmin.
Related: How to enable awstats
background_delete_if_num_db_users=500If the total number of MySQL Users being removed during DA User removal is greater than 500, all Users being deleted will be done in the background.
Related: background_delete_size
background_delete_size=10240If account size is larger than this value (in megabytes) then DirectAdmin will push Account deletion to the background.
Related: background_delete_if_num_db_users
Meant for suspending/unsuspending in the background, internal default:
background_suspend_if_num_users=0Related: suspend in the background
backup_apache_files_list=1Option which controls if DirectAdmin will do a backup of apache owned files. It creates a list of apache owned files, and reset them as such after a backup is restored. Excessive checks for symbolic and hard links, and other trickery. This setting also applies to the restores.
Related: add_non_readable_files_to_strict_backup | strict_backup_permissions
backup_ftp_md5=0Set to 1 to have backup job upload two files - backup itself and user.admin.fred.tar.gz.md5 containing the md5sum of the backup file. Used to verify the integrity of the backup on remove server to ensure backup was transferred correctly.
The restore does not currently download or check this file, but if you get an error message during the restore, you'll then be able to manually check the remote file to confirm it's intact, and try again if it is.
backup_ftp_pre_test=1The backup job will test the listing of the FTP information before the ftp backups are created. It relies 100% on the exit value of the script(s):
/usr/local/directadmin/scripts/ftp_list.php
/usr/local/directadmin/scripts/custom/ftp_list.php
Set value to 0 to disable pre-test.
backup_gzip=2Option which controls what file type a backup archive will be (i.e., what type of compression will be used).
| Value | Comment |
|---|---|
| 0 | .tar file will be created as a backup |
| 1 | .tar.gz file will be created as a backup |
| 2 | .zstd file will be created as a backup |
backup_hard_link_check=1Before all account backups are created by DA, a check will be done on the User's backup path. For any hard link found, DA will notify all Admins on the box, even if the backup is being created by the end-User. As well, the creation of that backup file will be aborted.
This reason this check is relevant is for when Users create a hard link to sensitive files on disk, like /etc/shadow.
If you find that this check increases the load of your system too much when backups are created, and you feel that your system will not be affected by hard-links (you trust all of your Users), then this check can be disabled (set to 0).
backup_nice=19Default nice value for User backups.
backup_tmpdir=/home/tmpLocation for backup data assembly.
backup_tmp_path_has_pid=1Include a backup job PID in directory name next to username during backup assembly, e.g. /home/tmp/admin.1234/username
bind_address=A bind address to have DirectAdmin daemon to listen on (to listen on one IP address only).
Note it only listens on the IP you specify and this doesn't include 127.0.0.1 if you specify a public IP.
block_cracking_unblock=1Setting that controls the ability to remove blocks against previously blocked mail accounts due to suspicious actions.
| Value | Comment |
|---|---|
| 0 | Unblocking disabled |
| 1 | Standard password change will unblock the account |
| 2 | Password change will unblock the account, or automatic unblock after given amount of time which is set in block_cracking_unblock_minutes |
Related: BlockCracking notices and unblocking
block_cracking_unblock_minutes=120Number of minutes when automatic unblock will resume account if block_cracking_unblock is set to 2.
Related: BlockCracking notices and unblocking
block_cracking_variables_conf=/etc/exim.blockcracking/variables.confA path to config file for BlockCracking variables.
Related: Spamblocker install and extra modules.
block_token_chars=$[]<>:#Defines values that are not permitted to be passed between pages via GET for the tokens. There is a newline character in there as well, in the internal values. Can't add newline if you override it due to config file limitations.
brutecount=20Number of login attempts to DirectAdmin panel after which IP address will be blacklisted by BFM (Brute Force Monitor).
Related: Enabling and Configuring BFM
brute_dos_count=100Number of attempts on loading DirectAdmin login page after which IP address will be blacklisted by BFM (Brute Force Monitor).
Related: Enabling and Configuring BFM
bruteforce=1Global enable/disable switch for a Brute Force Monitor service.
Related: Enabling and Configuring BFM
brute_force_apache_log_list_update_interval=10Number of minutes between the refresh of apache log list, used if brute_force_scan_apache_logs set to 2. Missing logs are always removed from the list, but new logs won't start scanning for this amount of time.
Related: Enabling and Configuring BFM
brute_force_exim_log=/var/log/exim/mainlogA path to exim mainlog file to be scanned by Brute Force Monitor.
Related: Enabling and Configuring BFM
brute_force_exim_reject_log=/var/log/exim/rejectlogA path to exim rejectlog file to be scanned by Brute Force Monitor.
Related: Enabling and Configuring BFM
brute_force_ignore_attempts_on_suspended=1To ignore all attempts on suspended accounts by Brute Force Monitor.
Related: Enabling and Configuring BFM
brute_force_log_scanner=1Turns ON ability to have DirectAdmin scan service logs for any brute force login attempts on a server (dovecot, exim, proftpd, sshd).
Related: Enabling and Configuring BFM
brute_force_mail_log=/var/log/maillogA path to main dovecot log file to be scanned by Brute Force Monitor.
Related: Enabling and Configuring BFM
brute_force_messages_log=/var/log/messagesA path to main system messages log file to be scanned by Brute Force Monitor.
Related: Enabling and Configuring BFM
brute_force_mysql_log=/var/lib/mysql/web1.example.com.errA path to main mysql log file to be scanned by Brute Force Monitor.
Related: Enabling and Configuring BFM
brute_force_notifications_email_only=0Ability to send email notifications only without flooding a DirectAdmin panel message system. The email will contain the details of the attack, with a link to server/BFM panel to react quickly.
| Value | Comment |
|---|---|
| 0 | BFM will create a notification in DA Message System |
| 1 | BFM will not create a ticket in DA Message System, but will only send an email notification to admin |
Related: Enabling and Configuring BFM
brute_force_pma_log=/var/www/html/phpMyAdmin/log/auth.logA path to PHPMyAdmin authentication log file to be scanned by Brute Force Monitor.
Related: Enabling and Configuring BFM
brute_force_pureftpd_log=/var/log/pureftpd.logA path to pureftpd log file to be scanned by Brute Force Monitor.
Related: Enabling and Configuring BFM
brute_force_roundcube_log=/var/www/html/roundcube/logs/errorsA path to RoundCube log file to be scanned by Brute Force Monitor.
Related: Enabling and Configuring BFM
brute_force_scan_apache_logs=2A Brute Force Monitor can scan apache domain logs for WordPress wp-login.php attacks.
| Value | Comment |
|---|---|
| 0 | Disable scanning of apache logs by BFM |
| 1 | Scan apache logs but only those specified in /usr/local/directadmin/data/admin/brute.conf file, the string should end with "equals" sign. Example adding procedure: echo "/var/log/httpd/domains/domain.com.log=" >> /usr/local/directadmin/data/admin/brute.conf |
| 2 | DirectAdmin itself will create a list of all logs to form the /usr/local/directadmin/data/admin/brute.conf. |
Related: Enabling and Configuring BFM
brute_force_scan_mod_security_logs=1Scan modsecurity logs.
Related: Enabling and Configuring BFM
brute_force_secure_log=/var/log/secureA path to OS secure log file to be scanned by Brute Force Monitor.
Related: Enabling and Configuring BFM
brute_force_squirrelmail_log=/var/www/html/squirrelmail/data/squirrelmail_access_logA path to SquirrelMail log file to be scanned by Brute Force Monitor.
Related: Enabling and Configuring BFM
brute_force_time_limit=1200The time window for which the attempts (either failed logins or unauthorized connections) must pass with no activity before the count is reset.
Related: Enabling and Configuring BFM
cache_time=28800A default cache time for static files ( images, css files, js) in DirectAdmin panel. The panel supports Etags, so the browser can ask DA if any file has changed, and DA will respond accordingly if it has or has not.
certificate_common_name_with_www=0The ability to control default domain used (domain.com or www.domain.com) in the certificate CommonName. If you change value to 1, the www subdomain will be used like so: CN = www.domain.com.
cgroup=1Enables cgroup support. If set to 0, features such as Resource limits and per user resource throttling won't be available in the panel.
check_group_on_user_create=1Check if system group does not exist before creating a user.
check_home_path_on_user_create=1A check to see if the User's home path /home/username already exists before creating a user. Can be disabled changing to 0 , would be useful should you need to setup some things in the folder prior to creating the account.
check_load=10The threshold value after which the 'system load average' notification will be sent to admins.
Related: load_spike_notice
check_load_minute=5The value of system load average which is checked for 'system load average' notification to be sent. Valid options are 1, 5 or 15 (same as OS load average values means). With above settings if the 5 minute load average is higher than 10 (check_load) - DirectAdmin will sent a warning.
Related: load_spike_notice
check_partitions=2How often to check the partitions for high usage. Partitions are: / , /var , /home , /usr . /tmp . Actual list is set with /usr/local/directadmin/data/templates/partition_check.list file which can be copied to custom and modified as needed.
| Value | Comment |
|---|---|
| 0 | Never check |
| 1 | Every minute |
| 2 | Every day |
Related: partition_usage_threshold
check_subdomain_owner=1Option to prevent a User from creating a subdomain of a domain belonging to some other user. This will also check any number of sub.sub.sub.sub.domain.com lengths, and covers domains with any number of extensions, eg sub.domain.co.uk.
Can be overridden over user.conf of a given user account.
check_subdomain_owner_in_cluster_domainowners=0Option to prevent a User from creating a subdomain of a domain belonging to some other user in a Multi Server Setup.
| Value | Comment |
|---|---|
| 0 | Disable checking if domain exists in Multi Server Setup |
| 1 | Enable checking if domain exists in Multi Server Setup |
| 2 | Enable checking if domain exists in Multi Server Setup and uses strict mode - connected DA servers MUST provide the hostname in the request (recommended option) |
clear_blacklist_ip_time=86400Number of minutes after which the blacklisted IP address will be removed automatically.
clear_brute_log_entry_time=4A number of days how long to keep brute-force incidents (in /usr/local/directadmin/data/admin/brute_log_entries.list file).
clear_brute_log_time=48Number of hours the failed login attempts to be checked within. If ip_brutecount is set to 100 then an IP can have 100 failed attempts within 48 hours before all Admins are notified. If the IP has 99 failed attempts, waits 24 hours, then makes 99 more attempts, no notifications will be sent.
⚠️ DEPRECATED: DirectAdmin 1.690
cloud_cache=0File used by CloudLinux for quick access to uid numbers and package names. Same update times as for the show_all_users.cache. If set to 1 then /usr/local/directadmin/data/admin/cloud.cache is used.
cluster=0A global switch for Multi Server Setup.
cluster_ip_bind=If not empty it will force outgoing cluster connections (to other DirectAdmin instances) to bind to the specified source IP address.
It is recommended to keep this value not set, then OS will be responsible for picking correct source IP address, which is the expected behaviour most of the time.
Note: The IP address specified in this config option should be available locally on the system. It is used as source IP address not destination IP address.
cluster_user_sync=0An ability to sync user accounts across multiple DirectAdmin servers.
commands_force_deny=CMD_LOGIN_KEYS:CMD_API_LOGIN_KEYSA set of commands that will override the command being in the commands.allow file.
compress_rotated_logs=1Option to to rotate compressed apache logs. If set to 1 (default) the files will be /home/user/domains/domain.com/logs/Aug-2019.tar.gz, if changed to 0 they will be logs/Aug-2019.log and logs/Aug-2019.error.log.
*Related: logs_to_keep *
convert_to_punycode=0Recognize IDN domains, and add required values to handle them. Evolution skin does the conversion automatically, so, it does not need this option.
Note, your skin must be using UTF-8, else you'll run into issues. By default, the Enhanced skin does NOT use UTF-8.
The Evolution skin doesn't need this feature, as it converts to punycode before passing any domain to DA.
Related: allow_domain_special_characters
count_email_usage=0Deprecated. Ability to override DA's manual email counting vs using system quotas (really only applies to mbox).
count_other_disk_usage=0If you have data that should be counted in the total disk usage for a User, but does not fall under the standard usage areas (eg: data on a remote server), then you can use this option to create a hook, which lets you add extra bytes into the disk usage under "Other Usage". If you set count_other_disk_usage to 1, then directadmin will call /usr/local/directadmin/scripts/custom/other_disk_usage.sh script for data. The script must exit with code 0, if non-zero code is exited, the output is logged to the errortaskq.log.
The output on exit 0 must be URL encoded and for now, it will basically just be:
other_quota=12345where 12345 bytes will be added to the user.usage file. The value must be a positive integer.
count_pop_usage=1Ability to shut off email quota reporting on the email accounts page to speed up loading. If you have thousands of email accounts, this can cause slowness. Change to 0 to disable. Can be overridden via the user.conf on a per-User basis.
cpu_in_system_info=2Ability to hide CPU information on the Server Info page.
| Value | Comment |
|---|---|
| 0 | Hide CPU information completely |
| 1 | Show a Thread Count only, without information about CPU itself |
| 2 | Show full information |
create_user_home_override=A value to use for home directory during creating the user. This will override the useradd internal default and /etc/default/useradd HOME default. Applies to any OS.
You can now also specify a desired /home directory, settable in the skins, if you add something like:
home_override_list=/home:/home2:/home3where all paths must exist before DA is restarted, else none will be set. Once set, the package will be able to have, eg:
create_user_home_override=/home2allowing that account to be created into that path.
Note: Since there are no Admin packages, the directadmin.conf method is the only way to alter the admin home directory. (but you can post the desired create_user_home_override=/home2 with the creation, which would be accepted even though it's not in the form)
At this time, changing the create_user_home_override value in a package will not move a User to a different home directory. Same for editing a User's settings.. the user cannot be moved to a /home2 (for example) through DA.
Related: home_override_list | ext_quota_partitions
custom_httpd_syntax_check=1Ability to disable Custom Httpd syntax checking. Useful on servers with OpenLiteSpeed with huge number of domains (>7000) where the syntax check is rather slow.
custom_mysql_conf=0Ability to set per-user mysql.conf file. If you enabled it setting to 1 the database class in DA will then read in the user.conf for given user. To override the default you would add own mysql.conf into user.conf like:
mysql_conf=/usr/local/directadmin/conf/othermysql.confThe path you set can be anything, but the read of the file only has "diradmin" access, so for simplicity, you might want to keep it in the same path, same permissions, like the mysql.conf. The othermysql.conf has 100% the same functionality as the mysql.conf, so you can specify different mysql.sock files or different host.
Also, because mysqldump and mysql restores make use of /usr/local/directadmin/conf/my.cnf any action that typically rebuilds that file, will now rebuild one for each User that has a customized mysql.conf, eg: /usr/local/directadmin/conf/my.cnf.username , so that there are no conflict with running backups at the same time using different values.
custom_stats_path=A path to custom statistic engine. Null by default, if you set for example:
custom_stats_path=/some/path/%s/index.htmlthen DA will swap the href="value" with your custom_stats_path value on the CMD_USER_STATS page (webalizer and awstats table, left column). For example: custom_stats_path=/CMD_FILE_MANAGER/domains/%s/stats/index.html Would essentially do the exact same thing the normal webalizer link.
NOTE you must provide exactly one instance of %s else DA will fill the href with:
javascript:alert('check custom_stats_path setting');so when clicked, Users will see a pop-up. If this option is set, it will override any webalizer/awstats setting, enabled or not.
damycnf=/usr/local/directadmin/conf/my.cnfPath used for the my.cnf file which is given to the mysqldump script to hide user/passwords from ps output.
dataskq_max_instances=0Sets a limit to maximum number of concurrently running dataskq instances started by main directadmin service.
Main directadmin service executes dataskq once every minute (configurable via dataskq_run_interval option) to process pending tasks. New dataskq instances will be started even if previous instances have not finished running. Setting this value to a non zero value will stop starting new dataskq processes if there is already configured number of processes running.
This limit does not include dataskq instances started manually.
Default value of 0 means there is no limit.
dataskq_run_interval=1mControls how often main directadmin service starts task queue processor. Value can use the m suffix for minutes and s suffix for seconds.
If value is set to 0 will disable periodic dataskq execution. This might be useful for debugging or if dataskq is started by other means.
da_website=http://www.directadmin.com/An URL to DirectAdmin website, mostly used for templates, for example message_footer.txt.
db_default_access_hosts=A comma separated list of default database access hosts to use. If the list is empty, localhost and % are used for local and remote configured DBMS respectively.
db_hosts_per_user=30Controls maximum number of hosts database users can have. It is recommended to keep this value at least 2.
Zero value disables the limit.
debug_only_cmd=0If set to 1 the debug output will show CMD_* class only in the output.
debug_user_locking=0default_acme_provider=letsencryptInternal default acme provider used for SSL Certificate requests, in absence of User selection. Set to letsencrypt or zerossl.
default_email_notify_limit=1000The default limit of sent emails after which DirectAdmin will send a notification on overusage. This is only a notification threshold and does not impose any send limits. This setting only applies if the User's send limit is 0 (global /etc/virtual/limit or per-User override: /etc/virtual/limit_fred), where 0 is unlimited, and is only meant as a fallback to notify about many emails being sent. If a User limit is imposed, which is is by default, this setting will have no effect. Setting default_email_notify_limit=0 is not recommended, but would simply result in a notice being sent out daily should more than 0 emails be sent (assuming User has unlimited send limit).
Related: notify_on_mass_emailing | notify_user_on_mass_emailing | notify_reseller_on_mass_emailing | notify_admins_on_mass_emailings
default_mailing_list_max=100000A default max majordomo list message size in bytes.
default_mysqldump_options=--single-transaction --max-allowed-packet=1GAbility to pass additional command-line options to the mysqldump call, which is used to backup MySQL databases.
default_pop_quota=50The default quota for mailboxes in megabytes.
default_ttl=14400Sets the default value used for zone TTL values. Changing this setting alters what all TTL values have for all records, zone TTL, etc. You can still override the TTL of a User domain, regardless of this setting.
delete_messages_days=365Messages older than the specified value will be automatically removed. Message cleanup is executed once per day.
delete_tickets_days=730Tickets with no activity for more than the configured amount of days will be automatically removed. Ticket cleanup is executed once per day.
delete_vacation_on_end=0Option not to delete vacation message after expiry.
difficult_password_length_min=6Passwords shorter than the set value will be refused.
Note that auto-generated passwords (more specifically passwords consisting of at least 20 symbols) will always be accepted.
diradmin_envelope=Allows you to override the default "diradmin@host.name.com" in the Return-Path, and set something else, eg:
/usr/local/directadmin/directadmin set diradmin_envelope your@email.com
service directadmin restartBy default, this is disabled and relies on your hostname being setup/resolving correctly.
direct_crons=1With this option enabled, DirectAdmin does not use /usr/local/directadmin/data/users/username/crontab.conf anymore for user cronjob configuration, and takes cronjobs directly from /usr/sbin/crontab -u username -l.
direct_imap_backup=1With this option enabled, the imap folder is included directly into the final tar.gz file. Greatly improves the speed of backups.
disable_php_script_at_limit_minimum=100The minimum number of emails that script must send to be chmod to 0. The minimum number is useful in the case where an account might have a limit of 1.. obviously, this wouldn't warrant the disabling of the script for sending 1 email.
So, for example script.php sends 900 emails, and the limit is 1000. The total number of emails leaving the account would have been 1000 (since the limit was triggered) but 900... aka 90% of the emails sent, were from the script.
This passes the threshold of 80%.
Also, 900 emails are more than 100 email, so it will also pass.
If parse_php_mail_log_at_limit=2 is set the script.php will be chmod to 0, and everyone notified. If any one is not true, the script will not be chmod to 0.
Related: parse_php_mail_log_at_limit
disable_php_script_at_limit_threshold=80The percentage of total emails sent, of the hit limit, which must be exceeded by that script, in order to be chmod to 0.
Related: parse_php_mail_log_at_limit
disk_usage_suspend=0Option to suspend based on disk usage.
dkim=2Ability to enable DKIM for domains (requires manual changes for existing accounts).
| Value | Comment |
|---|---|
| 0 | DKIM is disabled by default for the new domains |
| 1 | DKIM is enforced by default for the new domains |
| 2 | DKIM functionality is enabled, but not enforced for the new domains |
dkim_selector=xThe selector to be used for dkim records. You must update the dkim settings in the /etc/exim.dkim.conf by running:
da build exim_confRelated: DKIM: ability to use selector instead of x
dns_affect_pointers_default=1If you have main User domain domain.com, and it has Domain Pointer domain.net below it, this feature would mean that any record added to domain.com through the API or GUI would be added to domain.net.
It does control a checkbox both at the top of the "Add Domain Records" table, as well as at the bottom of the "Delete Selected" table.
Setting dns_affect_pointers_default=0 will make the default checkboxes be unselected but still visible in GUI.
dns_add_spf_ipv6=1Adds server IPv6 to SPF records by default. Requires IPv6 to be enabled (ipv6=1 in the directadmin.conf). Set to 0 to disable.
dns_caa=1Enables support for CAA dns records.
dns_ns=2Option to control if NS records are shown in User or Admin panel. Changing to 0 will hide completely, changing to 1 will hide for User panel only.
| Value | Comment |
|---|---|
| 0 | Hide NS records completely |
| 1 | Show NS records only in admin panel only |
| 2 | Show NS records in admin and user panel |
dns_ptr=2Option to control if PTR records are shown in User or Admin panel. Changing to 0 will hide completely, changing to 1 will hide for User panel only.
dnssec=1| Value | Comment |
|---|---|
| 0 | DNSSEC disabled |
| 1 | Enable DNSSEC |
| 2 | Enable DNSSEC (enable DS records) however do not sign the current domain |
dnssec_add_subdomain_ds_to_parent=1Sign subdomains with dnssec automatically.
1) If you're creating sub.domain.com has domain.com is already signed, sub.domain.com will be immediately keyed & signed.
2) If you've just signed the DNSSEC sub.domain.com zone, and domain.com exists on the server, if enabled DA will add the DS and NS records from sub.domain.com to domain.com
dnssec_add_subdomain_ds_to_remote_parent=1Add DNSSEC records to remote server if Multi Server Setup enabled and zone is not local.
dnssec_mss_use_signed_zone=1To have DirectAdmin send the signed zone to the remote box if Multi Server Setup enabled.
dns_https=1Enables support for the HTTPS DNS resource record type.
⚠️ DEPRECATED: DirectAdmin 1.694
dns_svcb=1Enables support for the SVCB DNS resource record type.
dns_tlsa=0Enables support for TLSA dns records.
dns_ttl=0Enables per-record DNS TTL management.
domainips_default_ip=The default IP address that could be used as a sending IP for /etc/virtual/domainips.
dovecot_proxy=0Used to setup IMAP/POP3/SMTP proxy.
When this is enabled, anytime a value is changed on the master server, it will locally save a dovecot proxy line to the local /etc/virtual/domain.com/passwd file. With regards to the sync, this will push the info to the remote box, as before, but with dovecot_proxy=1 enabled remotely, it will also add the proxy into to the remote passwd file on the slave box, pointing to the master server's IP.
This has the effect, such that you can in theory have the remote slave box as mail.domain.com, with all emails arriving there with smtp. On that slave box, when exim tries to save the email with lmtp, it will be redirected back to the master server to be saved, so email is saved locally. Clients can connect to either the master or slave box to check their imap.
This task.queue option has been updated to rewrite the master data on the master box: echo "action=rewrite&value=email_passwd" >> /usr/local/directadmin/data/task.queue
or: echo "action=rewrite&value=email_passwd&user=fred" >> /usr/local/directadmin/data/task.queue
This means all of the hook scripts are used, so the remote box can still use email_create_pre.sh, or email_change_pass_pre.sh normally (and post scripts)
NOTE: the "passwd" field will be the crypted value, and not the plaintext password. If you rely on this, only the master will know the plaintext. But you'll know it's crypted because passwd_is_crypted=1 will be set in your .sh scripts.
dovecot_proxy_override=Ability to override the /etc/virtual/domain.com/passwd if dovecot_proxy is in use.
ecc_certificates=1Ability to disable support of ECDSA (Elliptic Curve Digital Signature Algorithm) certificates.
email_ftp_password_change=1Allow ability to change email and ftp passwords separately per /CMD_CHANGE_EMAIL_PASSWORD and /CMD_CHANGE_FTP_PASSWORD, respectively.
email_show_last_login=0To save and show email last login.
email_show_last_password_change=1To save and show last password change time. Where anytime an email password is changed, either through DirectAdmin GUI (CMD_EMAIL_POP, CMD_API_EMAIL_POP, CMD_CHANGE_EMAIL_PASSWORD, etc), the time and IP will be saved into: /etc/virtual/domain.com/last_password_change/user
in the format:
ip=1.2.3.4&when=1535140911If the above setting is set to 1, then for Enhanced, the hover-over usage will include this information. If no password change has been made after this feature is present, no info will be shown.
⚠️ DEPRECATED: DirectAdmin 1.682
emailspoolvirtual=/var/spool/virtualPath to the email data for when mbox used (actual emails).
emailvirtual=/etc/virtualPath to the email data (virtual account names).
⚠️ DEPRECATED: DirectAdmin 1.688
enforce_difficult_passwords=0If set to 1, new passwords without at least one number, lowercase and uppercase letter will be refused.
If you want to customize password checking, see password_check_script.
Note that this password check is independent of difficult_password_length_min and password_check_script.
ensure_root_awstats_link=1A workaround used on accounts restore to make sure internal links in awstats are working.
errorlog=/var/log/directadmin/error.logA path to **DirectAdmin error log **file
ethernet_dev=eth0The network device name that holds the licensed IP. Other common values: eth1, eth0:0, venet0:0
exempt_local_block=1If set to 1 will prevent 127.0.0.1 from being blacklisted.
exim_paniclog=0To let DirectAdmin check the exim/paniclog file . Disabled by default. If you set it to real location like:
exim_paniclog=/var/log/exim/paniclogThen DirectAdmin will check the file every minute and if the file exists and has a size greater than 0, then a notice will be sent to all Admins in the message system.
DA will note the time of this send in the file /usr/local/directadmin/data/admin/admin.conf with setting and timestamp, eg:
exim_paniclog_last_sent=1513064965So the next minute, when DA sees that the paniclog is still greater than 0, the send won't occur again until 24 hours has passed. If the size is still more than 0 bytes, it will send again. The nightly full tally will check the admin.conf and if the exim_paniclog_last_sent value is not set to 0, it will reset it to 0.
ext_quota_partitions=If you have another partition you want DA to count, specify that partition here.
Related: create_user_home_override | home_override_list
How to enable quota checking on a 2nd /home partition
extra_backup_option=Set if you want to insert extra commands for tar to use when creating user backups.
extract_list_max_files=5000The maximum number of files to be looked for within a compressed file by DirectAdmin.
DA basically just looks for the 5000'th newline character and nulls it with a comma (,), ending the string. If this is hit, this string is added to the end of the listing:
Maximum number of files listed (5000). Suppressing further output.This should prevent hangups if a very large zip/tar.gz is being extracted.
extra_mysqldump_options=Ability to override mysqldump options on backup time.
extra_spf_value=Value to be added for SPF value for new domains. Valid example to use, just a single IP:
extra_spf_value= ip6:1080::8:800:200C:417A** Note the space after the = character **. This is required, else the text you insert here will end up being appended to the server IP. DA isn't adding a space for you to allow for the use of the token in other creative manners, like netmasks, or like if-then-else statements on it or other template/tokenizer things.
⚠️ DEPRECATED: DirectAdmin 1.688
extra_unzip_option=The usual way DA unzips a file is unzip -qo file.zip', so the extra_unzip_option value is inserted after the -qo flag.
This could be useful to unzip names in special characters like so:
path/blaåŒÅtest.jpg: mismatching "local" filename (path/bla├åœâ”¼å°test.jpg), continuing with "central" filename versionSo set value to -O cp396 :
extra_unzip_option=-O cp396filemanager_disable_features=0Ability to shut off certain features of the File Manager. Configured over own bits. For any feature you wish to disable, simply add that bit to the decimal number.
Defines are as follows:
#define FM_F_PROTECTABLE 1
#define FM_F_RENAME 2
#define FM_F_COPY 4
#define FM_F_RESET_OWNER 16
#define FM_F_RESET_OWNER_RECURSIVE 32
#define FM_F_HIDE_CHECKBOX 64
#define FM_F_EDITABLE 128
#define FM_F_EXTRACTABLE 256
#define FM_F_DELETE 512
#define FM_F_CHMOD 1024
#define FM_F_MKDIR 2048
#define FM_F_CLIPBOARD 4096
#define FM_F_UPLOAD 8192
#define FM_F_DOWNLOAD 16384
#define FM_F_DOWNLOAD_AND_COMPRESS 32768For example, to fully disable directory protection, set filemanager_disable_features to 1 .
To disable rename and copy, add them together and set filemanager_disable_features to 6 .
If you only want "protectable" enabled, then add everything, less 1, & set filemanager_disable_features to 8182 .
To disable the moving of files to Trash upon removal, set filemanager_disable_features to 65536 .
filemanager_du=1Used to do recursive folder disk usage counting in File Manager. The calculated usage value will replace the usual 4.0k you see for all directories, but this feature is expected to slow down the File Manager. Can be overridden via the user.conf.
filemanager_show_directory_count=1Ability to hide directory disk usage in the "Size" column to improve performance.
fm_purge_trash_days=30Indicates the age of days a file before being deleted from .Trash folder. For folders, the last modified time of a folder must be >= 30 days old for it to be traversed. -1 means never auto-purge, 0 - immediately purge if found. Up to a max of 10000 days before being purged.
force_hostname=By default DA allows people to connect to any IP, domain name, subdomain, etc.. that lives on port 2222. Setting force_hostname to any value force a browser to use a specific value when connecting.
force_pipe_post=Option to forcefully use POST requests. Example set is a colon separated list of scripts you want POST to be piped through:
force_pipe_post=filemanager_pre.sh,all_pre.shRelated: pipe_post
force_ssl=0Force SSL with https redirect for all websites.
forwarder_loop_check=1Enabled by default - DirectAdmin will abort the creation of the forwarder if local forwarders end up pointing back to the original. The process is recursive with max recursion depth of 20.
fs_in_system_info=1When enabled shows file system information and disk usage in the System Information page.
ftpconfig=/etc/proftpd.confThe path to the ftp config file.
ftppasswd_db=/etc/pureftpd.pdbThe path to the pureftpd database file.
⚠️ DEPRECATED: DirectAdmin 1.682
ftppasswd=/etc/proftpd.passwdThe path to the proftpd passwd file.
ftpsep=@The character used after usernames and before the domain name. An example of an ftp login would be: fred@domain.com .
The + character would be a good alternative if you are looking for change.
ftp_list_run_as=nobodyIf using the default option, when /usr/local/directadmin/scripts/ftp_list.php is executed from the GUI (using the admin backup/transfer feature), it'll be run by user "nobody".
global_httpd_tokens=/usr/local/directadmin/data/admin/global_httpd_tokens.confThe file that contains global tokens to be used in Apache/Nginx templates.
hard_quota_multiplier=1.1Ratio for the soft-limit to hard-limit for quotas. Allows a grace period for Users to go over their quotas up to the hard-limit. After the grace period, they can only delete files until below the soft-limit again.
hide_brute_force_notifications=1Change to 1 to prevent sending brute-force notifications by email.
hide_ip_user_numbers=0If you're sharing an IP among many Resellers, hide the number of Users on that IP.
hide_webmail_links=1Ability to hide or change the webmail links and webmail button.
home_override_list=A list of paths where to create users, to be used with create_user_home_override . Example set:
home_override_list=/home:/home2:/home3Related: create_user_home_override | ext_quota_partitions
hook_custom_vars=0Ability to pass custom variables to pre/post.sh scripts from GET/POST. Set it to 1 to enable and then you can use any GET/POST variable name you want from these characters: a-zA-Z0-9_-.
It must start with the prefix custom_var_
So, a sample variable passed with GET or POST might be:
custom_var_do_something=yeswhich would let you access:
$custom_var_do_somethingin any hook script that is called with that request.
Note the maximum length of an environmental value is 125749 bytes. Anything greater than or equal to that length will be ignored, and its env variable will be unset if it was present already.
hsts=-1The option to enable HTTP Strict-Transport-Security for the DirectAdmin login page. If SSL=1 and hsts>0 the hsts value is in seconds, and will form the header: Strict-Transport-Security: max-age=5184000
To disable the header, you must set it to -1 in the directadmin.conf or delete the hsts value from the directadmin.conf, reverting to the internal -1 default. Because browsers will remember the setting, if you are going from a large value (5184000), to make the browser "forget", you must set it to 0 for a while (hsts=0) so that the header is sent to clients set to 0 shutting it off. After all browsers/clients have received the change, then you can set it to -1.
If you consider enabling it, we recommend using:
force_hostname=server.domain.comhtm_all_scripts=0Lets you run all_pre.sh and all_post.sh scripts on HTM files. Handy for creating your own scripted areas in DA that are not plugins.
include_directadmin_port_in_brute_firewall=0Option to include port 2222 failed login attempts in BFM blocks (CSF).
incremental_ftp=1When uploading backups, the finished backup will be uploaded before the subsequent backup's creation to lower total disk usage.
inode=1Support for counting and displaying of inode limits for Users. Can be set in packages. Uses the hard limit multiplier, just like the disk usage, meaning, the value you set will be the soft limit, and the hard limit will be 1.1x that value.
ionice_string=Default ionice value for User backups.
If you add a string, it would look something like this:
ionice_string=/usr/bin/ionice -c2 -n7This would make the resulting tar backup call look like:
/usr/bin/nice -n 19 /usr/bin/ionice -c2 -n7 /bin/tar cvf .... etc.,ip_blacklist=/usr/local/directadmin/data/admin/ip_blacklistA path of blacklisted IPs to be used in Brute Force Monitor.
ip_brutecount=30Number of bruteforce attempts per IP required to trigger sending a notification to admins.
ipv6=1Basic support for IPv6
ip_whitelist=/usr/local/directadmin/data/admin/ip_whitelistA path of whitelisted IPs to be used in Brute Force Monitor.
isolated_fpm=1Uses separate PHP-FPM instances for different user accounts. This increases the security without compromising performance.
jail=0Use bubblewrap to jail users (cronjobs, shell and PHP-FastCGI). Use CustomBuild to install bubblewrap, it sets the DirectAdmin value automatically.
| Value | Comment |
|---|---|
| 0 | jail disabled completely |
| 1 | jail is enabled by default, but can be personally disabled per package, reseller.conf or user.conf |
| 2 | jail is enabled forcefully for all |
language=enDefault language for the system, and also for the demos.
language_list=List of languages (separated with : symbol) that should be available in DirectAdmin language selection. Used to minimize the number of languages offered for end-customers.
When empty all default languages that comes with pre-installed will be available.
For example setting:
language_list=en:nlWill limit supported languages to English and Dutch.
lan_ip=Local IP address if LAN setup was done.
letsencrypt=1Ability to disable Let's Encrypt in DirectAdmin interface. If enabled globally you might want to deny access to LetsEncrypt for specific Users adding "letsencrypt=0" to user.conf file.
Note that this only applies to the interface, and does not affect background/dataskq actions. So this will not work to globally have it shut off, if you're trying to enable it for 1 User, for example. The background checks must have it enabled globally to work.
letsencrypt_disable_renew_after_renew_failure=0Disable Let's Encrypt certificate auto-renew after X failed attempts, with failure message.
letsencrypt_foreground_http_max=10Number of requests (checkboxes selected) after which the letsencrypt generation will be sent to background and processed by dataskq.
letsencrypt_list_selected=wwwAbility to specify which DNS records will be automatically selected on the Let's Encrypt page.
letsencrypt_list=www:mail:ftp:pop:smtpAbility to select which DNS records to include in Let's Encrypt certificate.
letsencrypt_max_requests_per_week=200Set the weekly max Let's Encrypt requests limit shown in the interface.
letsencrypt_multidomain_cert=3Ability to select which DNS records to include in Let's Encrypt certificate.
letsencrypt_renewal_error_to_users=1Ability to control and send notifications to users on failure renewals.
letsencrypt_renewal_failure_notice_after_attempt=5Max failed Let's Encrypt certificate renewal attempts before sending a failure notice.
letsencrypt_renewal_notice_to_admins=1Ability to control and send notifications to admins on failure renewals.
letsencrypt_renewal_success_notice=0Ability to receive Let's Encrypt successful renewal notices.
letsencrypt_success_full_output=0Ability for the full output to be shown again upon success.
litespeed=0A flag used to indicate if LiteSpeed is in use.
load_in_system_info=1Calls to the System Information can now support load average, enabled by default. Set to 0 to disable:
/usr/local/directadmin/directadmin set load_in_system_info 0
service directadmin restartload_iotop_string=/usr/sbin/iotopThe iotop command and keys to be included in a notice sent to all admins when 'server load average' notice will be generated. Defaults differ for varying OS's:
CentOS 6/7 + Debian
load_iotop_string=/usr/sbin/iotop -b -n 1load_notice_interval=10A time in minutes how often the load-average critical notifications are sent to admin, defaults to 10 minutes.
load_top_string=/usr/bin/topThe command which is used to gather the data for load average notifications.
load_top_string=/usr/bin/top -c -b -n 1local_mailserver_without_dnscontrol=0If set to 1 the "MX Records" URL will show up when viewing a domain, and you can make changes to the "Local Mail Server" option, where you might have dnscontrol=OFF in your account.
Some Users might have external DNS, hence they shouldn't change their dns settings, but still need to change their Local Email Server settings.
logdir=/var/log/directadminA path where DirectAdmin will save own logs.
login_hash_expiry_minutes=4320New internal option simply that lets you alter the internal default time of the ./directadmin --create-login-url user=fred call.
login_history=10Number of login attempts to store.
login_keys=1Enables Login Keys functionality in DirectAdmin.
login_keys_notify_on_creation=1loginlog=/var/log/directadmin/login.logA path to login.log file.
logs_history_as_nobody=0Save User's logs folder and contents as "nobody", preventing them from deleting them from /home/user/domains/domain.com/logs/.
logs_to_keep=5Number of rotated logs to keep in a user's home location.
logs_to_keep_days=0Relating to logs_to_keep=5.
When set to a positive integer (in days), specifies a secondary log rotation limiter based on age, not just count.
lost_password=0Feature to let users reset their passwords without bugging the Admin.
maildir_with_new=1This was for a template change. It's not recommend you go back. Set to 0 to disable using Maildir/new/ Maildir/.INBOX.spam/new/ etc.
mail_autoconfig=1Controls whether web server's configs include routing for email auto configuration feature for Thunderbird and MS Outlook (pro-pack).
mail_partition=Custom partition location for email.
mail_sni=1Setting for Dovecot and exim SSL SNI certificate support. Manages the /etc/virtual/snidomains file required for DirectAdmin and Pure-FTPd SNI support, too.
maxfilesize=10485760The maximum size, in bytes, that a POST can be. This is mainly used for file uploads but applies to all POSTs. Do not set this value to a very small number, as it would block normal POSTs as well (User creation, etc) if it's too small.
max_per_email_send_limit=200The limit of email messages that a single mailbox can send per day.
A value of 0 means unlimited. A value above 0 is the max number of emails from single mailbox per day.
Can be overridden in the user.conf file. This can be done via DirectAdmin's GUI when viewing the details for a given User.
For enhanced, the page:
CMD_SHOW_USER?user=fredwill show an extra row, just below "Received Emails", called "Max limit User can set per E-Mail". If you're an Admin, you'll be able to modify this value. Setting a number saves max_per_email_send_limit into the User's user.conf file and setting it as a blank value deletes the max_per_email_send_limit from the user.conf.
max_read_to_memory_size=524288000Sets an upper limit as to the max size of file that can be stored in DirectAdmin memory, when DA uses a function to read the contents of a file to memory so it can be worked on.
max_username_length=16The max length a username can be. Max is 30. It is limited to a max of 14 with MySQL 5.5/5.6 and MariaDB 5.5 because of the 16 character MySQL database name limit and the username naming prefix.
max_user_send_limit=-1The upper limit that can be set by a Reseller.
| Value | Comment |
|---|---|
| -1 | Upper limit is taken from the /etc/virtual/limit file |
| 0 | No limit |
| >0 | A value higher than 0 becomes the limit |
modsecurity_enabled=0Should be set to 1 when the web server has ModSecurity support. It enables the ModSecurity management features and generates ModSecurity-related configuration.
This configuration option is automatically updated by the CustomBuild tool. It should only be controlled manually when web server configuration is not managed by the CustomBuild.
Enabling it when the web server does not support ModSecurity can cause web server configuration errors.
mq_exim_bin=/usr/sbin/eximWhere Exim is located. Use for the mail spool query calls in Admin Level -> Mail Queue Admin.
mq_exim_max_load_size=2000When accessing CMD_MAIL_QUEUE to view the mail queue via the DirectAdmin panel, it will call exim -bpc before trying to load the queue. If the number of mails in the queue is higher than mq_exim_max_load_size, then an intermediate warning page is shown with a button to try anyway. This will add the GET value of force=yes to the request, telling DA not to worry about it and show it anyway.
When forced, the initial exim -bpc call is not done, in case that call itself is slow, where it's not needed since we're going to jump straight into loading the queue no matter what.
msg_sys=Message SystemIf you want to name your hosting company in the message system emails, this lets you specify the "name" part of the "From" header.
mx_templates=1This variable controls the user's ability to select google/zoho from a list in User panel -> Modify MX Records. Enabled by default. Actual list is taken from two files in /usr/local/directadmin/data/templates/mx directory and can be customized if copied to templates/mx/custom directory.
mysql=1Ability to disable all database functions at once.
mysqlconf=/usr/local/directadmin/conf/mysql.confPath to the user/pass that DA will use for the connection to mysql.
named_checkzone=1Whether to run DNS zone files through a check before saving zone to disk.
named_checkzone_level=failIs used with the named-checkzone query -k option. It was found that some warnings returned by named-checkzone would actually cause a full failure in named, so the strictness level of this call was increased to the current default fail.
Valid options values are:
If you find this to be too strict, set it back to level "warn" by adding:
named_checkzone_level=warnnamedconfig=/etc/named.confThe path to main named config file (depends on OS used).
nameddir=/var/namedThe path to the named directory.
named_rename_hostname_zone=1If you rename a hostname from the DirectAdmin panel, the process will rename the hostname zone. If set to 0, then DirectAdmin will not change zone associated with the hostname.
named_rndc=0Allows for immediate DNS changes using rndc without any delay.
named_rndc_addzone=0Allows for immediate DNS changes using rndc without any delay.
never_commands=Global commands to never be executed by the DirectAdmin panel. An example set would be: never_commands=CMD_ACCOUNT_ADMIN:CMD_API_ACCOUNT_ADMIN
nginx=0When using webserver=nginx_apache, the option is used to enable/disable the per-domain Nginx templates and the ability to process a domain with Nginx only when using Nginx reverse proxy.
Related: nginx_proxy
nginx_proxy=1This setting is used in conjunction with nginx= in the directadmin.conf and in the domain's .conf file for per-domain Nginx configurations.
Related: nginx
nginx_ca=/etc/nginx/ssl.crt/server.caA path to the Nginx Certificate Authority file.
nginx_cert=/etc/nginx/ssl.crt/server.crtA path to the Nginx certificate file.
nginxconf=/etc/nginx/directadmin-vhosts.confThe main Nginx config file with users' VirtualHosts.
nginx_fpm_always_set=0Ability to always load all php-fpm settings into the User nginx.conf.
nginxips=/etc/nginx/directadmin-ips.confThe path to the file containing the Nginx configuration for server IPs.
nginx_key=/etc/nginx/ssl.key/server.keyThe path to the Nginx key file.
nginxlogdir=/var/log/nginx/domainsThe path to the directory where Nginx stores domain logs.
nginx_proxy=0The flag used to indicate if nginx proxy is used.
nginx_proxy_buffering=0The option to control flow between Nginx and Apache. If set to 0, the Apache server sends through Nginx, byte by byte, making the connection faster. If you have many slow clients, setting nginx_proxy_buffering to 1 will mean that Apache sends all data to Nginx, which stores it in a buffer, which can then disconnect from Apache to let it do other things.
The catch with setting this to 1 is that Nginx doesn't start to send all of the data until Apache has finished sending it to Nginx... meaning the first byte is not sent until Nginx receives the last byte from Apache.
notify_admins_down_services=1Notify all admins whenever a service goes down using the messaging/ticket system.
notify_admins_on_all_account_creation=0Option to notify all Admins about the creation of any account type.
notify_admins_on_mass_emailings=1Notify admins on mass emailing.
notify_admins_on_per_email_mass_emailings=1Notify admins on mass emailing.
notify_email_on_per_email_limit=1Send an email to an email account if their** per-email limit is reached** (not referring to the per-DA-User limit).
notify_on_autoupdate=1Notify admins on DirectAdmin auto updates.
notify_on_autopatch=0Notify admins on DirectAdmin auto updates (hotfixes).
notify_on_mass_emailing=1Notify admins of a mass emailing by user.
notify_reseller_on_mass_emailing=1Notify resellers of a mass emailing by his user.
notify_user_at_full_quota=1To send notification to user if his quota is full.
notify_user_on_mass_emailing=1Notify user on mass emailing.
ns1=ns1.hostname.comThe primary, default, Admin NameServers, values as set at Admin Level -> Admin Settings -> ns1.
ns2=ns2.hostname.comThe primary, default, Admin NameServers, values as set at Admin Level -> Admin Settings -> ns2.
numservers_waiting=2Number of directadmin processes started to wait for new incoming HTTP requests. It does not include the processes that are already processing a request. Total number of processes can be controlled with numservers parameter.
numservers=50Limits total number of directadmin processes dedicated for handling incoming HTTP requests. It includes both types or processes - waiting for new request to arrive and processes already processing a request.
one_click_pma_login=1Enables automatic login from the DirectAdmin UI into phpMyAdmin without having to know and enter the database password. Disabling this feature removes the links to phpMyAdmin from DirectAdmin UI.
one_click_webmail_link=/roundcubeThe single sign-on (SSO) tool for the URL path /roundcube can be changed via this option. So if you've got your /roundcube setup with /webmail, this lets you have the button within DA to redirect the specified link. More information in the documentation.
one_click_webmail_login=0A one-click login to RoundCube
one_click_webmail_timeout=10Ability to wait longer for the "One Click Login" webmail tool, in case there is two-factor authentication, or the login needs more time.
open_basedir=ONDefault values for safemode and open_basedir. Configured over Admin Level -> Php Safemode Config.
parse_php_mail_log_at_limit=1| Value | Comment |
|---|---|
| 0 | Disabled |
| 1 | To display a path to the script on the "E-Mail Usage" page in the User panel |
| 2 | To block the script with chmod 000. Further control can be achieved via the disable_php_script_at_limit_threshold and disable_php_script_at_limit_minimum values. |
Related: disable_php_script_at_limit_minimum | disable_php_script_at_limit_threshold
partition_usage_threshold=95If the usage of a given partition exceeds this threshold value, an email is sent to all admins. This email is only sent once per day if the usage is not reduced or settings changed (the message time history is stored in the admin.conf).
password_check_script=If non-empty, defines a script (or any binary) to be executed for checking password.
If script returns non-zero exit code, password is refused and output is reported to the user (both stdout and stderr).
Script is executed as diradmin user with the following environment variables:
| Environment variable | Value | Note |
|---|---|---|
password | Password to check | - |
language | language | - |
difficult_password_length_min | difficult_password_length_min | ⚠️ DEPRECATED: difficult_password_length_min is always checked before the script. |
random_password_length | 20 | ⚠️ DEPRECATED: passwords consisting of at least 20 symbols are always accepted. |
random_password_length_max | 20 | ⚠️ DEPRECATED: passwords consisting of at least 20 symbols are always accepted. |
special_characters_in_random_passwords | 0 | ⚠️ DEPRECATED. |
password_placeholder=XXXXXXXXXXA character to be used to replace visible password within DA panel.
Anytime the form is saved, either creation of a new cron, ftp listing update.. or modification of a cron, the existing back-end password will be loaded into DA internally, decrypted, and will replace the XXXX string with the actual value.
This should improve security, as the passwords are no longer saved in the html as plaintext.
You may change the value to something else other than X.
The reason for making a password_placeholder variable is in case someone actually wants to use a password value of XXXXXXXXX, they could then set password_placeholder=YYYYYYYYY for example. Of course, using XXXXXXXXX for a password is a terrible idea anyway, so don't do it.
php_fpm_max_children_default=10Ability to set default PHP-FPM max children limit../build rewrite_confs is required after the change for the setting to be applied.
php_fpm_restarts=0Option that controls how a PHP-FPM restart is performed. By default, it uses a graceful restart. If you're having issues with php-fpm not executing the above command properly for your system, you can set this value to 1, so that it calls a full "restart" for the php-fpmXX service(s).
php_home_tmp_session_save_path=1When enabled, the PHP configuration option session.save_path is set to be /home/{user}/tmp. This is the directory where temporary PHP session files will be saved.
Enabling this option improves the security of the system by providing better isolation of session data between different user accounts and ensures session data is not lost in a jailed environment.
If this configuration value is changed, web server configuration files need to be updated with the da build rewrite_confs command.
php_mail_log=1Option which** enables logging all calls to mail() function by PHP files** and stores results in the /home/username/.php/php-mail.log file. The log will be rotated by the tally.
The number of logs is the same as for Apache and set in: Admin Level -> Admin Settings -> Number of logs to keep.
php_mail_log_dir=This feature allows you to override the /home/user/.php PHP mail() log folder to use some other location, in the event your clients have a habit of deleting their logs, e.g.: php_mail_log_dir=|HOME|/.php, which would be the same as the default we already have now. If you add any string, even an empty value like php_mail_log_dir= this will be used (don't add an empty value).
php_version_selector=1Enables selecting different PHP versions from DirectAdmin user panel. The additional PHP versions should be installed separately .
pid_to_logs=0To control if the PID should be written to each log, which is useful to enable if you are trying to step through the logs while multiple processes are logging at the same time.
pigz=0If set to higher than 0 then DirectAdmin backup jobs will use pigz instead of gzip with tar. Actual value set (lets say 4) would mean to use that, about of cores (4 threads in our example). This speeds up the backup job.
plugin_max_hooks=16The number of default plugin tokens that will be set to "". Note that this never restricted the upper limit of plugins used, it did prevent the auto-filling of the blank plugin token values.. So if you had 20 tokens, and 8 plugins, the last 4 wouldn't be filled with "", and would end up showing "none".
plugins_allowed_run_as=1Ability to run plugin as other than logged-in user.
pop_disk_usage_cache=0Alternative to disabling pop usage is to generate a cache instead.
pop_disk_usage_dovecot_quota=0Use doveadm for faster email quota loads.
pop_disk_usage_true_bytes=0By default the E-Mail accounts page will show the usage of each account, in terms of how much disk space the account is using up: how many blocks are used.
This may cause confusion because quota reporting for dovecot uses the file's size, rather than block usage, so the two numbers could vary by a large degree. When you set it to 1 the E-Mail usage page will instead show the sum of the file sizes, rather than the block usage.
The "hover-over" pop-up will show the "other" size
port=2222Port Used for DirectAdmin to run on.
preserve_html_sequences=0Disabled by default, DirectAdmin will keep charsets as typed. Set it to 1 If you are using different charsets and want DirectAdmin to swap any typed occurrences of & with & so it gets displayed exactly as typed.
Such that message/ticket system will respect any html characters set in the file as long as they use the format:
&#xxxx;where xxxx is a string of 1 or more numbers 0-9.
⚠️ DEPRECATED: DirectAdmin 1.691
proxy_ip=You can set proxy_ip=1.2.3.4 into the directadmin.conf, and it will add that value: |PROXY_IP| available in the apache and nginx templates (including proxy). If you don't set it in the directadmin.conf, it will be set to the default |IP|.
If value is an ipv6, the token will be wrapped with square brackets, eg:
proxy_ip=::1 will load in the token: PROXY_IP=[::1]
purge_spam_days=0If you have Maildir, this option tells DA to remove all emails in the spambox and trash older than this number of days.
quota_partition=/homeThe value of the partition you want DA to use for user quotas.
Related: ext_quota_partitions
quota_update_interval=10Frequency a User is allowed to update his disk usage via the button. Real-time quotas are recommended to use for the disk-space usage.
Related: realtime_quota
ram_in_system_info=1To show a memory information on a System Information page. Set to 0 to hide.
realtime_quota=2Make use of the live system quotas to let Users see their usage in realtime.
| Value | Comment |
|---|---|
| 0 | Disable realtime quota, quota stats would be updated by dataskq |
| 1 | Use slow "quota -v username" calls to take quota value for user |
| 2 | Use kernel-level quotactl function calls. [RECOMMENDED] |
reload_apache_after_rotation=1Control if DA reloads web server after rotating log files.
If you do not wish to have the post-rotation reload, you can set:
reload_apache_after_rotation=0*** HOWEVER *** the HUP is sent for a reason.
This is used to re-open all rotated logs and bytes logs. So if apache/nginx does not get the HUP, you may have logging issues.
If needed, immediately after that HUP is sent, the hook script tally_rotation_post.sh is called if it exists. So if you disable the HUP, you can take any other desired actions with that script.
remote_dns_retries=0Number of retries by DA if the cluster sync fails.
remove_clipboard_on_logout=1If user logout from DirectAdmin the FileManager temporary file /home/user/.clipboard will be removed. If the client just closes his or her browser, the event will not be triggered.
removeip=/usr/local/directadmin/scripts/removeipA script used to remove server IP address.
renew_letsencrypt_on_suspended_domain=0Option to skip LetsEncrypt auto-renew if domain is suspended.
reseller_allocation_include_self=0Option for Reseller's own User limits to be included in their own allocation total.
reseller_backup_bandwidth=1Include Reseller backup bandwidth in their usage.
reseller_can_customize_config_json=1Allow resellers to customize or rebrand skins. If set to 0, resellers will not be able to change the design.
Note that this option does not prevent customizations within the Evolution skin's "Customize Evolution Skin" page.
This is a legacy setting applicable to Enhanced skin's "Skin Manager" page or by utilising /CMD_SKINS?action=edit_customization, /CMD_API_SKINS?action=edit_customization API endpoints.
reseller_can_reset_email_count=0The option that controls whether a Reseller has the ability to reset the sent email limit.
reseller_can_set_email_limit=0Option to allow Resellers to set a custom mail limit for their users.
reseller_helper=reseller.site-helper.comThe URL used as the help page for the Reseller panel.
Related: admin_helper | user_helper
reseller_warning_thresh=75A threshold of sent mails when email warning will be sent to reseller.
Related: send_usage_message
reserved_env_vars=PATH:SHELL:_:LD_LIBRARY_PATH:LD_PRELOAD:LD_DEBUG:LD_DEBUG_OUTPUT:LD_DYNAMIC_WEAK:LD_SHOW_AUXV:GETCONF_DIR:NLSPATH:NIS_PATH:IFS:LD_AUDIT:LD_AOUT_LIBRARY_PATH:LD_AOUT_PRELOAD:LD_ORIGIN_PATH:LD_PROFILE:GCONV_PATH:HOSTALIASES:LOCPATH:MALLOC_TRACE:RESOLV_HOST_CONF:RES_OPTIONS:TMPDIR:TZDIR:LD_USE_LOAD_BIAS:MALLOC_CHECK_:ORIGIN:LC_ALLrestart_apache_after_tally=1After a tally is run, Apache is restarted. Set this to 0 if you don't want it to restart.
⚠️ DEPRECATED: DirectAdmin 1.693
rotate_httpd_error_log_meg=0A size in megabytes when apache error_log for any domains will be rotated. Prevents webserver error logs from getting too large in a run-away case, variables that let the dataskq check the size of these logs, and rotate/truncate them if needed.
rotate_httpd_error_log_notify=3rotate_httpd_error_log_truncate=1Method to truncate error_log on rotation if rotate_httpd_error_log_meg was triggered. Value of 1 means truncation will create a new log 1/2 the size of the original (half of rotate_httpd_error_log_meg).
Truncating to a specific size requires:
rotation=1Enable rotation of apache logs.
safemode=OFFDefault values for safemode. Configured over Admin Level -> Php Safemode Config.
secure_access_group=accessA security permissions state where the group ownership of a home directory is set to this value, allowing only that group visible access to the folder and thus blocking other users. If variable changed the rewrite should be issued:
echo "action=rewrite&value=secure_access_group" >> /usr/local/directadmin/data/task.queueAnd related services should be restarted.
secure_disposal=/home/.disposalA directory used to process awstats temporary files under certain conditions.
securitylog=/var/log/directadmin/security.logA main DirectAdmin security log file.
send_usage_message=1Global switch which controls the sending of usage warning emails to users, resellers, and admins. Can be added to a given User's user.conf and/or a given Reseller's reseller.conf, which will override the global setting.
servername=web1.domain.comThe hostname of your system used by DirectAdmin. It should match the actual hostname of your system and must comply with mail system rules.
serverpath=/usr/local/directadminMain path for all DirectAdmin data. Don't change this unless you know what you're doing (you'd need a very good reason to do so).
session_minutes=60Number of minutes an inactive DirectAdmin session will remain logged in. After that time, the User must authenticate again. After every page load of DA, the counter resets to 0.
sessions_dir=/usr/local/directadmin/data/sessionsLocation on disk for DA login sessions.
set_php_bin_path_in_crons=1Ability to add the php binary path to cron PATH variable. Enabled by default. Can be disabled like so:
/usr/local/directadmin/directadmin set set_php_bin_path_in_crons 0
service directadmin restartYou can remove duplicate /usr/local/phpXX/bin entries from the crontab's PATH value by setting set_php_bin_path_in_crons=2. Eg, if you have:
crontab -u fred -l | grep PATH
PATH=/usr/local/php70/bin:/usr/local/php74/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/fred/binwhere there are 2 entries for php 7.0 and 7.4, you can clear out the 2nd entry, regardless of the version set, by setting set_php_bin_path_in_crons=2, and issuing a rewrite:
cd /usr/local/directadmin
echo "action=rewrite&value=httpd&user=fred" > data/task.queue.cb; ./dataskq d1000 --custombuildand it will reduce the path in the crontab to the following:
PATH=/usr/local/php70/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/fred/binIf you need to do this for all accounts, issue the aforementioned command without &user=fred.
NOTE: This setting should only be used temporarily, and we would recommend setting it back to 1 once you're done clearing any duplicates.
set_php_bin_path_in_shell=1Ability to add the php binary path to PATH variable in .bash_profile. Enabled by default. Can be disabled like so:
/usr/local/directadmin/directadmin set set_php_bin_path_in_shell 0
service directadmin restartset_php_ini_scan_dir_in_crons=0Ability to add PHP_INI_SCAN_DIR for per-User php.ini in cronjobs.
show_all_users_cache_extra_vars=date_createdAbility to add extra variable columns to Show All Users or List Users pages. More fields could be added like: "date_created:mysql" . Be sure to force a cache update with:
cd /usr/local/directadmin
echo "action=cache&value=showallusers" >> /usr/local/directadmin/data/task.queue; ./dataskq d2000BEHAVIOR
When adding a variable to the show_all_users_cache_extra_vars list, how it's shown depends on if it's in the user.conf, user.usage, or both.
If it's only in one or the other, then that value is simply taken from the given file and place into the cache.
If the variable is in BOTH user.conf and user.usage files, then the value is stored in the show_all_users.cache with the usage/limit format, eg:
mysql=1 / unlimitedshow_custom_script_path=1Ability to hide "Script Output /path/to/script.sh" for custom scripts if set to 0. If you have custom scripts in /usr/local/directadmin/scripts/custom/*.sh on non-zero result, before echoing your echo'd data they will usually display:
Script Output: /usr/local/directadmin/scripts/custom/script_name.shThis is typically done to avoid confusion as to what's throwing the error. But if you're fully aware of it, and are sure you're echoing data on non-zero output, then you should be able to use this.
show_info_in_title=1Ability to hide DirectAdmin version title for logged-in users.
show_main_spambox=1Ability to hide the main spam folder, e.g. /home/user/Maildir/.INBOX.spam/new/ from the skin.
By default, there are 4 choices as to where to redirect spam messages to.
The "Main imap spambox" option, aka "Redirect it to the catch-all spam folder in your main imap account."
show_php_version=1To control if the PHP version will be shown on the System Information page.
show_pointers_in_list=1Option that shows domain pointers on the "List Users" and "Show All Users" pages.
simple_disk_usage=0For systems where disk access needs to be kept to a minimum, enabling this option relies only on the system quotas. Stats will not be completely correct as a result (tally will not do manual directory traversing for usage).
skin_domain_redirect=1Ability to disable the User Level domain redirect on Enhanced skin.
skinsdir=./data/skinsLocation where the skins are to be found.
skip_databases_in_backups=0Enabling this option will exclude databases from all backups. This will skip everything, including DB settings, DB Users, and the sql data for the databases themselves.
skip_domains_in_backups=0To be selective with backup data, this will skip /home/user/domains for all Users. You'd really only use this if you have other means, like rsync, for backing up that data. Handy if you just want to restore the User with all of his settings, but without his web data.
skip_ftp_on_backup_fail=0Option to skip uploading backup to ftp if some portion of the .tar.gz was created incorrectly. Set to 1 if you do not want to upload incomplete backups. This only works if incremental_ftp is set to 1.
skip_hometargz_in_backups=0To speed up the User backup process, one may enable this to skip the home.tar.gz file, which omits some email data amongst other things.
skip_imap_in_backups=0Similar to skip_domains_in_backups, when this option is enabled, it will skip the folder: /home/user/imap when generating backups. Enabling this will only skip the email data itself (email messages), but does not skip the email accounts/passwords.
skip_roundcube_in_backups=0The option that controls the ability to skip roundcube webmail client settings when backups are generated.
skip_trash_in_backups=0The option that controls the ability to skip the File Manager trash folder when backups are generated.
skip_uebimiau_in_backups=0The option that controls the ability to skip uebimiau webmail client settings when backups are generated.
spam_inbox_prefix=1Ability to set Spam folder from INBOX.spam to Junk.
spam_inbox_prefix_name=INBOX.spamAbility to set a new value for INBOX.spam in the directadmin.conf. It's only used when spam_inbox_prefix=1 is set, which is when INBOX.spam applied.
Simply swaps all INBOX.spam strings with the new value.
special_exit_code=42Forcefully display hook output, even when no errors occur.
You can diable the feature by setting it to 0, eg:
./directadmin set special_exit_code 0
service directadmin restartList of supported hooks:
sshdconfig=/etc/ssh/sshd_configPath to the sshd_config. Will rarely be changed. One case where you might change it is to set a placebo file for DA.
ssl=1Turn on/off SSL for DirectAdmin panel.
strict_backup_permissions=1Enabled by default - the backup process will go through all data in /home/username/domains and will do check to see which ones the username (DA account) cannot read. A second data list is created backup/non_readable_files.list which is used as '--exclude-from' tar key.
Related option:
add_non_readable_files_to_strict_backup=1The option is used by backup process to actually copy these files to a new data location non_readable_files which sits next to "backup" and "domains" at the top level.
If any file is chmod to 0, when the file is copied, it will be set to 600 (directories to 700).. as the backup needs this as a minimum to read the file as a non-root backup. The restore will not reset these files/folders to chmod 0. They'll be left as 600 (700 for dirs).
Since this feature copies files to a 2nd location before backup, significant amounts of disk usage will be used if the files being backed up (eg: apache owned files) are not readable by the User.
This related option will use the same tree parsing:
backup_apache_files_list=1so either add_non_readable_files_to_strict_backup or backup_apache_files_list will cause a full /home/user/domains directory traversal.
Related: add_non_readable_files_to_strict_backup | backup_apache_files_list
subdomain_force_redirect=0Relating to the User Level feature that allows forcing domain.com » to www.domain.com (or vice versa), this option excludes subdomains from this redirection since we rarely intend for the redirection to affect subdomains. For example, the following is rarely desired:
sub.domain.com » www.sub.domain.comSo, with subdomain_force_redirect=0, any www or non-www redirection for domains or pointers will no longer affect subdomains (where a subdomain in this context is one that is created under a domain, and not subdomains created as "full domains").
If you do need subdomains to redirect to www, then enable the setting globally:
/usr/local/directadmin/directadmin set subdomain_force_redirect 1
service directadmin restartAnd the next rewrite of the User httpd.conf (or other server User config) will be updated with the change.
To update all User configs, type:
/usr/local/directadmin/custombuild/build rewrite_confssuspend_reseller_on_overuse=1Suspend a Reseller and their Users when the Reseller goes over their Bandwidth limit.
sysbk_conf=/usr/local/sysbk/conf.sysbkConfig file for the "sysbk" script (Admin Level -> System Backup).
systemlog=/var/log/directadmin/system.logA path to main system.log file.
system_user_to_virtual_passwd=0Include the system account in the virtual passwd file at /etc/virtual/domain.com/passwd so you can login with systemuser@domain.com and Dovecot LMTP would be used for delivery (supports compression, Sieve filters).
After changing this value please execute:
echo “action=rewrite&value=email_passwd” >> /usr/local/directadmin/data/task.queue
echo “action=rewrite&value=email_aliases” >> /usr/local/directadmin/data/task.queuetable_case_sensitive_search=1Ability to perform case sensitive search in table class inside DirectAdmin.
This can be useful if you might have a filename or some value in a table cell that shouldn't be case sensitively matched. Or to fight with mobile phones that decide upper case is always the best, when: autocapitalize='none' has not been added to the input field.
You can also add the following flag to any table search/sort (including "starts with", "contains" or the "equals" options)
&case_sensitive_search=1or
&case_sensitive_search=0to override whatever might be set in the directadmin.conf.
Because we do not want to affect searching performance of the table class, we've implemented this using function pointers. Case sensitivity choice is known ahead of time, so the function pointer for the actual string comparison is set once, and the function pointer is called directly per comparison. This is as opposed to the slower method which would need an "if" statement check on the choice for every cell/search, which would be slower ("in theory").
table_default_ipp=50Ability set default items per page in tables. skin.conf option default_ipp=20 overrides this setting.
table_highlighting=1Enables the highlighting table row when you hover the mouse over it (changes to a darker background, to more easily track which value you're about to select).
tally_after_restore=2If you wish to not run the tally after you restore data, set to this to 0. This will lower your CPU time, but make your usage stats out of sync until the next tally.
If you do want to run the tally, but want to get the restore message before the tally, you can now use tally_after_restore=2 . The only "downside" is the slight lag in stats being updated, though they will be updated after the tally finishes (which time can vary depending on the amount of data to be processed).
Which will call a tally for that Reseller to the task.queue (to be run later), so the result message will arrive much more quickly.
To run the tally immediately following any restore, seet this to 1. Note that the notice about the restore being successful doesn't get sent out until after the tally finishes (in the same thread).
taskqueue=/usr/local/directadmin/data/task.queueLocation of the task.queue file used for background tasks run by the dataskq. You'll probably never change this.
templates=/usr/local/directadmin/data/templatesLocation on disk for all templates.
ticketsdir=/usr/local/directadmin/data/ticketsLocation where the tickets and messages for the internal messaging system live.
timeout=60Number of seconds a DirectAdmin process is allowed to run before generating a timeout signal and aborting. Note that some of the more time-consuming processes use a multiplier on this value.
tls_min_version=tls12Controls minimum allowed TLS version for HTTPS connections. Valid values include tls12 (default) or tls13.
TLS 1.2 is configured to only use strong cipher suites:
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHATLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHATLS_ECDHE_RSA_WITH_AES_256_CBC_SHATLS_RSA_WITH_AES_128_GCM_SHA256TLS_RSA_WITH_AES_256_GCM_SHA384TLS_RSA_WITH_AES_128_CBC_SHATLS_RSA_WITH_AES_256_CBC_SHABut for even stronger security, TLS 1.3 can be used.
tmpdir=/home/tmpLocation for temporary data.
tokenizer_clear_env=1When set to the default (1), the Tokenizer will wipe the environment before adding new values, but then restore it afterwards. So the env vars from before the tokenizer runs a script, will be restored after the script is done.
You can set this value to 0 if desired, though the only benefit is to pass any pre-script env vars to the script (aside from anything that is set/ovewritten for the script, as before, which will still be set).
track_task_queue_processes=1Ability to track backup progress.
| Value | Comment |
|---|---|
| 0 | Disable task queue tracking |
| 1 | Enable simple task queue tracking |
| 2 | Verbose task queue tracking |
twostep_auth=1twostep_auth_trust_days=30Number of days to trust device after two step authentication done.
unblock_brute_ip_time=2880A number of minutes after which the IP is automatically unblocked by Brute Force Monitoring.
user_action_locking=30A number of minutes the actions on the account are prohibited after the backup process starts. Locks the entire account to prevent races between account creation, deletion, and backups.
Related: user_action_locking
user_area_locking=60A number of minutes the actions by the account are prohibited to prevent race conditions for specific features.
Related: user_area_locking
user_backups_disk_threshold=90Allow users to create backups only when their disk usage is lower than the threshold.
user_brutecount=30The BruteForceMonitor can scan how many times a specific IP attacks a server, but also how many times a specific User is attacked from any IP. Sometimes the Admin might not want to bother with the number of attacks on a specific User, so you can set the option user_brutecount=0 to 0, which will disable DA's count on specific Users. Setting to 0 will likely improve the loading time of the Brute Force Monitor page.
user_can_select_skin=0If set to 1 then users will be able to pick whatever skin they want.
user_can_set_email_limit=1Enabled by default. When enabled users will be able to set send email limit via the interface. Note that regardless of the limit set, all email account sends are still limited by the DA-User limit, one of /etc/virtual/limit or /etc/virtual/limit_username .
If user_can_set_email_limit=1 is set, then on the "E-Mail Accounts" page, you'll see a new column called Sent which will show the number of emails sent today. If a limit is set for that User, the limit is then displayed, eg: 2 / 5 . If no per-email limit is set, but a global per-email is set in /etc/virtual/user_limit file then that limit will be shown, eg 2 / 50 . If no limit is set... and no user_limit is set, then no limit will be shown, eg: 2 . Feature will save send/limit into the usage.cache, if that feature is enabled.
user_dnssec_control=0Ability to make "Generate Keys" and "Sign" buttons visible in DirectAdmin panel for users for DNSSEC records.
user_email_quota_max=0Ability to set maximum value for email quotas.
user_email_smtp_logs=1Option to disable User access to per-email smtp logs. Value of 2 enables the use of exigrep to parse the logs.
user_helper=www.site-helper.comA URL used for help button in user panel.
Related: admin_helper | user_helper
update_channel=currentUsed to change what channel to receive updates from (current, stable, alpha)
users_can_add_remove_domains=0Option to control whether users can add or remove domains.
| Value | Comment |
|---|---|
| 0 | Allows deleting and removing domains by users |
| 1 | Allows only adding domains by user (no delete) |
| 2 | Block ability to add or delete domain |
Can be overridden via the user.conf file.
users_can_rename_domains=1Allow renaming of domains from user panel.
user_warning_thresh=80The threshold on bandwidth when user will be notified.
user_warning_thresh_disk=95The threshold on disk usage when user will be notified.
user_warning_thresh_inode=95Option to control of when user will be notified on inode usage.
⚠️ DEPRECATED: DirectAdmin 1.693
use_uid_counting=1To **prevent ever reusing the same uid/gid **again. The DirectAdmin manages 2 files /usr/local/directadmin/data/admin/high_uid.number and high_gid.number which contains the last highest uid/gid values created through DA. Upon creating new user, DA will check those files as well as the /etc/passwd and /etc/group, and check to see what the current high uid/gid values are, and use that value+1 for the next User. If your system is doing a lot of adding/removing of users you may allow reusing same uid/gid setting the value to 0.
utf8_encode_from_to=0UTF-8 Encoded To/From/Reply-To fields in DA emails.
utf8_encode_subject=0Ability to automatically encode subjects to UTF-8 for emails generated by DA.
webalizer=0To enable webalizer statistics.
webapps_ssl=1Option to control whether web applications (webmail, phpmyadmin) are forced to use SSL. Default is taken from the setting ssl=0|1 in the directadmin.conf. Can be overridden via config files or .htaccess.
webmail_backup_is_email_data=1Is used to include webmail data if the 'email_data' backup checkbox was selected. This could be disabled by setting to 0 for cases where you want your RoundCube database backed up and restored, but want to exclude email Maildir data, as Maildir can be easily transferred with rsync.
webmail_link=roundcubeAbility to change the webmail links and webmail button.
wrap_long_dns_values=1Long records, like DKIM TXT records are broken into multiple shorter lines for cleaner viewing.
x_forwarded_from_ip=Set X-Forwarded-For header for proxy or load balancers accessing DirectAdmin.
x_frame_options=sameoriginAdds HTTP header to all iframe requests in DirectAdmin: X-Frame-Options: sameorigin.
xfs_on_domains=0Disable if you don't want quotas enabled for your domains. When enabled, this will create a project called domain.com with the path /home/user/domains/domain.com and the xfs system will limit the files uploaded to that location for any file ownership, including apache/root as per the limit specified by the User on that domain at: User Level -> Domain Setup -> domain.com.
This is useful for cases where:
⚠️ DEPRECATED: DirectAdmin 1.688
zip=1Ability to zip and unzip files in the File Manager.
⚠️ DEPRECATED: DirectAdmin 1.688
zip_bin=If the values are set to null (aka: not in the directadmin.conf at all), then DA will look for /usr/bin/zip else /usr/local/bin/zip to use for compression.
The purpose of this is to allow an override if in case you need to add a wrapper to unzip, in such cases as extraction of UTF-8 files, eg:
unzip_bin=/usr/bin/unzip2With unzip2 containing:
#!/bin/bash
export LANG=en_US.UTF-8
exec /usr/bin/unzip $@
exit $?zstd=1Allows zstd compression for backups.