RetroAssembly Setup Guide - ajgillis04/GillisDockerDepot GitHub Wiki
RetroAssembly Setup Guide
Introduction
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.
Step 1: Initial Container Deployment
- 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
Step 2: Service Definition (retroassembly.yaml)
# ------------------------------------------------------------------------------
# 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"
Step 3: Accessing the UI & Onboarding
- 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.
Step 4: Library & Media Setup
Directory Organization
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/
Custom Art & Metadata
- 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.
Step 5: Backup & Restore
Backing Up
- 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
Restoring
- Stop the container.
- Extract your backup archive back into
${DOCKERDIR}/retroassemblyand${NAS_GAMEDIR}/saves. - Restart the container.
Step 6: Troubleshooting
- 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}