Skip to content

KB-145: satisfactory's VolSync backup targeted the wrong PVC

Status: Resolved (2026-09-29). PR #3879 (2026-07-26) repointed both ReplicationSource objects from satisfactory to sf-gamedata, believing sf-gamedata held the save data. It holds the re-downloadable server install instead. The kustomization patch is now gone, so backups cover the satisfactory claim again.

What the mounts actually are

kubernetes/apps/games/satisfactory/app/helmrelease.yaml mounts two claims:

  • config (existingClaim: satisfactory) at /config.
  • server-cache (existingClaim: sf-gamedata) at /config/gamefiles, a subdirectory of the first mount.

The wolveix/satisfactory-server image's own documentation describes /config/gamefiles as the downloaded server installation, kept outside the container only to avoid re-fetching 8GB+ on every rebuild, and /config/saved as the game's blueprints, saves and server configuration. /config/saved is not under /config/gamefiles, so it lives on the satisfactory claim, not sf-gamedata.

History

Before PR #3879, the shared components/volsync template's default sourcePVC: ${APP} already resolved to satisfactory, so backups covered the claim that appears to hold the actual saves. That PR treated satisfactory as "the empty 5Gi PVC the component itself creates," reasoned that sf-gamedata (30Gi) must be the real data because it is larger and explicitly provisioned in ./pvc.yaml, and repointed both ReplicationSource objects at it. Read against the mount paths and the image's documentation, that reasoning has it backwards: sf-gamedata holds the replaceable server install, and satisfactory holds /config/saved.

Confirmation and fix

Checked on the live pod on 2026-09-29: /config/saved sits on the satisfactory claim, and /config/gamefiles (about 2.9 GB) is the only thing on sf-gamedata. Both ReplicationSource objects were backing up sf-gamedata. Removing the kustomization.yaml patch restores the component's default sourcePVC: ${APP}. No PVC is created or pruned by the change: the component already generated the satisfactory claim, and sf-gamedata stays in ./pvc.yaml. Snapshots taken before the fix contain only the server install, so they cannot restore saves.

  • PR #3879