--- title: Loops created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, activitypub-fediverse, video, short-form, tiktok, fediverse] confidence: medium contested: false sources: [https://selfh.st/apps/?tag=activitypub-fediverse, https://joinloops.org/, https://github.com/joinloops/loops-server] --- # 🎬 Loops > **La plateforme de vidéo courte fediverse** : publiez et consommez des vidéos verticales façon TikTok / Reels, mais en ActivityPub, depuis votre propre instance. L'anti-TikTok décentralisé. | Métadonnée | Valeur | | :--- | :--- | | **Site web** | [https://joinloops.org](https://joinloops.org) | | **GitHub** | [https://github.com/joinloops/loops-server](https://github.com/joinloops/loops-server) | | **License** | AGPL-3.0 | | **Langage principal** | Go, TypeScript | | **Étoiles GitHub** | 49 ⭐ | | **Dernière MAJ** | 2026-05 | | **Catégorie** | [[cat-activitypub-fediverse]] | ## Description Loops est un projet néerlandais (« loops.video ») qui ambitionne de devenir **le TikTok du Fediverse** : une plateforme de **vidéo courte verticale** (format smartphone, < 1 minute par défaut, jusqu'à 2 min en option), avec feed algorithmique léger, likes, commentaires, follows, et bien sûr **fédération ActivityPub**. L'interface web et mobile (PWA) est calquée sur l'expérience « swipe up / swipe down » des plateformes de shorts. Le backend est en **Go** pour la performance (encodage vidéo, distribution) avec un front **TypeScript/React** pour l'UI. Le projet vise la **multi-instance** : un compte `@pseudo@loops.video` peut être suivi depuis Mastodon, et la vidéo est lue inline dans le post Mastodon (player embarqué). Cas d'usage : créateur de contenu qui veut garder son audience sans subir l'algorithme opaque de TikTok, associations, médias indépendants, communautés musicales. Le format est plus **engagement + fun** qu'une PeerTube (vidéo longue). **Points forts** : UX moderne (PWA fluide), Go (rapide), transcodage vidéo optimisé pour mobile, federation, support multi-instance, webapp responsive. **Points faibles** : projet jeune (depuis fin 2024), l'algorithme de feed est encore simple, modération limitée, pas encore d'app iOS/Android native, audio/musique limitée (pas d'intégration Spotify/SoundCloud). ## Installation ### Via Docker (recommandé) L'image officielle est `ghcr.io/joinloops/loops-server:latest`. ```yaml # docker-compose.yml services: loops: image: ghcr.io/joinloops/loops-server:latest container_name: loops restart: unless-stopped ports: - "8080:8080" environment: LOOPS_DATABASE_URL: "postgres://loops:***@db/loops?sslmode=disable" LOOPS_LISTEN_ADDR: "0.0.0.0:8080" LOOPS_PUBLIC_URL: "https://loops.example.com" LOOPS_JWT_SECRET: "change-me-random-50-chars" LOOPS_S3_BUCKET: loops-media LOOPS_S3_ENDPOINT: "http://minio:9000" LOOPS_S3_ACCESS_KEY: minio LOOPS_S3_SECRET_KEY: change-me depends_on: - db - minio db: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: loops POSTGRES_PASSWORD: change-me POSTGRES_DB: loops volumes: - db_data:/var/lib/postgresql/data minio: image: minio/minio:latest restart: unless-stopped command: server /data --console-address ":9001" environment: MINIO_ROOT_USER: minio MINIO_ROOT_PASSWORD: change-me volumes: - minio_data:/data ports: - "9001:9001" volumes: db_data: minio_data: ``` ### Installation manuelle 1. Installer Go 1.22+ et PostgreSQL 14+ 2. Cloner : `git clone https://github.com/joinloops/loops-server.git` 3. Lancer la compilation : `go build -o loops ./cmd/server` 4. Configurer le `.env` (DB + stockage objet) 5. `./loops migrate && ./loops serve` ## Configuration 1. Configurer le **stockage S3-compatible** (Minio local, Backblaze B2, Wasabi…) — les vidéos prennent de la place 2. Créer le premier compte admin via l'API 3. Activer le **transcodage** (HLS pour la lecture mobile) 4. Configurer le **reverse-proxy** (Nginx/Caddy) avec HTTPS 5. Activer la **fédération** (par défaut on) ## Alternatives ### Open source - [[app-peertube]] — vidéo longue, fediverse, plus mature - **TikTok** centralisé, propriétaire - **Shortwave** — autre tentative de short-vidéo fediverse (statut flou) - **Owncast** — live streaming, pas du tout short-form ### Propriétaires - TikTok — short vidéo, centralisé - Instagram Reels — intégré à Instagram - YouTube Shorts — intégré à YouTube ## Sécurité - **HTTPS obligatoire** - **Stockage S3** : verrouiller les permissions, idéalement bucket privé avec URL signées - **Modération** : Loops intègre un système de signalement, à configurer (auto-deletion de contenu flag) - **Quotas par utilisateur** : limiter la taille et la durée des vidéos (sinon le S3 explose) - **Sauvegardes** : BDD PostgreSQL + bucket S3 synchronisé (rclone / restic) ## Ressources - Site officiel : [joinloops.org](https://joinloops.org) - Documentation : [docs.joinloops.org](https://docs.joinloops.org) - Démo : [loops.video](https://loops.video) (instance principale) - Communauté : Matrix `#loops:matrix.org` ## Pages Liées - [[cat-activitypub-fediverse]] - [[recettes-docker-compose]] - [[app-peertube]]