How To Install Etherpad on Fedora 44

Install Etherpad on Fedora 44

If you need a clean Install Etherpad Fedora 44 guide, this article gives you a production-minded setup from the view of a Linux sysadmin. It covers the full flow, from system prep to service management, firewall access, and reverse proxy tuning, with each step explained by both what it does and why it matters. Etherpad runs on Node.js and uses configurable settings for ports, database type, and proxy behavior, so a careful setup saves time later.

Etherpad is a real-time collaborative editor, and Fedora 44 gives you a modern Linux base with systemd and firewalld built in. That makes it a strong fit for teams that want a self-hosted pad server instead of relying on a third-party service. The key is to install it in a way that is secure, maintainable, and easy to troubleshoot.

This guide assumes you want a practical Etherpad Fedora 44 setup that works for beginners but still meets the expectations of developers and sysadmins. You will see exact terminal commands, expected outputs, and configuration choices that line up with how Etherpad and Fedora actually behave. The final result is a deployable Linux server tutorial, not a quick demo that breaks after reboot.

Prerequisites

  • Fedora 44 installed and updated.
  • A user with sudo access or root access.
  • Internet access for package installation and source download.
  • A domain name if you plan to add Nginx and HTTPS.
  • Basic comfort with the terminal and a text editor such as nano or vim.
  • Enough disk space for Node.js packages, Etherpad files, and logs.

Step 1: Update Your System

Refresh packages first

Start by updating Fedora so you begin with the latest security fixes and package metadata.

sudo dnf upgrade --refresh -y

This command updates installed packages and refreshes repository data. You do this first because dependency issues are much easier to avoid than to debug later. On Fedora, a current package set also helps reduce surprises when you install Node.js build tools and service components.

Check the result

A successful run usually ends with a summary like this:

Complete!

If the system asks for a reboot after a kernel or core library update, do it before moving on. A reboot is not always required, but it is smart after major platform updates because it ensures your runtime matches your updated packages.

Step 2: Install Required Packages

Install the build and runtime tools

Etherpad needs Git, Node.js support, and some build helpers.

sudo dnf install -y git curl python3 gcc make openssl-devel

This installs the tools Etherpad and its dependencies often need during setup. Git fetches the source, curl helps with download or verification tasks, and the compiler tools support native module builds. openssl-devel is important because some Node packages and secure transports depend on OpenSSL headers.

Why this step matters

If you skip these packages, the install can fail during dependency compilation or later when Etherpad tries to start. A clean build environment is one of the easiest ways to keep an Install Etherpad Fedora 44 guide reliable. It also makes troubleshooting much easier because you know the platform tools are present.

Step 3: Install Node.js

Install the runtime

Etherpad is a Node.js application, so it cannot run without Node and npm support.

sudo dnf install -y nodejs npm

This installs the runtime Etherpad uses to launch the server and manage JavaScript dependencies. You need Node.js because Etherpad is not a static web app, it is a live server process that handles editing, sync, and plugin logic. Fedora’s Node.js packaging is the easiest starting point for most users.

Verify the version

Check that Node is available:

node -v
npm -v

Expected output looks similar to:

vXX.X.X
X.X.X

You do not need the exact same version shown above, but you do need a working Node installation. If the command returns “command not found,” stop here and fix Node.js before moving forward.

Step 4: Create a Dedicated Etherpad User

Add a service account

Run Etherpad under its own user instead of root.

sudo useradd -r -m -d /opt/etherpad -s /bin/bash etherpad

This creates a system user and a home directory for the app. You do this because a dedicated account limits damage if the service is ever compromised. It also keeps file ownership clean and makes service management more predictable.

Confirm the account

Check the account details:

id etherpad

Expected output:

uid=... etherpad

A separate user is not just a nice practice, it is a baseline security control. For any production configure Etherpad Fedora 44 plan, service isolation should come before web exposure.

Step 5: Download Etherpad

Clone the official source

Switch to the service user and clone the project.

sudo -iu etherpad
cd /opt/etherpad
git clone https://github.com/ether/etherpad-lite.git etherpad-lite
cd etherpad-lite

