0 Votes

Jellystat

Modifié par john le 2026/09/19 13:59

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

ConteneurRôle
jellystatApplication
jellystat-dbBase PostgreSQL 15

Stack

services:
 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 :

for db in jfstat postgres template1; do
  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.

docker exec jellystat-db psql -U postgres -tAc "SELECT datname, datcollversion, pg_database_collation_actual_version(oid) FROM pg_database WHERE datallowconn;"

Sauvegarde

Dump SQL de jellystat-db par le script de Sauvegarde. Les volumes nommés ne sont pas sauvegardés : le dump suffit.