How to Install the Etherpad Collaborative Web Editor on Rocky Linux 8 (2024)

Etherpad is a free, open-source, web-based file editing application that allows you to collaborate on a file in actual time. It is written in Nodejs and supports thousands of simultaneous real-time users. It has data export capabilities and runs on your server, under your control. It allows authors and editors to see all of the participants’ edits in real-time.

In this post, we will show you how to install Etherpad on Rocky Linux 8.

In This Article

  • Step 1 - Install and Configure Database
  • Step 2 - Install Node.js
  • Step 3 - Install Etherpad on Rocky Linux 8
  • Step 4 - Create a Systemd Service File for Etherpad
  • Step 5 - Configure Nginx as a Reverse Proxy for Etherpad
  • Step 6 - Access Etherpad Web Interface
  • Conclusion

Step 1 – Install and Configure Database

First, enable the MariaDB version 10.04 repository using the following command:

dnf update -ydnf module enable mariadb:10.5

Next, install MariaDB 10.5 with the following command:

dnf install mariadb-server -y

After the installation, start and enable the MariaDB service using the command below:

systemctl start mariadb systemctl enable mariadb

Next, log in to the MariaDB shell with the following command:

mysql

Once you are connected, create a database and user for Etherpad:

create database `etherpaddb`;create user 'etherpaduser'@'localhost' identified by 'yourpassword';

Next, grant all the privileges to the etherpad database:

grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpaddb`.* to 'etherpaduser'@'localhost';

Next, flush the privileges and exit from MariaDB with the following command:

flush privileges;exit;

Step 2 – Install Node.js

Etherpad is written in Node.js, so it must be installed on your server.

First, enable the Node.js repository using the following command:

curl --silent --location https://rpm.nodesource.com/setup_18.x | bash -

Next, install the Node.js with the following command:

dnf install nodejs git -y

Once Node.js is installed, verify the Node.js version using the following command:

node --version

You will get the following output:

v18.19.0

Step 3 – Install Etherpad on Rocky Linux 8

First, create a dedicated user to run Etherpad:

adduser --system --home /opt/etherpad --create-home --user-group etherpad

Next, switch the user to etherpad and download the latest version of Etherpad with the following command:

su - etherpadcd /opt/etherpadgit clone --branch master git://github.com/ether/etherpad-lite.git

Next, change the directory to the downloaded directory and run Etherpad with the following command:

cd etherpad-lite./src/bin/run.sh

If everything is fine, you will get the following output:

[2021-12-05 11:19:21.804] [INFO] server - Installed plugins: [2021-12-05 11:19:21.805] [INFO] console - Report bugs at https://github.com/ether/etherpad-lite/issues[2021-12-05 11:19:21.806] [INFO] console - Your Etherpad version is 1.8.16 (142a47c)[2021-12-05 11:19:23.514] [INFO] http - HTTP server listening for connections[2021-12-05 11:19:23.514] [INFO] console - You can access your Etherpad instance at http://0.0.0.0:9001/[2021-12-05 11:19:23.514] [WARN] console - Admin username and password not set in settings.json. To access admin please uncomment and edit "users" in settings.json[2021-12-05 11:19:23.514] [WARN] console - Etherpad is running in Development mode. This mode is slower for users and less secure than production mode. You should set the NODE_ENV environment variable to production by using: export NODE_ENV=production[2021-12-05 11:19:23.514] [INFO] server - Etherpad is running

Press CTRL+C to stop the Etherpad.

Next, edit the settings.json file and define your database settings:

nano settings.json

Comment out the following lines:

// "dbType": "dirty",// "dbSettings": {// "filename": "var/dirty.db"// },

Change the following lines:

 "dbType" : "mysql", "dbSettings" : { "user": "etherpaduser", "host": "localhost", "port": 3306, "password": "yourpassword", "database": "etherpaddb", "charset": "utf8mb4" }, "trustProxy": true,

Save and close the file, then exit from the Etherpad user:

exit

Step 4 – Create a Systemd Service File for Etherpad

Next, create a systemd service file to manage the Etherpad service:

nano /etc/systemd/system/etherpad.service

Add the following lines:

[Unit]Description=Etherpad, a collaborative web editor.After=syslog.target network.target[Service]Type=simpleUser=etherpadGroup=etherpadWorkingDirectory=/opt/etherpadEnvironment=NODE_ENV=productionExecStart=/usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.jsRestart=always[Install]WantedBy=multi-user.target

Save and close the file, then reload the systemd daemon using the command below:

systemctl daemon-reload

Next, start and enable the Etherpad service using the following command:

systemctl start etherpadsystemctl enable etherpad

You can check the status of Etherpad using the following command:

systemctl status etherpad

You should see the following output:

● etherpad.service - Etherpad, a collaborative web editor. Loaded: loaded (/etc/systemd/system/etherpad.service; disabled; vendor preset: disabled) Active: active (running) since Sun 2021-12-05 11:22:04 UTC; 5s ago Main PID: 13518 (node) Tasks: 13 (limit: 11411) Memory: 104.9M CGroup: /system.slice/etherpad.service └─13518 /usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.jsDec 05 11:22:04 rockylinux node[13518]: DEFAULT_CHARACTER_SET_NAME: 'latin1',Dec 05 11:22:04 rockylinux node[13518]: DEFAULT_COLLATION_NAME: 'latin1_swedish_ci'Dec 05 11:22:04 rockylinux node[13518]: } utf8mb4 latin1_swedish_ciDec 05 11:22:04 rockylinux node[13518]: [2021-12-05 11:22:04.915] [INFO] plugins - Running npm to get a list of installed plugins...Dec 05 11:22:08 rockylinux node[13518]: [2021-12-05 11:22:08.268] [INFO] plugins - Loading plugin ep_etherpad-lite...Dec 05 11:22:08 rockylinux node[13518]: [2021-12-05 11:22:08.270] [INFO] plugins - Loaded 1 pluginsDec 05 11:22:08 rockylinux node[13518]: [2021-12-05 11:22:08.932] [INFO] APIHandler - Api key file read from: "/opt/etherpad/etherpad-lite/AP>Dec 05 11:22:09 rockylinux node[13518]: [2021-12-05 11:22:09.000] [INFO] server - Installed plugins:Dec 05 11:22:09 rockylinux node[13518]: [2021-12-05 11:22:09.001] [INFO] console - Report bugs at https://github.com/ether/etherpad-lite/issu>Dec 05 11:22:09 rockylinux node[13518]: [2021-12-05 11:22:09.002] [INFO] console - Your Etherpad version is 1.8.16 (142a47c)

Step 5 – Configure Nginx as a Reverse Proxy for Etherpad

Next, you will need to install and configure Nginx as a reverse proxy for Etherpad.

First, install Nginx with the following command:

dnf install nginx -y

Once Nginx is installed, start and enable the Nginx service using the command below:

systemctl start nginxsystemctl enable nginx

Next, create an Nginx virtual host configuration file:

nano /etc/nginx/conf.d/etherpad.conf

Add the following configuration:

server { listen 80; server_name etherpad.example.com; access_log /var/log/nginx/etherpad.access.log; error_log /var/log/nginx/etherpad.error.log; location / { rewrite ^/$ / break; rewrite ^/locales/(.*) /locales/$1 break; rewrite ^/locales.json /locales.json break; rewrite ^/admin(.*) /admin/$1 break; rewrite ^/p/(.*) /p/$1 break; rewrite ^/static/(.*) /static/$1 break; rewrite ^/pluginfw/(.*) /pluginfw/$1 break; rewrite ^/javascripts/(.*) /javascripts/$1 break; rewrite ^/socket.io/(.*) /socket.io/$1 break; rewrite ^/ep/(.*) /ep/$1 break; rewrite ^/minified/(.*) /minified/$1 break; rewrite ^/api/(.*) /api/$1 break; rewrite ^/ro/(.*) /ro/$1 break; rewrite ^/error/(.*) /error/$1 break; rewrite ^/jserror(.*) /jserror$1 break; rewrite ^/redirect(.*) /redirect$1 break; rewrite /favicon.ico /favicon.ico break; rewrite /robots.txt /robots.txt break; rewrite /(.*) /p/$1; proxy_pass http://127.0.0.1:9001; proxy_buffering off; proxy_set_header Host $host; proxy_pass_header Server; # proxy headers proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; }}

Save and close the file, then edit the nginx.conf file and define hash_bucket size:

nano /etc/nginx/nginx.conf

Add the following line below the line http {:

server_names_hash_bucket_size 64;

Save and close the file, then verify Nginx for any syntax errors:

nginx -t
You should see the following output:
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: configuration file /etc/nginx/nginx.conf test is successful

Finally, restart Nginx to apply the configuration changes:

systemctl restart nginx

Step 6 – Access Etherpad Web Interface

Now, open your favorite web browser and access the Etherpad web interface using the URL http://etherpad.example.com. You should see the following page:
How to Install the Etherpad Collaborative Web Editor on Rocky Linux 8 (1)
Provide your pad name and click on the OK button. You should see the following page:
How to Install the Etherpad Collaborative Web Editor on Rocky Linux 8 (2)

Conclusion

Congratulations! You have successfully installed Etherpad with Nginx as a reverse proxy on Rocky Linux 8. You can now use Etherpad to manage your content easily from the central location. Try it on dedicated hosting from Atlantic.Net!

How to Install the Etherpad Collaborative Web Editor on Rocky Linux 8 (2024)
Top Articles
Latest Posts
Article information

Author: The Hon. Margery Christiansen

Last Updated:

Views: 5807

Rating: 5 / 5 (70 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: The Hon. Margery Christiansen

Birthday: 2000-07-07

Address: 5050 Breitenberg Knoll, New Robert, MI 45409

Phone: +2556892639372

Job: Investor Mining Engineer

Hobby: Sketching, Cosplaying, Glassblowing, Genealogy, Crocheting, Archery, Skateboarding

Introduction: My name is The Hon. Margery Christiansen, I am a bright, adorable, precious, inexpensive, gorgeous, comfortable, happy person who loves writing and wants to share my knowledge and understanding with you.