Matomo should be configured for tracking governance, privacy controls, and report integrity. This guide covers essential configuration settings for production deployments.
The main configuration file is located at config/config.ini.php. Here’s a example:
[database]
host = "localhost"
username = "matomo"
password = "your_strong_password"
dbname = "matomo"
tables_prefix = "matomo_"
charset = "utf8mb4"
[General]
; Disable browser archiving for better performance
enable_browser_archiving_triggering = 0
; Privacy settings
always_archive_data_day_range = 7
enable_sql_truncate = 1
delete_logs_enable = 1
delete_logs_schedule_lowest_interval = 7
delete_logs_older_than = 180
; Anonymize IP addresses
ip_address_anonymize_completed_severity = 2
anonymize_ip_range = 0
; Security settings
force_ssl = 1
proxy_client_headers[] = "X-Forwarded-For"
proxy_host_headers[] = "X-Forwarded-Host"
proxy_port_headers[] = "X-Forwarded-Port"
proxy_scheme_headers[] = "X-Forwarded-Proto"
; Performance settings
archiving_range_force_on_broken_reports = 1
archiving_ranking_query_min_visits = 100
datatable_archiving_maximum_rows_actions = 500
datatable_archiving_maximum_rows_subtable_actions = 500
datatable_archiving_maximum_rows_site = 50000
datatable_archiving_maximum_rows_subtable_site = 1000
; Email settings
noreply_email_address = "noreply@yourdomain.com"
from_email_address = "matomo@yourdomain.com"
; Plugin settings
enable_plugins_admin = 1
enable_marketplace = 1
When using Docker, configure Matomo using environment variables:
MATOMO_DATABASE_HOST=db
MATOMO_DATABASE_ADAPTER=mysql
MATOMO_DATABASE_TABLES_PREFIX=matomo_
MATOMO_DATABASE_USERNAME=matomo
MATOMO_DATABASE_PASSWORD=matomo_password
MATOMO_DATABASE_DBNAME=matomo
MATOMO_PROXY_SSL=true
MATOMO_URL=https://matomo.yourdomain.com
PHP_MEMORY_LIMIT=512M
Add to config/config.ini.php:
[Tracker]
ip_address_anonymize_completed_severity = 2
anonymize_ip_range = 0
Configure how long to keep raw data:
[General]
delete_logs_enable = 1
delete_logs_schedule_lowest_interval = 7
delete_logs_older_than = 180
delete_logs_max_rows_per_query = 100000
enable_auto_database_size_estimate = 1
enable_database_size_estimate = 1
Respect the Do Not Track header:
[Tracker]
donottrack_enabled = 1
For better performance, disable browser archiving and use cron:
[General]
enable_browser_archiving_triggering = 0
archiving_day_limit = 1095
archiving_future_dates_enables = 0
[General]
datatable_archiving_maximum_rows_standard = 50000
datatable_archiving_maximum_rows_subtable = 1000
Use the following command for regular database backups:
# Standard backup
time mysqldump --extended-insert --no-autocommit --quick --single-transaction matomo -umatomo -p > matomo_backup_$(date +%Y-%m-%d).sql
# Compress the backup
tar zcf matomo-mysql-$(date +%Y-%m-%d-%H.%M.%S).sql.tar.gz matomo_backup_$(date +%Y-%m-%d).sql
Always backup your configuration file:
sudo cp /var/www/html/matomo/config/config.ini.php /backup/location/config.ini.php.backup.$(date +%Y%m%d)
Regularly test your backups by restoring to a separate environment and validating that:
Feel free to contact us. Find all contact information on our contact page.