Where Does Ghost CMS Store Content and Data?
Ghost keeps themes, images, data, and logs in its content directory, at /var/lib/ghost/content for Docker installs.
Last updated
Ghost splits state the way its install does. Content (themes, uploaded images, the SQLite file in dev mode, logs, adapters) lives in one content directory. Posts and members live in MySQL on production installs. Config lives in config.production.json next to the install.
Docker standardizes content at /var/lib/ghost/content as a declared volume. Ghost CLI installs use /var/www/ghost with a content folder beside current and versions. The recurring disaster is uploads landing under versions after an upgrade, which always traces back to contentPath.
Where Ghost stores this, by platform
/var/lib/ghost/content
Declared Docker volume. Mount host storage here. Config file sets paths.contentPath to this value so uploads stop drifting into versions.
/var/www/ghost/content
Ghost CLI layout. Content sits beside current (a symlink) and versions. Keep uploads, themes, and logs here across upgrades.
Frequently asked questions
Why do my Ghost themes vanish after each deploy?
Mount a volume to /var/lib/ghost/content before uploading anything. Without it, themes and images evaporate on every redeploy while posts in MySQL survive.
My images land in the versions folder. How do I fix it?
Set paths.contentPath in config.production.json to the real content folder. A missing or relative value lets Ghost write into the versioned directory instead.
Does Ghost admin export back up everything?
Yes for posts and members through Labs export, plus routes and redirects files. That covers text, not the images folder, so back up content too.
Notice an outdated path? Let us know.