--- title: Cap (Captcha) created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, captcha, securite, anti-bot, self-hosted] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/tiagostudio/cap] --- # đŸ’» Cap (Captcha) > **CAPTCHA open source auto-hĂ©bergĂ©**, alternative Ă  hCaptcha et Google reCAPTCHA, sans tracking, sans envoi de donnĂ©es Ă  un tiers, sans dĂ©pendance cloud. ## 📋 Informations GĂ©nĂ©rales | Champ | Valeur | | :--- | :--- | | **Site web** | [capjs.js.org](https://capjs.js.org/) | | **GitHub** | [tiagostudio/cap](https://github.com/tiagostudio/cap) | | **License** | Apache-2.0 | | **Langage** | TypeScript (server) + JS/TS (client) | | **Étoiles GitHub** | 6 776 ⭐ | | **CatĂ©gorie** | [[cat-development\|Development]] | | **Note** | 100% gratuit et open source, **auto-hĂ©bergeable**, **RGPD-friendly** (pas de tracking Google), pas d'Ă©dition payante. | ## 📝 Description **Cap** est un **CAPTCHA moderne, simple et open source**, conçu comme une alternative Ă©thique et auto-hĂ©bergeable Ă  hCaptcha et reCAPTCHA. Contrairement Ă  ces services, Cap : - **Ne tracke pas les utilisateurs** : pas de Google Analytics, pas de fingerprinting - **Respecte le RGPD** par design - **N'envoie pas les donnĂ©es** Ă  un tiers : tout reste sur votre serveur - **Propose plusieurs niveaux de difficultĂ©** (challenge visuel, computation proof-of-work) - **API simple** : un widget JS + un endpoint REST - **Multi-tenant** : un seul serveur peut servir plusieurs sites - **Themes** : clair, sombre, custom **Comment ça marche** : 1. Le serveur Cap gĂ©nĂšre un challenge (image puzzle, PoW
) 2. Le widget JS du client soumet la rĂ©ponse 3. Le serveur vĂ©rifie et renvoie un token 4. L'app valide le token cĂŽtĂ© backend **Types de challenges supportĂ©s** : - **Image** : sĂ©lectionner les images qui correspondent (style hCaptcha) - **Proof-of-Work** : calcul cryptographique (faible empreinte carbone) - **Mode invisible** : dĂ©tecte les bots sans interaction utilisateur - **Token-based** : API REST pour intĂ©gration custom **DiffĂ©rence avec reCAPTCHA/hCaptcha** : Cap ne vend **pas vos donnĂ©es utilisateurs**, ne dĂ©pend d'**aucune API tierce** et est **gratuit Ă  l'infini**. **Cas d'usage** : - Formulaires de contact, login, inscription - Protection contre le spam de commentaires - Bot protection pour API - **Sites RGPD-strict** (UE, donnĂ©es sensibles) - **Auto-hĂ©bergement Ă©thique** ## 🚀 Installation ### Via Docker Compose (recommandĂ©) ```yaml # docker-compose.yml version: '3.8' services: cap: image: tiagostudio/cap:latest container_name: cap restart: unless-stopped environment: - PORT=3000 - CAP_ADMIN_PASSWORD=*** - CAP_ALLOWED_ORIGINS=https://example.com,https://app.example.com volumes: - cap-data:/app/data labels: - "traefik.enable=true" - "traefik.http.routers.cap.rule=Host(`cap.example.com`)" - "traefik.http.routers.cap.entrypoints=websecure" - "traefik.http.services.cap.loadbalancer.server.port=3000" networks: - proxy volumes: cap-data: networks: proxy: external: true ``` ### Standalone (Node.js) ```bash git clone https://github.com/tiagostudio/cap.git cd cap npm install CAP_ADMIN_PASSWORD=*** npm start ``` ### IntĂ©gration cĂŽtĂ© client (HTML) ```html
``` ## ⚙ Configuration 1. **CORS** : `CAP_ALLOWED_ORIGINS` doit lister tous les domaines clients 2. **Admin** : `CAP_ADMIN_PASSWORD` pour accĂ©der au dashboard 3. **Challenges** : configurer le niveau de difficultĂ© dans `config.toml` 4. **Mode invisible** : score-based, vĂ©rification silencieuse 5. **Persistence** : fichier SQLite par dĂ©faut (Docker volume) 6. **Rate limiting** : nombre de challenges par IP (anti-bruteforce) ## 🔗 Alternatives - **hCaptcha** (freemium) — Bonne alternative, mais envoie des donnĂ©es Ă  Intuition Machines - **Google reCAPTCHA v3** — Gratuit mais tracking Google massif - **Cloudflare Turnstile** — Excellent, gratuit, mais liĂ© Ă  Cloudflare - **Friendly Captcha** — Open source partial, proof-of-work, allemand - **mCaptcha** — Open source, PoW, indirection intĂ©ressante - **Anubis** (Proof-of-Work, libre) — Focus protection de pages ## 🔒 SĂ©curitĂ© - **HTTPS obligatoire** : le widget ne doit pas ĂȘtre servi en HTTP - **CORS strict** : ne jamais mettre `*` (l'origine du challenge doit ĂȘtre vĂ©rifiĂ©e) - **Token TTL** : tokens Ă  durĂ©e limitĂ©e (5-15 min) - **Rate limiting** : limiter les challenges par IP/empreinte - **Logs** : attention Ă  ne pas logger les challenges (anti-replay) - **Admin password** : Ă  stocker en secret (Docker secret ou `.env`) - **Audit** : dashboard admin pour voir les abus ## 📚 Ressources - [Documentation officielle](https://capjs.js.org/) - [GitHub tiagostudio/cap](https://github.com/tiagostudio/cap) - [DĂ©mo en ligne](https://capjs.js.org/) - [Pourquoi pas reCAPTCHA ?](https://capjs.js.org/#why-cap) ## 🔗 Pages LiĂ©es - [[cat-development]] — CatĂ©gorie Development - [[app-traefik]] — Reverse proxy HTTPS - [[securisation-home-lab]] — Bonnes pratiques sĂ©curitĂ© - [[recettes-docker-compose]] — Templates Docker - [[app-authentik]] / [[app-authelia]] — Authentification (CAPTCHA complĂ©mentaire)