Data Directories & Backup
An Athena server keeps its state in a handful of directories on disk: the database, the PKI, all bulk file storage (uploaded packages, agent and helper installers, session recordings), the Windows Update scan catalog, logs, audit files, the settings you save in the console, and a few keys the server needs to stay itself across restarts. This page is the single map of what those directories are, which setting points at each, where they live on the virtual appliance, and exactly what you must back up before an upgrade, a disaster, or a move to a new host.
Everything the server writes in bulk — deployment packages, agent
installers, screen-share helper installers, and session
recordings — lives under a single data root, set by the Storage:DataRoot key. On the appliance
that is /data/storage.
The server's own runtime files (saved settings, secrets, data-protection keys, backups and the WSUS
catalog) live in the data directory, /data/athena, beside the database.
The paths on this page are for reference. You normally never touch them: the appliance has no shell,
only its console menu, and support SSH is off by default and time-limited. For logs and the support bundle
use Settings → Appliance → Support. Back up /data/athena and
/data/pki together.
The server data directory (Server:DataDirectory)#
Besides bulk storage, the server writes a small set of files at runtime that it needs to stay itself:
the settings you save in the console, per-install secrets, its encryption keys, database backups and the
uploaded WSUS catalog. All of these go to one data directory, set by the
Server:DataDirectory key (environment variable Server__DataDirectory). The
appliance keeps it in /data/athena, the same directory that holds the SQLite database
and the appliance's install.json.
| Inside the data directory | Appliance path | What it is | Moved by its own key? |
|---|---|---|---|
appsettings.local.json | /data/athena/appsettings.local.json | Every value you save on a Settings tab, report branding, and this server's Settings Sync identity. Created on the first save. | No |
secrets.json | /data/athena/secrets.json | Per-install secrets that the server generates on first start (the key that signs package download links). On Linux the file is restricted to its owner. | No (you can supply the value with Packages__TokenSecret instead) |
DataProtection-Keys/ | /data/athena/DataProtection-Keys | The key ring that encrypts secrets at rest, such as the LDAP bind password. | No |
backups/ | /data/athena/backups | Timestamped database backups (athena_backup_<timestamp>.db) from the built-in backup. | No |
updates/wsusscn2.cab | /data/athena/updates/wsusscn2.cab | The uploaded WSUS offline scan catalog and its metadata file. See Windows Update Management. | Yes: Updates:WsusScnPath |
deployments/ | /data/athena/deployments | Deployment package folders. | Yes: Deployments:PackagesPath |
The appliance also points two other files into the same directory through their own keys: the database
(Database:ConnectionString → /data/athena/athena.db) and the licence file
(Licensing:FilePath → /data/athena/license.lic.cer, see
Licensing).
Losing /data/athena loses your saved settings, the encryption keys (and with them every
secret encrypted at rest), and your backups. Copy backups off the appliance regularly.
Without a data directory (direct install)#
When Server:DataDirectory is not set, which is typical for a direct install, the data
directory is the server's application folder (for example, next to Athena.Server.exe).
Settings are still saved to appsettings.local.json there, and secrets.json and
DataProtection-Keys sit beside it. Three items keep their older application-folder locations:
- Database backups:
Backups\in the application folder. - WSUS catalog:
Data\wsusscn2.cabin the application folder. - Deployment package folders:
Data\Deployments\in the application folder.
The server never writes to the shipped appsettings.json. That file holds the defaults and
can be replaced safely on upgrade. Your changes live in appsettings.local.json. For how the
two files are layered, see Configuration sources.
The data map#
Every persistent location is controlled by a setting you can override through
configuration (an appsettings.json key or the matching
environment variable). The appliance ships with defaults for each, so the server comes up with no extra
configuration. The paths shown are where each item lives on the appliance; on a direct
install the same settings resolve relative to the server's working directory unless you set an absolute
path.
| What it holds | Setting | Appliance path |
|---|---|---|
| Database (SQLite default) & app state | Database:ConnectionString | /data/athena/athena.db |
| Root CA & issued agent certificates | Pki:CertificatesPath | /data/pki |
| Bulk file storage — the data root | Storage:DataRoot | /data/storage |
| ↳ Uploaded deployment packages | Packages:StoragePath (overrides the root) | /data/storage/Packages |
| ↳ Agent installers (enrollment & self-update) | AgentUpdate:BinariesPath (overrides the root) | /data/storage/AgentBinaries |
| ↳ Screen-share helper installers | HelperBinary:BinariesPath (overrides the root) | /data/storage/HelperBinaries |
| ↳ HermesCLI builds | CliBinary:BinariesPath (overrides the root) | /data/storage/CliBinaries |
| ↳ Session recordings | Recording:StoragePath (overrides the root) | /data/storage/Recordings |
| Server TLS certificate (your own, if supplied) | Server:WebCertPath | No host path — managed in the web UI (Server TLS Certificate) |
| Application log files | Logging:Directory | /data/logs |
| File-based audit log (JSON Lines) | Audit:Directory | /data/logs/audit |
Saved settings (appsettings.local.json) | Server:DataDirectory | /data/athena/appsettings.local.json |
Per-install secrets (secrets.json) | Server:DataDirectory | /data/athena/secrets.json |
| Data-protection keys | Server:DataDirectory | /data/athena/DataProtection-Keys |
| Database backups | Server:DataDirectory | /data/athena/backups |
WSUS offline scan catalog (wsusscn2.cab) | Updates:WsusScnPath (else the data directory) | /data/athena/updates/wsusscn2.cab |
| Deployment package folders | Deployments:PackagesPath (else the data directory) | /data/athena/deployments |
| Licence file | Licensing:FilePath | /data/athena/license.lic.cer |
Packages, agent binaries, helper binaries, and recordings each get their own subdirectory
beneath the data root (/data/storage/Packages, /data/storage/AgentBinaries,
/data/storage/HelperBinaries, /data/storage/Recordings). Backing up
/data/storage covers all four. The per-area keys shown in the
Setting column exist only for the rare case where you want to relocate a single area on its own;
see Placing storage with Storage:DataRoot below.
Placing storage with Storage:DataRoot#
Storage:DataRoot is the one key that decides where all bulk storage lives. Set it
once and each area is placed in a named subdirectory beneath it:
| Area | Subdirectory under the data root | Per-area override key |
|---|---|---|
| Deployment packages | <root>/Packages | Packages:StoragePath |
| Agent installers | <root>/AgentBinaries | AgentUpdate:BinariesPath |
| Screen-share helper installers | <root>/HelperBinaries | HelperBinary:BinariesPath |
| HermesCLI builds | <root>/CliBinaries | CliBinary:BinariesPath |
| Session recordings | <root>/Recordings | Recording:StoragePath |
For each area, the server resolves the location in this order, taking the first that is set:
- The area's own override key (the right-hand column above). Set this only when you want to move a single area onto its own disk or volume; it beats the data root for that one area.
Storage:DataRoot— the area lands in its named subdirectory beneath the root. This is what the appliance uses (/data/storage), and it's the setting to reach for in almost every deployment.- An operating-system default — used only when nothing above is configured. On a bare
Windows service install this preserves the historical
<CommonApplicationData>\Athena\<area>location so existing data is still found.
A blank value counts as unset. Setting an environment variable to an empty string is treated the same as leaving it out, so the server falls back to the next tier rather than resolving storage to its working directory. Whichever tier wins, the resolved path is recorded in the startup log so you can confirm where each area actually landed.
# Put all bulk storage on a dedicated data volume (env-var form)
Storage__DataRoot=/mnt/athena-data
# …or in appsettings.json
"Storage": {
"DataRoot": "/mnt/athena-data"
}
# Relocate just one area (recordings) onto its own disk, leaving the rest under the root
Recording__StoragePath=/mnt/recordings
A note on the database#
With the default SQLite provider the whole database is a single file
(/data/athena/athena.db), so backing up /data/athena captures it. If you run PostgreSQL instead, the data lives in
your PostgreSQL server rather than in /data/athena (the appliance's optional local PostgreSQL keeps its data in /data/postgres) — back it up with your database's own tools
(for example a pg_dump), and treat the directories on this page as everything except
the database. Either way, the built-in database backup writes
timestamped copies to /data/athena/backups, where the appliance also keeps the database
backup it takes before every update. They sit on the same disk as the live database, so copy them off the
appliance regularly for real disaster recovery.
What to back up#
For a full recovery you need the database plus the on-disk state that isn't reconstructable. The table below groups each directory by how important it is to a restore.
| Priority | Directory | Why |
|---|---|---|
| Critical | Database (/data/athena for SQLite, or your PostgreSQL server) | All configuration, agents, collections, compliance, commands, monitors, and metadata. |
| Critical | PKI (/data/pki) | The Root CA and issued agent certificates. The CA key also protects the stored secrets in the database (credential, RustDesk and BitLocker passwords and PINs). Without it, enrolled agents can't be trusted, those secrets can't be decrypted, and the server refuses to start. |
| Critical | Saved settings (/data/athena/appsettings.local.json) | Everything saved on the Settings tabs, report branding, and the Settings Sync identity. Without it the server starts on the shipped defaults. |
| Important | Data-protection keys (/data/athena/DataProtection-Keys) | Needed to decrypt values the server encrypted at rest; regenerated (and thus lost) if missing. |
| Important | Per-install secrets (/data/athena/secrets.json) | Regenerated if missing, but a new secret means download links signed with the old one stop working. |
| Important | Your own server TLS certificate | Only if you supplied your own certificate (managed in the web UI); the auto-generated one is re-created on demand. |
| Valuable | Bulk storage — packages, agent & helper installers (/data/storage) | Re-uploadable, but large and inconvenient to rebuild — especially air-gapped. One directory covers all of them. |
| Valuable | Session recordings (/data/storage/Recordings) | Not reconstructable — if you rely on recordings for evidence, back them up. Already inside /data/storage above. |
| Valuable | WSUS catalog (/data/athena/updates) | Re-downloadable from Microsoft, but large; persisting it avoids a re-upload. Already inside /data/athena. |
| Retain per policy | Audit files (/data/logs/audit) & logs (/data/logs) | Keep for your compliance window; also forwardable to a SIEM — see Audit Forwarding. |
Quiesce for a clean copy. For a file-level backup of a running server, take the
database snapshot with the built-in backup (it runs live and
writes a consistent copy), then copy the directories. Always copy /data/athena and
/data/pki together.
Restoring or moving to a new host#
To rebuild the server on new hardware or after a disaster:
- Restore the backed-up directories into place — at minimum the database and the PKI, plus the whole data directory (saved settings, secrets and data-protection keys) and any others you kept. On the virtual appliance, contact support@sealgrid.ai for a guided restore.
- Start the server with the same
Server:PublicUrlso it presents the same externally-reachable address. Because the Root CA is restored, existing agents keep trusting the server without re-enrollment. - If the new server has a different address, redirect your agents to it — see Agent Server Migration.
Restoring the database without the matching PKI leaves the server with records of agents it can no longer trust. Always restore the database and PKI together, from the same point in time.
Keeping directories from filling up#
Several of these directories grow over time — recordings, logs, audit files, and accumulated backups. Athena prunes some of them automatically and lets you schedule the rest; the settings, defaults, and which cleanups are automatic versus manual are covered in Data Retention & Housekeeping. In short: session recordings age out on a retention window, database backups are not pruned automatically (rotate them yourself), and log/audit files roll by date.
Related#
- Installation — importing the appliance and the first-boot wizard.
- Configuration — every setting and how to pass it as an environment variable.
- Database Backup & Maintenance — on-demand and scheduled database backups.
- Data Retention & Housekeeping — what removes the data that grows.
- Certificates & PKI — the Root CA and issued agent certificates.
- Agent Server Migration — repointing agents at a moved server.