Files
2026-06-09 18:40:21 +02:00

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 latest est 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

  1. Lancer le conteneur : docker compose up -d.
  2. Accéder à l'UI d'administration : http://YOUR_HOST:3000/ui (login avec JELLYSWARRM_USERNAME / JELLYSWARRM_PASSWORD).
  3. Ajouter les serveurs Jellyfin upstream : menu "Servers" → URL + clé API de chaque instance Jellyfin.
  4. Mapper les utilisateurs : menu "Users" → lier un compte local à un compte distant.
  5. Tester : http://YOUR_HOST:3000 affiche l'UI Jellyfin web unifiée, brancher les clients (Android TV, iOS, web) sur cette URL unique.
  6. Sécuriser derrière HTTPS (Traefik/Caddy) avant d'exposer sur Internet.

⚠️ Changer le mot de passe par défaut jellyswarrm immé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

Pages Liées