Linux

Where Does Self-Hosted FreeScout Store Data?

FreeScout keeps app state in /data with mailboxes in MySQL. Env carries secrets; volumes carry everything else.

Last updated

FreeScout splits into env, files, and database. Environment (SITE_URL, DB_*, ADMIN_*, mail driver) seeds the install; the app writes some settings back into its own .env at /data/config. Uploads, caches, and sessions live under /data. Tickets, users, and mailbox definitions live in MySQL/MariaDB (Postgres in newer images).

That triangle is the backup: database dump plus /data volume plus env record. APP_KEY ties them together by encrypting stored secrets, which makes key rotation a planned event, not a restore step. Tiredofit images add /www/html and logs mounts for source exposure and self-updates; the etkecc hardened image instead runs read-only with a single /data surface.

Where FreeScout stores this, by platform

Linux
/data (Docker volume)

Uploads, cache, sessions, plus the self-written .env with APP_KEY. Mount persistently. Guard APP_KEY with the database dump; mismatched keys corrupt every stored credential.

Linux
MySQL data (/var/lib/mysql)

Tickets, mailboxes, users. Dump on schedule. Pair every dump with the /data volume and env from the same moment; the three drift apart silently otherwise.

Frequently asked questions

how do i back up freescout

Dump MySQL plus copy the /data volume (storage, .env/config, uploads) with the app stopped. Tickets, mailboxes, and settings span both. Restore to identical paths; APP_KEY must match or encrypted values break.

can i regenerate the app key on restore

No. The .env/APP_KEY pair encrypts stored credentials, so a fresh key against an old database locks every mailbox. Copy the existing /data/config .env with the dump and keep both halves in sync.

Notice an outdated path? Let us know.