teatro Documentation View source
Browse documentation
On this page

Downloads & grouped games

One catalog entry can contain a playlist, several discs and their tracks. Download the files the game needs, not just the first one you see.

Download from the browser

Sign in at the server root, browse a populated platform or search the whole library, then open a game. You can download individual files, or request one server-generated ZIP for a multi-file game.

Downloads use your browser's download manager through short-lived, single-use tickets, without buffering the entire download in browser memory. The full library and regular collections require login. An explicitly enabled LAN Party Zone also permits anonymous downloads of its selected games through collection-scoped routes.

Keep the dependencies together

.cue
A cue sheet plus the track files it references.
.gdi
A disc descriptor plus its referenced tracks.
.m3u
A supplied or generated playlist and every referenced disc and dependency.

In this fictional two-disc example, the playlist is the launch file. Both CHD files belong to the same logical game:

Passage.m3u
Passage (Disc 1).chd
Passage (Disc 2).chd

Downloading only Passage.m3u does not download the discs. Use the package ZIP in the browser, or a dependency-aware client that follows the download plan.

Plan for download space

By default, a temporary game ZIP accepts at most 256 files and 50 GiB of source bytes. Teatro allows one active or retained archive at a time and keeps a 512 MiB free-space margin.

Temporary archives use the data filesystem. They are removed when the response finishes or is dropped, or when an unconsumed download ticket expires. Individual-file downloads remain available if a package exceeds its limits.

Archive-member extraction and split archive volumes such as .7z.001 are outside the normal import path. Integrity jobs hash physical archive files rather than their individual members.

Connect a client

Give each client its own read-only account instead of using the administrator password. For a native source run:

cargo run -- users create --username player --role readonly

For Docker:

docker compose exec teatro /opt/teatro/teatro \
  users create --username player --role readonly

Enter your secured server URL and that account in the client. Same-machine development can use http://127.0.0.1:4440; on another device, 127.0.0.1 points to that device, not your server.

Dependency-aware clients can use Teatro's read-scoped download plan for complete grouped downloads. Generic ROMM clients may only download a selected file. Teatro implements a focused subset, not the entire ROMM API.