Files
Ludarium release export df869819ce
Public source validation / source (push) Successful in 2m16s
Publish Ludarium source
2026-09-03 02:08:58 +02:00

90 lines
4.6 KiB
Markdown

# Ludarium
**A local-first, self-hosted catalog for game archives.** Ludarium turns read-only folders of ROMs,
disc images and archived Windows installers into a searchable library with provenance, integrity
evidence and an explicit review queue. It is built for Unraid, but the supplied Compose deployment
also works on a regular Docker host.
![Ludarium home screen with an empty, privacy-safe example archive](docs/screenshots/living-archive-audit/audit-home-desktop.png)
## What you can do
- discover and fingerprint files without renaming, moving or executing them;
- group multi-file games, discs, installers, patches and DLC into useful catalog entries;
- review uncertain matches instead of silently accepting guesses;
- find duplicates and integrity problems while retaining the evidence behind each result;
- organise games with collections, tags, favourites, play status, ratings and notes;
- enrich metadata from optional providers while keeping manual values authoritative;
- export JSON, EmulationStation and Pegasus-compatible catalog data;
- keep emulator saves and savestates as bounded, immutable revisions in the Game Data Vault;
- optionally launch supported browser or isolated native players.
The source libraries are mounted read-only. Ludarium writes only to its own PostgreSQL database,
cache, exports and explicitly configured player data. Scanned native files are never executed by the
cataloging pipeline.
## Quick start
You need Docker with Compose, three directories to expose as read-only libraries, and two independent
random secrets of at least 32 characters.
```sh
cp deploy/.env.example deploy/.env
# Edit deploy/.env: set POSTGRES_PASSWORD, LUDARIUM_ADMIN_TOKEN and your library paths.
docker compose --env-file deploy/.env -f deploy/compose.yml up -d --build
```
Open `http://localhost:1230`. Check liveness at `/health/live` and database readiness at
`/health/ready`. API routes require `Authorization: Bearer <LUDARIUM_ADMIN_TOKEN>`; the web interface
stores that token in the browser session after you enter it.
Before scanning, confirm in the container details that every `/library/*` mount is read-only. The
application refuses unsafe paths and does not need write access to your originals. See
[`deploy/README.md`](deploy/README.md) for Unraid templates, backups, upgrades, optional providers and
isolated player sidecars.
## How the workflow feels
1. Add one or more library roots and run a quick inventory.
2. Open the review queue for unknown files, ambiguous matches and incomplete bundles.
3. Accept or correct proposed identities; Ludarium preserves the evidence and confidence behind them.
4. Browse the resulting catalog, build collections and inspect integrity or duplicate reports.
5. Run deeper hashes or exports only when useful; the original files remain untouched throughout.
Ludarium is an archive manager, not a downloader, storefront or rights-management bypass. It does not
ship games, firmware, console keys, provider datasets or third-party credentials. You are responsible
for the content you index and for complying with the rules that apply to it.
## Security and privacy
- Keep Ludarium on a trusted network or place it behind an authenticated HTTPS reverse proxy.
- Use a unique admin token; production startup rejects missing, short and obvious placeholder tokens.
- Treat the browser-player origin as privileged. A distinct player origin is recommended when exposing
browser emulation beyond a trusted LAN.
- Optional metadata providers receive only the requests required for enrichment and are disabled when
no credentials are configured.
- Report vulnerabilities privately using [`SECURITY.md`](SECURITY.md).
## Development
The backend targets .NET 10, the UI uses React 19 and Vite, and controller helpers use Python's standard
library. Run the complete source-only validation without Docker privileges:
```sh
sh deploy/run-managed-validation.sh source
```
The canonical development repository also contains hardened image and release gates for trusted
revisions. The public validation workflow deliberately needs no Docker daemon or deployment secrets.
## Project status and licensing
Ludarium is release-candidate software. Back up app data before upgrades and qualify optional native
players against your own hardware. First-party source code in this repository is licensed under
**AGPL-3.0-or-later**; see [`LICENSE`](LICENSE). Third-party components and assets remain subject to
their own documented terms.
Third-party and generated visual assets are documented in
[`THIRD_PARTY_NOTICES.md`](THIRD_PARTY_NOTICES.md) and their adjacent provenance records. Game metadata,
DAT files, ROMs, firmware and proprietary keys are not part of the project.