Deployment on Ubuntu

This document assumes /home/ubuntu is the server user home directory, make sure to change it to fit the directory of your choice.

Prerequisites:

  • Install Git to clone the zen-oracle repository

  • Install mono-devel. If you choose to install via a package manager, add Mono's own repository first.

  • Install the Headless Node and import a funded account

  • Cron (Optional)

  • Install MongoDB

Oracle Service File

Save it in path: /etc/systemd/system/zen-oracle.service

[Unit]
Description=Oracle
After=network.target
[Service]
Type=simple
EnvironmentFile=/home/ubuntu/services/scripts/env
WorkingDirectory=/home/ubuntu/services/zen-oracle/src/Oracle/bin/Release
ExecStart=/usr/bin/mono /home/ubuntu/services/zen-oracle/src/Oracle/bin/Release/zen-oracle.exe s
Restart=on-failure
[Install]
WantedBy=multi-user.target

Oracle Service

  1. Get the oracle service (from GitLab)

    mkdir /home/ubuntu/services
    cd /home/ubuntu/services
    git clone https://gitlab.com/zenprotocol/zen-oracle.git
  2. Build the oracle service

    cd /home/ubuntu/services/zen-oracle
    ./paket restore
    msbuild src/zen-oracle.sln /p:Configuration=Release
  3. Create /etc/systemd/system/zen-oracle.service service file as mentioned above

  4. Put all the environment variables assignments in the file /home/ubuntu/services/scripts/env

  5. Follow node deployment instructions and be sure to have the zen-node service enabled

  6. Enable Zen-Oracle

    sudo systemctl enable zen-oracle
  7. Start MongoDB

    sudo systemctl start mongodb
  8. Start Zen-Oracle Server

    sudo systemctl start zen-oracle

Execution Scripts

  1. Make sure all the environment variables are provided and correct

    • zen_path : path of the oracle committer

    • zen_wallet_password: password of the F# wallet

    • zen_node_uri: uri of the node

    • oracle_api: uri:port api port for oracle requests

Cron job

  • In order to commit at a precise time we suggest to use a script in a cron job to take care of the commitment.