Jellystat
Statistiques et historique d'utilisation du serveur Jellyfin, installé sur le Raspberry Pi.
Fonctionnalités
- Suivi des sessions en cours et journal des lectures, avec appareil et méthode de lecture.
- Historique de visionnage et activité par utilisateur.
- Statistiques par bibliothèque, contenus les plus regardés.
- Synchronisation automatique des bibliothèques de Jellyfin.
- Sauvegarde et restauration de ses propres données.
Jellystat interroge Jellyfin par son API, avec une clé d'API créée dans Jellyfin (Tableau de bord > Clés API), et conserve tout l'historique dans sa propre base.
Architecture
| Conteneur | Rôle |
|---|---|
| jellystat | Application |
| jellystat-db | Base PostgreSQL 15 |
Stack
jellystat-db:
image: postgres:15
container_name: jellystat-db
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: <MOT_DE_PASSE>
volumes:
- postgres-data:/var/lib/postgresql/data
jellystat:
image: cyfershepard/jellystat:latest
container_name: jellystat
restart: unless-stopped
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: <MOT_DE_PASSE>
POSTGRES_IP: jellystat-db
POSTGRES_PORT: 5432
JWT_SECRET: "<SECRET_JWT>"
TZ: Europe/Paris
volumes:
- jellystat-backup-data:/app/backend/backup-data
ports:
- "5000:3000"
depends_on:
- jellystat-db
networks:
- default
- proxy
networks:
default:
proxy:
external: true
volumes:
postgres-data:
jellystat-backup-data:
- JWT_SECRET signe les jetons de connexion. Ne jamais garder la valeur d'exemple de la documentation : elle permettrait à n'importe qui de fabriquer un jeton valide. Générer une valeur avec openssl rand -hex 32.
- Jellystat doit être sur le réseau proxy dans la stack elle-même : un branchement fait à la main (docker network connect) est perdu à chaque recréation du conteneur, et SWAG répond alors 502.
- La base reste sur le réseau interne de la stack.
Changement d'image PostgreSQL : avertissements de collation
Passer d'une image à une autre de la même version majeure (par exemple postgres:15.2 vers postgres:15) peut changer la version de la bibliothèque système qui trie les textes. PostgreSQL le signale au démarrage par collation version mismatch. Reconstruire les index puis enregistrer la nouvelle version, pour chaque base :
docker exec jellystat-db psql -U postgres -d "$db" -c "REINDEX DATABASE $db;" -c "ALTER DATABASE $db REFRESH COLLATION VERSION;"
done
Vérifier : les deux versions affichées doivent être identiques pour chaque base.
Sauvegarde
Dump SQL de jellystat-db par le script de Sauvegarde. Les volumes nommés ne sont pas sauvegardés : le dump suffit.