- Publié le
Configurer Waline sur un site Next.js déployé sur Vercel
- Auteurs

- Nom
- Code Smarter
- @codesmarter_dev
💬 Introduction
Si tu veux permettre à tes lecteurs de laisser des commentaires sur ton blog Next.js, sans dépendre d’un service externe comme Disqus, Waline est une excellente solution.
Waline est :
- 🧩 Auto-hébergé — tu gardes le contrôle des données
- ⚡ Rapide — basé sur un backend serverless (idéal pour Vercel)
- 🌍 Internationalisable
- 🧠 Compatible Markdown, avatars, et réactionswq2
Dans cet article, on va configurer Waline étape par étape sur un site Next.js déployé sur Vercel.
Dans LeanCLoud
🧩 Configuration LeanCloud (Base de données)
- Connecte-toi ou inscris-toi sur LeanCloud Console.
- Clique sur Create app pour créer une nouvelle application.
Donne-lui un nom et sélectionne le plan Developer.

- Une fois dans ton app, va dans Settings → App Keys (en bas à gauche).
Note les valeurs suivantes :APP IDAPP KeyMaster KeyServer Url
Tu en auras besoin pour la configuration du serveur.Vercel
Déployer sur Vercel (Serveur)
- Clique sur le bouton Deploy ci-dessus pour déployer le modèle Waline sur Vercel.
Vous aurez besoin de vous connecter sur github pour crééer le dépôt.
- Donne un nom à ton projet puis clique sur Create et lancer le déploiement Vercel créera un nouveau dépôt basé sur le modèle Waline.

Dès que le déploiement sera terminé, accéder au tableau de bord

Ajouter les variables d'environnement dans l’onglet Settings → Environment Variables, :
LEAN_ID→ valeur deAPP IDLEAN_KEY→ valeur deAPP KeyLEAN_MASTER_KEY→ valeur deMaster KeyLEAN_SERVER→ valeur deREST API Server Url

👉 Tu peux consulter les autres variables disponibles ici.
Ensuite, redéploie ton aserver waline via Deployments → Redeploy.

- Quand le statut passe à Ready, clique sur Visit pour ouvrir ton serveur Waline.
Récupération du serverURL pour le client
Dans Settings → Domains, récupére ton domaine qui représente le serverURL.

Gestion des commentaires (Administration)
Une fois le déploiement terminé, veuillez visiter <serverURL>/ui/register pour vous enregistrer.
La première personne à s’enregistrer sera définie comme administrateur. Après vous être connecté en tant qu’administrateur, vous aurez accès à l’interface de gestion des commentaires. Vous pourrez y modifier, marquer ou supprimer des commentaires. Les utilisateurs peuvent également créer un compte via la boîte de commentaires, et ils seront redirigés vers leur page de profil après connexion.
<serverURL>/ui 
🧱 Dans votre projet Côté client : intégrer Waline dans Next.js
Installe le client Waline :
npm install @waline/client
Puis crée un composant React WalineComments.tsx :
'use client'
import { useCallback, useEffect, useState } from 'react'
import { init } from '@waline/client'
import { useParams } from 'next/navigation'
import { useTranslation } from '@/app/i18n/client'
import siteMetadata from '@/data/siteMetadata'
import type { LocaleTypes } from '@/app/i18n/settings'
import type { ReactElement } from 'react'
import '@waline/client/style.css'
export default function WalineComments(): ReactElement {
const locale = useParams()?.locale as LocaleTypes
const { t } = useTranslation(locale, 'home')
const [loadComments, setLoadComments] = useState<boolean>(false)
const handleLoadComments = useCallback(() => {
setLoadComments(true)
}, [])
useEffect(() => {
if (loadComments) {
init({
el: '#waline',
lang: locale,
reaction: true,
emoji: [
'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/weibo',
'https://cdn.jsdelivr.net/gh/walinejs/emojis@1.0.0/alus',
],
requiredMeta: ['nick'],
serverURL: siteMetadata.walineServer,
})
}
}, [loadComments, locale])
return (
<>
{!loadComments && (
<button
className="bg-primary-500 mb-6 rounded p-2 text-white hover:opacity-80 dark:hover:opacity-80"
onClick={handleLoadComments}
>
{t('comment')}
</button>
)}
{loadComments ? <div className="mt-6 mb-6" id="waline" /> : null}
</>
)
}
📁 Configurer siteMetadata.js
Ajoute ton URL de serveur Waline :
// data/siteMetadata.js
const siteMetadata = {
...
walineServer: '<serverURL>', //
}
export default siteMetadata
🌐 Afficher les commentaires dans tes articles
Dans ton template d’article :
import WalineComments from '@/components/WalineComments'
export default function BlogPost({ post }) {
return (
<article>
<h1>{post.title}</h1>
<div dangerouslySetInnerHTML={{ __html: post.content }} />
<WalineComments />
</article>
)
}
✅ Résultat
Tu as maintenant :
💬 Un système de commentaires fonctionnel et multilingue
☁️ Une base de données LeanCloud gratuite
🚀 Un serveur hébergé sur Vercel
🔐 Une configuration sécurisée via variables d’environnement