Skip to content

Settings Reference

Every setting in config/settings.defaults.php as of Poweradmin 4.5.0, with its shipped default. This page is generated from the source file, so it is complete by construction - but it is an index, not an explanation. The pages under Configuration describe what these settings actually do and when to change them.

Override any of them in config/settings.php; see Basic Configuration.

api

Setting Default Description Added in
api.enabled false Enable API functionality (including API keys) -
api.basic_auth_enabled false Enable HTTP Basic Authentication for public API endpoints -
api.basic_auth_realm 'Poweradmin API' Realm name for HTTP Basic Authentication -
api.docs_enabled false Enable API documentation at /api/docs endpoint -
api.max_keys_per_user 5 Maximum number of API keys per user (admin users have no limit) -

database

Setting Default Description Added in
database.host 'localhost' - -
database.port '' - -
database.user 'poweradmin' - -
database.password 'your_password' AVOID: quotes, backslashes, line breaks -
database.name 'powerdns' - -
database.type 'mysql' Options: 'mysql', 'pgsql', 'sqlite' (mysqli added in 2.1.5, sqlite in 2.1.6) -
database.charset 'latin1' or 'utf8' 2.1.8
database.file '' Only used for SQLite, provide full path to database file 2.1.6
database.debug false Show all SQL queries 2.1.6
database.pdns_db_name '' Separate database for PowerDNS 3.8.0
database.ssl false Enable SSL/TLS connection -
database.ssl_verify false Verify server SSL certificate (requires ssl=true) -
database.ssl_ca '' Path to CA certificate file for server verification -
database.ssl_key '' Path to client private key file (for client certificate auth) -
database.ssl_cert '' Path to client certificate file (for client certificate auth) -

dns

Setting Default Description Added in
dns.backend 'sql' DNS data backend: 'sql' (default, direct database) or 'api' (PowerDNS REST API, experimental) 4.3.0
dns.hostmaster 'hostmaster.example.com' Default hostmaster email address -
dns.ns1 'ns1.example.com' - -
dns.ns2 'ns2.example.com' - -
dns.ns3 '' - -
dns.ns4 '' - -
dns.ttl 86400 Default TTL for new records (86400 = 24 hours) -
dns.ttl_reverse null Default TTL for PTR records in reverse zones; null falls back to dns.ttl 4.4.0
dns.soa_refresh 28800 8 hours -
dns.soa_retry 7200 2 hours -
dns.soa_expire 604800 1 week -
dns.soa_minimum 86400 24 hours (SOA settings added in 2.2.3) -
dns.soa_edit '' SOA-EDIT metadata for new zones, e.g. 'INCEPTION-INCREMENT'; empty = not set 4.5.0
dns.soa_edit_api '' SOA-EDIT-API metadata for new zones, e.g. 'EPOCH'; 'OFF' disables, empty = server default 4.5.0
dns.soa_edit_api_options null SOA-EDIT-API values offered in the add-zone selector and metadata editor; null = all, [] hides them 4.5.0
dns.soa_edit_options null SOA-EDIT values offered in the metadata editor; null = all, [] hides the kind 4.5.0
dns.zone_type_default 'MASTER' Options: 'MASTER', 'NATIVE' 2.1.9
dns.default_zone_template null Pre-selected template on the add-zone form. Template id (int) or name (string); null for "none" 4.4.0
dns.zone_ownership_mode 'both' Options: 'both', 'users_only', 'groups_only' 4.4.0
dns.sync_zone_owner_to_account false Mirror the oldest zone owner's username into the PowerDNS account field on ownership changes 4.4.0
dns.strict_tld_check false Strict validation of TLDs -
dns.top_level_tld_check false Prevent creation of top-level domains 2.1.7
dns.third_level_check false Prevent creation of third-level domains 2.1.7
dns.parent_zone_ownership_check true Block creating a zone that overlaps an existing zone (forward or reverse) owned by another user 4.5.0
dns.txt_auto_quote false Automatically quote TXT records 3.9.2
dns.prevent_duplicate_ptr true Prevent creation of multiple PTR records for same IP in batch operations 4.0.0
dns.custom_tlds [] Whitelist of non-IANA TLDs allowed in hostnames and CNAME targets when strict_tld_check is on (e.g., ['lan', 'corp', 'dn42']) -
dns.domain_record_types null Uses default domain zone record types -
dns.reverse_record_types null Uses default reverse zone record types -
dns.top_record_types null null = alphabetical only -

dnssec

