FedoraRHEL Based

How To Install n8n on Fedora 43

Install n8n on Fedora 43

Workflow automation is no longer a luxury reserved for enterprise teams with SaaS budgets. If you run a Fedora 43 server and want full control over your automation stack, self-hosting n8n is one of the smartest moves you can make.

This guide walks you through how to install n8n on Fedora 43 from scratch using npm, covering Node.js installation, service configuration, firewall management with firewalld, and first-login setup. Unlike generic Linux tutorials that copy-paste Ubuntu instructions, this guide is written specifically for Fedora 43’s toolchain, including its dnf package manager, firewalld firewall, and SELinux enforcement.

By the end of this tutorial, you will have a fully functional, systemd-managed n8n instance running on your Fedora 43 machine and ready to automate anything you point it at.

What Is n8n and Why Should You Self-Host It?

n8n is an open-source, fair-code workflow automation platform that connects apps, APIs, and databases through a visual, node-based editor. Think of it as a self-hosted Zapier, but with no per-workflow pricing, no usage caps, and full ownership of your data.

When you self-host n8n, you run the entire platform on your own server. Your credentials, workflow logic, and execution history never touch a third-party cloud.

Why Fedora 43 specifically?

  • Fedora 43 ships a modern kernel and uses dnf for fast, dependency-aware package management
  • It uses firewalld by default, not ufw, which most generic n8n guides completely ignore
  • SELinux is enabled and enforcing by default, which this guide addresses directly rather than telling you to disable it
  • Fedora’s rapid release cycle means you get up-to-date build toolchains that Node.js and npm depend on

n8n vs. cloud alternatives at a glance:

Feature n8n (Self-Hosted) Zapier (Cloud) Make (Cloud)
Cost Free, open-source Monthly subscription Monthly subscription
Data control Full — stays on your server Cloud-stored Cloud-stored
Integrations 400+ 5,000+ 1,500+
Custom code Yes (JavaScript/TypeScript) Limited Moderate
Execution limits None Tier-based Tier-based
Ideal for Developers, sysadmins, DevOps Non-technical users SMBs

Prerequisites

Before you start, confirm your environment meets these requirements:

  • Operating system: Fedora 43 (bare metal, VM, or VPS) with a fresh or updated installation
  • User access: A non-root user with sudo privileges — do not run n8n as root
  • Hardware minimums: 1 vCPU, 2 GB RAM, 10 GB free disk space
  • Network: Active internet connection for downloading packages
  • Terminal access: Local terminal or SSH session
  • Skills: Basic Linux CLI familiarity (navigating directories, editing files, running systemctl)
  • Installation method: This guide uses npm for a native system install, not Docker

Step 1: Update Your Fedora 43 System

Always start with a full system update. This ensures you have the latest versions of glibc, OpenSSL, and build tools that n8n’s dependencies rely on.

Run the update:

sudo dnf update -y

If the update includes a kernel upgrade, reboot before continuing:

sudo reboot

After rebooting, confirm you are running Fedora 43:

cat /etc/fedora-release

Expected output:

Fedora release 43 (Forty Three)

This single step prevents the majority of cryptic compilation errors that show up later in the npm install process when system libraries are outdated.

Step 2: Install Node.js and npm on Fedora 43

n8n is a Node.js application. It runs entirely on the Node.js runtime and installs through npm. You need Node.js 18.x or 20.x LTS for a stable n8n installation. Avoid odd-numbered Node.js versions (v19, v21) as they are non-LTS releases.

Method A: Install via NodeSource Repository (Recommended)

This method gives you a current LTS version. Fedora’s default repository sometimes ships an older Node.js build that may not meet n8n’s minimum version requirement.

First, install the C++ build tools that native npm modules need:

sudo dnf install -y gcc-c++ make

Next, pull in the NodeSource LTS setup script:

curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -

Now install Node.js:

sudo dnf install -y nodejs

Method B: Install via Fedora’s Default Repository (Simpler)

If you want the quickest path and are comfortable with a potentially older Node.js version, use Fedora’s built-in repo:

sudo dnf install -y nodejs npm

This works fine for many setups. If n8n later reports a Node.js version incompatibility, switch to Method A.

Verify Your Node.js Installation

Check both versions before moving on:

node -v
npm -v

You should see output similar to:

v20.18.0
10.8.1

n8n requires Node.js v18 or higher. If your output shows anything lower, reinstall using Method A.

Step 3: Install n8n Globally Using npm

With Node.js ready, install n8n as a global npm package. The -g flag places the n8n binary in /usr/bin/n8n, making it accessible from any directory on the system.

Run the install:

sudo npm install -g n8n

