8.4 KiB
title: Jellyswarrm created: 2026-06-06 updated: 2026-06-06 type: app tags: [catalogue, reverse-proxy, media, jellyfin, federation, rust] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=Reverse+Proxy, https://github.com/LLukas22/Jellyswarrm]
🚦 Jellyswarrm
Reverse proxy spécialisé Jellyfin qui fusionne plusieurs serveurs en une bibliothèque unifiée. Pour qui veut centraliser ses médias (et ceux de ses amis) sans configurer chaque client avec N serveurs.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | (GitHub uniquement) |
| GitHub | LLukas22/Jellyswarrm |
| License | GPL-2.0 (relicencé depuis MIT le 2025-08-29) |
| Langage | Rust (90.4 %), HTML, Python |
| Étoiles GitHub | 749 ⭐ |
| Dernière MAJ | 2025-08-29 (v0.2.1) |
| Catégorie | [[cat-reverse-proxy |
📝 Description
Jellyswarrm est un reverse proxy L7 ultra-spécialisé : il se place devant plusieurs instances Jellyfin et les présente aux clients (Jellyfin Mobile, web, TV, etc.) comme un seul serveur unifié. C'est la réponse au problème classique : "j'ai un serveur Jellyfin chez moi, mon ami en a un autre à 500 km, et je veux que mes apps n'en voient qu'un seul avec la bibliothèque agrégée".
Le tagline officiel résume bien : "Many servers. Single experience."
Caractéristiques principales :
- ✅ Reverse proxy Jellyfin-compatible : le client croit parler à un serveur Jellyfin normal
- ✅ Bibliothèque unifiée : fusion des films/séries/musique de tous les serveurs en arrière
- ✅ Lecture directe depuis le serveur d'origine : pas de transit par Jellyswarrm (transcodage fait sur place)
- ✅ Mapping utilisateur : lier ses comptes entre serveurs pour une expérience cohérente
- ✅ Synchronisation de comptes (fédération) : ajouter un user une seule fois
- ✅ UI Jellyfin web embarquée : accessible directement via
/ - ✅ WebSocket pour les features temps-réel (SyncPlay en cours de stabilisation)
- ✅ Client apps existants : la plupart des apps Jellyfin fonctionnent sans modification
- ⚠️ Encore en développement actif : certaines features annoncées comme QuickConnect, ajustement automatique du bitrate, gestion des médias via l'UI ne sont pas encore implémentées
Public cible : utilisateurs de Jellyfin multi-site (plusieurs localisations géographiques, serveurs amis, familles éclatées) qui veulent une seule bibliothèque, une seule URL et un seul login. Particulièrement adapté aux personnes qui partagent des médias avec leurs proches sans monter un serveur centralisé coûteux.
🚀 Installation
Option 1 : Docker Compose (recommandé)
# docker-compose.yml
version: '3.8'
services:
jellyswarrm:
image: ghcr.io/llukas22/jellyswarrm:latest
container_name: jellyswarrm
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- ./data:/app/data # config + base SQLite
environment:
- JELLYSWARRM_USERNAME=admin
- JELLYSWARRM_PASSWORD=jellyswarrm # ⚠️ CHANGER en production !
- JELLYSWARRM_HOST=0.0.0.0
- JELLYSWARRM_PORT=3000
networks:
- proxy
networks:
proxy:
external: true
💡 Le tag
latestest reconstruit à chaque release. Pour un pinning, utilisez:v0.2.1(ou version actuelle).
Variante Traefik (exposer derrière Traefik)
# docker-compose.yml (variante)
version: '3.8'
services:
jellyswarrm:
image: ghcr.io/llukas22/jellyswarrm:latest
container_name: jellyswarrm
restart: unless-stopped
volumes:
- ./data:/app/data
environment:
- JELLYSWARRM_USERNAME=admin
- JELLYSWARRM_PASSWORD=changeme
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.jellyswarrm.rule=Host(`media.example.com`)"
- "traefik.http.routers.jellyswarrm.entrypoints=websecure"
- "traefik.http.routers.jellyswarrm.tls.certresolver=letsencrypt"
- "traefik.http.services.jellyswarrm.loadbalancer.server.port=3000"
networks:
- proxy
networks:
proxy:
external: true
Option 2 : Binaire natif (build depuis source)
# Prérequis : Rust toolchain + Node.js 20+
git clone --recurse-submodules https://github.com/LLukas22/Jellyswarrm.git
cd Jellyswarrm
cd ui && npm install && cd ..
cargo build --release
./target/release/jellyswarrm-proxy
⚙️ Configuration Initiale
- Lancer le conteneur :
docker compose up -d. - Accéder à l'UI d'administration :
http://YOUR_HOST:3000/ui(login avecJELLYSWARRM_USERNAME/JELLYSWARRM_PASSWORD). - Ajouter les serveurs Jellyfin upstream : menu "Servers" → URL + clé API de chaque instance Jellyfin.
- Mapper les utilisateurs : menu "Users" → lier un compte local à un compte distant.
- Tester :
http://YOUR_HOST:3000affiche l'UI Jellyfin web unifiée, brancher les clients (Android TV, iOS, web) sur cette URL unique. - Sécuriser derrière HTTPS (Traefik/Caddy) avant d'exposer sur Internet.
⚠️ Changer le mot de passe par défaut
jellyswarrmimmédiatement après la première connexion.
🔄 Alternatives
Open Source
- Jellystat — analytics et stats Jellyfin (pas de fusion)
- Jellyseerr — requêtes média style Overseerr (Jellyfin-aware)
- JellySync — synchronisation entre serveurs (expérimental)
- Multi-server dans l'app Jellyfin — support natif dans certaines apps (Jellyfin Media Player, etc.) mais pas toutes
- SMB / NFS mounts — monter les bibliothèques distantes (perf réseau catastrophique, pas viable hors LAN)
- Plex — supporte multi-serveurs nativement mais c'est un autre écosystème
Propriétaires (ce que Jellyswarrm remplace)
- Plex (passé à un modèle freemium) — multi-serveurs natif mais non libre
- Emby Premiere — multi-serveurs en option payante
- Stremio + Real-Debrid — agrégation SaaS de sources
Comparaison rapide
| Critère | Jellyswarrm | Multi-serveur dans app Jellyfin | Plex |
|---|---|---|---|
| Licence | GPL-2.0 | GPL-2.0 (Jellyfin) | Propriétaire |
| Fusion bibliothèque | ✅ | ❌ (commutation) | ✅ |
| Single login | ✅ | ❌ | ✅ |
| Lecture directe | ✅ | n/a | ✅ |
| Stabilité | ⚠️ WIP | ✅ | ✅ |
| Transcodage | Côté serveur d'origine | Côté serveur sélectionné | Centralisé ou remote |
Verdict : Jellyswarrm est la seule solution self-hosted connue pour la fusion de bibliothèques Jellyfin. À utiliser si vous avez réellement plusieurs serveurs et que la commutation manuelle est insupportable. Sinon, l'ajout multi-serveur natif des clients Jellyfin reste la voie la plus stable.
🔐 Sécurité
- Authentification admin sur
/ui: changer le mot de passe par défaut - HTTPS obligatoire en production (Traefik/Caddy) : Jellyfin utilise des streams longs, MITM est un risque réel
- Clés API Jellyfin upstream : stockées dans
./data, sécuriser les permissions du volume (chmod 700) - Mapping d'utilisateurs : limiter aux comptes de confiance ; un user mappé peut voir la bibliothèque du serveur lié
- ⚠️ Pas d'auth globale sur l'UI Jellyfin : c'est Jellyswarrm qui doit faire office d'authentification, sinon tout le monde voit tout
- ⚠️ WIP : l'auth et certaines protections sont en cours de durcissement
- Reverse proxy HTTPS : utiliser les middlewares Traefik
secureHeaders(HSTS, X-Frame-Options, etc.)
📚 Ressources
- README officiel
- Documentation UI
- Documentation Config
- Reddit r/JellyfinCommunity WIP
- Patreon LLukas22 (devlog)
Pages Liées
- cat-reverse-proxy — Catégorie Reverse Proxy
- app-caddy — reverse proxy L7 pour exposition HTTPS
- app-traefik — reverse proxy L7 cloud-native
- app-jellyfin — Le serveur média en aval
- comparatif-reverse-proxy — Comparaison détaillée
- media-stack — Stack média auto-hébergée