Setting Default Description Added in
dnssec.enabled false Enable DNSSEC functionality 2.1.7
dnssec.debug false Enable DNSSEC debug logging 2.1.9

health

Setting Default Description Added in
health.enabled false Enable unauthenticated health endpoint at /api/health 4.5.0
health.ping_enabled false Enable unauthenticated liveness endpoint at /ping 4.5.0
health.db_timeout 2 Database connect timeout in seconds used by the health check 4.5.0
health.pdns_timeout 2 PowerDNS API timeout in seconds used by the health check 4.5.0

interface

Setting Default Description Added in
interface.language 'en_EN' Default language for the interface -
interface.enabled_languages 'ar_SA,bg_BG,bs_BA,cs_CZ,da_DK,de_DE,el_GR,en_EN,es_ES,et_EE,fa_IR,fi_FI,fr_FR,ga_IE,he_IL,hi_IN,hr_HR,hu_HU,id_ID,it_IT,ja_JP,ko_KR,lt_LT,lv_LV,ms_MY,nb_NO,nl_NL,pl_PL,pt_BR,pt_PT,ro_RO,ru_RU,sk_SK,sl_SI,sq_AL,sr_RS,sv_SE,th_TH,tr_TR,uk_UA,vi_VN,zh_CN,zh_TW' Added in 3.8.0 -
interface.title 'Poweradmin' Application title (browser tab and header logo). Useful for distinguishing multiple server instances 2.1.5
interface.session_timeout 1800 Session timeout in seconds (30 minutes) -
interface.rows_per_page 10 - -
interface.theme 'default' Theme name to use (default, custom, etc.) 4.0.0
interface.style 'light' UI Style options: 'light', 'dark' 4.0.0
interface.theme_base_path 'templates' Base path for theme templates 4.0.0
interface.favicon_path '' Custom favicon path or URL; empty uses the bundled favicon.ico 4.4.0
interface.logo_path '' Custom header logo path or URL; empty uses the bundled assets/logo.png 4.4.0
interface.base_url_prefix '' Base URL prefix for deployments (default: '', subdirectory example: '/poweradmin') 4.1.0
interface.application_url '' Full application URL for emails and absolute links - required for password reset, OIDC and SAML (example: 'https://dns.example.com/poweradmin') 4.1.0
interface.web_enabled true Serve the web interface; false runs API-only (headless) - see the Headless Quickstart 4.5.0
interface.show_record_id false Show record ID column in edit mode 3.9.0
interface.show_add_record_form false Show or hide add record form 4.1.0
interface.show_record_edit_button false Show individual edit button per record 4.1.0
interface.show_record_delete_button false Show individual delete button per record 4.1.0
interface.position_record_form_top true Position the "Add record" form at the top of the page 3.9.0
interface.position_save_button_top false Position the "Save changes" button at the top of the page 3.9.0
interface.show_zone_comments true Show or hide zone comments 2.2.3
interface.show_record_comments false Show or hide record comments 3.9.0
interface.display_serial_in_zone_list false - -
interface.display_signed_serial_in_zone_list false Show serial served by PowerDNS (SOA-EDIT applied); requires API backend 4.5.0
interface.display_template_in_zone_list false - -
interface.display_owner_in_zone_list true Show owner column in zone lists 4.5.0
interface.display_group_in_zone_list true Show group column in zone lists 4.5.0
interface.show_zone_record_count true Show record count column in zone lists 4.5.0
interface.display_fullname_in_zone_list false Show user's full name instead of username in zone lists 4.0.0
interface.search_group_records false Group records by name and content in search results 3.8.0
interface.reverse_zone_sort 'natural' Reverse zone sorting algorithm: 'natural' (default) or 'hierarchical' (experimental) 4.0.0
interface.show_pdns_status false Show PowerDNS server status page and dashboard card 4.0.0
interface.show_dashboard_stats true Show zone, record, user, and group counts on dashboard 4.3.0
interface.show_forward_zone_associations true Show associated forward zones in reverse zone list 4.0.5
interface.wide_layout false Use full browser width instead of a fixed-width page 4.5.0
interface.add_reverse_record true Enable checkbox to add PTR record from regular zone view 2.1.7
interface.add_domain_record true Enable checkbox to add A/AAAA record from reverse zone view -
interface.display_hostname_only false Display only hostname part in zone edit form (strips zone suffix) 4.0.0
interface.enable_consistency_checks false Enable database consistency checks page 4.0.0
interface.avatar_oauth_enabled false Enable OAuth provider avatar images (default: false) -
interface.avatar_gravatar_enabled false Enable Gravatar integration (default: false) -
interface.avatar_priority 'oauth' Avatar priority when both enabled: 'oauth' or 'gravatar' -
interface.avatar_size 40 Default avatar size in pixels -

