Etherpad - Edition collaborative

De Wiki des Responsables Techniques du 85
Aller à : navigation, rechercher

Etherpad est un outil d'édition collaborative libre


Installation des pré-requis

On doit installer un ensemble de packages necessaire au fonctionnement de etherpad, notamment NodeJS

aptitude update && aptitude install -y gzip git curl python libssl-dev pkg-config build-essential npm
curl -sL | bash -
aptitude install -y nodejs

Installation de etherpad

Ajout d'un utilisateur etherpad

useradd etherpad
passwd etherpad
mkdir /home/etherpad && chown -R etherpad:etherpad /home/etherpad

Téléchargement de etherpad-lite et installation

cd /opt
git clone git://
chown -R etherpad:etherpad etherpad-lite/
cd /opt/etherpad-lite/bin

Lancement d'etherpad-lite pour test

cd /opt/etherpad-lite/bin
./ --root

Script init.d pour lancement automatique

Script init.d pour lancer Etherpad en tant que service

vim /etc/init.d/etherpad
update-rc.d etherpad defaults

Contenu du script


# Provides:          etherpad-lite
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts etherpad lite
# Description:       starts etherpad lite using start-stop-daemon

DESC="Etherpad Lite"

set -e

. /lib/lsb/init-functions

start() {
  echo "Starting $DESC... "

        start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$ --exec $EPLITE_DIR/$EPLITE_BIN -- $LOGFILE || true
  echo "done"

#We need this function to ensure the whole process tree will be killed
killtree() {
    local _pid=$1
    local _sig=${2-TERM}
    for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
        killtree ${_child} ${_sig}
    kill -${_sig} ${_pid}

stop() {
  echo "Stopping $DESC... "
  if test -f /var/run/$; then
    while test -d /proc/$(cat /var/run/$; do
      killtree $(cat /var/run/$ 15
      sleep 0.5
    rm /var/run/$
  echo "done"

status() {
  status_of_proc -p /var/run/$ "" "etherpad-lite" && exit 0 || exit $?

case "$1" in
          echo "Usage: $NAME {start|stop|restart|status}" >&2
          exit 1

exit 0


Fichier de configuration settings.json

  This file must be valid JSON. But comments are allowed

  Please edit settings.json, not settings.json.template
  // Name your instance!
  "title": "CollegePad",

  // favicon default name
  // alternatively, set up a fully specified Url to your own favicon
  "favicon": "favicon.ico",

  //IP and port which etherpad should bind at
  "ip": "",
  "port" : 9001,

  // Session Key, used for reconnecting user sessions
  // Set this to a secure string at least 10 characters long.  Do not share this value.
  "sessionKey" : "",

  // Node native SSL support
  // this is disabled by default
  // make sure to have the minimum and correct file access permissions set
  // so that the Etherpad server can access them

  "ssl" : {
            "key"  : "/path-to-your/epl-server.key",
            "cert" : "/path-to-your/epl-server.crt"


  //The Type of the database. You can choose between dirty, postgres, sqlite and mysql
  //You shouldn't use "dirty" for for anything else than testing or development
  "dbType" : "dirty",
  //the database specific settings
  "dbSettings" : {
                   "filename" : "var/dirty.db"

  // An Example of MySQL Configuration
   "dbType" : "mysql",
   "dbSettings" : {
                    "user"    : "root",
                    "host"    : "localhost",
                    "password": "xxxxxxxxxx",
                    "database": "store"

  //the default text of a pad
  "defaultPadText" : "Bienvenue sur Collegepad!\n\n",

  /* Users must have a session to access pads. This effectively allows only group pads to be accessed. */
  "requireSession" : false,

  /* Users may edit pads but not create new ones. Pad creation is only via the API. This applies both to group pads and regular pads. */
  "editOnly" : false,

  /* Users, who have a valid session, automatically get granted access to password protected pads */
  "sessionNoPassword" : false,

  /* if true, all css & js will be minified before sending to the client. This will improve the loading performance massivly,
     but makes it impossible to debug the javascript/css */
  "minify" : true,

  /* How long may clients use served javascript code (in seconds)? Without versioning this
     may cause problems during deployment. Set to 0 to disable caching */
  "maxAge" : 21600, // 60 * 60 * 6 = 6 hours

  /* This is the path to the Abiword executable. Setting it to null, disables abiword.
     Abiword is needed to advanced import/export features of pads*/
  "abiword" : null,

  /* Allow import of file types other than the supported types: txt, doc, docx, rtf, odt, html & htm */
  "allowUnknownFileEnds" : true,

  /* This setting is used if you require authentication of all users.
     Note: /admin always requires authentication. */
  "requireAuthentication" : false,

  /* Require authorization by a module, or a user with is_admin set, see below. */
  "requireAuthorization" : false,

  /*when you use NginX or another proxy/ load-balancer set this to true*/
  "trustProxy" : false,

  /* Privacy: disable IP logging */
  "disableIPlogging" : false,

  /* Users for basic authentication. is_admin = true gives access to /admin.
     If you do not uncomment this, /admin will not be available! */

  "users": {
    "admin": {
      "password": "xxxxxxxxx",
      "is_admin": true
    "prof": {
      "password": "xxxxxxxxx",
      "is_admin": false

  // restrict transport methods
  "socketTransportProtocols" : ["xhr-polling", "jsonp-polling", "htmlfile"],

  // Allow Load Testing tools to hit the Etherpad Instance.  Warning this will disable security on the instance.
  "loadTest": false,
  /* The toolbar buttons configuration.
  "toolbar": {
    "left": [
      ["bold", "italic", "underline", "strikethrough"],
      ["orderedlist", "unorderedlist", "indent", "outdent"],
      ["undo", "redo"],
    "right": [
      ["importexport", "timeslider", "savedrevision"],
      ["settings", "embed"],
    "timeslider": [
      ["timeslider_export", "timeslider_returnToPad"]

  /* The log level we are using, can be: DEBUG, INFO, WARN, ERROR */
  "loglevel": "INFO",

  //Logging configuration. See log4js documentation for further information
  // You can add as many appenders as you want here:
  "logconfig" :
    { "appenders": [
        { "type": "console"
        //, "category": "access"// only logs pad access
      , { "type": "file"
      , "filename": "your-log-file-here.log"
      , "maxLogSize": 1024
      , "backups": 3 // how many log files there're gonna be at max
      //, "category": "test" // only log a specific category
      , { "type": "logLevelFilter"
        , "level": "warn" // filters out all log messages that have a lower level than "error"
        , "appender":
          {  Use whatever appender you want here  }
      , { "type": "logLevelFilter"
        , "level": "error" // filters out all log messages that have a lower level than "error"
        , "appender":
          { "type": "smtp"
          , "subject": "An error occured in your EPL instance!"
          , "recipients": ","
          , "sendInterval": 60*5 // in secs -- will buffer log messages; set to 0 to send a mail for every message
          , "transport": "SMTP", "SMTP": { // see
              "host": "", "port": 465,
              "secureConnection": true,
              "auth": {
                  "user": "",
                  "pass": "bar_foo"