[Set-Up Guide] Ark ACES Node | Del

  • Hi everyone!

    I noticed that some people were struggling to setup an ACES node, like myself. So I decided to make a simple guide on how to go about an do it. If you have questions at the end feel free to reach out to @ryano or myself at @0toierance I will try my best to help.

    Original Git

    Remember if you start getting errors, just go over the code again, and look into the git, redoing it helps alot

    Part 1:

    Locate a server on any VPS service provider:
    For my case I used vultr


    (Here I am choosing my OS for my server)


    (Here is the particular server I chose for the setup, and finally click ‘Deploy’)


    (After you deploy your server, click into it in your “Server” tab.)

    Afterwards, download Putty and open it and use the server IP address from your server details to login like so;


    (Input server address and click ‘Open’)


    (When you see this alert, simply click ‘Yes’ its just normal warning.)


    (And this window should pop up, here enter your login, which should be ‘root’ and then copy and paste your password.)

    Tip: to paste in Putty, make sure to right click your mouse.

    Part 2:

    Install system dependencies:

    sudo apt-get install software-properties-common python-software-properties build-essential curl git maven
    sudo add-apt-repository ppa:git-core/ppa
    sudo add-apt-repository -y ppa:ethereum/ethereum
    sudo add-apt-repository ppa:webupd8team/java -y
    sudo apt-get update

    sudo apt-get install ethereum solc

    Install Java JVM

    echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
    sudo apt-get install oracle-java8-installer

    Install nodejs

    curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    sudo apt-get install nodejs

    Install nginx

    sudo apt-get install nginx


    (When inputting go line by line starting with ‘sudo’ and you should go through something like this, remember to type ‘y’ to proceed forward.)

    Install Ethereum Service

    Copy the following into /etc/systemd/system/geth-network.service. There are 3 different ways to run geth to target different ethereum networks: dev, testnet, and mainnet.

    vim /etc/systemd/system/geth-network.service

    When in vim, press ‘a’ to enter insert mode. Then press ctrl+shift+V to paste the desired network chunk below. If you make a mistake, press ESC and type :1,$d to clear the page. Save the changes with ESC and type :x.

    You can choose any of the 3 networks, for my case I chose Mainnet

    Local Devnet:

    Description=Ethereum devnet

    ExecStart=/usr/bin/geth --dev --rpc --rpcaddr= --rpcapi ‘web3,eth,personal’ --rpccorsdomain="*" \
    Ropsten Testnet:

    Ropsten Testnet:

    Description=Ethereum testnet

    ExecStart=/usr/bin/geth --testnet --rpc --rpcaddr= --rpcapi ‘web3,eth,personal’ --rpccorsdomain="*" \
    –datadir=/eth-data --fast --cache=1024 \
    –bootnodes “enode://20c9ad97c081d63397d7b685a412227a40e23c8bdc6688c6f37e97cfbc22d2b4d1db1510d8f61e6a8866ad7f0e17c02b14182d37ea7c3c8b9c2683aeb6b733a1@,enode://6ce05930c72abc632c58e2e4324f7c7ea478cec0ed4fa2528982cf34483094e9cbc9216e7aa349691242576d552a2a56aaeae426c5303ded677ce455ba1acd9d@”



    Description=Ethereum network

    ExecStart=/usr/bin/geth --rpc --rpcaddr= --rpcapi ‘web3,eth,personal’ --rpccorsdomain="*" \
    –datadir=/eth-data --fast --cache=1024 \
    –bootnodes “enode://20c9ad97c081d63397d7b685a412227a40e23c8bdc6688c6f37e97cfbc22d2b4d1db1510d8f61e6a8866ad7f0e17c02b14182d37ea7c3c8b9c2683aeb6b733a1@,enode://6ce05930c72abc632c58e2e4324f7c7ea478cec0ed4fa2528982cf34483094e9cbc9216e7aa349691242576d552a2a56aaeae426c5303ded677ce455ba1acd9d@”



    (After you choose your ethereum network type the following)

    vim /etc/systemd/system/geth-network.service

    You can also ‘nano’ which is more user friendly than ‘vim’, in this case and all other cases when using, it will look like this:

    nano /etc/systemd/system/geth-network.service


    (An empty directory like this will open, where you’ll input the chosen Ethereum Network, again I chose Mainnet so mine looked like this)


    Start up ethereum service (this can take several hours to sync before transactions):

    sudo chmod 655 /etc/systemd/system/geth-network.service
    sudo systemctl daemon-reload
    sudo service geth-network start


    (After typing out those commands, you should end up with something like this)

    And it will look something like this:

    ETH Blockchain Syncing

    Part 3:

    Open a new console and login with the same credentials you used previously.

    To confirm that you are syncing type the following:

    sudo geth attach ipc:/eth-data/geth.ipc


    (And you should see something like this, remember to type ‘exit’ in order to leave that part)

    Create Service ETH Wallet

    Connect to the local geth instance and create a new ETH wallet for ACES service:

    geth attach ipc:/eth-data/geth.ipc

    Followed by:

    personal.newAccount(‘enter your passphrase here’);


    (At the end you should save the ETH address that it spit out along with the password you input, remember to ‘exit’)

    Next type the following:

    sudo mkdir /apps
    cd /apps
    git clone https://github.com/ark-aces/aces-backend.git


    (It will look something like this)

    Afterwards, type the following:

    mkdir /etc/aces-backend

    Copy src/main/resources/application.yml file over into /etc/aces-backend and replace wallet configurations with your own Ethereum and Ark addresses and passphrases/passwords. Ensure that the values remain quoted. If using mainnet, change arkPerEthAdjustment: “100.00” to arkPerEthAdjustment: “1”.

    Copy the following code into the console:

    vim /etc/aces-backend/application.yml


    Afterwards copy the following code into the new directory:

    url: "jdbc:h2:/tmp/testdb;DB_CLOSE_ON_EXIT=FALSE;AUTO_RECONNECT=TRUE"
    driver-class-name: "org.h2.Driver"
    ddl-auto: “update”

    name: “mainnet”

    ethServerUrl: "http://localhost:8545"
    scriptPath: "./bin"
    nodeCommand: “/usr/bin/node”

    address: "change me"
    passphrase: "change me"

    address: "change me"
    password: “change me”

    arkPerEthAdjustment: “100.00”

    arkFlatFee: "2.00"
    arkPercentFee: "2.25"
    requiredArkMultiplier: “1.2”

    arkFlatFee: "1.00"
    arkPercentFee: "1.25"
    requiredArkMultiplier: “1”



    See above image on how you should end up formatting the script

    Now we begin to set up the system backend:

    Input the following:

    vim /etc/systemd/system/aces-backend.service

    Again a new directory will open, in it

    copy and paste the following:

    Description=Aces Backend

    ExecStart=/usr/bin/mvn spring-boot:run -Dspring.config.location=file:/etc/aces-backend/application.yml



    (It will look something like this, remember to save and exit by typing ‘:wq’)

    Afterwards access the following directory:

    cd /apps/aces-backend/bin

    Then execute the following:

    npm install

    Next execute the following commands in order to start the ACES backend:

    sudo chmod 655 /etc/systemd/system/aces-backend.service
    sudo systemctl daemon-reload
    sudo service aces-backend start

    Installing ACES frontend

    cd /apps
    git clone https://github.com/ark-aces/aces-frontend.git


    Copy prod configuration template into custom configuration file:

    cd /apps/aces-frontend
    cp src/environments/environment.prod.ts src/environments/environment.custom.ts


    (Here is how it would look like)

    Input the following:

    vim /apps/aces-frontend/src/environments/environment.custom.ts

    If using an Ethereum Testnet, copy the following into /apps/aces-frontend/src/environments/environment.custom.ts, making sure to replace localhost with your server IP, if applicable.

    export const environment = {
    production: true,
    title: ‘Custom Ark Contract Execution Services (ACES)’,
    isEthTestnet: true,
    ethNetworkName: ‘ropsten’,
    etherscanBaseUrl: ‘https://ropsten.etherscan.io’,
    ethArkRateFraction: ‘1/100’,
    arkExplorerBaseUrl: ‘https://explorer.ark.io’,
    acesApiBaseUrl: ‘http://localhost/aces-api

    If using an Ethereum Mainnet, copy the following into /apps/aces-frontend/src/environments/environment.custom.ts, making sure to replace localhost with your server IP, if applicable.

    export const environment = {
    production: true,
    title: ‘Custom Ark Contract Execution Services (ACES)’,
    isEthTestnet: false,
    ethNetworkName: ‘mainnet’,
    etherscanBaseUrl: ‘https://etherscan.io’,
    ethArkRateFraction: ‘1’,
    arkExplorerBaseUrl: ‘https://explorer.ark.io’,
    acesApiBaseUrl: ‘http://localhost/aces-api


    (This is how the code for Ethereum Mainnet code will look like once input)


    (Remember to change the ‘localhost’ to your server IP)

    Install angular for the front-end UI

    Follow the code below:

    cd /apps/aces-frontend
    npm install -g @angular/cli
    npm install



    (It will look something like this)

    Build the application:

    ng build --target=production --env=custom --base-href /aces-app/


    (This is how your console should appear once it is finished building the application)

    Part 4:

    Set up nginx web server:

    Allow backend and frontend to be served by nginx by adding the following to /etc/nginx/sites-available/default under root server directive.

    First vim into the file

    vim /etc/nginx/sites-available/default


    Then add the snippet below under the server directive.

    location /aces-app/ {
    alias /apps/aces-frontend/dist/;
    try_files $uri $uri/ /aces-app/;

    location /aces-api/ {


    Now restart the nginx service

    sudo service nginx restart

    Part 5:

    Confirm setup

    Check the backend API by making a GET request to http://localhost/aces-api/test-service-info:


    After you check your server IP using the ‘curl’ you should get this result:


    And lastly open up the aces-app frontend in your browser: http://localhost/aces-app/



    Remember if you start getting errors, just go over the code again, and look into the git, redoing it helps a lot

    Alright, so that’s it. I hope it works out for everyone who uses this guide, if you end up confused feel free to reach out to me on slack or here or any of the Ark devs. I am not taking credit for any development in this project, i’m merely a user who felt that there should be a guide regarding the set up. I appreciate the opportunity to have come up with this as well as all the hard work that the devs and many community members put in to make this project so awesome.

    Oh, and special thank to @ryano for all the help setting up

    Slack: @0toierance

  • This was a great guide, however I’m having an issue with just getting a loading wheel after clicking any of the buttons, presuming it’s not seeing the backend but not seeing any errors in nginx, any tips on where else to look?

  • Very Nice Looking Guide!!! Job well done :clap_tone1:!!! It will be some time until I get to try this out. Thank You!!! : :smile:

  • @djh82uk Hey! Sorry for the late reply, for some reason I wasn’t receiving any notifications :( However, if you’re still stuck come on over to the slack channel #aces
    There are a handful of people who can assist you along with myself.

  • @michaelthecrypto Thank you very much Michael!

  • Pwoah. Nicely done brother.

  • @criptodogg Thanks a lot :thumbsup: :D :thumbsup:

Looks like your connection to [Set-Up Guide] Ark ACES Node | Del was lost, please wait while we try to reconnect.