# Host setup and disclosed workarounds

The renderer and capture adapter need working browser system libraries, not
just a downloaded executable. Set `REMOTION_BROWSER_EXECUTABLE` to an installed
Chrome/Chromium that passes its own version command. Check Linux dependencies
with `ldd "$REMOTION_BROWSER_EXECUTABLE"`; missing shared libraries are a setup
failure, not a successful media check. A full Chrome and a headless-shell build
can have different library requirements.

On the bounded Ubuntu 24.04 x86-64 test host, headless-shell needed these OS
packages in addition to the base image:

```bash
apt-get download libatk1.0-0t64 libatk-bridge2.0-0t64 libxdamage1 libatspi2.0-0t64 libasound2t64
mkdir -p browser-libs
for package in ./*.deb; do dpkg-deb -x "$package" browser-libs; done
export LD_LIBRARY_PATH="$PWD/browser-libs/usr/lib/x86_64-linux-gnu${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
ldd "$REMOTION_BROWSER_EXECUTABLE"
```

This is a workspace-only setup option when installation is not authorized.
Use the system's supported package manager on another host; those package
versions are not a cross-platform guarantee. Package/browser hashes and
versions belong in the local run inventory. Playwright capture also needs its
FFmpeg binary (`npx playwright-core install ffmpeg` if not provisioned).

The test host also makes Node's `os.networkInterfaces()` throw
`uv_interface_addresses`. First reproduce that exact failure:

```bash
node -e "console.log(require('node:os').networkInterfaces())"
```

Only on that failure, use the included **process-local, opt-in** loopback
adapter. It does not modify Node, the project dependencies or system networking:

```bash
REMOTION_LOOPBACK_ONLY=1 node --require ./scripts/loopback.cjs \
  scripts/production.mjs render examples/transfer/packet.json out/example-render
```

Ordinary hosts should use the literal command without this adapter. The adapter
prints every application of the fallback. Record it in the run ledger; do not
hide it or call an assisted run an unassisted one. The same preload can be used
with the existing Remotion CLI when reproducing its TitleCut/StudySequence/Trail
examples on this particular host.

For a local-only capture trial when the collaborative browser explicitly reports
unavailable, `scripts/capture.mjs` is the documented fallback. It neither grants
product access nor certifies your account/data. If capture fails before action,
retain that attempt and fix the environment rather than inventing result pixels.
