4.9 KiB
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 |
| GitHub | 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é)
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
- Cloner :
git clone https://github.com/IgnisDa/ryot.git && cd ryot - Installer Rust (rustup) et Node 20+ (nvm)
- Compiler :
cargo build --release - Frontend :
cd apps/frontend && pnpm install && pnpm build - Migrations :
cargo run --bin migration - Configurer
.env(cf..env.example) - Lancer :
./target/release/ryot - 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)