Files
wiki/Catalogue-Self-Hosted/apps/app-private-captcha.md
T
2026-06-09 18:40:21 +02:00

6.0 KiB


title: Private Captcha created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, development, captcha, security, anti-bot, privacy] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Development, https://github.com/PrivateCaptcha/PrivateCaptcha]

💻 Private Captcha

CAPTCHA self-hosted qui respecte la vie privée — protection anti-bot sans tracking, sans Google reCAPTCHA, sans challenge visuel pénible, et sans envoyer les IPs de vos utilisateurs à un tiers.

📋 Informations Générales

Champ Valeur
Site web privatecaptcha.com
GitHub PrivateCaptcha/PrivateCaptcha
License AGPL-3.0 (serveur) + MIT (SDK)
Langage Go (serveur) + JS/HTML (widget)
Étoiles GitHub 175
Catégorie Development, Security / Anti-Bot
Référence selfh.st Development

📝 Description

Private Captcha est un service de CAPTCHA self-hosted conçu comme une alternative respectueuse de la vie privée à Google reCAPTCHA et hCaptcha. Le constat est simple : reCAPTCHA v3 trace vos utilisateurs, hCaptcha résout des tâches d'entraînement pour le data-labeling, et les deux envoient les IPs, User-Agents et comportements à des serveurs tiers.

Private Captcha fonctionne sur un modèle de « proof-of-work » + analyse comportementale légère : le widget JS calcule un puzzle cryptographique côté client (preuve de travail), envoie le résultat au serveur Private Captcha, qui décide en quelques millisecondes si la requête est humaine ou bot. Aucun pixel de tracking, aucun cookie tiers, aucun fingerprinting persistant. Compatible RGPD nativement.

L'intégration est quasi-identique à hCaptcha : un <script> à charger, un attribut data-sitekey, un endpoint POST /api/v1/verify côté backend, et c'est fait. Les SDK sont disponibles pour Go, JavaScript/TypeScript, PHP, Python, Ruby, .NET — la migration depuis hCaptcha se fait en quelques minutes.

Cas d'usage : protéger un formulaire d'inscription, un endpoint de login, une page de contact, un formulaire de commentaires, un endpoint API sensible. Particulièrement adapté aux sites RGPD-stricts, aux admins self-hosted, et à tous ceux qui ne veulent plus voir Google sur leur site.

🚀 Installation

Via Docker (recommandé)

# docker-compose.yml
version: '3.8'
services:
  private-captcha:
    image: ghcr.io/privatecaptcha/privatecaptcha:latest
    container_name: private-captcha
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      PC_ALLOWED_ORIGINS: "https://example.com,https://app.example.com"
      PC_DIFFICULTY: "4"        # ajustable, plus haut = plus dur pour les bots
      PC_ADMIN_EMAIL: "admin@example.com"
      PC_ADMIN_PASSWORD: ***changeme***
      PC_TLS: "false"           # Traefik gère le HTTPS
    volumes:
      - pc_data:/data
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.pc.rule=Host(`captcha.example.com`)"
      - "traefik.http.routers.pc.entrypoints=websecure"
      - "traefik.http.routers.pc.tls.certresolver=letsencrypt"

volumes:
  pc_data:

Installation manuelle

git clone https://github.com/PrivateCaptcha/PrivateCaptcha.git
cd PrivateCaptcha
go build -o privatecaptcha ./cmd/server
./privatecaptcha --config config.yaml

⚙️ Configuration

  1. Origine autorisée : déclarer chaque domaine (PC_ALLOWED_ORIGINS) qui appellera le widget — sécurité CORS stricte.
  2. Difficulté : PC_DIFFICULTY=4 par défaut, monter à 5-6 si vous voyez passer trop de bots, baisser à 3 si les utilisateurs légitimes se plaignent de lenteur.
  3. Intégration HTML : <script src="https://captcha.example.com/widget.js" async defer></script> + <div class="pc-captcha" data-sitekey="v2|abc123"></div>.
  4. Vérification backend : POST https://captcha.example.com/api/v1/verify avec la solution et la secret key côté serveur.
  5. Rate limiting : configurer un rate-limit (Traefik middleware) sur /api/v1/verify pour éviter l'abus.

🔗 Alternatives

  • hCaptcha — Référence privacy-friendly, gratuit, mais envoie des données à Intuition Machines (data labeling).
  • Altcha — Open source, sans tracking, alternative européenne, format différent (proof-of-work).
  • Google reCAPTCHA — Le plus utilisé, mais tracking massif, RGPD-hostile, et tendance à breaker.
  • Cloudflare Turnstile — Excellent, gratuit, mais lié à l'écosystème Cloudflare.
  • Friendly Captcha — Européen, GDPR-friendly, payant pour self-host (modèle SaaS).

🔒 Sécurité

  • 🔐 HTTPS obligatoire via app-traefik : le widget et l'API de vérification doivent passer en TLS.
  • 🔒 Secret key côté serveur uniquement : ne jamais exposer la clé secrète dans le HTML/JS client.
  • 🛡️ Rotation régulière de la sitekey/secret en cas de fuite.
  • 🛡️ PC_ALLOWED_ORIGINS strict : un attaquant qui connaît votre sitekey ne peut pas rejouer depuis un autre domaine.
  • 🛡️ Defense in depth : un CAPTCHA n'est qu'une couche — toujours avoir un rate-limit, une validation côté serveur, et une surveillance des IPs suspectes.
  • 🛡️ Logs : ne pas logger les solutions CAPTCHA en clair (équivalent d'un mot de passe à court terme).

📚 Ressources

🔗 Pages Liées