Etherpad – A Real Time Web Based Online Collaborative Document Editor for Linux

Etherpad is a web based free document editor tool which allows a group of users to work jointly on a document in a real time, like a multi player editor which runs on a web browser. Etherpad authors can edit and at the same time see each others edits in real time with a capability to display author’s text in their own colours.

Install Etherpad in Linux
Install Etherpad in Linux

This tool has a separate chat box in the sidebar allowing authors to communicate during editing. Etherpad is written in JavaScript both on server side and client side, so that it comes easy for developers to maintain and add new features.

Etherpad is designed in such a way that you can have access to all data through a well-documented HTTP API. This software also helps you to import/export data to many exchange formats and comes with translations too where authors can deliver correct language for their local settings.

For your reference, I’ve attached a Demo of Etherpad Lite at below link.

  1. Watch EtherPad Demo

In this tutorial, I will describe how to install and configure Etherpad Lite a web-based real time collaborative document editing application on RHEL, CentOS, Fedora, Debian, Ubuntu and Linux Mint.

Installing Etherpad Lite on Linux

First, we need to download and install few required libraries and development tools. Open the terminal and run the following command either as root or by adding sudo at the beginning of each command.

Step 1: Install Libraries and Development Packages

You’ll need gzip, git, curl, libssl python, develop libraries, python and gcc packages.

On RHEL / CentOS / Fedora
# yum install gzip git-core curl python openssl-devel && yum groupinstall "Development Tools" For FreeBSD: portinstall node, npm, git
On Debian / Ubuntu / Linux Mint
$ sudo apt-get install gzip git-core curl python libssl-dev pkg-config build-essential

Step 2: Install Node.js

Additionally, you will also need to download and compile latest stable Node.js version from source packages using following commands.

$ wget http://nodejs.org/dist/node-latest.tar.gz
$ tar xvfvz node-latest.tar.gz
$ cd node-v0.10.23     [Replace a version with your own]
$ ./configure
$ make
$ sudo make install

Once you have successfully installed, verify the Node.js version using the command as follows.

$ node --version

v0.10.23

Step 3: Download and Install Etherpad Lite

We will create a separate user called “etherpad” to run Etherpad application independently. So, first create a user with its home directory.

# useradd --create-home etherpad

Now switch to “etherpad” user and download the latest stable version of Etherpad Lite using GIT repository as shown.

# su - etherpad
$ cd /home/etherpad
$ git clone http://github.com/ether/etherpad-lite.git

Once you’ve downloaded source files, change into the newly created directory containing the cloned source code.

$ cd etherpad-lite/bin

Now, execute run.sh script.

$ ./run.sh
Sample Output
Copy the settings template to settings.json...
Ensure that all dependencies are up to date...  If this is the first time you have run Etherpad please be patient.
[2013-12-17 05:52:23.604] [WARN] console - DirtyDB is used. This is fine for testing but not recommended for production.
[2013-12-17 05:52:24.256] [INFO] console - Installed plugins: ep_etherpad-lite
[2013-12-17 05:52:24.279] [INFO] console - Your Etherpad git version is 7d47d91
[2013-12-17 05:52:24.280] [INFO] console - Report bugs at https://github.com/ether/etherpad-lite/issues
[2013-12-17 05:52:24.325] [INFO] console -    info  - 'socket.io started'
[2013-12-17 05:52:24.396] [INFO] console - You can access your Etherpad instance at http://0.0.0.0:9001/
[2013-12-17 05:52:24.397] [WARN] console - Admin username and password not set in settings.json.  To access admin please uncomment and edit 'users' in settings.json

Step 4: Access and Create New Pad in Etherpad Lite

Now you should able to browse the web interface of Etherpad Lite at http://localhost:9001 or http://your-ip-address:9001 in a web browser.

Create New Pad
Create New Pad

Create a new document by giving a Pad name. Please remember, enter new name when creating a new document or enter name of the previously edited document to access.

For example, I’ve created a new document called “tecmint”. User’s can create multiple new pads in separate windows, each user’s document window appears on another window automatically in real-time. Each user’s window is highlighted in two different colours and also user’s can interact with each other using built-in chat box.

New Pad Chat Window
New Pad Chat Window

Each newly created document has its own URL structure. For example, my new “tecmint” pad get’s a URL as http://your-ip-address:9001/p/tecmint. You can share this document URL with your friends and colleagues. You can even embed the editor window into another HTML web page as an iframe.

Share and Embed New Pad
Share and Embed New Pad

You can save the document while editing is in progress by clicking the STAR button, however they are created periodically. To access a saved revision of the document add the number of the saved revision. For example, if you would like to see the saved revision number (i.e. 2) in this case, replace the number 6 with 2 at the http://your-ip-address:9001/p/tecmint/6/export/text.

Save Revision
Save Revision

Etherpad also comes with built-in feature called import and export, where you can import any external document or export a current saved document to a separate file. The document can be downloaded in HTML, Open Document, Microsoft Word, PDF or Plain text format.