ldap

Setting Default Description Added in
ldap.enabled false Enable LDAP authentication 2.1.7
ldap.debug false Enable LDAP debug logging 2.1.7
ldap.uri 'ldap://domaincontroller.example.com' LDAP server URI 2.1.7
ldap.base_dn 'ou=users,dc=example,dc=com' Base DN where users are stored 2.1.7
ldap.bind_dn 'cn=admin,dc=example,dc=com' Bind DN for LDAP authentication 2.1.7
ldap.bind_password 'some_password' AVOID: quotes, backslashes, line breaks -
ldap.user_attribute 'uid' User attribute (uid for OpenLDAP, sAMAccountName for Active Directory) 2.1.7
ldap.protocol_version 3 LDAP protocol version 2.1.7
ldap.search_filter '' Additional search filter 2.1.7
ldap.sync_user_info false Sync fullname/email from LDAP on every login 4.5.0
ldap.fullname_attribute 'displayName' LDAP attribute for full name (displayName for AD, cn for OpenLDAP) 4.5.0
ldap.email_attribute 'mail' LDAP attribute for email address 4.5.0
ldap.auto_provision false Create missing users on first successful LDAP login 4.5.0
ldap.allow_superuser_provisioning false Let LDAP mappings grant user_is_ueberuser 4.5.0
ldap.default_permission_template 'Guest' Template for auto-provisioned users when no mapping matches 4.5.0
ldap.groups_attribute 'memberOf' LDAP attribute holding group memberships 4.5.0
ldap.permission_template_mapping [] - -
ldap.group_mapping [] - -
ldap.session_cache_timeout 300 Session cache timeout in seconds (5 minutes). Set to 0 to disable caching 4.1.0

logging

Setting Default Description Added in
logging.type 'null' Options: 'null' (disabled), 'native' (PHP error_log) 3.9.0
logging.level 'info' Options: 'debug', 'info', 'notice', 'warning', 'error', 'critical', 'alert', 'emergency' 3.9.0
logging.database_enabled false Write audit events to database log tables (log_users, log_zones, log_groups, log_record_changes) 3.2.0
logging.require_change_comment false Require a reason for bulk record changes 4.5.0
logging.api_request_logging false Log every public API request; permission violations (401/403) are logged regardless 4.5.0
logging.api_log_retention_days 0 Days to keep API log rows; 0 = keep forever 4.5.0
logging.syslog_enabled false Write audit events to syslog 2.1.6
logging.syslog_identity 'poweradmin' Syslog identity 2.1.6
logging.syslog_facility LOG_USER Syslog facility 2.1.6

mail

Setting Default Description Added in
mail.enabled true Enable email functionality -
mail.from 'poweradmin@example.com' Default "from" address -
mail.from_name '' Default "from" name -
mail.return_path 'poweradmin@example.com' Default "Return-Path" address -
mail.transport 'php' Transport method: smtp, sendmail, php, or logger -
mail.host 'smtp.example.com' SMTP server hostname -
mail.port 587 SMTP server port -
mail.username '' SMTP authentication username -
mail.password '' SMTP password - AVOID: quotes, backslashes, line breaks -
mail.encryption 'tls' Options: 'tls', 'ssl', '' -
mail.auth false Whether SMTP requires authentication -
mail.sendmail_path '/usr/sbin/sendmail -t -i' Sendmail binary; -t reads recipients from headers (-bs is SMTP mode and drops piped messages) -

misc

Setting Default Description Added in
misc.display_stats false Display memory usage and execution time -
misc.timezone 'UTC' Default timezone (e.g. 'Europe/Berlin', 'Asia/Shanghai') -
misc.record_comments_sync false Enable bidirectional comment sync between A and PTR records 3.9.0
misc.edit_conflict_resolution 'last_writer_wins' Options: 'last_writer_wins', 'only_latest_version', '3_way_merge' -
misc.display_errors false Display PHP errors (false for production) 4.0.0
misc.show_generated_passwords true Show generated passwords on user creation 4.0.0
misc.template_cache false Cache compiled templates on disk for faster rendering 4.5.0
misc.template_cache_path '' Compiled template directory; empty means var/cache/twig 4.5.0

modules

