How to Install Etherpad on Ubuntu 18.04

 In Dedicated, VPS, Web

Etherpad is an open-source web based application that allows real-time collaborative editing of a document through a web browser. This allows users to simultaneously type out, edit, and review documents – even chat functionality is available, which further helps users collaborate on documents. Let’s begin with the installation.


  • An Ubuntu 18.04 VPS
  • Node.js version 6.9.0 or higher (preferred version: Node.js 8.9 or higher)
  • Access to the root user account (or access to an admin account with root privileges)

Step 1: Log in to the Server & Update the Server OS Packages

Log in to your Ubuntu 18.04 server via SSH as the root user:

ssh root@IP_Address -p Port_number

You will need to replace ‘IP_Address‘ and ‘Port_number‘ with your server’s respective IP address and SSH port number. Additionally, replace ‘root’ with the username of the admin account if necessary.

Before we can start with the Etherpad installation, we have to make sure that all Ubuntu OS packages installed on the server are up to date. We can do this by running the following commands:

sudo apt-get update
sudo apt-get upgrade

Step 2: Install the Required Packages

Install the required packages that will help Etherpad run on our server:

sudo apt install libssl-dev pkg-config gcc g++ make build-essential

Etherpad also requires Node.js, so we will install the latest version (at the time of writing this tutorial), Node.js 10.15.3. The latest version of Node.js can be installed from the ‘nodesource’ repository. Once you have downloaded the tarball, extract it in a new directory at /opt/nodejs/.

cd /opt
tar xJf node-v*-linux-x64.tar.xz
sudo mkdir /opt/nodejs/ && mv node-*-linux-x64/* /opt/nodejs

Step 3: Install MySQL and Create a MySQL Database

We’ll need MySQL in order to store the data that Etherpad creates and manipulates. Install MySQL using the following command:

apt-get install mysql-server mysql-client

Create a new MySQL user and database:

mysql> create database etherpad_db;
mysql> grant all privileges on etherpad_db.* to etherpad@localhost identified by 'Str0ngPa55w0rd';
mysql> flush privileges;
mysql> quit

Don’t forget to change Str0ngPa55w0rd with a real, strong password.

Step 4: Create Etherpad user

In order to create a new system user for the Etherpad instance, run the following commands:

sudo adduser --home /opt/etherpad --shell /bin/bash etherpad
sudo install -d -m 755 -o etherpad -g etherpad /opt/etherpad
sudo su - etherpad
echo "PATH=$PATH:/opt/nodejs/bin" >> ~/.profile

Check the Node.js version:

etherpad@localhost:~$ node --version

Now we can begin installing Etherpad.

Step 5: Install and Configure Etherpad

Clone the Etherpad repository from the GitHub page using the following command:

git clone git:// ~/etherpad-lite

Go to the ‘etherpad-lite’ directory and run the ‘’ bash script to start Etherpad.

cd /opt/etherpad/etherpad-lite/

Copy the ‘settings.json.template’ file to a new file named ‘settings.json’:

cp settings.json.template settings.json

Then edit the settings.json file using your preferred text editor (we’ll be using ‘nano’):

nano settings.json

Add/modify the following:

    • Replace “ip”: “” with “ip”: “”
    • Remove the following lines:
"dbType" : "dirty",
  "dbSettings" : {
                   "filename" : "var/dirty.db"
    • Modify the lines about MySQL settings so they look like:
    "dbType" : "mysql",
    "dbSettings" : {
                    "user"    : "etherpad",
                    "host"    : "localhost",
                    "port"    : 3306,
                    "password": "Str0ngPa55w0rd",
                    "database": "etherpad_db"
    • Replace “trustProxy” : false with “trustProxy” : true
    • Set a password for the ‘admin’ user:
  "users": {
    "admin": {
      // "password" can be replaced with "hash" if you install ep_hash_auth
      "password": "Str0ngPa55w0rd",
      "is_admin": true

Then save and exit the file once all changes have been made.

Run the following command to install all other dependencies and start the Etherpad service:


To access Etherpad, open your web browser and type the server IP address with port ‘9001’: http://server_IP_address:9001/
You can stop the Etherpad process using CTRL + C.

Step 6: Set a Reverse Proxy in Apache

In order to access your Etherpad editor only by using your domain name, without the port number 9001 in the URL, we need to set it up behind a reverse proxy.
To do so, we need to enable some additional proxy modules in Apache. We can do this with the following commands:

a2enmod proxy
a2enmod proxy_http

Restart Apache for the changes to take effect:

systemctl restart apache2

Once ‘mod_proxy’ and ‘mod_proxy_http’ are enabled in Apache, create a new configuration file for your domain with the following command:

nano /etc/apache2/sites-available/

And enter the following lines:

<VirtualHost *:80>
ServerName ServerAlias ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / ProxyPassReverse / <Location /> Order allow,deny Allow from all </Location> </VirtualHost>

Remember to replace your ‘‘ with your actual domain name. Save the file, close it and disable the default Apache configuration:

a2dissite 000-default

Enable the “” configuration in Apache using:


Optionally, we can use this command to enable it:

ln -s /etc/apache2/sites-available/ /etc/apache2/sites-enabled/

Then restart Apache for the changes to take effect:

systemctl restart apache2

Step 7: Create a systemd service for Etherpad

We can also create a systemd service so we can start Etherpad like any other Ubuntu service. Create this file at the path /etc/systemd/system/etherpad.service:

nano /etc/systemd/system/etherpad.service

And add the following lines:

Description=Etherpad-lite, the collaborative editor.


ExecStart=/opt/nodejs/bin/node /opt/etherpad/etherpad-lite/src/node/server.js



Save the exit the file. After that, reload the files using this command:

sudo systemctl daemon-reload

You can now start the Etherpad service and enable Etherpad to automatically start on server boot:

sudo systemctl start etherpad.service
sudo systemctl enable etherpad.service

That’s it. If you followed all of the instructions properly you can now access your Etherpad editor using your domain name.

Recommended Posts

Start typing and press Enter to search