I tried to setup nodebb locally but encounter these issues:

'''
info sharp Detected globally-installed libvips v8.7.4
info sharp Building from source via node-gyp
make: Entering directory '/home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/node_modules/sharp/build'
TOUCH Release/obj.target/libvips-cpp.stamp
CXX(target) Release/obj.target/sharp/src/common.o
In file included from ../src/common.cc:27:
../src/common.h:78:20: error: ‘Handle’ is not a member of ‘v8’
78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr);
| ^~~~~~
../src/common.h:78:37: error: expected primary-expression before ‘>’ token
78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr);
| ^
../src/common.h:78:39: error: ‘obj’ was not declared in this scope
78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr);
| ^~~
../src/common.h:78:56: error: expected primary-expression before ‘attr’
78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr);
| ^~~~
../src/common.h:78:60: error: expression list treated as compound expression in initializer [-fpermissive]
78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr);
| ^
../src/common.h:79:29: error: ‘Handle’ is not a member of ‘v8’
79 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr);
| ^~~~~~
../src/common.h:79:46: error: expected primary-expression before ‘>’ token
79 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr);
| ^
../src/common.h:79:48: error: ‘obj’ was not declared in this scope
79 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr);
| ^~~
../src/common.h:79:65: error: expected primary-expression before ‘attr’
79 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr);
| ^~~~
../src/common.h:80:38: error: ‘Handle’ is not a member of ‘v8’
80 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr);
| ^~~~~~
../src/common.h:80:55: error: expected primary-expression before ‘>’ token
80 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr);
| ^
../src/common.h:80:57: error: ‘obj’ was not declared in this scope
80 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr);
| ^~~
../src/common.h:80:74: error: expected primary-expression before ‘attr’
80 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr);
| ^~~~
../src/common.h:81:48: error: ‘Handle’ is not a member of ‘v8’
81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) {
| ^~~~~~
../src/common.h:81:65: error: expected primary-expression before ‘>’ token
81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) {
| ^
../src/common.h:81:67: error: ‘obj’ was not declared in this scope
81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) {
| ^~~
../src/common.h:81:84: error: expected primary-expression before ‘attr’
81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) {
| ^~~~
../src/common.h:81:37: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’
81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) {
| ^~~~~~
../src/common.h:81:89: error: expected ‘;’ before ‘{’ token
81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) {
| ^~
| ;
../src/common.h:84:37: error: ‘Handle’ is not a member of ‘v8’
84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) {
| ^~~~~~
../src/common.h:84:54: error: expected primary-expression before ‘>’ token
84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) {
| ^
../src/common.h:84:56: error: ‘obj’ was not declared in this scope
84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) {
| ^~~
../src/common.h:84:73: error: expected primary-expression before ‘attr’
84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) {
| ^~~~
../src/common.h:84:26: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’
84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) {
| ^~~~~~
../src/common.h:84:78: error: expected ‘;’ before ‘{’ token
84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) {
| ^~
| ;
../src/common.h:87:37: error: ‘Handle’ is not a member of ‘v8’
87 | template<typename T> T AttrTo(v8::Handlev8::Object obj, int attr) {
| ^~~~~~
../src/common.h:87:54: error: expected primary-expression before ‘>’ token
87 | template<typename T> T AttrTo(v8::Handlev8::Object obj, int attr) {
| ^
../src/common.h:87:56: error: ‘obj’ was not declared in this scope
87 | template<typename T> T AttrTo(v8::Handlev8::Object obj, int attr) {
| ^~~
../src/common.h:87:61: error: expected primary-expression before ‘int’
87 | template<typename T> T AttrTo(v8::Handlev8::Object obj, int attr) {
| ^~~
../src/common.h:84:26: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’
84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) {
| ^~~~~~
../src/common.h:87:70: error: expected ‘;’ before ‘{’ token
87 | template<typename T> T AttrTo(v8::Handlev8::Object obj, int attr) {
| ^~
| ;
../src/common.h:93:9: error: ‘Handle’ is not a member of ‘v8’
93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist);
| ^~~~~~
../src/common.h:93:26: error: expected primary-expression before ‘>’ token
93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist);
| ^
../src/common.h:93:28: error: ‘input’ was not declared in this scope
93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist);
| ^~~~~
../src/common.h:93:70: error: expected primary-expression before ‘&’ token
93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist);
| ^
../src/common.h:93:71: error: ‘buffersToPersist’ was not declared in this scope
93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist);
| ^~~~~~~~~~~~~~~~
../src/common.h:93:87: error: expression list treated as compound expression in initializer [-fpermissive]
93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist);
| ^
../src/common.cc:34:8: error: redefinition of ‘bool sharp::HasAttr’
34 | bool HasAttr(v8::Handlev8::Object obj, std::string attr) {
| ^~~~~~~
In file included from ../src/common.cc:27:
../src/common.h:78:8: note: ‘bool sharp::HasAttr’ previously defined here
78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr);
| ^~~~~~~
../src/common.cc:34:20: error: ‘Handle’ is not a member of ‘v8’
34 | bool HasAttr(v8::Handlev8::Object obj, std::string attr) {
| ^~~~~~
../src/common.cc:34:37: error: expected primary-expression before ‘>’ token
34 | bool HasAttr(v8::Handlev8::Object obj, std::string attr) {
| ^
../src/common.cc:34:39: error: ‘obj’ was not declared in this scope
34 | bool HasAttr(v8::Handlev8::Object obj, std::string attr) {
| ^~~
../src/common.cc:34:56: error: expected primary-expression before ‘attr’
34 | bool HasAttr(v8::Handlev8::Object obj, std::string attr) {
| ^~~~
../src/common.cc:37:15: error: redefinition of ‘std::string sharp::AttrAsStr’
37 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr) {
| ^~~~~~~~~
In file included from ../src/common.cc:27:
../src/common.h:79:15: note: ‘std::string sharp::AttrAsStr’ previously declared here
79 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr);
| ^~~~~~~~~
../src/common.cc:37:29: error: ‘Handle’ is not a member of ‘v8’
37 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr) {
| ^~~~~~
../src/common.cc:37:46: error: expected primary-expression before ‘>’ token
37 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr) {
| ^
../src/common.cc:37:48: error: ‘obj’ was not declared in this scope
37 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr) {
| ^~~
../src/common.cc:37:65: error: expected primary-expression before ‘attr’
37 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr) {
| ^~~~
../src/common.cc:40:23: error: redefinition of ‘std::vector<double> sharp::AttrAsRgba’
40 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr) {
| ^~~~~~~~~~
In file included from ../src/common.cc:27:
../src/common.h:80:23: note: ‘std::vector<double> sharp::AttrAsRgba’ previously declared here
80 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr);
| ^~~~~~~~~~
../src/common.cc:40:38: error: ‘Handle’ is not a member of ‘v8’
40 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr) {
| ^~~~~~
../src/common.cc:40:55: error: expected primary-expression before ‘>’ token
40 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr) {
| ^
../src/common.cc:40:57: error: ‘obj’ was not declared in this scope
40 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr) {
| ^~~
../src/common.cc:40:74: error: expected primary-expression before ‘attr’
40 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr) {
| ^~~~
../src/common.cc:50:20: error: redefinition of ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’
50 | InputDescriptor* CreateInputDescriptor(
| ^~~~~~~~~~~~~~~~~~~~~
In file included from ../src/common.cc:27:
../src/common.h:92:20: note: ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’ previously defined here
92 | InputDescriptor* CreateInputDescriptor(
| ^~~~~~~~~~~~~~~~~~~~~
../src/common.cc:51:9: error: ‘Handle’ is not a member of ‘v8’
51 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist
| ^~~~~~
../src/common.cc:51:26: error: expected primary-expression before ‘>’ token
51 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist
| ^
../src/common.cc:51:28: error: ‘input’ was not declared in this scope
51 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist
| ^~~~~
../src/common.cc:51:70: error: expected primary-expression before ‘&’ token
51 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist
| ^
../src/common.cc:51:71: error: ‘buffersToPersist’ was not declared in this scope
51 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist
| ^~~~~~~~~~~~~~~~
make: *** [sharp.target.mk:184: Release/obj.target/sharp/src/common.o] Error 1
make: Leaving directory '/home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/node_modules/sharp/build'
gyp ERR! build error
gyp ERR! stack Error: make failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
gyp ERR! stack at ChildProcess.emit (events.js:321:20)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
gyp ERR! System Linux 5.3.0-29-generic
gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/node_modules/sharp
gyp ERR! node -v v13.7.0
gyp ERR! node-gyp -v v5.0.5
gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] install: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! /home/jordanly/.npm/_logs/2020-02-05T08_20_16_954Z-debug.log
Error installing dependencies!
message: Command failed: npm install --production
stdout: null
stderr: null
/home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/src/cli/package-install.js:54
throw e;
^

Error: Command failed: npm install --production
at checkExecSyncError (child_process.js:611:11)
at Object.execSync (child_process.js:647:15)
at Object.installAll (/home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/src/cli/package-install.js:45:9)
at Object.<anonymous> (/home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/src/cli/index.js:60:18)
at Module._compile (internal/modules/cjs/loader.js:1151:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10)
at Module.load (internal/modules/cjs/loader.js:1000:32)
at Function.Module._load (internal/modules/cjs/loader.js:899:14)
at Module.require (internal/modules/cjs/loader.js:1040:19)
at require (internal/modules/cjs/helpers.js:72:18) {
status: 1,
signal: null,
output: [ null, null, null ],
pid: 7526,
stdout: null,
stderr: null
}
'''
Then after installation, I try to start it, here's the command line result

./nodebb start

Starting NodeBB
"./nodebb stop" to stop the NodeBB server
"./nodebb log" to view server output
"./nodebb help" for more commands

Lastly, I have tried to find where the forum is running (port 4567, forum.examle.com, etc.) but no luck. Please help me, I followed the installation guide here https://docs.nodebb.org/installing/os/ubuntu/#installing-mongodb