Linux

Where Does EspoCRM Store Config and Data?

EspoCRM keeps settings in data/config.php with uploads beside it. Records live in MySQL/MariaDB; env seeds Docker installs.

Last updated

EspoCRM splits into files and database. The data/config.php file holds connection, mail, and feature settings with config-internal.php for secrets and config-override.php for hand edits (v8.2+). Uploads, customizations, and client custom code live under data/ and custom/ trees. Records themselves live in MySQL/MariaDB or Postgres.

Docker images seed all of it from ESPOCRM_* env vars on first boot, then the files own the truth. Mount data/, custom/, and client/custom/ persistently or upgrades wipe uploads and extensions. Daemon and websocket containers share the same mounts. Back the volumes plus the database dump; one without the other restores settings with no records or records with no files.

Where EspoCRM stores this, by platform

Linux
data/config.php (install root)

Connection, mail, features; internal variant for secrets, override variant for hand edits. Docker seeds from env on first boot. Mount data/, custom/, client/custom/ persistently.

Frequently asked questions

how do i back up espocrm

Copy the data/ tree (config.php, uploads, custom) plus a database dump with the app stopped. Env vars seed fresh installs only; running config lives in the files. Restore both halves to matching paths.

where do espocrm secrets belong

Put secrets in data/config-internal.php (or config-override files), never the main config. Internal values stay server-side while config.php can expose values to the front end. Env-provided values at startup write through the same files.

Notice an outdated path? Let us know.