This command downloads n8n and all its dependencies. Depending on your connection speed and server hardware, this can take between 2 and 5 minutes. Do not interrupt it.

Verify the installation completed successfully:

n8n --version

You should see a version number printed to the terminal, such as 1.x.x.

Optional quick test: You can run n8n directly to confirm it starts. Press Ctrl+C to stop it once you see the startup output. Do not use this raw invocation for production — the next steps cover running it properly as a managed service.

Step 4: Create a Dedicated System User and Data Directory

Running n8n as root is a security risk. A dedicated, non-login system user isolates the n8n process from the rest of the operating system, limiting the blast radius if something goes wrong.

Create a system user with no home directory and no interactive login shell:

sudo useradd --system --no-create-home --shell /sbin/nologin n8n

Create the data directory. This is where n8n stores its SQLite database, saved workflows, credentials, and execution history. The /var/lib/ path follows the Linux Filesystem Hierarchy Standard (FHS) for persistent application data:

sudo mkdir -p /var/lib/n8n

Assign ownership of that directory to the new n8n user:

sudo chown -R n8n:n8n /var/lib/n8n

SELinux note for Fedora 43: Fedora ships with SELinux in enforcing mode by default. After creating this directory, restore the default SELinux file context to prevent permission-related service failures later:

sudo restorecon -Rv /var/lib/n8n

Step 5: Configure n8n Environment Variables

Environment variables control n8n’s identity, security boundaries, and runtime behavior. Skipping this step in any production or semi-production setup is one of the most common causes of broken webhooks, credential decryption failures, and OAuth redirect loops.

Create a dedicated environment file:

sudo nano /etc/n8n.env

Paste the following configuration, replacing placeholder values with your own:

# Core identity
N8N_HOST=0.0.0.0
N8N_PORT=5678
N8N_PROTOCOL=http

# Data storage
N8N_USER_FOLDER=/var/lib/n8n

# Security
N8N_ENCRYPTION_KEY=REPLACE_WITH_A_RANDOM_32_CHARACTER_STRING
N8N_SECURE_COOKIE=false

# Webhook URL (set this if you have a public domain or IP)
WEBHOOK_URL=http://YOUR_SERVER_IP_OR_DOMAIN:5678

# Timezone
GENERIC_TIMEZONE=Asia/Jakarta

Generate a secure, random encryption key with this command and copy the output into N8N_ENCRYPTION_KEY:

openssl rand -hex 16

Critical note on the encryption key: This key encrypts all stored credentials in your database. If you lose it or change it after your first run, n8n cannot decrypt previously saved API keys and OAuth tokens. Treat this value like a root password and never rotate it casually.

After saving the file, lock down its permissions so only root can read it:

sudo chmod 600 /etc/n8n.env

Here is a quick reference for the most important variables:

Variable What It Does Example
N8N_HOST IP address n8n binds to 0.0.0.0
N8N_PORT Port n8n listens on 5678
N8N_PROTOCOL HTTP or HTTPS http
N8N_USER_FOLDER Data storage path /var/lib/n8n
N8N_ENCRYPTION_KEY Encrypts stored credentials 32-char random string
N8N_SECURE_COOKIE Set to false for plain HTTP false
WEBHOOK_URL Public URL for webhook callbacks Your server’s public URL
GENERIC_TIMEZONE Timezone for scheduled workflows Asia/Jakarta

Step 6: Create a systemd Service File

A systemd service makes n8n start automatically on every boot and restart automatically if it crashes. This is what separates a proper server deployment from a process you have to manually babysit.

Create the service file:

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

Paste this Fedora-compatible configuration:

[Unit]
Description=n8n workflow automation
Documentation=https://docs.n8n.io
After=network.target

[Service]
Type=simple
User=n8n
Group=n8n
EnvironmentFile=/etc/n8n.env
ExecStart=/usr/bin/n8n
Restart=on-failure
RestartSec=5s
WorkingDirectory=/var/lib/n8n
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Save and exit with Ctrl+O, Enter, then Ctrl+X.

A few key details about this service file worth understanding:

  • User=n8n and Group=n8n ensure the process never runs as root
  • EnvironmentFile=/etc/n8n.env loads your configuration variables cleanly
  • Restart=on-failure with RestartSec=5s tells systemd to wait 5 seconds before restarting n8n if it exits unexpectedly
  • StandardOutput=journal and StandardError=journal route all logs through journalctl for easy debugging

Reload the systemd daemon to register the new service:

sudo systemctl daemon-reload

Enable n8n to start on boot and launch it immediately:

sudo systemctl enable n8n --now

Verify the service is active and running:

