EtherPAD : installation et configuration d’Etherpad

20 juillet 2026 — par admin_libra

Etherpad est un éditeur de texte collaboratif en temps réel, open source, qui permet à plusieurs utilisateurs de travailler simultanément sur le même document depuis leur navigateur. Développé initialement par Google puis repris par la communauté, il est aujourd’hui maintenu sous le nom etherpad-lite et repose sur Node.js. Sa légèreté et sa flexibilité en font une alternative sérieuse aux solutions propriétaires comme Google Docs ou Microsoft Office Online, tout en gardant le contrôle total de vos données.

Contrairement aux suites bureautiques hébergées dans le cloud, Etherpad peut être auto-hébergé sur votre propre infrastructure. Chaque document porte le nom de pad et dispose d’une URL unique. L’historique des modifications est conservé version par version, ce qui facilite la traçabilité des changements. Des plugins officiels et communautaires permettent d’étendre les fonctionnalités : export PDF/ODT, authentification LDAP, intégration Jitsi, etc.

Dans ce guide, nous allons installer et configurer Etherpad v2.x / v3.x sur Debian 12 (Bookworm) ou Ubuntu 24.04 LTS, avec MariaDB comme base de données, un service systemd pour la gestion du processus, et Nginx comme reverse proxy pour l’exposition en HTTPS.

Prérequis

Avant de commencer, assurez-vous de disposer :

  • Un serveur Debian 12 ou Ubuntu 24.04 LTS à jour
  • Un accès root ou sudo
  • Un nom de domaine pointant vers votre serveur (pour la configuration SSL)
  • Les ports 80 et 443 ouverts dans votre pare-feu
sudo apt update && sudo apt upgrade -y

Étape 1 — Installation de Node.js 20 LTS

Etherpad nécessite Node.js en version 18 minimum, mais la version 20 LTS est recommandée pour la production. On utilise le dépôt officiel NodeSource :

# Installer les dépendances préalables
sudo apt install -y ca-certificates curl gnupg git gzip build-essential libssl-dev python3

# Ajouter le dépôt NodeSource pour Node.js 20
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

# Installer Node.js
sudo apt install -y nodejs

# Vérifier la version
node --version   # doit afficher v20.x.x
npm --version

Installez ensuite pnpm, le gestionnaire de paquets recommandé par Etherpad pour ses meilleures performances :

sudo npm install -g pnpm

Étape 2 — Configuration de MariaDB

Etherpad peut fonctionner avec une base de données SQLite en développement, mais MariaDB est fortement conseillée en production pour la fiabilité et les performances.

# Installer MariaDB
sudo apt install -y mariadb-server

# Sécuriser l'installation
sudo mariadb-secure-installation

Créez ensuite la base de données et l’utilisateur dédié à Etherpad :

sudo mariadb -u root -p
-- Dans le prompt MariaDB :
CREATE DATABASE etherpad_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'etherpad'@'localhost' IDENTIFIED BY 'MotDePasseForT#2024';
GRANT CREATE, ALTER, SELECT, INSERT, UPDATE, DELETE ON etherpad_db.* TO 'etherpad'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Étape 3 — Installation d’Etherpad

On crée d’abord un utilisateur système dédié, sans shell de connexion, pour des raisons de sécurité :

sudo adduser --system --no-create-home --home=/opt/etherpad-lite --group etherpad

On clone ensuite le dépôt officiel dans /opt/etherpad-lite :

cd /opt
sudo git clone --branch master https://github.com/ether/etherpad-lite.git
sudo chown -R etherpad:etherpad /opt/etherpad-lite

Installation des dépendances Node.js du projet :

cd /opt/etherpad-lite
sudo -u etherpad pnpm install --prod

Étape 4 — Configuration de settings.json

Le fichier de configuration principal d’Etherpad est settings.json. On part du fichier d’exemple fourni :