This pulls Etherpad from the official repository instead of a third-party mirror. You want the upstream source because it is the most trustworthy place for current code, release notes, and setup behavior. A source clone also makes future upgrades easier to manage.

Check the folder

List the files to confirm the clone worked:

ls -la

You should see project files such as bin/, settings.json.template, and src/. That tells you the repository is in place and ready for configuration.

Step 6: Install Etherpad Dependencies

Install application dependencies

Run the built-in dependency installer.

./bin/installDeps.sh

This script installs the Node modules Etherpad needs to run. You do this because cloning the repository does not yet give you a fully runnable server. The script resolves the package set Etherpad expects and prepares the app for launch.

What success looks like

When the script finishes, you should see messages about installed packages and no fatal errors.

... installed successfully ...

If it stops with build errors, check whether the compiler tools and openssl-devel package are present. This step often reveals missing system packages early, which is useful because it prevents a bad startup later.

Step 7: Configure Etherpad Fedora 44

Create the settings file

Copy the template and edit it.

cp settings.json.template settings.json
nano settings.json

This gives you a local configuration file that Etherpad reads at startup. You should edit settings.json, not the template, because the template is a reference file and may change across releases.

Set the important values

Focus on these settings first:

"ip": "127.0.0.1",
"port": 9001,
"dbType": "dirty",
"trustProxy": true

Use 127.0.0.1 when you plan to place Etherpad behind Nginx, because it keeps the app off the public interface. port tells Etherpad which local port to listen on, dbType controls where pad data is stored, and trustProxy must be enabled if a reverse proxy will sit in front of Etherpad.

Why these settings matter

trustProxy is especially important because Etherpad uses proxy headers to handle secure cookies and client information correctly. Etherpad’s documentation and template both note that proxy-aware deployments need this setting for correct behavior. If you skip it, HTTPS sessions and log accuracy can break in subtle ways.

Optional production notes

For a quick local test, dirty works. For real use, a database backend such as PostgreSQL or MySQL is usually a better long-term choice because it gives you stronger durability and easier growth planning. The Etherpad docs show support for multiple database types, so choose one that matches your environment.

Step 8: Create a systemd Service

Write the service unit

Create a service file so Fedora can manage Etherpad like a normal daemon.

sudo nano /etc/systemd/system/etherpad.service

Add this content:

[Unit]
Description=Etherpad Collaborative Editor
After=network.target

