{"id":9343,"date":"2019-02-09T09:58:37","date_gmt":"2019-02-09T09:58:37","guid":{"rendered":"https:\/\/www.appservgrid.com\/paw92\/?p=9343"},"modified":"2019-02-10T02:59:27","modified_gmt":"2019-02-10T02:59:27","slug":"linux-today-how-to-install-nodebb-forum-on-fedora-29","status":"publish","type":"post","link":"https:\/\/www.appservgrid.com\/paw92\/index.php\/2019\/02\/09\/linux-today-how-to-install-nodebb-forum-on-fedora-29\/","title":{"rendered":"Linux Today &#8211; How to Install NodeBB Forum on Fedora 29"},"content":{"rendered":"<p>NodeBB is a\u00a0Node.js based forum software built for the modern web.\u00a0It&#8217;s\u00a0built on either a\u00a0MongoDB or\u00a0Redis database.\u00a0It utilizes web sockets for instant interactions and real-time notifications. NodeBB has many modern features out of the box such as social network integration and streaming discussions.\u00a0Additional functionality is enabled through the use of third-party plugins.\u00a0NodeBB is an open source project which can be found on Github.\u00a0In this guide, we will walk you through the step-by-step NodeBB installation process on the\u00a0Fedora 29\u00a0operating system by using Nginx as a reverse proxy, MongoDB as the database and acme.sh and Let&#8217;s Encrypt for HTTPS.<\/p>\n<h2 id=\"requirements\">Requirements<\/h2>\n<p>NodeBB requires the following software to be installed:<\/p>\n<ul>\n<li>Node.js version\u00a0<strong>6<\/strong>\u00a0or greater<\/li>\n<li>MongoDB version\u00a0<strong>2.6<\/strong>\u00a0or greater or\u00a0Redis version\u00a0<strong>2.8.9<\/strong>\u00a0or greater<\/li>\n<li>Nginx version\u00a0<strong>1.3.13<\/strong>\u00a0or greater<\/li>\n<li>Git<\/li>\n<\/ul>\n<p><strong>NOTE<\/strong>:<em>\u00a0Installing NodeBB&#8217;s dependencies may require more than 512 megabytes of system memory. It is recommended to\u00a0enable a swap partition\u00a0to compensate if your Linux system has insufficient memory.<\/em><\/p>\n<h2 id=\"prerequisites\" class=\"header-scroll is-api-header\">Prerequisites<\/h2>\n<ul>\n<li>A running Fedora 29\u00a0system with at least 1GB or RAM.<\/li>\n<li>Domain name with\u00a0<code>A<\/code>\/<code>AAAA<\/code>\u00a0records set up.<\/li>\n<li>A non-root user with sudo privileges.<\/li>\n<\/ul>\n<h2 id=\"initial-steps\">Initial steps<\/h2>\n<p>Check\u00a0your\u00a0Fedora version:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">cat \/etc\/fedora-release\r\n#\u00a0Fedora release 29 (Twenty Nine)<\/code><\/pre>\n<p>Set up the timezone:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">timedatectl list-timezones\r\nsudo timedatectl set-timezone 'Region\/City'<\/code><\/pre>\n<p>Update your operating system packages (software). This is an important first step because it ensures you have the latest updates and security fixes for your operating system&#8217;s default software packages:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo dnf check-upgrade || sudo dnf upgrade -y<\/code><\/pre>\n<p>Install some essential packages that are\u00a0necessary for basic administration of\u00a0the Fedora operating system:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo dnf install -y curl wget vim\u00a0bash-completion git socat<\/code><\/pre>\n<p>For simplicity&#8217;s sake, disable SELinux and Firewall:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo setenforce 0; sudo systemctl stop firewalld.service; sudo systemctl disable firewalld.service<\/code><\/pre>\n<h2 id=\"step-install-nodejs-and-npm\">Step 1: Install Node.js and npm<\/h2>\n<p>NodeBB is built on\u00a0Node.js.\u00a0We are going to install\u00a0<strong>recommended<\/strong>\u00a0version for\u00a0NodeBB which is\u00a0version 8<b>\u00a0<\/b>at the time of this writing. On Linux, you have a few Node.js installation options: Linux Binaries (x86\/x64), Source Code or via Package Managers. We will use Package Management option which makes installing and updating Node.js a breeze.<\/p>\n<p>Download and install the latest Long-Term Support (LTS) release of\u00a0Node.js from the\u00a0Fedora repo:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo dnf -y install nodejs<\/code><\/pre>\n<p>To compile and install native add-ons from npm you may also need to install build tools:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo dnf install -y gcc-c++ make\r\n# or\r\n# sudo dnf groupinstall -y 'Development Tools'<\/code><\/pre>\n<p><strong>NOTE<\/strong>:\u00a0<em>npm is distributed with Node.js &#8211; which means that when you download Node.js, you automatically get npm installed on your system.<br \/>\n<\/em><\/p>\n<p>Check the Node.js and\u00a0npm\u00a0versions:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">node -v &amp;&amp; npm -v\r\n# v10.15.0\r\n# 6.4.1<\/code><\/pre>\n<p>Npm is a separate project from Node.js, and tends to update more frequently. As a result, even if you\u2019ve just downloaded Node.js (and therefore npm), you\u2019ll probably need to update your npm. Luckily, npm knows how to update itself! To update your npm, type this into your terminal:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo npm install -g npm@latest<\/code><\/pre>\n<p>This command will update npm to the latest stable version.<\/p>\n<p>Re-check npm version with:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">npm -v\r\n# 6.7.0\r\n<\/code><\/pre>\n<p>And it should return latest version numbers.<\/p>\n<h2 id=\"step-install-and-configure-mongodb\">Step 2: Install and configure MongoDB<\/h2>\n<p>NodeBB needs a database to store its data, and it supports MongoDB and Redis. In this tutorial, we\u00a0chose MongoDB as data store engine. So, in the next few steps, we will download and install MongoDB database from the official MongoDB rpm repository:<\/p>\n<p>To install the stable version of MongoDB package, issue the following command:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo dnf install -y mongodb mongodb-server<\/code><\/pre>\n<p>Check the MongoDB version:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">mongo --version | head -n 1 &amp;&amp; mongod --version | head -n 1\r\n# MongoDB shell version v4.0.1\r\n# db version v4.0.1<\/code><\/pre>\n<p>Start\u00a0and\u00a0enable\u00a0(<em>set it to start on reboot<\/em>)\u00a0MongoDB service:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo systemctl start mongod.service\r\nsudo systemctl enable mongod.service<\/code><\/pre>\n<p>Check the MongoDB Database Server status by running:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo systemctl status mongod.service\r\n#\u00a0active (running)<\/code><\/pre>\n<p>Next, create MongoDB database and user for NodeBB.<\/p>\n<p>Connect to MongoDB server first.<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">mongo<\/code><\/pre>\n<p>Switch to the built-in\u00a0<code>admin<\/code>\u00a0database.<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">&gt; use admin<\/code><\/pre>\n<p>Create an administrative user.<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">&gt; db.createUser( { user: \"admin\", pwd: \"&lt;Enter a secure password&gt;\", roles: [ { role: \"readWriteAnyDatabase\", db: \"admin\" }, { role: \"userAdminAnyDatabase\", db: \"admin\" } ] } )<\/code><\/pre>\n<p><strong>NOTE:<\/strong>\u00a0<em>Replace the placeholder\u00a0<code>&lt;Enter a secure password&gt;<\/code>\u00a0with your own selected password.<\/em><\/p>\n<p>Add a new database called\u00a0<code>nodebb<\/code>.<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">&gt; use nodebb<\/code><\/pre>\n<p>The database will be created and context switched to\u00a0<code>nodebb<\/code>. Next create the\u00a0<code>nodebb<\/code>\u00a0user with the appropriate privileges.<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">&gt; db.createUser( { user: \"nodebb\", pwd: \"&lt;Enter a secure password&gt;\", roles: [ { role: \"readWrite\", db: \"nodebb\" }, { role: \"clusterMonitor\", db: \"admin\" } ] } )<\/code><\/pre>\n<p><strong>NOTE:<\/strong>\u00a0<em>Again, replace the placeholder\u00a0<code>&lt;Enter a secure password&gt;<\/code>\u00a0with your own selected password.<\/em><\/p>\n<p>Exit the Mongo shell.<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">&gt; quit()<\/code><\/pre>\n<p>Restart MongoDB and verify that the administrative user created earlier can connect.<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo systemctl restart mongod.service\r\nmongo -u admin -p your_password --authenticationDatabase=admin<\/code><\/pre>\n<p>If all went well, your MongoDB should be installed and prepared for NodeBB. In the next\u00a0step, we will deal with web server installation and configuration.<\/p>\n<h2 id=\"\">Step 3 &#8211; Install\u00a0<code>acme.sh<\/code>\u00a0client and obtain Let&#8217;s Encrypt certificate (<em>optional<\/em>)<\/h2>\n<p>Securing your\u00a0NodeBB Forum with HTTPS is not necessary, but it is a good practice to secure your site traffic. In order to obtain\u00a0TLS certificate from Let&#8217;s Encrypt we will use acme.sh client. Acme.sh is a pure unix shell software for obtaining\u00a0TLS certificates from Let&#8217;s Encrypt with zero dependencies.<\/p>\n<p>Download and install\u00a0acme.sh:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo su - root\r\ngit clone https:\/\/github.com\/Neilpang\/acme.sh.git\r\ncd acme.sh\u00a0\r\n.\/acme.sh --install --accountemail\u00a0your_email@example.com\r\nsource ~\/.bashrc\r\ncd ~<\/code><\/pre>\n<p>Check acme.sh\u00a0version:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">acme.sh --version\r\n# v2.8.0<\/code><\/pre>\n<p>Obtain\u00a0<strong>RSA<\/strong>\u00a0and\u00a0<strong>ECC\/ECDSA<\/strong>\u00a0certificates for your\u00a0domain\/hostname:<code><br \/>\n<\/code><\/p>\n<pre class=\"command\"><code spellcheck=\"false\"># RSA 2048\r\nacme.sh --issue\u00a0--standalone -d example.com --keylength 2048\r\n# ECDSA\r\nacme.sh --issue --standalone -d example.com --keylength ec-256<\/code><\/pre>\n<p>If you want fake certificates for testing you can add\u00a0<code>--staging<\/code>\u00a0flage to the above commands.<\/p>\n<p>After running the above commands, your\u00a0<em>certificates<\/em>\u00a0and\u00a0<em>keys<\/em>\u00a0will be in:<\/p>\n<ul>\n<li>For\u00a0<strong>RSA<\/strong>:\u00a0<code>\/home\/username\/example.com<\/code>\u00a0directory.<\/li>\n<li>For\u00a0<strong>ECC\/ECDSA<\/strong>:\u00a0<code>\/home\/username\/example.com_ecc<\/code>\u00a0directory.<\/li>\n<\/ul>\n<p>To list your issued certs you can run:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">acme.sh --list<\/code><\/pre>\n<p>Create a\u00a0directories\u00a0to store your certs. We will use\u00a0<code>\/etc\/letsencrypt<\/code>\u00a0directory.<\/p>\n<pre class=\"command\"><code>mkdir -p \/etc\/letsecnrypt\/example.com<\/code>\r\n<code>sudo mkdir -p \/etc\/letsencrypt\/example.com_ecc<\/code><\/pre>\n<p>Install\/copy certificates to\u00a0\/etc\/letsencrypt\u00a0directory.<\/p>\n<pre class=\"command\"><code spellcheck=\"false\"># RSA\r\nacme.sh --install-cert -d example.com --cert-file \/etc\/letsencrypt\/example.com\/cert.pem --key-file \/etc\/letsencrypt\/example.com\/private.key --fullchain-file \/etc\/letsencrypt\/example.com\/fullchain.pem --reloadcmd \"sudo systemctl reload nginx.service\"\r\n# ECC\/ECDSA\r\nacme.sh --install-cert -d example.com --ecc --cert-file \/etc\/letsencrypt\/example.com_ecc\/cert.pem --key-file \/etc\/letsencrypt\/example.com_ecc\/private.key --fullchain-file \/etc\/letsencrypt\/example.com_ecc\/fullchain.pem --reloadcmd \"sudo systemctl reload nginx.service\"<\/code><\/pre>\n<p>All the\u00a0certificates will be automatically renewed every 60 days.<\/p>\n<p>After obtaining certs exit from root user and return back to normal sudo user:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">exit<\/code><\/pre>\n<h2 id=\"step-install-and-configure-nginx\">Step 4: Install and configure Nginx<\/h2>\n<p>NodeBB\u00a0can work fine with many web servers. In this tutorial, we selected Nginx.<\/p>\n<p>Install Nginx package, by issue the following command:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo dnf install -y nginx<\/code><\/pre>\n<p>After the installation, you can\u00a0verify\u00a0Nginx version by running:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">nginx -v\r\n# 1.14.1<\/code><\/pre>\n<p>Start\u00a0and\u00a0enable (<em>set it to start on reboot<\/em>) Nginx service:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo systemctl start nginx.service\r\nsudo systemctl enable nginx.service<\/code><\/pre>\n<p>Check the\u00a0Nginx\u00a0web server status by running:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo systemctl status nginx.service\r\n#\u00a0active (running)<\/code><\/pre>\n<p>NodeBB by default runs on port\u00a0<code>4567<\/code>. To avoid typing\u00a0<code>http:\/\/example.com:4567<\/code>, we will configure Nginx as a reverse proxy for the NodeBB application. Every request on port\u00a0<code>80<\/code>\u00a0or\u00a0<code>443<\/code>\u00a0(<em>if SSL is used<\/em>) will be forwarded to port\u00a0<code>4567<\/code>.<\/p>\n<p>Run\u00a0<code>sudo vim \/etc\/nginx\/conf.d\/nodebb.conf<\/code>\u00a0and configure Nginx as an HTTPS reverse proxy.<\/p>\n<pre><code spellcheck=\"false\">server {\r\n  listen [::]:443 ssl http2;\r\n  listen 443 ssl http2;\r\n  listen [::]:80;\r\n  listen 80;\r\n  \r\n  server_name forum.example.com;\r\n  \r\n  client_max_body_size 50M;\r\n\r\n  # RSA\r\n  ssl_certificate \/etc\/letsencrypt\/example.com\/fullchain.pem;\r\n  ssl_certificate_key \/etc\/letsencrypt\/example.com\/private.key;\r\n  # ECDSA\r\n  ssl_certificate \/etc\/letsencrypt\/example.com_ecc\/fullchain.pem;\r\n  ssl_certificate_key \/etc\/letsencrypt\/example.com_ecc\/private.key;\r\n\r\n  location \/ {\r\n    proxy_set_header X-Real-IP $remote_addr;\r\n    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n    proxy_set_header X-Forwarded-Proto $scheme;\r\n    proxy_set_header Host $http_host;\r\n    proxy_set_header X-NginX-Proxy true;\r\n    proxy_pass http:\/\/127.0.0.1:4567;\r\n    proxy_redirect off;\r\n    # Socket.IO Support\r\n    proxy_http_version 1.1;\r\n    proxy_set_header Upgrade $http_upgrade;\r\n    proxy_set_header Connection \"upgrade\"; \r\n  }\r\n\r\n}<\/code><\/pre>\n<p>Check the Nginx configuration:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo nginx -t<\/code><\/pre>\n<p>Finally, for\u00a0changes to take effect, we need to reload Nginx:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo systemctl reload nginx.service<\/code><\/pre>\n<h2 id=\"step-install-and-setup-nodebb\">Step 5: Install and setup NodeBB<\/h2>\n<p>Create a document root directory where\u00a0NodeBB should reside in:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo mkdir -p \/var\/www\/nodebb<\/code><\/pre>\n<p>Navigate to the document root directory:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">cd \/var\/www\/nodebb<\/code><\/pre>\n<p>Change ownership of the\u00a0<code>\/var\/www\/nodebb<\/code>\u00a0directory to\u00a0your_user.<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo chown -R [your_user]:[your_user] \/var\/www\/nodebb<\/code><\/pre>\n<p><strong>NOTE:\u00a0<\/strong><em>Replace your_user in the above command with your non-root user that you should have created as a prerequisite for this tutorial<\/em><em>.<\/em><\/p>\n<p>Clone the latest NodeBB\u00a0repository\u00a0into document root folder:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">git clone -b v1.11.x https:\/\/github.com\/NodeBB\/NodeBB.git .<\/code><\/pre>\n<p>Initiate the setup script by running the app with the\u00a0<code>setup<\/code>\u00a0flag. Answer each of the questions:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">.\/nodebb setup<\/code><\/pre>\n<p>After NodeBB setup is completed, run\u00a0<code>.\/nodebb start<\/code>\u00a0to manually start your NodeBB server:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">.\/nodebb start<\/code><\/pre>\n<p>After running this command, you should be able to access your brand new forum in your web browser:<\/p>\n<p><a id=\"img-Screen_Shot_2018-09-21_at_5.27_.16_AM_\" class=\"fancybox\" href=\"https:\/\/www.howtoforge.com\/images\/how_to_install_nodebb_forum_on_centos_7\/big\/Screen_Shot_2018-09-21_at_5.27_.16_AM_.png\"><\/a><a id=\"img-Screen_Shot_2018-09-21_at_5.27_.16_AM_\" class=\"fancybox\" href=\"https:\/\/www.howtoforge.com\/images\/how_to_install_nodebb_forum_on_centos_7\/big\/Screen_Shot_2018-09-21_at_5.27_.16_AM_.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.howtoforge.com\/images\/how_to_install_nodebb_forum_on_centos_7\/Screen_Shot_2018-09-21_at_5.27_.16_AM_.png\" alt=\"NodeBB in Browser\" width=\"550\" height=\"316\" \/><\/a><\/p>\n<h2 id=\"step-run-nodebb-as-a-system-service\">Step 6: Run NodeBB as a System Service<\/h2>\n<p>When started via\u00a0<code>.\/nodebb start<\/code>, NodeBB will not automatically start up again when the system reboots. To avoid that, we will need to setup NodeBB as a system service.<\/p>\n<p>If running, stop NodeBB:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">.\/nodebb stop<\/code><\/pre>\n<p>Create a new\u00a0<code>nodebb<\/code>\u00a0user:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo useradd nodebb<\/code><\/pre>\n<p>Change the ownership of the\u00a0<code>\/var\/www\/nodebb<\/code>\u00a0directory to\u00a0<code>nodebb<\/code>\u00a0user:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo chown -R nodebb:nodebb \/var\/www\/nodebb<\/code><\/pre>\n<p>Create\u00a0<code>nodebb.service<\/code>\u00a0systemd unit config file. This unit file will handle startup of NodeBB deamon. Run\u00a0<code>sudo vim \/etc\/systemd\/system\/nodebb.service<\/code>\u00a0and\u00a0add the below content:<\/p>\n<pre><code>[Unit]\r\nDescription=NodeBB\r\nDocumentation=https:\/\/docs.nodebb.org\r\nAfter=system.slice multi-user.target mongod.service\r\n\r\n[Service]\r\nType=forking\r\nUser=nodebb\r\n\r\nStandardOutput=syslog\r\nStandardError=syslog\r\nSyslogIdentifier=nodebb\r\n\r\nEnvironment=NODE_ENV=production\r\nWorkingDirectory=\/var\/www\/nodebb\r\nPIDFile=\/var\/www\/nodebb\/pidfile\r\nExecStart=\/usr\/bin\/env node loader.js\r\nRestart=always\r\n\r\n[Install]\r\nWantedBy=multi-user.target\r\n<\/code><\/pre>\n<p><strong>NOTE:<\/strong>\u00a0<em>Set username and directory paths according to your chosen names.<\/em><\/p>\n<p>Enable\u00a0<code>nodebb.service<\/code>\u00a0on reboot and immediately start\u00a0<code>nodebb.service:<\/code><\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo systemctl enable nodebb.service\r\nsudo systemctl start nodebb.service<\/code><\/pre>\n<p>Check the\u00a0<code>nodebb.service<\/code>\u00a0status:<\/p>\n<pre class=\"command\"><code spellcheck=\"false\">sudo systemctl status nodebb.service\r\nsudo systemctl is-enabled nodebb.service<\/code><\/pre>\n<p>Congratulations! You have successfully installed and deployed\u00a0NodeBB\u00a0discussion platform on Fedora 29 system.\u00a0You should be able to access your forum on your domain\u00a0and interact with your forum.<\/p>\n<h2 id=\"step-complete-the-cachet-setup\">Links<\/h2>\n<ul>\n<li><a href=\"https:\/\/nodebb.org\/\">https:\/\/nodebb.org\/<\/a><\/li>\n<li><a href=\"https:\/\/docs.nodebb.org\/\">https:\/\/docs.nodebb.org\/<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/NodeBB\/NodeBB\">https:\/\/github.com\/NodeBB\/NodeBB<\/a><\/li>\n<\/ul>\n<p><a href=\"http:\/\/www.linuxtoday.com\/high_performance\/how-to-install-nodebb-forum-on-fedora-29-190207101521.html\" target=\"_blank\" rel=\"noopener\">Source<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>NodeBB is a\u00a0Node.js based forum software built for the modern web.\u00a0It&#8217;s\u00a0built on either a\u00a0MongoDB or\u00a0Redis database.\u00a0It utilizes web sockets for instant interactions and real-time notifications. NodeBB has many modern features out of the box such as social network integration and streaming discussions.\u00a0Additional functionality is enabled through the use of third-party plugins.\u00a0NodeBB is an open source &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.appservgrid.com\/paw92\/index.php\/2019\/02\/09\/linux-today-how-to-install-nodebb-forum-on-fedora-29\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Linux Today &#8211; How to Install NodeBB Forum on Fedora 29&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-9343","post","type-post","status-publish","format-standard","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/posts\/9343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/comments?post=9343"}],"version-history":[{"count":2,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/posts\/9343\/revisions"}],"predecessor-version":[{"id":9390,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/posts\/9343\/revisions\/9390"}],"wp:attachment":[{"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/media?parent=9343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/categories?post=9343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appservgrid.com\/paw92\/index.php\/wp-json\/wp\/v2\/tags?post=9343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}