====== RomM ====== Aplicación web para la gestión de colecciones de juegos, especialmente ROMs. También permite jugar a esas ROMs desde el propio navegador. * [[https://romm.app/|Sitio web]] * [[https://github.com/rommapp/romm|Repositorio de código]] * [[https://docs.romm.app/latest/|Documentación]] {{ https://raw.githubusercontent.com/rommapp/romm/master/.github/resources/screenshots/preview-desktop.webp |}} ===== Características ===== * Gestiona tu biblioteca de juegos: escanea tus ROMs, agrégales etiquetas, carátulas y metadatos automáticamente con fuentes como IGDB o MobyGames. * Soporte para [[https://docs.romm.app/latest/Platforms-and-Players/Supported-Platforms/|más de 400 plataformas]] (consolas, micro ordenadores, etc) * Juega directamente desde el navegador: gracias a [[https://emulatorjs.org/|EmulatorJS]], juega sin instalar nada adicional. * Self-hosted y abierto: tú mismo alojas la aplicación (por ejemplo con Docker), mantienes el control de tus datos y puedes extenderlo o integrarlo con otras herramientas. * Aplicaciones nativas e integraciones para jugar desde donde queramos: Playnite (Windows), Argosy Launcher (Android) o consolas portátiles con CFW (como TrimUI). ===== Instalación ===== ==== Docker ==== Ejemplo de fichero Docker Compose: version: "3" volumes: mysql_data: romm_resources: romm_redis_data: services: romm: image: rommapp/romm:latest container_name: romm restart: unless-stopped environment: - DB_HOST=romm-db - DB_NAME=romm # Should match MARIADB_DATABASE in mariadb - DB_USER=romm-user # Should match MARIADB_USER in mariadb - DB_PASSWD= # Should match MARIADB_PASSWORD in mariadb - ROMM_AUTH_SECRET_KEY= # Generate a key with `openssl rand -hex 32` - SCREENSCRAPER_USER= # These are the recommended metadata providers - SCREENSCRAPER_PASSWORD= # https://docs.romm.app/latest/Getting-Started/Metadata-Providers/#screenscraper - RETROACHIEVEMENTS_API_KEY= # https://docs.romm.app/latest/Getting-Started/Metadata-Providers/#retroachievements - STEAMGRIDDB_API_KEY= # https://docs.romm.app/latest/Getting-Started/Metadata-Providers/#steamgriddb - HASHEOUS_API_ENABLED=true # https://docs.romm.app/latest/Getting-Started/Metadata-Providers/#hasheous volumes: - romm_resources:/romm/resources # Resources fetched from IGDB (covers, screenshots, etc.) - romm_redis_data:/redis-data # Cached data for background tasks - /path/to/library:/romm/library # Your game library. Check https://docs.romm.app/latest/Getting-Started/Folder-Structure/ for more details. - /path/to/assets:/romm/assets # Uploaded saves, states, etc. - /path/to/config:/romm/config # (Optional) Path where config.yml is stored ports: - 80:8080 depends_on: romm-db: condition: service_healthy restart: true romm-db: image: mariadb:latest container_name: romm-db restart: unless-stopped environment: - MARIADB_ROOT_PASSWORD= # Use a unique, secure password - MARIADB_DATABASE=romm - MARIADB_USER=romm-user - MARIADB_PASSWORD= volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] start_period: 30s start_interval: 10s interval: 10s timeout: 5s retries: 5 * [[https://github.com/rommapp/romm/blob/master/examples/config.example.yml|Ejemplo de fichero "config.yml"]] ===== Estructura de directorios ===== Si queremos que RomM detecte automáticamente nuestra bibilioteca de ROMs, podemos optar por dos organizaciones: * Estructura A * Estructura B Si no existe ninguna estructura de directorios, los ficheros se pueden subir desde la interfaz web de RomM y la aplicación automáticamente creará la **Estructura A**. ==== Estructura A ==== La recomendada. Tanto ROMs como BIOS tienen sus directorios dedicados. * ''/roms//'' * ''/bios//'' Ejemplo: library/ ├─ roms/ │ ├─ gbc/ │ │ ├─ game_1.gbc │ │ └─ game_2.gbc │ │ │ ├─ gba/ │ │ ├─ game_3.gba │ │ └─ game_4/ │ │ ├─ game_4.gba │ │ ├─ dlc │ │ │ ├─ game_4_dlc_1.7z │ │ │ └─ game_4_dlc_2.7z │ │ ├─ hack │ │ │ └─ game_4_hardmode.rar │ │ ├─ manual │ │ │ └─ game_4_manual.pdf │ │ ├─ mod │ │ │ └─ game_4_crazy_mode.zip │ │ ├─ patch │ │ │ └─ game_4_patch_v1.1.zip │ │ ├─ update │ │ ├─ demo │ │ ├─ translation │ │ └─ prototype │ │ │ └─ ps/ │ ├─ game_5/ │ │ ├─ game_5_cd_1.iso │ │ └─ game_5_cd_2.iso │ │ │ └─ game_6.iso │ └─ bios/ ├─ gba/ │ └─ gba_bios.bin │ └─ ps/ ├─ scph1001.bin ├─ scph5501.bin └─ scph5502.bin ==== Estructura B ==== Cada plataforma tiene su propia carpeta donde se almacenan tanto las ROMs como las BIOS: * ''//roms'' * ''//bios'' Ejemplo: library/ ├─ gbc/ │ └─ roms/ │ ├─ game_1.gbc │ └─ game_2.gbc │ ├─ gba/ │ ├─ roms/ │ │ ├─ game_3.gba │ │ └─ game_4/ │ │ ├─ game_4.gba │ │ ├─ dlc │ │ │ ├─ game_4_dlc_1.7z │ │ │ └─ game_4_dlc_2.7z │ │ ├─ hack │ │ │ └─ game_4_hardmode.rar │ │ ├─ manual │ │ │ └─ game_4_manual.pdf │ │ ├─ mod │ │ │ └─ game_4_crazy_mode.zip │ │ ├─ patch │ │ │ └─ game_4_patch_v1.1.zip │ │ ├─ update │ │ ├─ demo │ │ ├─ translation │ │ └─ prototype │ │ │ └─ bios/ │ └─ gba_bios.bin │ └─ ps/ ├─ roms/ │ ├─ game_5/ │ │ ├─ game_5_cd_1.iso │ │ └─ game_5_cd_2.iso │ │ │ └─ game_6.iso │ └─ bios/ ├─ scph1001.bin ├─ scph5501.bin └─ scph5502.bin ===== Configuración inicial ===== Al entrar por primera vez a http://localhost:8080 (o la IP y puerto que hayamos configurado), se nos presentará un asistente para elegir: * Estructura de la biblioteca de roms (ver sección más abajo) * Creación del usuario administrador. * Orígenes de metadatos para completar automáticamente información sobre nuestras roms. ===== Subir roms =====