[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad/etherpad-lite
ExecStart=/usr/bin/node /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
Restart=always

[Install]
WantedBy=multi-user.target

This makes Etherpad start under systemd instead of staying tied to your terminal session. You want systemd because it restarts failed services, starts on boot, and gives you standard logging through journalctl.

Reload and enable

Run the following commands:

sudo systemctl daemon-reload
sudo systemctl enable --now etherpad

daemon-reload tells systemd to read the new service file. enable --now starts Etherpad immediately and also launches it at boot, which is exactly what you want for a server app.

Check the status

Verify the service is active:

sudo systemctl status etherpad

Expected output includes:

active (running)

If the service fails, read the log instead of guessing. That gives you the real reason, such as a bad path, wrong Node version, or broken config file.

Step 9: Open the Firewall Port

Allow the Etherpad port

If you plan to access Etherpad directly, open the port in firewalld.

sudo firewall-cmd --permanent --add-port=9001/tcp
sudo firewall-cmd --reload

This tells Fedora’s firewall to allow inbound traffic on port 9001. You do this because Fedora blocks most incoming traffic by default, so the app may run locally but stay unreachable from the network.

Verify the firewall rule

Check the active rules:

sudo firewall-cmd --list-ports

You should see:

9001/tcp

Do not disable the firewall just to make the service work. Open only the port you need, because that keeps the server protected while still reachable.

Step 10: Test the Service

Open Etherpad in a browser

Go to:

http://SERVER_IP:9001

If the page loads, the core install is working. This test confirms that Node.js, the Etherpad process, and the firewall path all line up. It is the fastest way to prove the base installation works before adding more layers.

Install Etherpad Fedora 44

Test the logs if needed

If the page does not load, inspect logs:

sudo journalctl -u etherpad -f

This is useful because most startup issues appear there first. A missing dependency, bad file path, or permission problem usually shows up in the logs with enough detail to fix it fast.

Step 11: Add Nginx Reverse Proxy

Install Nginx

For a production deployment, place Nginx in front of Etherpad.

sudo dnf install -y nginx

Nginx gives you a clean public entry point, easier TLS setup, and better control over HTTP headers. It also lets Etherpad stay bound to localhost, which is safer than exposing the app port directly.

Create the proxy config

Create a site file such as:

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

Use this example:

server {
    listen 80;
    server_name pad.example.com;

    location / {
        proxy_pass http://127.0.0.1:9001;
        proxy_http_version 1.1;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header Host $host;
        proxy_buffering off;
    }
}

This forwards browser traffic to Etherpad while keeping the backend private. You need X-Forwarded-Proto and related headers because Etherpad uses proxy awareness to generate correct links and secure cookies.

Restart Nginx

Apply the config:

sudo nginx -t
sudo systemctl restart nginx

nginx -t checks the syntax before restart. That matters because a small config typo can take the proxy offline, and syntax validation catches it before users notice.

Step 12: Add HTTPS

Install Certbot or use your preferred TLS flow

Once the proxy works, add HTTPS.

sudo dnf install -y certbot python3-certbot-nginx

TLS matters because Etherpad can carry sensitive team notes and edits. A public collaboration service should not send traffic in plain text, especially if people sign in or use the pad from untrusted networks.

Request the certificate

Run Certbot:

sudo certbot --nginx -d pad.example.com

After that, confirm the site loads over HTTPS. In Etherpad, proxy mode must remain enabled so cookies and request details behave correctly behind TLS termination.

Step 13: Final Verification

Check the full path

Test the application through the domain name:

https://pad.example.com

A successful load means the stack is complete: Fedora, Node.js, Etherpad, systemd, firewall, Nginx, and TLS. That is the end state you want for a stable How To Install Etherpad Fedora 44 deployment.

Confirm proxy behavior

If the browser or logs show wrong protocol links or odd cookie warnings, revisit trustProxy and the Nginx headers. Etherpad’s configuration template is explicit about proxy-aware deployments, so this is one of the first things to verify.

Troubleshooting

1. Etherpad will not start

Check the service log:

sudo journalctl -u etherpad -xe

This usually points to a wrong ExecStart, missing Node.js binary, or permission issue. The fix is often simple, but you need the log to see which part failed.

2. Port 9001 does not open

Confirm the app is running and the firewall rule exists.

sudo systemctl status etherpad
sudo firewall-cmd --list-ports

If the service runs but the port is blocked, the problem is firewalld, not Etherpad. Open the port again and reload the firewall rules.

3. Reverse proxy shows bad URLs

Check trustProxy in settings.json and make sure Nginx sends forwarded headers.

"trustProxy": true

Etherpad expects proxy-aware settings when SSL ends at Nginx. If this flag is wrong, cookies and generated links may behave incorrectly.

4. Permission denied errors

Make sure files belong to the etherpad user.

sudo chown -R etherpad:etherpad /opt/etherpad/etherpad-lite

This fixes cases where setup commands were run as root or another user. File ownership matters because the systemd service runs as etherpad, not as your login account.

5. Blank page or asset errors

Restart the service and verify that Node modules installed correctly.

sudo systemctl restart etherpad

If the issue remains, rerun the dependency install script. Etherpad depends on a clean Node.js dependency tree, so missing modules can break the interface even when the service appears to be up.

r00t is a Linux Systems Administrator and open-source advocate with over ten years of hands-on experience in server infrastructure, system hardening, and performance tuning. Having worked across distributions such as Debian, Arch, RHEL, and Ubuntu, he brings real-world depth to every article published on this blog. r00t writes to bridge the gap between complex sysadmin concepts and practical, everyday application — whether you are configuring your first server or optimizing a production environment. Based in New York, US, he is a firm believer that knowledge, like open-source software, is best when shared freely.

Related Posts