How to start AdServer#

Note

We strongly recommend using DNS with traffic proxy and DDoS protection (e.g. Cloudflare).

Setup requirements:#

  • Domain with 3 subdomains:

    • Frontend domain (default: panel.example.com)

      It is used to manage campaigns, sites and adserver itself.

    • Backend domain (default: app.example.com)

      It is used for API and for serving banner files to publishers.

    • 2nd Backend domain (default: au.example.com)

      It is used for gathering request context.

  • Server to run application (specifications below)

  • SMTP server/account for sending e-mails (e.g. Amazon SES)

  • ADS Account (e.g. from ADS Wallet)

Server minimum requirements:#

  • Operating system: Ubuntu 20.04

  • RAM: 8 GB

  • Storage: SSD, 500 GB, heavily depends on traffic

  • CPU: x64, 4 cores

Installation#

  1. Install Ansible (locally)

  2. Install Adshares adservice role (locally)

    ansible-galaxy install adshares.adservice

  3. Use example playbook to install AdServer modules (locally). All available variables you can find here: https://github.com/adshares/ansible-role-adservice#role-variables

    - hosts: my-server
       roles:
         - role: adshares.adservice
           vars:
             service_name: "{{ item }}"
             server_domain: example.com
             setup: true
             deploy: true
           loop:
             - adserver
             - adpanel
             - adselect
             - aduser
             - adpay
             - adcontroller
    
  4. Go to the AdPanel (https://panel.example.com), create an administrator account and complete the setup.

Technical info#

All modules are in /opt/adshares/ handled by system user adshares (you can change it during installation; see more).

There are six modules:

  • AdPanel - frontend UI

  • AdController - control panel to manage and monitor all modules

  • AdSelect - module that handles ad selection for publishers (db: elasticsearch)

  • AdPay - module that calculate payments for each ad impression (db: mysql)

  • AdUser - module that provides context info about request (db: mysql)

  • AdServer - module that manages all processes and communicates with other modules, ADS blockchain and other adservers (db:mysql)

Updates#

To update AdServer modules use Ansible with the same adservice role, just set deploy: true. You can also limit list of modules to perform partial update.

- hosts: my-server
  roles:
    - role: adshares.adservice
      vars:
        service_name: "{{ item }}"
        deploy: true
      loop:
        - adserver
        - adpanel
        - adselect
        - aduser
        - adpay
        - adcontroller