# Intro

Deal Module (dm) - the Bitdeals daemon that provides a special interfaces for creating and modifying user accounts and deals.

# Running DM docker container

On first run the initialization script will create, if empty, a new bitcoin and PGP keys and start the daemon.

`docker run -i -t --rm --mount src=bitdeals-conf,dest=/etc/dm -p 127.0.0.1:4999:4999 -p 127.0.0.1:80:80 bitdeals/apostol-dm`

Daemon settings which may specified by an environment variables are saved to the daemon config files on the Docker Volume.

To use the BitDeals API you should register an user account on a BitDeals site and get a "client_id", "client_secret" at the account dashboard.

# Usage

Here are some example snippets to help you get started creating a container.

## docker-compose

```yaml
version: "3"
services:
  bitdeals-module:
    image: bitdeals/apostol-dm
    environment:
      - DM_TESTNET=0
      - DM_BITCOIN=<address>
      - DM_FEE=<0.1%>
      - DM_PGP_PASSWORD=<password>
      - DM_WEBAUTH=0
      - DM_LC_ALL=en_US.UTF-8
      - |
        DM_PGP_SEC=
        -----BEGIN PGP PRIVATE KEY BLOCK-----
	<key>
        -----END PGP PRIVATE KEY BLOCK-----

    volumes:
      - dm:/etc/dm
    ports:
      - 4999:4999
      - 80:80
```

## docker cli

```sh
docker run -d \
  -e DM_TESTNET=0 \
  -e DM_BITCOIN=<address> \
  -e DM_FEE=0.1% \
  -e DM_PGP_SEC="$(gpg2 --armor --export-secret-key Account_URL)" \
  -e DM_PGP_PASSWORD=<pgp key password> \
  -e DM_WEBAUTH=0 \
  -e DM_LC_ALL=en_US.UTF-8 \
  -p 127.0.0.1:4999:4999 \
  -p 127.0.0.1:80:80 \
  -v ./dm/:/etc/dm \
  bitdeals/apostol-dm
```

# Parameters

Container images are configured using parameters passed at runtime.

|Parameter|Function|
|:--------|:-------|
|-p 80|WebUI port TCP|
|-p 4999|Module API port TCP [(API documentation)](https://bitbucket.org/bitdeals/apostol-dm)|
|-e DM_TESTNET=|Enable bitcoin testnet mode. Default: `0`|
|-e DM_BITCOIN=|User account bitcoin address. Will be created if empty.|
|-e DM_FEE=|User fee for created deals. You MUST indicate the sign “%” for a percentage of the deal amount or FIXED value in satoshi. Default: `0.1%`|
|-e DM_PGP_SEC=|Variable with ASCII armored PGP user secret key. Will be created if empty (with Account_URL in the key details).|
|-e DM_PGP_PASSWORD=|User PGP key password.|
|-e DM_WEBAUTH=|Enable web user interface authentication.|
|-e DM_LC_ALL=|Set Deal Module locale.|
|-e DM_ACCOUNT_URL=|Set Account_URL for a new account non-interactive registration. Format: http[s]://<host>[:<port>]|

