> OctoPerf Enterprise Edition - Architecture and prerequisites

Source: https://api.octoperf.com/doc/on-premise-infra/

# OctoPerf On Premise Infra

![Architecture](https://api.octoperf.com/doc/on-premise-infra/img/architecture.png)

OctoPerf On Premise Infra is a standalone application running as a few [Docker](https://docker.com) containers. It is the same as [OctoPerf Saas](https://api.octoperf.com/), but runs on your own computers.

Being based on Docker has numerous advantages:

- **Easy to setup**: easily run the application within minutes using [docker-compose](https://docs.docker.com/compose/),
- **Clean**: Remove the [Docker containers](https://www.docker.com/what-container) and you're done. Your system is kept clean,
- **Flexible configuration**: [Docker](https://docker.com) gives you the full control over configuration, ranging from *Single Machine* setup to *High Availability* clustered environments.

[OctoPerf On Premise Infra Setup](#quick-setup) takes only a few minutes.

## Architecture

OctoPerf On Premise Infra is made of 4 components:

- **OctoPerf Enterprise-Edition**: Backend server exposing the Rest Api consumed by the User-Interface,
- **OctoPerf UI**: Frontend server which serves the User-Interface,
- **OctoPerf Documentation**: small nginx server serving the documentation,
- and [Elasticsearch](https://elastic.co): **Database** used to persist all your datas.

In addition to this, a [Traefik](https://traefik.io/traefik/) **Load Balancer** exposes the whole application on a single port. All those components are publicly available as [Docker](https://www.docker.com/) images on [Docker HUB](https://hub.docker.com/u/octoperf/).

## Prerequisites

OctoPerf On Premise Infra has the following installation requirements:

- *CPU*: At least 4 cores, **8 recommended**, Intel Core I7 or Xeon recommended,
- *RAM*: At least 16GB RAM, **32GB recommended**,
- *Disk*: At least 50GB on a modern SSD (avoid HDD), **100GB recommended** (to have enough space for test results),
- *Operating system*: Linux, **Ubuntu (most recent LTS)**. With latest Docker version,
- *Server*: both physical and virtual machines are supported, however **physical servers are recommended**,
- *Software*: Latest version of **Docker CE**.

For stability reasons, we recommend to use separate machines for running OctoPerf On Premise Infra and execute load tests.

## Quick Setup

This installation guide setups OctoPerf On Premise Infra **on a single machine**. The installation can be completed within 5 minutes by unexperienced users.

!!! info
    This setup using **Docker Compose** is provided as an example. OctoPerf On Prem Infra can be indifferently setup in various docker-compatible environments like [Kubernetes](https://kubernetes.io/) or [Rancher](https://rancher.com). Those two last options require knowledge of the mentioned technological stacks which is not covered in the present guide.

### Docker

To install Docker, run the following command on a Terminal and follow the instructions:

```bash
curl -sSL https://get.docker.com/ | sh
```


### Configuration

Download the [HTTP version](https://api.octoperf.com/doc/on-premise-infra/download/enterprise-edition.zip) of the configuration files. If you are looking to install an HTTPS server, follow our [dedicated HTTPS guide](https://api.octoperf.com/doc/on-premise-infra/tutorials/https-setup/) after this one.

Unzip the previously downloaded file in any location and open the `enterprise-edition` folder. You will see the following:

- **config**: configuration files for OctoPerf
    - **config/application.yml**: main [configuration file](https://api.octoperf.com/doc/on-premise-infra/configuration/) for the OctoPerf server,
- **license**: folder for the [license file](https://api.octoperf.com/doc/on-premise-infra/license/),
- **traefik**: contains the files related to the [Traefik](https://traefik.io/traefik/) load balancer configuration (*traefik.yml* and *dynamic.yml*),
- **docker-compose.yml**: defines the services to start via *docker compose*,
- **Makefile**: provides convenient commands like `make` to run OctoPerf EE.



**The only configuration change we recommend you to make** is to edit `config/application.yml` to define the `server.hostname` property with the IP / Hostname of the machine running OctoPerf:

```yaml
server:
  hostname: YOUR_HOSTNAME
```

> By Default, the web-server runs with `http` protocol on port `80`. Replace `YOUR_HOSTNAME` by the hostname of your machine. It must be a hostname reachable publicly or at least from the perspective of your users and OctoPerf agents.

### Start the Application

To start your OctoPerf server:

- Run `make`,
- Browse to `http://<YOUR_HOSTNAME>`  you should see OctoPerf's UI, after a minute you should be able to login:

![OctoPerf EE Login](https://api.octoperf.com/doc/on-premise-infra/img/octoperf-login.png "OctoPerf EE Login")

!!! warning
    In case the UI doesn't show up or the server takes more than a minute to start, check our [troublehooting guide](https://api.octoperf.com/doc/on-premise-infra/troubleshooting/) to investigate further.

## Getting started

OctoPerf EE comes completely empty. We've listed a few key steps to follow in order to get stated quickly.

### Login

You can either:

- [Signup and create a new account](https://api.octoperf.com/doc/account/#sign-up)
- or configure [login through your organisation's SSO](https://api.octoperf.com/doc/on-premise-infra/configuration/#single-sign-on).

!!! warning
    These two options being mutually exclusive, we recommend to choose one or the other quickly, otherwise you may not be able to salvage all your previous work.

### Administration

After you have been able to login for the first time, it is time to [configure a superadmin account](https://api.octoperf.com/doc/on-premise-infra/configuration/#user-management).

Simply restart the OctoPerf server and login again to see [the administration menu](https://api.octoperf.com/doc/administration/). 

!!! note
    This is an important step because the administrator will be able to manage every aspect of the OctoPerf server from within the UI.

### Emails

In order to receive activation email links, reset passwords or simply configure [notifications](https://api.octoperf.com/doc/notifications/#email) inside OctoPerf you need to [configure your SMTP server](https://api.octoperf.com/doc/on-premise-infra/configuration/#smtp-server).

!!! warning
    If you no SMTP server defined, only the superadmin will be able to recover accounts, make sure to appoint a few of them in order to be able to do so.

### OctoPerf agent

In order to generate load during your tests, an OctoPerf On Prem Agent is required. This can be done by:

- Creating an [On-Premise Provider](https://api.octoperf.com/doc/on-premise-agent/): providers are groups of load generators,
- [Registering an On-Premise Agent](https://api.octoperf.com/doc/on-premise-agent/provider-type/on-premise/) within the previously created *On-Premise Provider*.

### Learn and share

Congratulations! **The setup is now complete.** Using the [workspace features](https://api.octoperf.com/doc/workspace/), you can share your load generator and projects with other OctoPerf user.

We invite you to follow our [self training guide](https://api.octoperf.com/doc/#self-training) in order to get started with OctoPerf.