sudo cp /opt/etherpad-lite/settings.json.template /opt/etherpad-lite/settings.json
sudo nano /opt/etherpad-lite/settings.json

Les paramètres essentiels à configurer :

{
  "title": "Mon Etherpad",
  "favicon": "favicon.ico",
  "ip": "127.0.0.1",
  "port": 9001,

  "dbType": "mysql",
  "dbSettings": {
    "user":     "etherpad",
    "host":     "127.0.0.1",
    "port":     3306,
    "password": "MotDePasseForT#2024",
    "database": "etherpad_db",
    "charset":  "utf8mb4"
  },

  "defaultPadText": "Bienvenue sur ce pad collaboratif !nn",
  "requireSession": false,
  "editOnly": false,
  "minify": true,
  "maxAge": 21600,
  "abiword": null,
  "soffice": null,
  "allowUnknownFileEnds": true,
  "requireAuthentication": false,
  "requireAuthorization": false,
  "trustProxy": true,
  "users": {
    "admin": {
      "password": "AdminPassword!",
      "is_admin": true
    }
  }
}

Ajustez les droits sur le fichier de configuration :

sudo chown etherpad:etherpad /opt/etherpad-lite/settings.json
sudo chmod 640 /opt/etherpad-lite/settings.json

Étape 5 — Création du service systemd

On crée un service systemd pour gérer le démarrage automatique d’Etherpad :

sudo nano /etc/systemd/system/etherpad.service
[Unit]
Description=Etherpad - Editeur collaboratif en temps reel
After=network.target mariadb.service
Requires=mariadb.service

