Héberger un bot Discord chez soi, sans louer de serveur dédié ni de VPS, c’est tout à fait possible… à condition d’avoir une Freebox Server compatible avec les machines virtuelles (Freebox Ultra, Delta, Pop avec disque, etc.) et un peu de curiosité.
Dans cet article, on va voir comment :
- créer une machine virtuelle Debian 12 dans l’interface Freebox OS,
- installer Node.js via NVM,
- préparer un bot Discord avec discord.js,
- le déployer dans la VM, directement sur la Freebox,
- et vérifier qu’il est bien connecté à votre serveur Discord.
⚠️ Important :
- On ne va pas traiter ici en détail la sécurité (firewall, durcissement SSH, etc.) : c’est à vous de sécuriser la machine.
- On ne va pas non plus transformer Node en service (systemd/PM2). À ce stade, le bot tourne tant que le processus
nodeest lancé. On verra l’exécution 24/7 dans un autre article.
1. Pré-requis
Avant de vous lancer, assurez-vous d’avoir :
- Une Freebox Server avec le module VM activé (et un disque interne ou externe relié à la box, SSD ou disque dur USB).
- Accès à Freebox OS (interface d’administration de la box).
- Un compte Discord avec accès au portal développeurs : https://discord.com/developers.
Des notions de base :
- ligne de commande Linux,
- Node.js / npm,
- JavaScript côté serveur.
On part aussi du principe que :
- vous avez un poste de développement (Windows, macOS ou Linux) avec un éditeur (WebStorm, VS Code, etc.),
- vous êtes prêt à tester d’abord votre bot en local, puis à le déployer sur la Freebox.
2. Créer une machine virtuelle Debian 12 dans Freebox OS
Connectez-vous à Freebox OS (via l’adresse habituelle de votre box, par exemple http://mafreebox.freebox.fr), puis :
- Ouvrez la section VM (Machines virtuelles).
- Cliquez sur Ajouter une VM.
- Renseignez les paramètres principaux :
- Nom : par exemple
debian-botoudebian-bot-discord. - CPU : 2 vCPU suffisent largement pour un petit bot.
- RAM : 2 Go sont confortables pour Debian + Node.
- Nom : par exemple
- Choisissez un système préinstallé :
- sélectionnez Debian 12 dans la liste proposée par la Freebox.
- Définissez l’utilisateur :
- Nom d’utilisateur : par défaut
freebox(vous pouvez le laisser). - Mot de passe : dans la vidéo, on utilise un mot de passe très simple pour la démo, mais en pratique, utilisez un mot de passe fort.
- (Optionnel mais recommandé) Ajoutez une clé SSH : c’est le plus sûr.
- Nom d’utilisateur : par défaut
- Laissez la taille de disque proposée (par exemple ~42 Go), stockée sur votre disque USB/SSD relié à la Freebox.
- Validez : la Freebox télécharge et initialise automatiquement l’image Debian.
À la fin de l’assistant, cliquez sur Terminer : votre VM Debian apparaît dans la liste, prête à être démarrée.
3. Première connexion à Debian : console et sudo
Dans l’interface VM :
- Sélectionnez votre VM Debian.
- Cliquez sur Démarrer.
- Une fois la VM allumée, ouvrez la console (terminal intégré dans Freebox OS).
Vous arrivez sur l’écran de connexion Debian :
- Login :
freebox(ou le nom d’utilisateur défini), - Mot de passe : celui que vous avez choisi à la création.
Sur les images Debian fournies par la Freebox, l’utilisateur n’est pas root. Pour les installations système, il faudra utiliser sudo.
Commencez par mettre à jour votre système :
sudo apt update
sudo apt upgrade
Normalement, l’image étant récente, il y aura peu de mises à jour, mais c’est toujours une bonne habitude.
4. Installer Node.js avec NVM sur la VM
Pour faire tourner un bot Discord.js, il nous faut Node.js. Une manière pratique de l’installer est d’utiliser NVM (Node Version Manager), qui permet de gérer plusieurs versions de Node.
Sur la VM Debian (toujours dans le terminal) :
- Installez NVM (exemple de commande classique) :
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
- Rechargez votre shell pour que
nvmsoit disponible :
source ~/.bashrc
- Installez une version récente de Node.js (par exemple la 24) :
nvm install 24
nvm use 24
- Vérifiez les versions :
node -v
npm -v
Vous devez voir s’afficher une version récente de Node (v24.x.x dans la vidéo) et la version de npm.
Votre Debian dans la Freebox est maintenant prête à exécuter du Node.js.
5. Préparer un dossier pour le bot sur la VM
Toujours dans le terminal sur la VM :
mkdir ~/bot
cd ~/bot
ls Le dossier bot servira de répertoire de travail pour votre projet Node. Pour l’instant il est vide, ce qui est normal.
L’idée sera :
- de développer le bot en local sur votre machine (avec votre IDE favori),
- puis de transférer les fichiers vers
~/botsur la VM via SFTP (FileZilla dans l’exemple).
6. Créer l’application Discord et le bot
Pendant que la VM tourne, côté navigateur, rendez-vous sur le portal développeurs Discord :
- Allez sur https://discord.com/developers.
- Cliquez sur “New Application”.
- Donnez un nom à votre application, par exemple
demo-bot. - Acceptez les conditions, validez.
Vous venez de créer une application. Il faut maintenant en faire un bot :
- Dans le menu de gauche de votre application, allez dans “Bot”.
- Cliquez sur “Add Bot” / “Reset Token” si besoin.
- Générez un token pour votre bot.
⚠️ Token = secret absolu
Ne le publiez jamais, ne le commitez pas sur Git, ne le montrez pas en vidéo. Dans la démo, le token est montré uniquement parce que la machine sera supprimée ensuite. En production, vous devez le garder confidentiel (variable d’environnement, fichier non versionné, etc.).
Pour simplifier, on va stocker le token dans un petit fichier de configuration non versionné : config.json.
Sur votre machine de développement (pas dans la VM pour l’instant) :
- Créez un nouveau projet (par exemple
bot-freebox) avec votre IDE. - Ajoutez un fichier
config.json:
{
"token": "VOTRE_TOKEN_ICI"
}💡 Pensez à ajouter
config.jsondans votre.gitignoresi vous utilisez Git.
7. Donner les permissions et inviter le bot sur un serveur Discord
Toujours dans le portal développeurs :
- Dans l’onglet Bot, configurez les intentions et permissions.
- Pour une démo simple, cocher
Administratorsuffit (même si ce n’est pas conseillé en production). - Pour un bot réel, il faudra affiner (gestion des messages, présence, membres, etc.)
- Pour une démo simple, cocher
- Allez ensuite dans la partie OAuth2 → générateur d’URL :
- Cochez “bot” dans les types d’objets.
- Cochez les permissions nécessaires (par exemple
Administratorpour la démo).
- Copiez l’URL générée et ouvrez-la dans un nouvel onglet.
- Choisissez le serveur Discord sur lequel vous voulez installer le bot.
- Validez les autorisations.
Discord vous indique que le bot a été ajouté au serveur. Vous le voyez dans la liste des membres, mais hors ligne tant que votre code ne tourne pas.
8. Créer le projet Node.js avec discord.js
Sur votre machine locale, dans le dossier du projet :
Initialisez un projet Node :
npm init -y
Installez discord.js :
npm install discord.js
Créez ensuite un fichier index.js avec le code minimal pour connecter le bot :
// index.js
const { Client, Events, GatewayIntentBits } = require('discord.js');
const { token } = require('./config.json');
// On crée un client Discord avec les intents nécessaires.
// Pour un bot "de base", on se limite par exemple aux guilds.
const client = new Client({
intents: [GatewayIntentBits.Guilds],
});
// Event déclenché quand le bot est prêt
client.once(Events.ClientReady, (c) => {
console.log(`Connecté en tant que ${c.user.tag}`);
});
// Connexion à Discord avec le token
client.login(token);
Testez en local :
node index.js
Dans la console, vous devriez voir quelque chose comme :
Connecté en tant que DemoBot#1234
Sur votre serveur Discord, le bot passe en ligne.
À ce stade, tout tourne sur votre poste local. L’objectif est maintenant de déplacer ce code sur la VM Debian dans la Freebox.
9. Transférer le projet sur la VM (SFTP / FileZilla)
Pour déployer votre bot sur la VM, on va utiliser une connexion SFTP (SSH + transfert de fichiers).
9.1. Récupérer l’IP de la VM
Sur la console Debian, tapez :
ip a
Notez l’adresse IP du type 192.168.1.xxx (celle de la VM, pas de la box).
Dans la vidéo, on obtient par exemple :
192.168.1.185
9.2. Se connecter en SFTP
Ouvrez FileZilla (ou tout autre client SFTP) :
- Hôte :
192.168.1.185(remplacez par l’IP de votre VM), - Protocole : SFTP (SSH File Transfer Protocol),
- Port :
22, - Utilisateur :
freebox, - Mot de passe : celui défini lors de la création de la VM.
Acceptez l’empreinte de la clé SSH (le message “Êtes-vous sûr de vouloir faire confiance à ce serveur ?”).
Dans le panneau de droite (distant), vous devez voir le home de l’utilisateur freebox et le dossier bot que vous avez créé tout à l’heure.
Dans le panneau de gauche (local), placez-vous dans votre dossier de projet (bot-freebox par exemple).
Transférez les fichiers du projet vers le dossier bot distant :
package.jsonpackage-lock.json(si présent)index.jsconfig.json
éventuellement d’autres fichiers si vous en avez
Pas besoin de transférer node_modules : on les recréera directement sur la VM.
10. Installer les dépendances et lancer le bot sur la VM
Retournez dans la console de la VM (via Freebox OS ou en SSH direct si vous préférez) :
cd ~/bot
ls Vous devez voir les fichiers du projet.
Installez les dépendances :
npm install
Cela recrée le dossier node_modules sur la VM, en fonction de package.json.
Si tout se passe bien, lancez le bot :
node index.js
Dans la console de la VM, vous voyez le message :
Connecté en tant que DemoBot#1234
Et sur votre serveur Discord, le bot apparaît en ligne, cette fois-ci grâce à la VM Debian sur votre Freebox.
À partir de ce moment-là :
- vous pouvez éteindre votre PC,
- tant que la VM est allumée et que le process
node index.jstourne, votre bot reste connecté.
11. Limites actuelles : process manuel et sécurité
À ce stade, on a volontairement gardé les choses simples :
- Le bot est lancé via
node index.jsdans un terminal. - Si vous fermez le terminal ou si la VM redémarre, le bot s’arrête.
- On n’a pas configuré de firewall ni durci l’accès SSH.
Pour aller plus loin (ce qui fera l’objet d’autres contenus) :
Faire tourner le bot comme un service :
- via
systemd(unité de service), - ou via un process manager comme
pm2.
Cela permet de relancer automatiquement le bot en cas de crash ou de reboot de la VM.
Sécuriser la VM :
- changer le mot de passe utilisateur pour quelque chose de robuste,
- désactiver l’authentification par mot de passe au profit des clés SSH,
- limiter les ports ouverts (pare-feu
ufwou iptables), - restreindre les permissions et intents du bot au strict nécessaire.
Gérer correctement les secrets :
- ne jamais commiter
config.jsonavec un vrai token, - utiliser des variables d’environnement (
process.env.DISCORD_TOKEN) en production, - régénérer le token si vous avez le moindre doute.
12. Conclusion
Vous avez maintenant :
- une VM Debian 12 qui tourne à l’intérieur de votre Freebox Server,
- un environnement Node.js installé via NVM,
- un bot Discord.js que vous avez créé, connecté à un serveur Discord,
- et déployé directement sur cette VM.
C’est une excellente base pour :
- découvrir l’auto-hébergement,
- expérimenter des bots Discord sans payer un serveur externe,
- se constituer un petit lab dev + infra à la maison.
Dans un prochain article / une prochaine vidéo, vous pourrez aller plus loin en :
- transformant le bot en service systemd ou en processus géré par
pm2, - ajoutant des commandes et fonctionnalités côté Discord,
- et surtout en renforçant la sécurité de votre VM.