-
Notifications
You must be signed in to change notification settings - Fork 0
RetroAssembly Setup Guide
Andy Gillis edited this page Jul 21, 2026
·
1 revision
RetroAssembly is a web-based retro game library manager and launcher. Running as a lightweight service on your server, it centralizes your ROMs, BIOS files, and save states into a single web interface, allowing clients across your network to browse and play classic games directly in the browser using integrated emulators.
- Ensure the required environment variables are set in your root
.envfile:
RETROASSEMBLY_PORT=8000
NAS_GAMEDIR=/path/to/your/games
- Copy the
retroassembly.yamlfile into your active server compose directory:
cp compose/templates/retroassembly.yaml compose/server1/retroassembly.yaml- Create host directories for configuration, logs, and game storage:
sudo mkdir -p ${DOCKERDIR}/retroassembly ${DOCKERDIR}/logs/retroassembly
sudo mkdir -p ${NAS_GAMEDIR}/roms ${NAS_GAMEDIR}/bios ${NAS_GAMEDIR}/saves- Launch the container:
docker compose -p mediaserver -f docker-compose-server1.yaml up -d retroassembly# ------------------------------------------------------------------------------
# retroassembly - Web-based Retro Game Library + Launcher
# ------------------------------------------------------------------------------
services:
retroassembly:
container_name: retroassembly.${HOST_NAME}
hostname: retroassembly.${HOST_NAME}.lan
image: arianrhodsandlot/retroassembly:latest
environment:
TZ: ${TZ}
PUID: ${PUID}
PGID: ${PGID}
# Optional: enable verbose logging
# LOG_LEVEL: debug
networks:
- mediaserver
ports:
- ${RETROASSEMBLY_PORT}:8000
volumes:
- ${DOCKERDIR}/retroassembly:/app/data
- ${NAS_GAMEDIR}/roms:/roms
- ${NAS_GAMEDIR}/bios:/bios
- ${NAS_GAMEDIR}/saves:/saves
- ${DOCKERDIR}/logs/retroassembly:/var/log
restart: always
security_opt:
- no-new-privileges:true
labels:
- "com.centurylinklabs.watchtower.enable=true"
- "homepage.group=Other"
- "homepage.name=retroassembly"
- "homepage.icon=gamevault.png"
- "homepage.href=https://retro.${DOMAINNAME}/"
- "homepage.description=web-based retro game library + launcher"- Open your browser and navigate to
http://<your-ip-address>:8000or your reverse proxy URL (https://retro.${DOMAINNAME}). - Create your administrator credentials upon first login.
- Access the web administration panel to initiate a media scan across your
/romsvolume to detect newly placed game files.
Organize your host game files within ${NAS_GAMEDIR} according to the system console subfolders expected by RetroAssembly:
${NAS_GAMEDIR}/
├── roms/
│ ├── nes/
│ ├── snes/
│ ├── gba/
│ └── psx/
├── bios/
│ ├── scph1001.bin
│ └── gba_bios.bin
└── saves/
- Scraping: Use the built-in library scanner to automatically download game box art, screenshots, and metadata.
-
BIOS Files: Ensure required system BIOS files (e.g., PlayStation, Game Boy Advance) are placed inside
${NAS_GAMEDIR}/biosso web emulators can load hardware-dependent games properly.
- Stop the container and back up the persistent application state along with save files:
docker compose -p mediaserver -f docker-compose-server1.yaml stop retroassembly tar -czvf retroassembly_backup.tar.gz ${DOCKERDIR}/retroassembly ${NAS_GAMEDIR}/saves docker compose -p mediaserver -f docker-compose-server1.yaml start retroassembly
- Stop the container.
- Extract your backup archive back into
${DOCKERDIR}/retroassemblyand${NAS_GAMEDIR}/saves. - Restart the container.
-
Blank Screen / Emulator Fails to Load Game: Verify that necessary BIOS files exist in
/biosand that file permissions on${NAS_GAMEDIR}allow read access forPUID/PGID. -
Save States Not Persisting: Ensure
${NAS_GAMEDIR}/savesis writable by the container user. -
Logs: Check real-time log outputs for error traces:
docker logs -f retroassembly.${HOST_NAME}