webapp stream jellyfin
StreamLike
Interface de streaming vidéo personnelle connectée à Jellyfin, avec authentification par mot de passe unique et lecture HLS.
Fonctionnalités
- Authentification par mot de passe (JWT, 24h)
- Intégration Jellyfin : bibliothèque, métadonnées, miniatures
- Lecture vidéo HLS via hls.js
- Interface responsive (Bulma CSS)
- Configuration simple via fichier JSON
Prérequis
- Node.js 18+
- Un serveur Jellyfin accessible
Installation
git clone <repo>
cd streamlike
npm install
Créez le fichier .env :
PORT=3000
APP_PASSWORD=VotreMotDePasse
JWT_SECRET=votre_cle_secrete_64_caracteres_minimum
Pour générer une clé JWT sécurisée :
node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
Créez config.json à partir de l'exemple :
cp config.example.json config.json
Renseignez l'URL de votre serveur Jellyfin et votre clé API dans config.json.
Démarrage
# Développement
npm run dev
# Production
npm start
L'application est disponible sur http://localhost:3000.
Déploiement VPS
Voir DEPLOY.md pour les instructions complètes (PM2, Nginx, HTTPS).
API
| Méthode | Route | Description |
|---|---|---|
POST |
/api/auth/login |
Authentification (retourne un JWT) |
GET |
/api/auth/verify |
Vérification du token |
POST |
/api/auth/logout |
Déconnexion |
Sécurité
- Le mot de passe est stocké hashé (bcrypt, 12 rounds)
- Délai anti-timing sur les échecs d'authentification
- Ne committez jamais
config.jsonni.env
Stack
- Backend : Node.js, Express, bcrypt, jsonwebtoken
- Frontend : HTML, Bulma CSS, hls.js
- Source vidéo : Jellyfin