Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
@@ -0,0 +1,95 @@
---
title: AnyCable
created: 2026-06-08
updated: 2026-06-08
type: app
tags: [catalogue, notifications, websockets, real-time, app-marathon-batch-rattrapage-3]
confidence: medium
contested: false
sources: [https://selfh.st/apps/?tag=Notifications, https://anycable.io]
---
# 🔔 AnyCable
> **Serveur WebSocket scalable pour Ruby/Rails** : drop-in replacement pour ActionCable, jusqu'à 10x plus performant. Pas une app « notification » classique mais un **middleware temps réel**.
## 📋 Informations Générales
| Champ | Valeur |
| :--- | :--- |
| **Site web** | [anycable.io](https://anycable.io) |
| **GitHub** | [anycable/anycable](https://github.com/anycable/anycable) |
| **License** | MIT |
| **Langage** | Go (serveur) + Ruby (gem client) |
| **Étoiles GitHub** | 1.8k ⭐ |
| **Catégorie** | [[cat-notifications|Notifications]] *(catégorie réelle : Real-time / WebSockets)* |
## 📝 Description
**AnyCable** remplace ActionCable (le serveur WebSocket de Rails) par une implémentation **Go** scalable. Permet de gérer des **dizaines de milliers de connexions concurrentes** sur un seul serveur, avec **pub/sub distribué** (Redis, NATS, PostgreSQL). Utilisé en production par : JetBrains, Travelport, etc.
**Différence avec un serveur de notification classique** : AnyCable est une **librairie serveur** (pas une app à installer) — vous l'intégrez dans votre app Rails. Ce n'est pas le bon choix si vous cherchez un push simple : voyez plutôt Ntfy ou Gotify.
**Pour qui** : équipes Rails qui veulent **scaler les WebSockets** sans réécrire en Go/Node.
## 🚀 Installation
### Gemfile
```ruby
gem "anycable-rails", "~> 1.4"
```
### Docker Compose (composants)
```yaml
version: '3.8'
services:
anycable:
image: ghcr.io/anycable/anycable-go:latest
container_name: anycable
restart: unless-stopped
command: -p 8080 -r redis://redis:6379
ports:
- "8080:8080"
redis:
image: redis:7-alpine
container_name: anycable-redis
restart: unless-stopped
# Your Rails app exposing ActionCable
app:
build: .
environment:
- ANYCABLE_URL=ws://anycable:8080
- REDIS_URL=redis://redis:6379
```
## 🔄 Alternatives
### Open Source
- **ActionCable** (Rails) — Built-in, mais limité
- **Phoenix Channels** (Elixir) — Excellente alternative
- [[app-ntfy]] — Pour push simple (pas WebSocket générique)
### Propriétaires
- **Pusher** — SaaS WebSocket
- **Ably** — Real-time PaaS
- **PubNub** — Real-time messaging
## 🔐 Sécurité
- **WSS obligatoire** via reverse proxy.
- **Auth via channels** : AnyCable ne fait pas d'auth, votre app Rails le gère via `connection.rb`.
- **Rate limiting** : configurer côté Go (`--limits`).
- **Idempotency** : les broadcasts sont best-effort ; pour critiques, ajouter confirmation applicative.
## 📚 Ressources
- [Documentation](https://docs.anycable.io/)
- [GitHub](https://github.com/anycable/anycable)
- [Benchmarks](https://docs.anycable.io/benchmarks)
## Pages Liées
- [[cat-notifications]] — Catégorie Notifications
- [[app-ntfy]] — Pour notifications simples
- [[recettes-docker-compose]] — Templates Docker