In this tutorial, we will show you how to install Etherpad on an Ubuntu 18.04 VPS.
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.
Table of Contents
Prerequisites
- An Ubuntu 18.04 VPS (we’ll be using our SSD 2 VPS plan)
- 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 wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz 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 PATH=$PATH:/opt/nodejs/bin echo "PATH=$PATH:/opt/nodejs/bin" >> ~/.profile
Check the Node.js version:
etherpad@localhost:~$ node --version v10.15.3
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://github.com/ether/etherpad-lite.git ~/etherpad-lite
Go to the ‘etherpad-lite’ directory and run the ‘run.sh’ bash script to start Etherpad.
cd /opt/etherpad/etherpad-lite/ bin/run.sh
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”: “0.0.0.0” with “ip”: “127.0.0.1”
- 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:
~/etherpad-lite/bin/installDeps.sh ~/etherpad-lite/bin/run.sh
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/your-domain.com.conf
And enter the following lines:
<VirtualHost *:80> ServerNameyour-domain.com
ServerAliaswww.your-domain.com
ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /http://127.0.0.1:9001/
ProxyPassReverse /http://127.0.0.1:9001/
<Location /> Order allow,deny Allow from all </Location> </VirtualHost>
Remember to replace your ‘your-domain.com‘ with your actual domain name. Save the file, close it and disable the default Apache configuration:
a2dissite 000-default
Enable the “your-domain.com.conf” configuration in Apache using:
a2ensite your-domain.com
Optionally, we can use this command to enable it:
ln -s /etc/apache2/sites-available/your-domain.com.conf /etc/apache2/sites-enabled/your-domain.com.conf
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:
[Unit] Description=Etherpad-lite, the collaborative editor. After=syslog.target network.target [Service] Type=simple User=etherpad Group=etherpad WorkingDirectory=/opt/etherpad/etherpad-lite Environment=NODE_ENV=production ExecStart=/opt/nodejs/bin/node /opt/etherpad/etherpad-lite/src/node/server.js Restart=always [Install] WantedBy=multi-user.target
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.
Of course, you don’t have to install and configure Etherpad on Ubuntu 18.04, if you use one of our Managed Ubuntu Hosting solutions, in which case you can simply ask our expert Linux admins to setup and configure Etherpad on Ubuntu 18.04 for you. They are available 24×7 and will take care of your request immediately. We also published a post on How to install Etherpad on Ubuntu 20.04.
PS. If you liked this post on how to install Etherpad on an Ubuntu 18.04 VPS, please share it with your friends on the social networks using the share buttons below, or simply leave a comment down in the comments section. Thanks.
Hi,
thanks for the manual. It worked so far but when I try to change the database from drity to mysql I keep on getting the following error:
ERROR: Problem while initalizing the database
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
Am I missing something?
Regard
Til
this tutorial guides you for a new installation, if you are migrating you should check if the MySQL source is the same or older version than the destination