Archive Layout
The archive separates immutable evidence from replaceable working copies. /srv/preservation is the suggested canonical location; Game Server Manager may continue using /opt/gsm for active installations and shared client assets.
/srv/preservation/
├── catalog/ # Version-controlled public-safe metadata
│ ├── artifacts/
│ ├── compatibility/
│ ├── inventories/
│ └── schemas/
├── git/
│ ├── mirrors/ # Bare --mirror clones
│ ├── bundles/ # Dated offline git bundle snapshots
│ ├── lfs/ # Verified Git LFS object backups
│ └── manifests/ # Remote URL, refs, commit IDs, checksums
├── artifacts/
│ ├── public/ # Material approved for redistribution
│ ├── restricted/ # Access-controlled copyrighted/private bytes
│ └── quarantine/ # Untrusted acquisitions awaiting review
├── clients/
│ └── <game>/<snapshot-id>/
│ ├── original/
│ ├── normalized/
│ ├── metadata/
│ └── verification/
├── servers/
│ └── <implementation>/<artifact-id>/
│ ├── original/
│ ├── source-export/
│ ├── dependencies/
│ ├── database/
│ ├── patches/
│ └── verification/
├── tools/
│ └── <tool>/<version>/<platform>/
├── documentation/
│ ├── upstream-captures/
│ ├── forums/
│ └── manuals/
├── backups/ # Backup-set manifests, not the only backup
└── workspace/ # Disposable derived trees; never canonical
Rules
original/is append-only. Corrections create a new artifact ID.workspace/may be deleted and rebuilt at any time.- Public metadata never depends on public access to restricted bytes.
- Large binaries do not belong in the wiki Git repository.
- A mirror is not a backup until an offline copy exists and restore has been tested.
- Symlinks and deduplication are implementation details; manifests must still describe logical ownership.
- Every directory containing artifacts has a machine-readable inventory and checksum file.
Repository clones that must never be lost
Use bare mirror clones for canonical Git capture:
/srv/preservation/git/mirrors/<forge-or-host>/<owner>/<repository>.git
Keep normal clones only in workspace/. A bare mirror retains all fetched refs and can be updated without confusing them with local development branches.
For each mirror, retain:
- Original fetch URL and any historical URLs.
- Acquisition and last successful fetch timestamps.
- Default branch, all relevant refs, HEAD commit, object format, submodule URLs.
- Whether Git LFS is used and confirmation that all LFS objects were fetched.
- License snapshot and access/distribution classification.
- Dated
git bundleor filesystem-level backup stored on another device.
See Repository Mirroring for commands and recovery.
Game Server Manager mapping
Suggested operational paths:
| Purpose | Path |
|---|---|
| Active source/build/install trees | /opt/gsm/servers/<server-id>/ |
| Shared client-derived assets | /opt/gsm/assets/<game>/clients/<version>/ |
| Canonical immutable archive | /srv/preservation/ |
| Ephemeral staging | /var/tmp/gsm/ or an explicit workspace |
Do not point a running service directly at the only preserved copy. Import or generate a working copy under /opt/gsm.
Naming
Prefer lowercase ASCII IDs with hyphens. Artifact IDs should remain stable after publication:
<project>-<version-or-short-commit>-<platform>-<acquired-date>
If the upstream version is unknown, use unknown plus a short content hash and open a finding to resolve it.
Private Server Preservation
- Home
- Preservation Status
- Compatibility Matrix
- Ecosystem Map
- Vision and Scope
- Server Catalog
- Client Preservation
- Archive Layout
- Repository Mirroring
- Mirror Inventory
- Preservation Metadata
- Reverse Engineering
- Findings Log
- Bug Tracker
- Toolbox
- Reproducible Baselines
- Operational Runbooks
- Backup and Recovery
- Governance and Safety
- Contributing
- Templates
PrivateServer-RS preservation wiki · Originals remain immutable · Every artifact must be attributable and verifiable