[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad-lite
Environment=NODE_ENV=production
ExecStart=/usr/local/bin/pnpm run prod
Restart=always
RestartSec=5
StandardOutput=journal
StandardError=journal
SyslogIdentifier=etherpad

# Durcissement
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ReadWritePaths=/opt/etherpad-lite /tmp

[Install]
WantedBy=multi-user.target

Activez et démarrez le service :

sudo systemctl daemon-reload
sudo systemctl enable etherpad
sudo systemctl start etherpad

# Vérifier l'état
sudo systemctl status etherpad
sudo journalctl -u etherpad -f

Etherpad est maintenant accessible sur http://127.0.0.1:9001. Mais il faut configurer un reverse proxy pour l’exposer proprement.

Étape 6 — Configuration de Nginx en reverse proxy

Nginx va gérer le chiffrement SSL et transférer les requêtes vers Etherpad. Ce point est particulièrement important pour les connexions WebSocket utilisées par Etherpad pour la synchronisation en temps réel.

sudo apt install -y nginx certbot python3-certbot-nginx

Créez la configuration Nginx :

sudo nano /etc/nginx/sites-available/etherpad.conf
server {
    listen 80;
    server_name pad.exemple.com;

    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    server_name pad.exemple.com;

    ssl_certificate     /etc/letsencrypt/live/pad.exemple.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/pad.exemple.com/privkey.pem;
    ssl_protocols       TLSv1.2 TLSv1.3;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    access_log /var/log/nginx/etherpad_access.log;
    error_log  /var/log/nginx/etherpad_error.log;

    location / {
        proxy_pass         http://127.0.0.1:9001;
        proxy_http_version 1.1;

        # Support WebSocket (essentiel pour Etherpad)
        proxy_set_header Upgrade    $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_set_header Host              $host;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        proxy_buffering    off;
        proxy_read_timeout 86400;
    }
}
# Activer le vhost
sudo ln -s /etc/nginx/sites-available/etherpad.conf /etc/nginx/sites-enabled/

# Obtenir le certificat SSL Let's Encrypt
sudo certbot --nginx -d pad.exemple.com

# Vérifier et recharger Nginx
sudo nginx -t && sudo systemctl reload nginx

Étape 7 — Sécurisation complémentaire

Pour renforcer la sécurité de votre instance Etherpad, configurez le pare-feu pour n’exposer que les ports nécessaires :

# Avec ufw (simplifié)
sudo apt install -y ufw
sudo ufw allow 22/tcp    # SSH
sudo ufw allow 80/tcp    # HTTP
sudo ufw allow 443/tcp   # HTTPS
sudo ufw deny 9001/tcp   # Bloquer l'accès direct au port Etherpad
sudo ufw enable

Activez l’authentification dans settings.json si vous souhaitez restreindre l’accès. Pour des besoins avancés (LDAP, SSO), des plugins dédiés sont disponibles via l’interface d’administration accessible sur /admin.

Étape 8 — Installation de plugins via l’interface admin

Etherpad dispose d’une interface d’administration accessible à l’adresse https://pad.exemple.com/admin (avec le mot de passe défini dans settings.json). Depuis cette interface, vous pouvez :

  • Installer des plugins : ep_markdown, ep_table_of_contents, ep_spell_check
  • Gérer les pads existants
  • Superviser les utilisateurs connectés
  • Modifier la configuration à chaud

Pour installer un plugin en ligne de commande :

cd /opt/etherpad-lite
sudo -u etherpad pnpm install ep_markdown
sudo systemctl restart etherpad

À lire également

Références

Index complet

Tous les articles (58)

Date Article Tags
20/07/2026 SSL : Certificat Let's Encrypt avec Certbot sur Debian/Ubuntu (sans Snap) apache certbot certificat 20/07/2026 MariaDB : Tuning mariadb server sous debian / ubuntu et operation de maintenance sauvegarde/restauration debian innodb maintenance 20/07/2026 MariaDB : Mise en place d'une réplication Master → Slave base-de-données binlog debian 20/07/2026 OpenSVC : piloter des conteneurs LXC sur datasets ZFS avec snapshots et réplication sous Debian/Ubuntu conteneurs debian haute-disponibilité 20/07/2026 SCREEN : utilisation et cas d'usage des screens sous Linux administration bash debian 20/07/2026 EtherPAD : installation et configuration d'Etherpad collaboration debian editeur-collaboratif 20/07/2026 Wazuh 4.14 : déployer un SIEM/XDR open source sur Debian/Ubuntu compliance debian fim 20/07/2026 Incus 7.x : gérer conteneurs système et VMs sur Debian/Ubuntu — le successeur communautaire de LXD conteneurs debian incus 20/07/2026 Restic : sauvegardes incrémentielles chiffrées sur Debian et Ubuntu backup chiffrement debian 20/07/2026 Restic : sauvegardes chiffrées et dédupliquées sur Debian/Ubuntu automatisation backup chiffrement 30/06/2026 PHP : gérer plusieurs versions PHP-FPM avec les dépôts Sury sur Debian/Ubuntu administration apache debian 22/06/2026 OS : Cycle de vie LTS et mise à jour des distributions — apt dist-upgrade et do-release-upgrade sous Debian / Ubuntu apt cycle-de-vie debian 17/06/2026 APT : Guide complet de la gestion des paquets sous Debian et Ubuntu administration apt debian 17/06/2026 SHELL : Guide des commandes les plus usuelles et commandes couteau suisse awk bash commandes 17/06/2026 SUDO : implémentation et sécurisation des accès sur Debian/Ubuntu administration audit authentification 17/06/2026 ProFTPd : authentification MySQL centralisée, FTPs (SSL) et SFTP sur Debian/Ubuntu authentification debian ftp 09/06/2026 Fail2ban — configuration avancée et filtres personnalisés bruteforce debian fail2ban 07/06/2026 Docker : comment récupérer de l'espace disque cache conteneurs debian 07/06/2026 Graylog 7 — Centralisation et analyse de logs : l'alternative à ELK sur Debian/Ubuntu centralisation debian elk 07/06/2026 OpenZFS : tiering avec L2ARC et SLOG pour les workloads mixtes cache l2arc nvme 07/06/2026 Scripting Bash avancé — pièges, bonnes pratiques et optimisation automatisation bash bonnes-pratiques 07/06/2026 AppArmor sur Debian/Ubuntu : profils, modes et confinement applicatif apparmor audit confinement 07/06/2026 Durcissement SSH — au-delà des clés publiques 2fa authentification cryptographie 27/05/2026 LXD 6.x : orchestration de conteneurs Linux avec profils et clustering administration clustering conteneurs 27/05/2026 Keepalived — VIP flottante et load balancing sans matériel dédié debian failover haute-disponibilité 27/05/2026 Btrfs sur Linux — snapshots, sous-volumes et compression en pratique administration btrfs compression 21/05/2026 CVE-2026-42945 (NGINX Rift) : analyse et remédiation sur Debian/Ubuntu cve debian heap-overflow 21/05/2026 Tuning kernel Linux — paramètres sysctl essentiels pour la production debian kernel mémoire 21/05/2026 DRBD : réplication de blocs entre deux serveurs en temps réel cluster debian drbd 15/05/2026 CVE-2026-23918 — vulnérabilité Apache 2.4.66 : analyse et correctifs sur Debian/Ubuntu (hors Debian 11) apache cve debian 15/05/2026 CVE-2026-31431 (Copy Fail) — Analyse et remédiation sur Debian/Ubuntu algif_aead copy-fail cve 12/05/2026 Pacemaker et Corosync — cluster haute disponibilité Linux cluster corosync debian 12/05/2026 WireGuard : monter un VPN mesh entre plusieurs serveurs Linux chiffrement linux mesh 12/05/2026 Netdata — monitoring temps réel sans configuration complexe alertes dashboard linux 12/05/2026 nftables en pratique — remplacer iptables sur Debian/Ubuntu debian firewall iptables 12/05/2026 Podman : alternative rootless à Docker — installation et migration conteneurs docker kubernetes 02/05/2026 Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques alertmanager dashboard debian 02/05/2026 Ansible : automatiser la gestion de serveurs Linux avec des playbooks administration ansible automation 28/04/2026 ZFS sur Linux : snapshots, clones et RAID-Z en pratique administration compression filesystem 28/04/2026 eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC bcc bpftrace diagnostic 23/04/2026 Analyse de la mémoire sur Linux — vmstat, free, smem diagnostic mémoire monitoring 23/04/2026 Sécurité Linux — Firewall iptables et nftables firewall iptables nftables 23/04/2026 ZFS sur Linux — Installation et gestion avancée administration filesystem stockage 23/04/2026 Gestion des services avec systemd sur Debian et Ubuntu administration debian services 23/04/2026 Gestion des ressources cgroups v1/v2 avec LXC cgroups conteneurs lxc 23/04/2026 Centralisation logs avec ELK Stack — Elasticsearch, Kibana, Filebeat elasticsearch elk filebeat 23/04/2026 Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu debian monitoring supervision 23/04/2026 Plusieurs versions PHP-FPM sur Apache Debian/Ubuntu apache debian php-fpm 23/04/2026 Sécurisation avancée PHP-FPM — Multi-VirtualHosts Apache/Nginx apache nginx php-fpm 23/04/2026 Optimisation PHP-FPM — Guide de tuning d'un pool optimisation performance php-fpm 29/07/2025 Docker sur Debian/Ubuntu : Installation, Configuration et Utilisation conteneurs debian docker 03/07/2025 Serveur VPN WireGuard sous linux réseau sécurité vpn 03/07/2025 Authentification par clé publique sur un serveur SSH authentification cryptographie sécurité 27/06/2025 Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop diagnostic htop monitoring 27/06/2025 Mémoire : Utilisation des Huge Pages et implémentation hugepages mémoire noyau 27/06/2025 Mémoire Swap et paramétrage swappiness mémoire noyau performance 18/06/2025 Installation et Configuration des Conteneurs LXC sur Linux administration conteneurs lxc 18/06/2025 Gestion des journaux avec syslog et journalctl administration journalctl logs