# Install

## Preliminaries for Ubuntu 16.04

Installation for other distros may be slightly different. This assumes NodeJS 22 or higher is already installed. All of this is done in the lamassu-server directory.

### Packages

```
sudo apt-get update
sudo apt-get install postgresql postgresql-contrib postgresql-server-dev-9.5 libpq-dev git
```

### Set up PostgreSQL

```
sudo -u postgres createdb lamassu
sudo -u postgres psql postgres
```

In ``psql``, run the following and set password to ``postgres123``:

```
\password postgres
ctrl-d
```

## Installation

### Install node modules

Make sure you're running NodeJS 22 or higher. Ignore any warnings.

```
npm install
```

### Generate certificates

```
bash packages/server/tools/cert-gen.sh
```

Notes: 
  - This will create a ``.lamassu`` directory in your home directory.
  
### Set up database

Important: lamassu-migrate currently gripes about a QueryResultError. Ignore this, it works anyway.

```
node packages/server/bin/lamassu-migrate
```

### Run new-lamassu-admin

```
cd packages/admin-ui/
npm run start
```

### Run lamassu-admin-server

In a second terminal window:

```
node packages/server/bin/lamassu-admin-server --dev
```

### Register admin user

In a third terminal window:

```
node packages/server/bin/lamassu-register admin@example.com superuser
```

You'll use this generated URL in the brower in a moment.

### Complete configuration

Paste the URL from lamassu-register exactly as output, into a browser (chrome or firefox).

**Important**: the host must be localhost. Tell your browser to trust the certificate even though it's not signed by a recognized CA. If you get an "expired" error, try opening https://localhost:8070/graphql in another tab and trust the certificate.

Go to all the required, unconfigured red fields and choose some values. Choose mock services whenever available.

### Run lamassu-server

```
node packages/server/bin/lamassu-server --mockScoring
```

### Add a lamassu-machine

Click on ``+ Add Machine`` in the sidebar. Type in a name for your machine and click **Pair**. Open up development tools to show the JavaScript console and copy the totem. You will use this to run lamassu-machine. This pairing totem expires after an hour.

Now continue with lamassu-machine instructions from the ``INSTALL.md`` file in [lamassu-machine repository](https://github.com/lamassu/lamassu-machine).

### Run a local coin node (BTC supported)

Run `node packages/server/bin/lamassu-coins` in the project root and select `Bitcoin`. This process will require the existence of certain environment variables that the setup will warn about.

Once that is done, the node needs to be run in a terminal with the following command `<YOUR_BLOCKCHAIN_DIR_ENV_VAR>/bin/bitcoind -datadir=<YOUR_BLOCKCHAIN_DIR_ENV_VAR>/bitcoin`


## Subsequent runs

To start the Lamassu server run:

```
node packages/server/bin/lamassu-server --mockScoring
```

To start the Lamassu Admin run:

```
node packages/server/bin/lamassu-admin-server --dev
```

and

```
cd packages/admin-ui/
npm run start
```
