Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/Navigation.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ search:
- [MS-DOS](using/in-browser-play/ms-dos.md)
- [Ruffle](using/in-browser-play/ruffle.md)
- [Emulator Streaming](using/emulator-streaming.md)
- [Migrating to webstation](using/emulator-streaming-migration.md)
- [Saves & States](using/saves-and-states.md)
- [RetroAchievements](using/retroachievements.md)
- [ROM Patcher](using/rom-patcher.md)
Expand Down
80 changes: 80 additions & 0 deletions docs/using/emulator-streaming-migration.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: Migrating Streaming to webstation
description: Move from one broker container per emulator to a single webstation container
---

# Migrating Streaming to webstation

Emulator streaming used to mean one container per emulator, each running its own broker mod (`pcsx2-romm-integration`, `dolphin-romm-integration`, `xemu-romm-integration`, `rpcs3-romm-integration`). Going forward, streaming goes through a single [docker-webstation](https://github.com/linuxserver/docker-webstation) container running [romm-broker](https://github.com/romm-streaming/romm-broker), which can serve every platform RomM streams from one place instead of one container per emulator.

<!-- prettier-ignore -->
!!! warning "The per-emulator broker mods are deprecated"
A `config.yml` container without `protocol: webstation` still works today, logs a startup warning telling you to migrate, and will stop being supported in a future release.

## Why

- One container to run and update instead of N forks of the same broker pattern, each drifting slightly.
- One save-state and memory-card contract instead of five slightly different ones.
- A platform pool (`platforms:` on one container) claims whichever instance is free, instead of every platform being pinned to its own single container.

## Migrating your `config.yml`

Before, one container per platform:

```yaml
streaming:
containers:
- platform: ps2
host: https://192.168.1.51:3001
broker_host: http://192.168.1.51:8000
label: PCSX2
memory_card_sync: true
- platform: ngc
host: https://192.168.1.52:3001
broker_host: http://192.168.1.52:8000
label: Dolphin
```

After, one webstation container serving both:

```yaml
streaming:
containers:
- host: https://192.168.1.56:3010
protocol: webstation
subfolder: /streaming
library_path: /romm
label: Emulation station
platforms:
ps2:
emulator: pcsx2
label: PCSX2
memory_card_sync: true
ngc:
emulator: dolphin
label: Dolphin
```

The full field reference lives in [Configuration File → `streaming`](../reference/configuration-file.md#streaming).

## Migrating your containers

1. Stand up [docker-webstation](https://github.com/linuxserver/docker-webstation) with [romm-broker](https://github.com/romm-streaming/romm-broker) mounted at your ROM library path (use the same path your old per-emulator containers used, so save/state history keyed to it doesn't reset).
2. Point `library_path` in `config.yml` at that same mount.
3. Move each platform you were streaming into the new container's `platforms:` map (see the before/after above).
4. Confirm streaming works for each platform, then remove the old per-emulator containers.
5. Restart RomM. The startup warning about legacy containers disappears once no `config.yml` container is missing `protocol: webstation`.

## Per-emulator notes

Save data, memory cards, and BIOS/firmware requirements don't change, only which container runs the emulator. See the "Migrating to webstation" section in:

- [pcsx2-romm-integration](https://github.com/LoneAngelFayt/pcsx2-romm-integration)
- [dolphin-romm-integration](https://github.com/LoneAngelFayt/dolphin-romm-integration)
- [xemu-romm-integration](https://github.com/LoneAngelFayt/xemu-romm-integration)
- [rpcs3-romm-integration](https://github.com/LoneAngelFayt/rpcs3-romm-integration)

## Related

- [Emulator Streaming](emulator-streaming.md): the setup guide for streaming as a whole
- [Configuration File → `streaming`](../reference/configuration-file.md#streaming): every key the `streaming` block accepts
4 changes: 4 additions & 0 deletions docs/using/emulator-streaming.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,10 @@ Emulator streaming launches a game into a **native** emulator running in a separ

Each emulator runs in its own [linuxserver](https://docs.linuxserver.io) container with a [Selkies](https://github.com/selkies-project/selkies) WebRTC stream and a small HTTP broker sidecar that RomM talks to. Nothing appears in the UI until you configure at least one container.

<!-- prettier-ignore -->
!!! info "Already running per-emulator containers?"
Streaming is moving to a single webstation container that serves every platform. See [Migrating to webstation](emulator-streaming-migration.md).

<!-- prettier-ignore -->
!!! warning "Work in progress"
This is the first release of the streaming framework and ships with four emulators. More integrations (rpcs3 for PS3, and others) are planned as separate follow-ups.
Expand Down
Loading