LinuxWindowsmacOS

Where Does SFTPGo Store Config and Data?

SFTPGo keeps config in /etc/sftpgo and data in /var/lib/sftpgo on Linux, with a ProgramData tree on Windows.

Last updated

SFTPGo splits config from state. The config directory holds sftpgo.json plus env files; the data directory holds the user database, credentials, backups, certificates, and logs. Flags and SFTPGO_ variables override files at runtime.

Linux packages run as a dedicated sftpgo user owning both trees, which explains permission errors after manual copies. Windows collapses everything into one ProgramData tree with the same interior.

Where SFTPGo stores this, by platform

Linux
/etc/sftpgo

sftpgo.json plus env.d drop-ins. Data (db, credentials, backups, certs, logs) in /var/lib/sftpgo. Fix ownership to the sftpgo user after copying.

Windows
C:\ProgramData\SFTPGo

Config, database, logs, backups, and certificates in one tree. Run the service as a least-privilege account with modify rights on this folder.

macOS
/usr/local/opt/sftpgo/etc

Same layout rooted at /usr/local/opt/sftpgo (etc, var/lib, var/log beneath). A launchd sample plist ships in the source tree.

Frequently asked questions

How do I migrate an SFTPGo server?

Copy the config directory and the data directory (SQLite db, credentials, backups, certs) to the new host, then fix paths and permissions. External databases need their own dump too.

Where is the SFTPGo config file?

Edit sftpgo.json (or set SFTPGO_ env vars, which win over files) and restart the service. Env files in env.d load before the main config.

Notice an outdated path? Let us know.