Manual Installation

For Linux environments it’s recommended you run the install script. If you like to do things manually, read on…


  • Node.js version v14.x LTS or higher. Versions under v14 are known not to work due to language level changes.
    • :bulb: It is highly recommended to use Node Version Manager (NVM) to manage your Node.js installation if you’re on a Linux/Unix environment.
  • Python for compiling Node.js packages with native extensions via node-gyp.

  • A compiler such as Clang or GCC for Linux/UNIX systems or a recent copy of Visual Studio (Visual Studio Express editions are OK) for Windows users. Note that you should only need the Visual C++ component.

  • Git to check out the ENiGMA source code.


With NVM

Node Version Manager (NVM) is an excellent way to install and manage Node.js versions on most UNIX-like environments. Get the latest version here. The nvm install may look something like this:

curl -o- | bash

:information_source: Do not cut+paste the above command! Visit the NVM page and run the latest version!

Next, install Node.js with NVM:

nvm install 14
nvm use 14
nvm alias default 14

If the above steps completed without errors, you should now have nvm, node, and npm installed and in your environment.

For Windows nvm-like systems exist (nvm-windows, …) or just download the installer.


git clone

Install Node Packages

cd enigma-bbs
npm install # yarn also works

ENiGMA BBS makes use of a few packages for archive and legacy protocol support. They’re not pre-requisites for running ENiGMA, but without them you’ll miss certain functionality. Once installed, they should be made available on your systems PATH.

:information_source: Please see External Binaries for information on setting these up.

:information_source: Additional information in Archivers and File Transfer Protocols

Config Files

You’ll need a basic configuration to get started. The main system configuration is handled via config/config.hjson. This is an HJSON file (compliant JSON is also OK). See Configuration for more information.

Use oputil.js to generate your initial configuration:

./oputil.js config new

Follow the prompts!