Merge pull request [#30](https://github.com/RetroGameSets/RGSX/issues/30) from SeeThruHead/main
Refactor Docker setup with proper volume separation and backwards compatibility
Implemented environment variable-based configuration to support both Docker
and traditional Batocera/RetroBat installations with a single codebase.
Implemented environment variable-based configuration to support both Docker
and traditional Batocera/RetroBat installations with a single codebase.
Key Changes:
- Added RGSX_CONFIG_DIR and RGSX_DATA_DIR environment variables
- Separate /config and /data volumes in Docker mode
- App files now copied into container at build time (not runtime sync)
- Simplified directory structure (removed __downloads concept)
- Maintained 100% backwards compatibility with non-Docker installations
File Structure by Mode:
| Location | Docker Mode | Traditional Mode |
|-----------------|-----------------|----------------------------------- |
| Settings/Config | /config/ | /userdata/saves/ports/rgsx/ |
| Game Lists | /config/games/ | /userdata/saves/ports/rgsx/games/ |
| Images | /config/images/ | /userdata/saves/ports/rgsx/images/ |
| Logs | /config/logs/ | /userdata/roms/ports/RGSX/logs/ |
| ROMs | /data/roms/ | /userdata/roms/ |
Detection:
- Docker mode: Activated when RGSX_CONFIG_DIR or RGSX_DATA_DIR is set
- Traditional mode: Default when no Docker env vars present
Tested and verified working in both modes.
- update integrated roms info scraper to use tgdb api instead of https web requests
- Add Docker support (web server)
- Add region filters (web server)
- Add one-ROM-per-game filter with region priority (web server)
- Refactor code structure in RGSX Web to improved readability and maintainability (js, css, html separated)
- update language files and correct a bug that crash
when changing language, or changing filter
Added flexible user/group ID handling to support different storage backends:
- Configurable PUID/PGID environment variables for NFS and local storage
- RUN_AS_ROOT mode for SMB mounts that only allow root writes
- Pre-chown app files during build to enable non-root rsync
- Improved error messages with troubleshooting guidance
- Updated documentation with setup examples for different scenarios
This allows the container to work correctly with Unraid SMB shares, NFS mounts,
and local storage by adapting to how different filesystems handle permissions.
Default behavior (PUID=99, PGID=100) remains compatible with Unraid nobody:users.
- Region filtering: USA, Europe, Japan, World, Other
- Hide demos/betas/protos checkbox
- Regex search mode option
- Live filter status display
- All filters work together with AND logic
- Minimal Dockerfile with Python 3.11 and required dependencies
- docker-entrypoint.sh initializes folder structure and settings
- README-DOCKER.md with simple build and run instructions
- Updated .gitignore to exclude Docker test data
- add RGSX_WEB service for batocera only
- add an option to enable/disable RGSX Web Service at boot (in settings menu) . With that, you can have rgsx web server enabled without launching rgsx main appp.