---
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](https://github.com/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|Reverse Proxy]], Media, Jellyfin |

## 📝 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é)

```yaml
# 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)

```yaml
# 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)

```bash
# 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

- [README officiel](https://github.com/LLukas22/Jellyswarrm/blob/main/README.md)
- [Documentation UI](https://github.com/LLukas22/Jellyswarrm/blob/main/docs/ui.md)
- [Documentation Config](https://github.com/LLukas22/Jellyswarrm/blob/main/docs/config.md)
- [Reddit r/JellyfinCommunity WIP](https://www.reddit.com/r/JellyfinCommunity/comments/1my7q6p/wip_jellyswarrm_a_reverse_proxy_to_merge_multiple/)
- [Patreon LLukas22 (devlog)](https://www.patreon.com/posts/jellyswarrm-into-145059441)

## 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
