Skip to main content

Errors during Local Installation

API cannot connect to chain#

If there is an error upon starting the API with the message "readiness: MultiChain connection failed", it's most likely because the blockchain was not started properly.

If you see the following error message:

[2018-10-03T12:13:23.950Z] INFO (TruBudget/16981 on servername): Connecting to MultiChain node    protocol: "http"    host: "127.0.0.1"    port: 8000    username: "multichainrpc"    password: "password"Register fastify endpointschema id ignored er58c69eg298c87e3899119e025eff1fschema id ignored fe9c2b24ade9a92360b3a898665678ac[2018-10-03T12:13:24.318Z] INFO (TruBudget/16981 servername): server is listening on 8080[2018-10-03T12:13:24.585Z] WARN (TruBudget/16981 servername):  "readiness: MultiChain connection failed"[2018-10-03T12:13:24.586Z] ERROR (TruBudget/16981 servername): MultiChain connection/permissions not ready yet

then locate the running instances of the blockchain

ps aux | grep multichain

which will produce an output similar to this:

root     17272  0.1  0.7 1042828 59520 ?       SLl  12:17   0:11 multichaind -txindex TrubudgetChain   -port=7447 -autosubscribe=streams

Then shutdown the process with the kill command with the first number after "root" (in this case 17272):

kill 17272

After this, start the blockchain again using the steps described in the guide (including the exports of the variables!).

Cannot start nginx#

If you get the following error

nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)nginx: [emerg] still could not bind()

it means that there is already an instance of nginx running and using the port 80. To stop the other process (if it's not needed), list the nginx processes

ps aux | grep nginx

which will produce an output similar to this one:

root     23979  0.0  0.1 116656  8660 pts/1    S    14:04   0:00 nginx: main process nginx -g daemon off;www-data 23981  0.0  0.0 116984  2980 pts/1    S    14:04   0:00 nginx: worker processwww-data 23982  0.0  0.0 116984  3020 pts/1    S    14:04   0:00 nginx: worker process

Only the root process needs to be shut down. This is done via

nginx -s stop

Standard Welcome Page of nginx showing#

If you enter the IP address of your machine and you are presented with the standard welcome screen of nginx instead of the Trubudget app, you need to modifiy the /etc/nginx/nginx.conf to disable the configuration of "sites-enabled".

First, login as root and open the nginx.conf file with your editor of choice:

sudo sunano /etc/nginx/nginx.conf

Then locate the line include /etc/nginx/sites-enabled/* and disable it by putting a pound sybol at the beginning of the line:

#include /etc/nginx/sites-enabled/*;include /etc/nginx/conf.d/*.conf;

Node JS Permission Issue#

If you receive an error running npm install, that looks like the following:

726 verbose stack Error: sodium-native@2.1.6 install: `node-gyp-build "node preinstall.js" "node postinstall.js"`726 verbose stack spawn ENOENT726 verbose stack     at ChildProcess.<anonymous> (/usr/lib/node_modules/npm/node_modules/npm-lifecycle/lib/spawn.js:48:18)726 verbose stack     at ChildProcess.emit (events.js:180:13)726 verbose stack     at maybeClose (internal/child_process.js:936:16)726 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:220:5)727 verbose pkgid sodium-native@2.1.6728 verbose cwd /root/trubudget/api729 verbose Linux 4.15.0-1025-azure730 verbose argv "/usr/bin/node" "/usr/bin/npm" "install"731 verbose node v9.11.2732 verbose npm  v5.6.0733 error file sh734 error code ELIFECYCLE735 error errno ENOENT736 error syscall spawn737 error sodium-native@2.1.6 install: `node-gyp-build "node preinstall.js" "node postinstall.js"`737 error spawn ENOENT738 error Failed at the sodium-native@2.1.6 install script.738 error This is probably not a problem with npm. There is likely additional logging output above.739 verbose exit [ 1, true ]

Check the global node_modules (usr/lib/node_modules/) permissions.

Unable to lock the administration direcectory#

If you see the following error message

E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

you need to delete the lock files (as root):

rm /var/lib/apt/lists/lockrm /var/cache/apt/archives/lockrm /var/lib/dpkg/lock