Guide Self-Hosted

Tout ce qu'il faut savoir pour héberger Seogard sur votre serveur.

Getting Started

Prérequis : Docker et Docker Compose installés sur votre serveur.

  1. Cloner le repo
    git clone https://github.com/seogard-software/seogard.git && cd seogard
  2. Copier et configurer le fichier d'environnement
    cp .env.example .env

    Éditez .env et changez obligatoirement :

    VariableDescription
    MONGO_PASSWORDMot de passe MongoDB — choisissez un mot de passe fort
    NUXT_JWT_SECRETClé de signature JWT — 64+ caractères aléatoires
    NUXT_PUBLIC_APP_URLURL publique de votre instance (ex: https://seo.monsite.com)
  3. Lancer
    docker compose -f docker-compose.self-hosted.yml up -d
  4. Ouvrir http://localhost:3000 et créer votre compte administrateur

Le premier compte créé sera l'administrateur (owner). L'inscription se ferme ensuite automatiquement — les membres suivants sont ajoutés par invitation.

Un seul fichier .env pour tout (web + crawler). Les connexions MongoDB et Redis sont gérées automatiquement par Docker.

Architecture

Votre serveur
WebDashboard + APIport 3000
WorkersCrawler Playwrightx2
MongoDBBase de données
RedisQueue de crawl

Le Web sert le dashboard et l'API. Les Workers crawlent les pages avec Playwright (navigateur headless). Redis distribue les pages aux workers. MongoDB stocke les données.

Dimensionnement

Chaque worker utilise environ 1 GB de RAM. Le reste est partagé entre MongoDB, Redis et le serveur web. La seule chose à configurer : le nombre de workers.

RAM serveurWorkersPages monitorables
4 GB1~5 000
8 GB3~15 000
16 GB8~50 000
32 GB15~100 000+
WORKER_REPLICAS=3 docker compose -f docker-compose.self-hosted.yml up -d

Ajuster les workers

Modifiez le nombre de workers selon les ressources de votre serveur :

WORKER_REPLICAS=5 docker compose -f docker-compose.self-hosted.yml up -d

Ou éditez directement docker-compose.self-hosted.ymlreplicas: 5

Notifications email

Optionnel — sans configuration email, Seogard fonctionne mais n'envoie pas d'alertes ni de reset de mot de passe.

  1. Créez un compte gratuit sur resend.com (100 emails/jour)
  2. Vérifiez votre domaine dans le dashboard Resend
  3. Ajoutez dans votre .env :
    RESEND_API_KEY=re_votre_cle_ici
    [email protected]
  4. Redémarrez : docker compose -f docker-compose.self-hosted.yml restart web worker

Connexion OAuth

Optionnel — sans OAuth, les utilisateurs se connectent par email + mot de passe.

Ajoutez les clés dans votre .env pour activer chaque provider :

Google
  1. Créez un OAuth Client sur Google Cloud Console
  2. Redirect URI : https://seogard.io/api/auth/oauth/google/callback
  3. GOOGLE_CLIENT_ID=... et GOOGLE_CLIENT_SECRET=...
Microsoft
  1. Créez une app sur Azure Portal → App registrations
  2. Redirect URI : https://seogard.io/api/auth/oauth/microsoft/callback
  3. MICROSOFT_CLIENT_ID=... et MICROSOFT_CLIENT_SECRET=...
GitHub
  1. Créez une OAuth App sur GitHub Developer Settings
  2. Callback URL : https://seogard.io/api/auth/oauth/github/callback
  3. GITHUB_CLIENT_ID=... et GITHUB_CLIENT_SECRET=...

Whitelisting du crawler

Si vos sites sont protégés par un WAF (Cloudflare, Akamai, etc.), vous devez whitelister l'IP de votre serveur.

Voir le guide de whitelisting

Mise à jour

cd seogard
git pull
docker compose -f docker-compose.self-hosted.yml up --build -d

Les données MongoDB sont persistées dans un volume Docker. Aucune perte de données lors d'une mise à jour.

Licence

Seogard est distribué sous Business Source License 1.1 (BSL). Vous pouvez l'utiliser gratuitement pour un usage interne (monitoring de vos propres sites). L'utilisation comme service commercial concurrent est interdite.

Chaque version passe automatiquement en Apache 2.0 après 3 ans.

Lire la licence complète

Sauvegarde

# Sauvegarder
docker exec seogard-mongo-1 mongodump --archive > backup-$(date +%Y%m%d).archive

# Restaurer
docker exec -i seogard-mongo-1 mongorestore --archive < backup.archive