Setting Default Description Added in
modules.csv_export.enabled true - -
modules.zone_import_export.enabled false - -
modules.zone_import_export.auto_ttl_value 300 - -
modules.zone_import_export.max_file_size 1048576 - -
modules.whois.enabled false - -
modules.whois.default_server '' - -
modules.whois.custom_servers [] - -
modules.whois.socket_timeout 10 - -
modules.whois.restrict_to_admin true - -
modules.rdap.enabled false - -
modules.rdap.default_server '' - -
modules.rdap.custom_servers [] - -
modules.rdap.request_timeout 10 - -
modules.rdap.restrict_to_admin true - -
modules.email_previews.enabled false - -
modules.email_previews.restrict_to_admin true - -
modules.dns_wizards.enabled false - -
modules.dns_wizards.available_types ['DMARC', 'SPF', 'DKIM', 'CAA', 'TLSA', 'SRV'] - -
modules.dns_wizards.caa_providers.letsencrypt.org "Let's Encrypt" - -
modules.dns_wizards.caa_providers.digicert.com 'DigiCert' - -
modules.dns_wizards.caa_providers.sectigo.com 'Sectigo (Comodo)' - -
modules.dns_wizards.caa_providers.comodoca.com 'Sectigo (legacy domain)' - -
modules.dns_wizards.caa_providers.awstrust.com 'Amazon Trust Services' - -
modules.dns_wizards.caa_providers.amazontrust.com 'Amazon Trust Services (alt)' - -
modules.dns_wizards.caa_providers.amazonaws.com 'AWS Certificate Manager' - -
modules.dns_wizards.caa_providers.pki.goog 'Google Trust Services' - -
modules.dns_wizards.caa_providers.cloudflare.com 'Cloudflare' - -
modules.dns_wizards.caa_providers.godaddy.com 'GoDaddy' - -
modules.dns_wizards.caa_providers.globalsign.com 'GlobalSign' - -
modules.dns_wizards.caa_providers.entrust.com 'Entrust' - -
modules.dns_wizards.caa_providers.entrust.net 'Entrust (legacy)' - -
modules.dns_wizards.caa_providers.ssl.com 'SSL.com' - -
modules.dns_wizards.caa_providers.buypass.com 'Buypass' - -
modules.dns_wizards.caa_providers.usertrust.com 'USERTrust (Sectigo)' - -
modules.dns_wizards.caa_providers.; 'Disallow all CAs (no issuance permitted)' - -
modules.secondary_zone_import.enabled false Import a zone from a live primary over AXFR (API backend only) -

notifications

Setting Default Description Added in
notifications.zone_access_enabled false Enable/disable zone access change notifications -

oidc

Setting Default Description Added in
oidc.enabled false Enable OIDC authentication -
oidc.auto_provision true Automatically create user accounts from OIDC -
true Link OIDC accounts to existing users by email -
oidc.allow_superuser_provisioning false Let OIDC mappings grant user_is_ueberuser 4.5.0
oidc.sync_user_info true Sync user information (name, email) from OIDC provider -
oidc.default_permission_template 'Guest' Default permission template for new OIDC users (minimal access until assigned proper role) -
oidc.permission_template_mapping [] - -
oidc.group_mapping [] - -
oidc.providers [] - -

pdns_api

Setting Default Description Added in
pdns_api.display_name 'PowerDNS' PowerDNS name to identify server -
pdns_api.url '' PowerDNS API URL, e.g., 'http://127.0.0.1:8081' 3.7.0
pdns_api.key '' PowerDNS API key 3.7.0
pdns_api.server_name 'localhost' PowerDNS server name used in API calls 4.0.0
pdns_api.timeout 10 PowerDNS API request timeout in seconds 4.4.0
pdns_api.webserver_username '' PowerDNS webserver Basic Auth username (usually '#') 4.0.3
pdns_api.webserver_password '' PowerDNS webserver Basic Auth password (for /metrics endpoint) 4.0.3

permissions

Setting Default Description Added in
permissions.show_user_access_templates true Show per-user permission template assignment 4.3.0
permissions.show_group_access_templates true Show group-based permission template management 4.3.0

saml

