Files
2026-06-09 18:40:21 +02:00

7.6 KiB


title: Gameyfin created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, gaming, game-manager, library, igdb, kotlin, spring-boot, vaadin, react] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Gaming, https://github.com/gameyfin/gameyfin]

🎯 Gameyfin

Library manager de jeux moderne en Kotlin/Spring — scanne vos jeux, fetch les métadonnées IGDB, UI web réactive Vaadin + React.

📋 Informations Générales

Champ Valeur
Site web gameyfin.app
GitHub gameyfin/gameyfin
License AGPL-3.0
Langage Kotlin + Spring Boot 3 (backend) + Vaadin Hilla + React (frontend)
Étoiles 36 (catalogue)
Dernière MAJ 2026 (v2.x)
Catégorie cat-gaming

📝 Description

Gameyfin est un gestionnaire de bibliothèque de jeux vidéo self-hosted, écrit en Kotlin avec Spring Boot 3 côté backend et Vaadin Hilla + React côté frontend. C'est un projet relativement jeune (v2 réécrit from scratch) qui se positionne comme une alternative moderne et plus légère à app-gamevault.

L'objectif est simple : vous pointez Gameyfin vers un dossier de jeux, il scanne, identifie via IGDB, récupère jaquettes et métadonnées, et vous offre une UI web réactive pour parcourir, filtrer, et lancer vos jeux. La v2 a introduit un système de plugins (PF4J) pour étendre les fonctionnalités : scrapers alternatifs, intégrations launchers tiers, etc.

Gameyfin se distingue de la concurrence par son architecture 100% web (pas de client natif à installer), son système de plugins flexible, et sa stack technique moderne (Kotlin, Spring, Vaadin, React). Le frontend est généré par Vaadin Hilla (qui combine Vue/React + endpoints Java typés) et reste très réactif.

Fonctionnalités clés :

  • Scan automatique des dossiers de jeux
  • Match IGDB : nom, dev, jaquette, description, trailers
  • UI web réactive (Vaadin Hilla + React), responsive
  • Multi-bibliothèques : plusieurs dossiers scannés, étiquetables
  • Système de plugins (PF4J) : scrapers alternatifs, intégrations
  • Multi-utilisateurs : comptes, partage de bibliothèque
  • Collections : créer des regroupements thématiques
  • Tags / Filtres avancés : plateforme, genre, année, état
  • Recherche full-text performante
  • Pas de DRM : Gameyfin ne gère que les jeux DRM-free (et l'assume)

🚀 Installation

Option 1 : Docker Compose (recommandé)

# docker-compose.yml
services:
  gameyfin:
    container_name: gameyfin
    image: ghcr.io/gameyfin/gameyfin:latest
    restart: unless-stopped
    ports:
      - "8080:8080"
    volumes:
      - ./gameyfin/data:/app/data               # base SQLite + cache
      - /chemin/vers/jeux:/games:ro             # dossier de jeux (lecture seule)
      - ./gameyfin/config:/app/config           # config (optionnel)
    environment:
      - TZ=Europe/Paris
      - SERVER_PORT=8080
      - GAMEYFIN_BASE_URL=http://localhost:8080  # pour IGDB et Open Graph
      - ADMIN_USERNAME=admin
      - ADMIN_PASSWORD=Change...t
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.gameyfin.rule=Host(`gameyfin.example.com`)"
      - "traefik.http.routers.gameyfin.entrypoints=websecure"
      - "traefik.http.routers.gameyfin.tls.certresolver=letsencrypt"
docker compose up -d

Option 2 : JAR standalone

git clone https://github.com/gameyfin/gameyfin.git
cd gameyfin
./gradlew bootRun
# ou
./gradlew bootJar
java -jar build/libs/gameyfin-*.jar

Option 3 : Unraid / Synology

L'image Docker est compatible — configurer via les templates communautaires.

⚙️ Configuration

  1. Premier compte admin : créé au premier démarrage avec ADMIN_USERNAME / ADMIN_PASSWORD. Changer immédiatement.
  2. Ajouter une bibliothèque : Admin > Libraries > New → donner un nom, pointer vers le dossier de jeux, configurer le scraper (IGDB par défaut).
  3. IGDB credentials : créer une app Twitch (dev.twitch.tv) → obtenir Client ID + Secret → configurer dans Admin > Settings > Integrations > IGDB.
  4. Plugins : Admin > Plugins pour activer/désactiver les scrapers alternatifs (ScreenScraper, MobyGames, ...).
  5. Multi-utilisateurs : Admin > Users pour créer des comptes. Les non-admins ont accès en lecture seule à la bibliothèque partagée.
  6. Reverse proxy : app-traefik ou app-caddy pour HTTPS. Attention, Vaadin Hilla utilise des WebSockets et des endpoints serveur typés : ne pas interférer avec les chemins /connect/* et /HILLA/*.
  7. Backup : ./gameyfin/data/gameyfin.db (SQLite) — sauvegarder régulièrement.

🔄 Alternatives

Open Source

  • app-gamevault — Concurrent direct, C#/.NET, plus mature
  • RomM (rommapp/romm) — Magnifique UI, orienté ROMs
  • Gaseous — ROMs/jeux IGDB, plus ancien
  • Lutris — Game manager Linux, pas de serveur
  • Playnite — Library manager Windows, pas de serveur
  • LaunchBox / BigBox — Windows, freemium
  • Hydra Launcher — Multi-platformes, open source
  • Daijishō — Launcher Android/PC

Propriétaires (ce que Gameyfin remplace)

  • Steam — Modèle de référence, propriétaire
  • GOG Galaxy — Launcher GOG
  • Epic Games Launcher — Launcher Epic
  • EA App — Launcher EA
  • Ubisoft Connect — Launcher Ubisoft
  • Battle.net — Launcher Blizzard
  • Amazon Games — Launcher Amazon

Comparaison rapide

Critère Gameyfin GameVault RomM Gaseous
Type Serveur web Client-serveur Serveur web Serveur web
Langage Kotlin/Spring C#/.NET Python/React C#/.NET
Scan IGDB
Multi-utilisateurs
Plugins PF4J Limité
UI Moderne Type Steam Très belle Correcte
Licence AGPL-3.0 CC BY-NC-SA 4.0 GPL-3.0 MIT

🔐 Sécurité

  • Auth obligatoire : changer ADMIN_PASSWORD au premier démarrage, idéalement utiliser un mot de passe généré (openssl rand -base64 24).
  • HTTPS obligatoire : app-traefik ou app-caddy avec Let's Encrypt. Vaadin Hilla ne supporte pas le mixed content.
  • Dossier jeux en :ro : Gameyfin n'a pas besoin d'écrire dans les jeux eux-mêmes.
  • 2FA : non natif. Pour ajouter 2FA, mettre devant app-authelia ou app-authentik.
  • Légalité des jeux : Gameyfin gère des jeux DRM-free uniquement, comme GameVault. Les jeux Steam/Epic doivent être lancés via leurs launchers officiels.
  • Backups : ./gameyfin/data/ (SQLite + cache). Le dossier de jeux source doit aussi être sauvegardé.
  • WebSockets : bien configurer le reverse proxy pour ne pas casser les connexions temps réel Vaadin Hilla.

📚 Ressources

Pages Liées