Etherpad Lite is a web-based, free document editing tool that enables groups of users to collaboratively work on a document in real-time, similar to a multiplayer editor that runs in a web browser.
Etherpad allows authors to edit simultaneously, seeing each other’s edits in real-time, with the capability to display each author’s text in their own colors.
Etherpad Key Features
- Multiple users can edit a document simultaneously while viewing changes in real-time.
- A chat box in the sidebar allows authors to communicate while editing, enhancing collaboration.
- It is built with JavaScript on both the server and client sides, making it easy for developers to maintain and add new features.
- A well-documented HTTP API provides access to all data, making it easy to integrate it into other applications.
- It supports importing and exporting documents in various formats (HTML, Open Document, Microsoft Word, PDF, and plain text) and offers translations to accommodate local languages.
- The “time slider” feature lets users explore the history of document revisions.
For your reference, you can check out a demo of Etherpad Lite at the link: Watch EtherPad Demo
In this tutorial, we will walk through the installation and configuration of Etherpad Lite on RHEL-based and Debian-based distributions.
Step 1: Install Libraries and Development Packages
First, we need to install a few required libraries and development tools by running the following commands, either as root or by adding sudo at the beginning of each command.
On RHEL-based distributions:
sudo yum install gzip git curl python3 openssl-devel && yum groupinstall "Development Tools"
On Debian-based distributions:
sudo apt install gzip git curl python3 libssl-dev pkg-config build-essential
Step 2: Install Node.js
You need to download and install the latest stable version of Node.js
by running the following commands.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash nvm install 23 node -v npm -v
Step 3: Download and Install Etherpad Lite
Create a separate user called “etherpad” to run the Etherpad application independently.
sudo useradd --create-home etherpad
Switch to the “etherpad” user and download the latest stable version of Etherpad Lite using the Git repository.
su - etherpad cd /home/etherpad git clone https://github.com/ether/etherpad-lite.git
Change to the Etherpad Lite directory and execute the run.sh
script:
cd etherpad-lite/bin ./run.sh
You should see output indicating that Etherpad is running and accessible at http://0.0.0.0:9001/
.
Step 4: Access and Create New Pads in Etherpad Lite
Open your web browser and navigate to http://localhost:9001
or http://your-ip-address:9001
.
To create a new document, enter a name for the Pad. For instance, creating a Pad named “tecmint” will give you the URL http://your-ip-address:9001/p/tecmint
. You can share this URL with collaborators, and they can join the editing session in real-time.
Step 5: Using Etherpad Lite with MySQL Backend
By default, Etherpad stores documents in a flat-file database. For better performance, it is recommended to use MySQL as a backend.
On RHEL-based systems:
sudo yum install mysql-server sudo systemctl start mysqld sudo systemctl enable mysqld
On Debian-based systems:
sudo apt install mysql-server sudo systemctl start mysql sudo systemctl enable mysql
Connect to the MySQL shell and create the Etherpad database:
mysql -u root -p CREATE USER 'etherpad'@'localhost' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON etherpad_lite.* TO 'etherpad'@'localhost'; FLUSH PRIVILEGES; EXIT;
Switch back to the “etherpad” user and modify the settings.json
file:
su - etherpad cd /home/etherpad/etherpad-lite cp settings.json.template settings.json nano settings.json
Update the database configuration:
"dbType": "mysql", "dbSettings": { "user": "etherpad", "host": "localhost", "password": "your-password", "database": "etherpad_lite" },
Now install dependencies and run Etherpad again to initialize the MySQL backend:
./bin/installDeps.sh ./bin/run.sh
Finally, keep in mind that the Etherpad application will terminate its process when you close the terminal session. You can use the systemd service to manage the Etherpad application more easily, including starting, stopping, and enabling it to run at boot.
Step 6: Create Etherpad Systemd Service File
Now login as a regular sudo user and create a new service file in the systemd directory:
sudo nano /etc/systemd/system/etherpad.service
Add the following content to the service file:
[Unit] Description=Etherpad Lite After=network.target [Service] Type=simple User=etherpad WorkingDirectory=/home/etherpad/etherpad-lite ExecStart=/usr/bin/node /home/etherpad/etherpad-lite/node/node server.js Restart=on-failure [Install] WantedBy=multi-user.target
Make sure to adjust the ExecStart
path if your Node.js
installation is in a different location.
After creating the service file, you need to reload systemd to recognize the new service:
sudo systemctl daemon-reload
Now you can start the Etherpad service and enable it to start on boot:
sudo systemctl start etherpad sudo systemctl enable etherpad sudo systemctl status etherpad
If everything is configured correctly, you can access Etherpad by navigating to http://your-ip-address:9001
in your web browser.
Conclusion
You’ve successfully installed and configured Etherpad Lite to use MySQL as the backend database. There’s much more to explore and enhance in your Etherpad installation, such as configuring secure access over HTTPS/SSL.
For more information on further configurations, visit the official Etherpad Lite wiki.
hi mate..thanks for this tutorial..just a typo: git clone http://github.com/ether/etherpad-lite.git should be git clone git://github.com/ether/etherpad-lite.git
@Alex,
No there isn’t any typo, both links works perfectly..
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
@Jorarome,
Follow the same instructions for each virtualhost and create separate database for each domain.. that’s it..
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.
thank you very much for the MySql commands!
on fedora and centos probably on RHEL too , you need to install the following packages before you ./configure
yum install -y gcc-c++
cheers
Yes! you right, but these packages included in Development Tools which can be install via Yum as stated in the article.
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!
Yes surely will write a guide on how to add Plugins in Etherpad in our up-coming article.