0 Votes

Code source wiki de Jellystat

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

Afficher les derniers auteurs
1 Statistiques et historique d'utilisation du serveur Jellyfin, installé sur le [[Raspberry Pi>>Wiki Batcave John.Infrastructure.RaspberryPi.WebHome]].
2
3 == Fonctionnalités ==
4
5 * Suivi des sessions en cours et journal des lectures, avec appareil et méthode de lecture.
6 * Historique de visionnage et activité par utilisateur.
7 * Statistiques par bibliothèque, contenus les plus regardés.
8 * Synchronisation automatique des bibliothèques de Jellyfin.
9 * Sauvegarde et restauration de ses propres données.
10
11 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.
12
13 == Architecture ==
14
15 |=Conteneur|=Rôle
16 |jellystat|Application
17 |jellystat-db|Base PostgreSQL 15
18
19 == Stack ==
20
21 {{code language="yaml"}}
22 services:
23 jellystat-db:
24 image: postgres:15
25 container_name: jellystat-db
26 restart: unless-stopped
27 environment:
28 POSTGRES_USER: postgres
29 POSTGRES_PASSWORD: <MOT_DE_PASSE>
30 volumes:
31 - postgres-data:/var/lib/postgresql/data
32
33 jellystat:
34 image: cyfershepard/jellystat:latest
35 container_name: jellystat
36 restart: unless-stopped
37 environment:
38 POSTGRES_USER: postgres
39 POSTGRES_PASSWORD: <MOT_DE_PASSE>
40 POSTGRES_IP: jellystat-db
41 POSTGRES_PORT: 5432
42 JWT_SECRET: "<SECRET_JWT>"
43 TZ: Europe/Paris
44 volumes:
45 - jellystat-backup-data:/app/backend/backup-data
46 ports:
47 - "5000:3000"
48 depends_on:
49 - jellystat-db
50 networks:
51 - default
52 - proxy
53
54 networks:
55 default:
56 proxy:
57 external: true
58
59 volumes:
60 postgres-data:
61 jellystat-backup-data:
62 {{/code}}
63
64 * ##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##.
65 * 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.
66 * La base reste sur le réseau interne de la stack.
67
68 == Changement d'image PostgreSQL : avertissements de collation ==
69
70 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 :
71
72 {{code language="bash"}}
73 for db in jfstat postgres template1; do
74 docker exec jellystat-db psql -U postgres -d "$db" -c "REINDEX DATABASE $db;" -c "ALTER DATABASE $db REFRESH COLLATION VERSION;"
75 done
76 {{/code}}
77
78 Vérifier : les deux versions affichées doivent être identiques pour chaque base.
79
80 {{code language="bash"}}
81 docker exec jellystat-db psql -U postgres -tAc "SELECT datname, datcollversion, pg_database_collation_actual_version(oid) FROM pg_database WHERE datallowconn;"
82 {{/code}}
83
84 == Sauvegarde ==
85
86 Dump SQL de ##jellystat-db## par le script de [[Sauvegarde>>Wiki Batcave John.Infrastructure.Sauvegarde.WebHome]]. Les volumes nommés ne sont pas sauvegardés : le dump suffit.