101 lines
4.5 KiB
Markdown
101 lines
4.5 KiB
Markdown
---
|
|
title: SerpBear
|
|
created: 2026-06-08
|
|
updated: 2026-06-08
|
|
type: app
|
|
tags: [catalogue, search-engines, self-hosted, typescript]
|
|
confidence: medium
|
|
contested: false
|
|
sources:
|
|
- https://docs.serpbear.com
|
|
- https://github.com/towfiqi/serpbear
|
|
---
|
|
|
|
# SerpBear 🐻
|
|
> Outil de **suivi de positionnement SEO** et de recherche de mots-clés, alternative open source à Ahrefs / SEMrush.
|
|
|
|
| Métadonnée | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | https://docs.serpbear.com/ |
|
|
| **GitHub** | https://github.com/towfiqi/serpbear |
|
|
| **License** | MIT |
|
|
| **Langage** | TypeScript (Next.js) |
|
|
| **Étoiles** | 1 971 |
|
|
| **Dernière MAJ** | 2026-05-14 |
|
|
| **Catégorie** | [[cat-search-engines]] |
|
|
|
|
## Description
|
|
SerpBear est un **tracker de positions SEO** qui surveille quotidiennement le classement de vos mots-clés sur Google, Bing et DuckDuckGo. Il permet aux webmasters, aux agences SEO et aux propriétaires de sites de détecter les chutes/régressions de positionnement, d'analyser la performance par pays, par device (desktop/mobile) et de recevoir des **alertes email automatiques** en cas de mouvement significatif.
|
|
|
|
L'interface affiche l'évolution du SERP (Search Engine Results Page) sous forme de **graphique historique**, de tableaux triables et d'export CSV. Chaque domaine peut être associé à plusieurs mots-clés, eux-mêmes paramétrés par pays, langue, type de recherche (web, image, local). SerpBear supporte aussi la **concurrence** : vous pouvez suivre les positions des rivaux sur les mêmes mots-clés.
|
|
|
|
L'auto-hébergement permet de garder ses données SEO confidentielles (les requêtes de mots-clés sont sensibles d'un point de vue business intelligence). SerpBear s'intègre avec l'API ScraperAPI, ScrapingAnt ou SerpAPI pour contourner les rate-limits Google. C'est le « petit tracker » qui fait 80 % du travail d'Ahrefs pour 0 €/mois.
|
|
|
|
## Installation
|
|
### Docker Compose
|
|
```yaml
|
|
services:
|
|
serpbear:
|
|
image: towfiqi/serpbear:latest
|
|
container_name: serpbear
|
|
environment:
|
|
- USER=admin
|
|
- PASSWORD=changeme
|
|
- SECRET=changeme-random-string
|
|
- DATABASE_URL=postgresql://serpbear:serpbear@db:5432/serpbear
|
|
- SCraperAPI_KEY=${SCRAPERAPI_KEY}
|
|
- APP_URL=http://localhost:3000
|
|
ports:
|
|
- "3000:3000"
|
|
labels:
|
|
- traefik.enable=true
|
|
- traefik.http.routers.serpbear.rule=Host(`serp.example.com`)
|
|
- traefik.http.routers.serpbear.entrypoints=websecure
|
|
- traefik.http.routers.serpbear.tls.certresolver=letsencrypt
|
|
- traefik.http.services.serpbear.loadbalancer.server.port=3000
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- db
|
|
|
|
db:
|
|
image: postgres:15-alpine
|
|
container_name: serpbear-db
|
|
environment:
|
|
- POSTGRES_USER=serpbear
|
|
- POSTGRES_PASSWORD=serpbear
|
|
- POSTGRES_DB=serpbear
|
|
volumes:
|
|
- ./pgdata:/var/lib/postgresql/data
|
|
restart: unless-stopped
|
|
```
|
|
|
|
## Configuration
|
|
1. Démarrer la stack et créer le compte administrateur depuis `https://serp.example.com`.
|
|
2. Obtenir une **clé API ScraperAPI / ScrapingAnt / SerpAPI** (indispensable pour scraper Google sans ban).
|
|
3. Ajouter un **domaine** et saisir la liste des **mots-clés** à suivre (max 100 / domaine en gratuit).
|
|
4. Configurer le **cron quotidien** (par défaut à 02:00 UTC) pour le scraping automatique.
|
|
5. Activer les **alertes email** (SMTP) et les **webhooks** (Discord, Slack) en cas de chute de position.
|
|
|
|
## Alternatives
|
|
- **Open source** : SerpWatcher (limité), Rankerly (payant-self-hosted), SERPtimizer, SERP Scraper (Python), Google Search Console API scripts, WhatSerp (lib Python), SearchEnginePosition, SeoTools, Rango.
|
|
- **Propriétaire** : Ahrefs (référence), SEMrush, Mangools (KWFinder, SERPChecker), AccuRanker, SERPWatcher, SE Ranking, ProRankTracker.
|
|
|
|
## Sécurité
|
|
- **Changer le mot de passe par défaut** (`PASSWORD=changeme`) avant la première utilisation.
|
|
- **SECRET** doit être une chaîne aléatoire forte (32+ caractères, `openssl rand -hex 32`).
|
|
- **Clé API scraper** sensible : la stocker dans `.env` jamais dans le compose.
|
|
- **HTTPS obligatoire** pour chiffrer les credentials d'accès au dashboard.
|
|
- **Limiter l'accès** par IP / VPN / Cloudflare Access (Cloudflare Zero Trust gratuit).
|
|
|
|
## Ressources
|
|
- Code : https://github.com/towfiqi/serpbear
|
|
- Documentation : https://docs.serpbear.com
|
|
- Démo : https://app.serpbear.com
|
|
- Issues : https://github.com/towfiqi/serpbear/issues
|
|
|
|
## Pages Liées
|
|
- [[cat-search-engines]] — Catégorie parente
|
|
- [[app-searxng]] — Méta-moteur de recherche
|
|
- [[app-whoogle]] — Front-end Google
|
|
- [[recettes-docker-compose]] — Modèles de stacks
|