Import and Export Documents
Import and Export Documents

A “time slider” feature enables anyone to explore the history of the pad.

Time Slider
Time Slider

Step 5: Using Etherpad Lite with MySQL Backend

By default Etherpad stores documents in a flat-file database. I suggest you to use MySQL as a backend to store created and edited documents. For this, you must have MySQL installed on your system. If you don’t have, install it on the system, you can install it using following commands as root user or using sudo.

On RHEL / CentOS / Fedora
# yum install mysql-server mysql
# service mysqld start
# chkconfig mysqld on
On Debian / Ubuntu / Linux Mint
# apt-get install mysql-server mysql-client
# service mysqld start

After MySQL has installed, connect to mysql shell by running a following command.

# mysql -u root -p

Once you in mysql shell, issue the following command to create the database.

create database etherpad_lite;

Grant permissions to a newly created database account. Replace “your-password” with your own password.

grant all privileges on etherpad_lite.* to 'etherpad'@'localhost' identified by 'your-password';

Leave the mysql client.

exit;

Now, switch to “etherpad” user and go into the etherpad directory and run the following commands:

# su - etherpad
$ cd /home/etherpad/etherpad-lite    
$ cp settings.json.template settings.json

Next, open settings.json with your choice of editor and change the settings as shown below.

# vi settings.json

Find the following text.

"sessionKey" : "",

Add the SECURESTRING with a minimum 10 alpha-numerical string.

"sessionKey" : "Aate1mn160",

Then find:

"dbType" : "dirty",
  //the database specific settings
  "dbSettings" : {
                   "filename" : "var/dirty.db"
                 },

And comment it out like so:

// "dbType" : "dirty", */
  //the database specific settings
  // "dbSettings" : {
  //                   "filename" : "var/dirty.db"
  //                 },

Next set mysql and admin settings as shown below.

  /* An Example of MySQL Configuration
   "dbType" : "mysql",
   "dbSettings" : {
                    "user"    : "etherpad",
                    "host"    : "localhost",
                    "password": "your-password",
                    "database": "etherpad_lite"
                  },

  */
  "users": {
    "admin": {
      "password": "your-password",
      "is_admin": true
    },

Make sure to replace “your-password” with the password you created above while setting up a new database account and an admin password with your own value. Now, we need to install some additional dependency packages with below command.

./bin/installDeps.sh

Once the script completes, we will need to run Etherpad script again. So, it can create the appropriate tables in the database.

./bin/run.sh

After Etherpad has loaded successfully, hit Ctrl+C to kill the process. Again login into mysql shell and alter the database to use correctly.

mysql -u root -p
alter database etherpad_lite character set utf8 collate utf8_bin;
use etherpad_lite;
alter table store convert to character set utf8 collate utf8_bin;
exit;

Finally, we’ve successfully installed and configured Etherpad to use MySQL backend. Now run the etherpad again to use MySQL as backend.

./bin/run.sh

The script will initialize Etherpad and then start the process. Please keep in mind that Etherpad application will terminate it’s process when you close your terminal session window. Optionally, you can use the screen command to place Etherpad into a screen session for easy access.

That’s it for now, there are lots more other things to explore and improve your Etherpad installation, which are not covered here. For example, you can use Etherpad as service in a Linux system or provide secure access to your user’s over HTTPS/SSL connection. For more information on further configuration visit the official page at:

  1. Etherpad Lite Wiki
Ravi Saive
I am an experienced GNU/Linux expert and a full-stack software developer with over a decade in the field of Linux and Open Source technologies

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

10 thoughts on “Etherpad – A Real Time Web Based Online Collaborative Document Editor for Linux”

  1. Hi. Ravi, Etherpad-Lite is a node.js’ apps, How would be placed in several virtualhost using Apache on production server?, e.g mywebhome.com, yourwebhome.com, ourwebhome.com, etc. In Etherpad-Lite’ configure, only one MySQL database is observed.Can you configure a MySQL database for each vitualhost?. Thanks

    Reply
    • @Jorarome,
      Follow the same instructions for each virtualhost and create separate database for each domain.. that’s it..

      Reply
      • Hi, @Ravi Saive. I understood him to n instances of Etherpad should run:
        run.sh –settings /path/conf/Settings1.json
        run.sh –settings /path/conf/Settings2.json
        run.sh –settings /path/conf/Settings-n.json
        and I should make every init script for each of the n instances to deploy as a service.
        I would like you to give me some idea: How I can do in a single script you can run the n instances such a services?, please.

        Reply
  2. on fedora and centos probably on RHEL too , you need to install the following packages before you ./configure

    yum install -y gcc-c++

    cheers

    Reply
  3. Any chance of a guide for how to install plugins? Etherpad is kinda bare bone out of the box but it’s really powerful when you install plugins!

    Reply

Leave a Reply to jorarome Cancel reply

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.