Setting Default Description Added in
saml.enabled false Enable SAML authentication -
saml.auto_provision true Automatically create user accounts from SAML -
true Link SAML accounts to existing users by email -
saml.allow_superuser_provisioning false Let SAML mappings grant user_is_ueberuser 4.5.0
saml.sync_user_info true Sync user information (name, email) from SAML provider -
saml.default_permission_template 'Guest' Default permission template for new SAML users (minimal access until assigned proper role) -
saml.permission_template_mapping [] - -
saml.group_mapping [] - -
saml.sp.entity_id '' SP Entity ID (usually your PowerAdmin URL) -
saml.sp.assertion_consumer_service_url '' ACS URL (leave empty for auto-generation) -
saml.sp.single_logout_service_url '' SLO URL (leave empty for auto-generation) -
saml.sp.name_id_format 'urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress' - -
saml.sp.x509cert '' SP X.509 Certificate (optional, for signing requests) -
saml.sp.private_key '' SP Private Key (optional, for signing requests) -
saml.providers [] - -

security

Setting Default Description Added in
security.session_key 'change_this_key' IMPORTANT: Change this to a unique random string (default was p0w3r4dm1n, added in 2.1.6) -
security.password_encryption 'bcrypt' Options: 'bcrypt', 'argon2i', 'argon2id' (md5 and md5salt removed in 4.3.0) -
security.password_cost 12 Cost factor for bcrypt 2.1.8
security.login_token_validation true Enable token validation for login form 3.9.0
security.global_token_validation true Enable token validation for all forms 3.9.0
security.trusted_proxies [] Reverse proxy IPs/CIDRs/wildcards allowed to set X-Forwarded-For/X-Real-IP; private/loopback peers are always trusted 4.5.0
security.password_policy.enable_password_rules true Enable password policy enforcement -
security.password_policy.min_length 6 Minimum password length -
security.password_policy.require_uppercase true Require at least one uppercase letter -
security.password_policy.require_lowercase true Require at least one lowercase letter -
security.password_policy.require_numbers true Require at least one number -
security.password_policy.require_special false Require at least one special character -
security.password_policy.special_characters '!@#$%^&*()+-=[]{}|;:,.<>?' Allowed special characters -
security.account_lockout.enable_lockout false Enable account lockout after failed login attempts -
security.account_lockout.lockout_attempts 5 Number of attempts before lockout -
security.account_lockout.lockout_duration 15 Duration in minutes -
security.account_lockout.track_ip_address true Lock accounts based on IP address -
security.account_lockout.clear_attempts_on_success true Clear failed attempts after successful login -
security.account_lockout.whitelist_ip_addresses [] IP addresses to never lock out (supports IPs, CIDRs, wildcards) - takes priority over blacklist -
security.account_lockout.blacklist_ip_addresses [] IP addresses to always block (supports IPs, CIDRs, wildcards) -
security.mfa.enabled false Enable MFA functionality -
security.mfa.enforced false Enable MFA enforcement (requires user_enforce_mfa permission) -
security.mfa.skip_for_external_auth false Skip MFA enforcement for LDAP/OIDC/SAML logins - the IdP is trusted to enforce MFA 4.5.0
security.mfa.app_enabled true Enable authenticator app option -
security.mfa.email_enabled true Enable email verification option -
security.mfa.recovery_codes 8 Number of recovery codes to generate -
security.mfa.recovery_code_length 10 Length of recovery codes -
security.mfa.max_verify_attempts 5 Failed second-factor guesses before the code is refused 4.5.0
security.mfa.verify_lockout_duration 15 Minutes to refuse further attempts once the limit is hit 4.5.0
security.password_reset.enabled false Enable/disable password reset functionality -
security.password_reset.token_lifetime 3600 Token validity in seconds (1 hour default) -
security.password_reset.rate_limit_attempts 5 Max reset attempts per time window -
security.password_reset.rate_limit_window 3600 Rate limit window in seconds (1 hour) -
security.password_reset.min_time_between_requests 60 Minimum seconds between requests (1 minute) -
security.username_recovery.enabled false Enable/disable username recovery functionality -
security.username_recovery.rate_limit_attempts 5 Max recovery attempts per time window -
security.username_recovery.rate_limit_window 3600 Rate limit window in seconds (1 hour) -
security.username_recovery.min_time_between_requests 60 Minimum seconds between requests (1 minute) -
security.recaptcha.enabled false Enable reCAPTCHA on login form -
security.recaptcha.site_key '' Your reCAPTCHA site key (public key) -
security.recaptcha.secret_key '' Your reCAPTCHA secret key (private key) -
security.recaptcha.version 'v3' reCAPTCHA version: 'v2' or 'v3' -
security.recaptcha.v3_threshold 0.5 Score threshold for v3 (0.0 - 1.0) -

user_agreement

Setting Default Description Added in
user_agreement.enabled false Enable user agreement system -
user_agreement.current_version '1.0' Current agreement version -
user_agreement.require_on_version_change true Require re-acceptance when version changes -