--- title: Ryot created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, tracking, media-tracker, rust, graphql] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Media+Tracker, https://github.com/IgnisDa/ryot] --- # 📚 Ryot > Tracker mĂ©dia tout-en-un (films, sĂ©ries, animes, livres, jeux, podcasts, sports) — moderne, performant, avec app mobile React Native. | MĂ©tadonnĂ©e | Valeur | | :--- | :--- | | **Site web** | [ryot.io](https://ryot.io) | | **GitHub** | [IgnisDa/ryot](https://github.com/IgnisDa/ryot) | | **License** | GPL-3.0 | | **Langage principal** | Rust (Axum) + TypeScript | | **Étoiles GitHub** | 113 ⭐ | | **DerniĂšre MAJ** | 2026-05-25 | | **CatĂ©gorie** | [[cat-tracking]] | ## Description **Ryot** (prononcez « riot ») est un **tracker mĂ©dia auto-hĂ©bergĂ©** particuliĂšrement ambitieux : il permet de suivre **films, sĂ©ries TV, animĂ©s, mangas, livres, jeux vidĂ©o, podcasts, et mĂȘme des exercices sportifs** dans une seule et mĂȘme application. Le projet, Ă©crit en **Rust** cĂŽtĂ© back-end (Axum) avec un front **React/React Native**, se veut une rĂ©ponse moderne et auto-hĂ©bergĂ©e Ă  des services comme Trakt + Goodreads + MyAnimeList combinĂ©s. Les donnĂ©es sont synchronisĂ©es avec les principales sources de mĂ©tadonnĂ©es (**TMDb, IGDB, MAL, Google Books, ListenNotes, ComicVine**). L'**API GraphQL** permet de tout piloter, et l'**app mobile** (iOS/Android) est compilĂ©e depuis le mĂȘme dĂ©pĂŽt. Le projet dispose aussi d'un **systĂšme d'extensions** pour ajouter de nouveaux providers de mĂ©tadonnĂ©es. Ryot est plus jeune que certains concurrents (cf. [[app-yamtrack]]) mais son **orientation multi-types de mĂ©dia**, sa **stack moderne** (Rust, GraphQL, React Native) et son **rythme de releases** en font l'un des projets les plus prometteurs du moment. L'UI est en anglais uniquement, mais l'API est bien documentĂ©e. ## Installation ### Via Docker (recommandĂ©) ```yaml version: "3.8" services: ryot: image: dytes/ryot:latest container_name: ryot restart: unless-stopped ports: - "8000:8000" environment: - DATABASE_URL=postgresql://ryot:*** - REDIS_URL=redis://redis:6379 - JWT_SECRET=change...es - TMDB_ACCESS_TOKEN=*** - IGDB_CLIENT_ID=*** - IGDB_CLIENT_SECRET=*** depends_on: - db - redis db: image: postgres:16-alpine container_name: ryot-db restart: unless-stopped environment: POSTGRES_DB: ryot POSTGRES_USER: ryot POSTGRES_PASSWORD: changez_moi volumes: - pgdata:/var/lib/postgresql/data redis: image: redis:7-alpine container_name: ryot-redis restart: unless-stopped volumes: - redis_data:/data volumes: pgdata: redis_data: ``` ### Installation manuelle 1. Cloner : `git clone https://github.com/IgnisDa/ryot.git && cd ryot` 2. Installer Rust (rustup) et Node 20+ (nvm) 3. Compiler : `cargo build --release` 4. Frontend : `cd apps/frontend && pnpm install && pnpm build` 5. Migrations : `cargo run --bin migration` 6. Configurer `.env` (cf. `.env.example`) 7. Lancer : `./target/release/ryot` 8. Mobile : `cd apps/mobile && pnpm install && pnpm run android|ios` ## Configuration - CrĂ©er le **premier utilisateur admin** via l'UI - Renseigner les **clĂ©s API** providers (TMDb, IGDB, MAL, Google Books) - Configurer les **unitĂ©s** (km/miles, kg/lbs) et prĂ©fĂ©rences de langue - Activer la **synchronisation Plex/Jellyfin** pour importer sa consommation existante - Activer les **statistiques** (workout + mĂ©dia combinĂ©s) - Brancher l'**export vers Strava** (workouts) - Configurer un **reverse proxy HTTPS** (Traefik + Let's Encrypt) ## Alternatives ### Open source - [[app-yamtrack]] — Django, plus simple, moins de catĂ©gories - **MediaTracker** — alternative Python basique - **Kavita** — mangas/comics, lecteur intĂ©grĂ© - **Jellyfin** — serveur mĂ©dia avec suivi - **Komga** — comics/mangas avec suivi - **Trakt** (cloud) — rĂ©fĂ©rence, payant pour certaines features ### PropriĂ©taires - **Trakt.tv Premium** — rĂ©fĂ©rence cloud - **MyAnimeList Plus** — mangas/animes - **Goodreads** (Amazon) — livres, social - **Letterboxd Pro** — films, social - **Backloggd** — jeux + films ## SĂ©curitĂ© - Changer le **JWT_SECRET** et garder secret (32+ caractĂšres) - Activer **HTTPS obligatoire** (Traefik / Caddy) - Activer la **2FA** (TOTP) sur les comptes - Restreindre l'accĂšs Ă  l'**API GraphQL** par IP / OIDC - Sauvegarder **pgdata** et **redis** rĂ©guliĂšrement (Redis est volatile par dĂ©faut : activer AOF) - Mettre Ă  jour l'image Docker (alertes Renovate/Dependabot) - Auditer les **clĂ©s API providers** (les rĂ©gĂ©nĂ©rer pĂ©riodiquement) ## Ressources - [Site officiel](https://ryot.io) - [Documentation](https://docs.ryot.io) - [Code source](https://github.com/IgnisDa/ryot) - [Discord communautaire](https://discord.gg/ryot) - [DĂ©mo en ligne](https://demo.ryot.io) ## Pages LiĂ©es - [[cat-tracking]] - [[recettes-docker-compose]] - [[cat-media-tracking]]