Problem while trying to install plugin via admin panel ( missing permissions )

Technical Support
  • Hi,

    when I try to install plugin via admin panel I have the following error:

    Command failed: npm install [email protected] --save npm ERR! code EACCES npm ERR! syscall mkdir npm ERR! path /home/nodebb npm ERR! errno -13 npm ERR! Error: EACCES: permission denied, mkdir '/home/nodebb' npm ERR! { [Error: EACCES: permission denied, mkdir '/home/nodebb'] npm ERR! cause: npm ERR! { Error: EACCES: permission denied, mkdir '/home/nodebb' npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'mkdir', npm ERR! path: '/home/nodebb' }, npm ERR! isOperational: true, npm ERR! stack: 'Error: EACCES: permission denied, mkdir \'/home/nodebb\'', npm ERR! errno: -13, npm ERR! code: 'EACCES', npm ERR! syscall: 'mkdir', npm ERR! path: '/home/nodebb' } npm ERR! npm ERR! The operation was rejected by your operating system. npm ERR! It is likely you do not have the permissions to access this file as the current user npm ERR! npm ERR! If you believe this might be a permissions issue, please double-check the npm ERR! permissions of the file and its containing directories, or try running npm ERR! the command again as root/Administrator.

    I am using ubuntu server and I was using those steps:

    to install nodeBB.

    Can someone help me with this ? Thanks !

  • omg nevermind,
    I was missing nodebb directory in home
    so just mkdir nodebb in home and sudo chown nodebb:nodebb nodebb/ does the job

Suggested Topics

  • 0 Votes
    1 Posts

    I am using Heroku to host a nodeBB instance. When using the heroku supplied subdomain (and setting it in the config.json), everything works fine. I can log in as admin account, use admin GUI, and everything works well.

    When I set up custom domain (.me tld if that matters), configure it in Heroku, config.json, and DNS, I can get to the site, log in, but when I try to go to the admin area, it asks me to sign in. Once I sign in, it brings me back to the homepage (not admin GUI).

    I am using cloudflare for DNS and have tried with no plugins, vanilla install. I am using redis. I have tried both proxying through cloudflare "orange cloud" and not proxying "grey cloud" record.

    Any ideas?

  • 0 Votes
    1 Posts

    I've recently been trying to setup NodeBB on my server, but whenever i try to login or register the POST request returns a 403 forbidden response and NodeBB logs an "invalid csrf token" error.

    The following software packages are used:

    NodeBB 1.10.1 MongoDB 3.2.11 Node.js 8.11.4 Debian 9.3

    NodeBB itself is a subfolder installation in The node server is multi-tenant and works with express.js as a router/reverse proxy. All external http requests are redirected to https, but requests to the nodeBB server are proxied internally over http. Essentially this is the flow for an incoming forum request:

    main server app -> enforce https, direct request to directory host/domain app -> Check url, if /forum, proxy to port 4567 over http (or wss if websocket) let nodeBB do its thing.

    I've been googling and have found quite a few threads, but none of the suggested solutions have worked. things i have tried so far:

    Check url in config.json: '' Make sure cookieDomain is '' in MongoDB Including header 'X-Forwarded-Proto: https' Including header 'X-Forwarded-SSL: on' Including header 'X-Url-Scheme: https'
    I've also found that in the GET request for the login form, no X-CSRF-Token header is received. The form itself however is populated with a token.

    Lastly, here are the relevant code snippets:

    main server app

    #!/usr/bin/env nodejs // filename: app.js const http = require('http'); const https = require('https'); const fs = require('fs'); const express = require('express'); const vhost = require('vhost'); const app = express(); const sslOptions = { cert: fs.readFileSync('./.sslcert/fullchain.pem'), key: fs.readFileSync('./.sslcert/privkey.pem') } http.createServer(function(req, res) { res.writeHead(301, { "Location": "https://" + req.headers['host'] + req.url }); res.end(); }).listen(80); app .use(require('helmet')()) .use(express.static(__dirname + '/static')) <redacted, other domains> .use(vhost('', require('./apps/EndlessEndeavors').app)) app.get('/', function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(''); });

    domain app

    const express = require('express') const app = express(); const http = require('http'); const httpProxy = require('http-proxy'); const proxy = httpProxy.createProxyServer(); app.use('/static',express.static(__dirname + '/static')); app.use('', express.static(__dirname + '/dist/EndlessEndeavors')); app.all('/forum[/]+*', function(req, res){ if(req.url.substr(0,18).indexOf('')>-1){ console.log('got socket request'); proxy.web(req, res, {target: 'wss://', ws: true}); } else { res.header('X-Forwarded-Proto','https'); res.header('X-Forwarded-Ssl','on'); res.header('X-Url-Scheme','https'); res.header('Access-Control-Allow-Origin',''); proxy.web(req, res, {target: ''}); } }); app.all('/forum$', function(req, res) { res.writeHead(301, { "Location": "https://" + req.headers['host'] + '/forum/' }); res.end(); } ) = app;

    nodeBB config.json

    { "url": "", "secret": "<redacted>", "database": "mongo", "port": 4567, "mongo": { "host": "", "port": 27017, "username": "<redacted>", "password": "<redacted>", "database": "<redacted>", "uri": "<redacted>" } }

    Hopefully this is enough into to help find the cause of the invalid csrf token issue... i have no idea what else could be wrong at this point.

  • 0 Votes
    7 Posts

    @alfazaz said in Custom Pages Plugin after Upgrade:


    Works fine with version 1.10.1 🙂

  • 0 Votes
    5 Posts

    In 0.8.x, any plugin that appears in the ACP plugin list is compatible. Or if you're on GitHub, in the package.json will be something like:

    "nbbpm": { "compatibility": "^0.6.0 || ^0.7.0 || ^0.8.0" },

    note the ^0.8.0 part. If a plugin is missing this, it's deemed not compatible.

  • 0 Votes
    6 Posts

    Here's how I got NodeBB up and running on the Google Cloud Platform.
    The following are the steps I took:

    Created VPC firewall rule with 4567 port.

    Deployed Compute Engine VM Instance with Ubuntu Pro 20.04

    Install NodeBB via the Web Interface.

    Install Let's Encrypt Wildcard SSL on Nginx.

    The documentation for setting up NodeBB on Compute Engine can be found here.
    [Installing NodeBB on Compute Engine] (