sudo systemctl status n8n

Look for the Active: active (running) line in the output. If you see it, n8n is live.

Step 7: Open Port 5678 in Fedora’s Firewall (firewalld)

This is the step that most generic n8n guides get wrong. Fedora 43 uses firewalld, not ufw, and the commands are different. If you follow an Ubuntu-based tutorial and run ufw allow 5678, nothing will happen on Fedora.

First, verify firewalld is active:

sudo systemctl status firewalld

Open port 5678 permanently:

sudo firewall-cmd --permanent --add-port=5678/tcp

Reload the firewall to apply the change:

sudo firewall-cmd --reload

Confirm the port is open:

sudo firewall-cmd --list-ports

You should see 5678/tcp in the output.

If you plan to put n8n behind a reverse proxy like Nginx or Caddy (recommended for HTTPS), open HTTP and HTTPS services instead:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

Step 8: Access n8n and Complete First-Time Setup

Open a browser and navigate to your server’s IP address on port 5678:

http://YOUR_SERVER_IP:5678

For a local installation, use:

http://localhost:5678

On the first visit, n8n presents an owner account setup screen. Fill in your email address, first name, last name, and a strong password. This account has full admin access to every workflow, credential, and setting in your instance.

After setup, you land directly on the n8n workflow canvas — your automation editor is ready.

To confirm the service survives reboots, test it now:

sudo reboot

After the server comes back up, check the service status:

sudo systemctl status n8n

If n8n shows active (running) after a full reboot, your n8n on Fedora 43 setup is complete and production-ready.

How To Update n8n in the Future

Keeping n8n updated protects you from security vulnerabilities and gives you access to new integrations and features. The update process is straightforward.

Stop the service:

sudo systemctl stop n8n

Update n8n through npm:

sudo npm update -g n8n

Restart the service:

sudo systemctl start n8n

Verify the new version:

n8n --version

Best practice: Before every major version update, back up your data directory:

sudo cp -r /var/lib/n8n /var/lib/n8n.backup.$(date +%F)

This preserves your workflows and credentials if something goes wrong during the update.

Troubleshooting Common Issues on Fedora 43

n8n Service Fails To Start

Check the logs first — they almost always tell you exactly what went wrong:

sudo journalctl -u n8n -n 50

The most common cause is incorrect ownership on /var/lib/n8n. Fix it with:

sudo chown -R n8n:n8n /var/lib/n8n

Then restart the service:

sudo systemctl restart n8n

SELinux Blocking the Service

Fedora 43 runs SELinux in enforcing mode. If you see AVC denial messages in your logs, SELinux is blocking n8n from accessing its data directory. Check for denials:

sudo ausearch -m avc -ts recent

The proper fix is to restore the default SELinux context to the n8n data directory:

sudo restorecon -Rv /var/lib/n8n

For a quick diagnostic test only (never leave this in place), you can temporarily switch SELinux to permissive mode:

sudo setenforce 0

If n8n starts after that command, SELinux context was the issue. Apply restorecon, then re-enable enforcing mode:

sudo setenforce 1

Port 5678 Not Accessible From Another Machine

First, confirm n8n is actually listening on that port:

ss -tulnp | grep 5678

If the port shows up there but you still cannot reach it remotely, your firewall is blocking it. Recheck your firewalld rules:

sudo firewall-cmd --list-ports

If 5678/tcp is not listed, re-run the firewalld commands from Step 7.

npm EACCES Errors During Installation

This error means you ran npm install -g n8n without sudo. On Fedora, global npm installs require elevated permissions:

sudo npm install -g n8n

Node.js Version Too Old

If n8n refuses to start with a Node.js version error, your current Node.js is below v18. Reinstall using the NodeSource method from Step 2, Method A.

Congratulations! You have successfully installed n8n. Thanks for using this tutorial for installing n8n workflow automation software and tools on Fedora 43 Linux system. For additional help or useful information, we recommend you check the official n8n website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is a dedicated and highly skilled Linux Systems Administrator with over a decade of progressive experience in designing, deploying, and maintaining enterprise-grade Linux infrastructure. His professional journey began in the telecommunications industry, where early exposure to Unix-based operating systems ignited a deep and enduring passion for open-source technologies and server administration.​ Throughout his career, r00t has demonstrated exceptional proficiency in managing large-scale Linux environments, overseeing more than 300 servers across development, staging, and production platforms while consistently achieving 99.9% system uptime. He holds advanced competencies in Red Hat Enterprise Linux (RHEL), Debian, and Ubuntu distributions, complemented by hands-on expertise in automation tools such as Ansible, Terraform, Bash scripting, and Python.
Back to top button