NPM setup



Supported Platforms
  • Ubuntu 18.04 (LTS) x86_64

  • Ubuntu 20.04 (LTS) x86_64

  • MacOS x86_64

  • 16.15.0

Create a new user

To run and manage a Lisk Core node in the future, please create a separate lisk user as described below:

  • Ubuntu

  • MacOS

The lisk user itself does not need any sudo rights to run the Lisk Core.

sudo adduser lisk (1)
1 Create a new user.

It is not necessarily required to set up a lisk user, especially when you are running a local instance for development purposes.

However, if it is required then it is recommended to create the user using the MacOS GUI.

Toolchain components

These are used for compiling dependencies.

  • Ubuntu

  • MacOS

sudo apt update
sudo apt install -y libtool automake autoconf curl build-essential python2-minimal

Ensure that both XCode and Homebrew are installed.

brew install autoconf automake libtool python2

Node.js & NPM

Node.js serves as the underlying engine for code execution.

  • Option A - Node version manager

  • Option B - Node.js package

It is recommended to use a Node version manager such as NVM. NVM is a bash script that enables the management of multiple active Node.js versions.

  1. Install NVM and follow the official instructions here.

  2. Install the latest LTS version of Node.js using NVM with the following command shown below:

nvm install 16.15.0

If NVM or other package managers are not required, it is possible to install the Node package globally as shown in the following commands below:


curl -sL | sudo -E bash -
sudo apt-get install -y nodejs


For MacOS, please execute the following command below:

brew install node@16.15.0

In case you experience any permission issues, please follow the instructions below to adjust the location of the global NPM packages:

  1. On the command line, in your home directory, create a directory for global installations:

    mkdir ~/.npm-global
  2. Configure npm to use the new directory path:

    npm config set prefix '~/.npm-global'
  3. In your preferred text editor, open or create a ~/.profile file and add the following line:

    export PATH=~/.npm-global/bin:$PATH
  4. On the command line, update your system variables:

    source ~/.profile


Install Lisk Core with NPM:

npm install --global lisk-core


Lisk Core will be installed under the installation path of NPM.

To check the location where Lisk Core was installed, execute the following:

npm list --global --depth=0


After successful installation, start the node with the following command:

  • Mainnet

  • Testnet

lisk-core start --network mainnet

The default log levels for Mainnet are:

"logger": {
    "fileLogLevel": "error",
    "consoleLogLevel": "none"

So if you start the node, it won’t show any logs in the console. This is the recommended setting for reducing the number of logs for a running node. However, to verify that the node started correctly, update the log levels in the config to info or lower.

Alternatively, start the node with the following flag:

lisk-core start --network mainnet --console-log=info

See the Managing logs guide for more information about logging.

lisk-core start --network testnet

Post-installation (optional)

Use pm2 to run Lisk Core in the background

It is recommended to use a process manager such as PM2 to run Lisk Core in the background.

Check the guide Process management with pm2 for more information.

Enable IPC in the config

To make use of all the Lisk Core commands Command line interface, enable IPC in the config.

Example: Enable IPC via config.json
"rpc": {
    // enabled creates IPC or WS socket if true
    "enable": true,
    // enabled communication through 'ipc' or 'ws'
    "mode": "ipc",
    // In case of `mode` is set to `ws`, this port used
    "port": 8080,
    // Change to to connect from a remote server
    "host": ""

Alternatively, start Lisk Core with the flag --api-ipc to enable ipc:

Example: Enable IPC via flag
lisk-core start --api-ipc

Log rotation

It is recommended to set up a log rotation, as the log of the Lisk Core files can grow very large over time.

Check the guide Managing logs in the SDK docs for more information.