=========================
Installation requirements
=========================

.. contents::
   :local:
   :depth: 1

Hardware requirements
=====================

AEN server---At least:

* 2+GB RAM.
* 2+CPU cores.
* 20GB storage.

AEN gateway---At least:

* 2 GB RAM.
* 2 CPU cores.

AEN compute (N-machines)---Configured to meet the needs of the
projects. At least:

* 2GB RAM.
* 2 CPU cores.
* 20 GB.

NOTE: We recommend putting ``/opt/wakari`` and ``/projects`` on the same
filesystem. If the project and conda env directories are on separate
filesystems then more disk space will be required on compute nodes and
performance will be worse.

Software requirements
=====================

* RHEL/CentOS on all nodes. Versions from 6.5 through 7.4 are supported. Other operating systems are supported. However, this document assumes RHEL or CentOS.

* Linux home directories---Jupyter looks in $HOME for profiles and extensions.

* Ability to install in AEN directory ``/opt/wakari`` with at least 10 GB of storage.

* Ability to install in Projects directory ``/projects`` with at least 20 GB of storage. Size depends on number and size of projects.


Linux system accounts
---------------------

Some Linux system accounts (UIDs) are added to the system during installation.

If your organization requires special actions, the following list is available:

* mongod (RHEL) or mongodb (Ubuntu/Debian)---created by the RPM or deb package.

* elasticsearch---created by RPM or deb package.

* nginx---created by RPM or deb package.

* AEN_SRVC_ACCT---created during installation of AEN, and defaults to wakari.

* ANON_USER---An account such as "public" or "anonymous" on the compute node.

  NOTE: If ANON_USER is not found, AEN_SRVC_ACCT will attempt to create it.
  If it fails, the project(s) will fail to start.

* ACL directories need the filesystem mounted with Posix ACL support (Posix.1e).

  NOTE: You can verify ACL from the command line by running ``mount`` and ``tune2fs -l /path/to/filesystem | grep options``.


Software prerequisites
----------------------

* AEN server:

  * Mongo---Equal to or higher than version 2.6.8 and lower than version 3.0.
  * NGINX---Equal to or higher than version 1.6.2.
  * Elasticsearch---Equal to or higher than version 1.7.2.
  * Oracle JRE version 7 or 8.
  * bzip2.

* AEN Gateway:

  * bzip2.

* AEN compute:

  * git
  * bzip2
  * bash or zsh
  * X Window System

    NOTE: If you don't want to install the whole X Window System, you must
    install the following packages to have R plotting support:

    .. code-block:: bash

       sudo yum install -y libXrender libXext libXdmcp libSM libICE libXt \
       dejavu-sans-fonts dejavu-serif-fonts dejavu-fonts-common \
       fontpackages-filesystem


Security requirements
=====================

* Root or sudo access.

* SELinux in permissive or disabled mode.

Edit the following file using either root or sudo access::

     /etc/sysconfig/selinux

Edit the following::

     # This file controls the state of SELinux on the system.
         # SELINUX= can take one of these three values:
     #     enforcing - SELinux security policy is enforced.
     #     permissive - SELinux prints warnings instead of enforcing.
     #     disabled - No SELinux policy is loaded.

     SELINUX=enforcing

     # SELINUXTYPE= can take one of these two values:
         #     targeted - Targeted processes are protected,
         #     mls - Multi Level Security protection.

     SELINUXTYPE=targeted

NOTE: You must reboot for the changes to take effect.

Verify changes with ``getenforce``.

Network requirements
====================

TCP Ports:

+---------+----+------------+----------------+--------+------------+--------+
|Direction|Type|Default Port|Protocol        |Optional|Configurable|Comments|
+=========+====+============+================+========+============+========+
|Inbound  |TCP |80          |HTTP or HTTPS   |No      |Yes         |Server  |
+---------+----+------------+----------------+--------+------------+--------+
|Inbound  |TCP |8089        |HTTP or HTTPS   |No      |Yes         |Gateway |
+---------+----+------------+----------------+--------+------------+--------+
|Inbound  |TCP |5002        |HTTP            |No      |Yes         |Compute |
+---------+----+------------+----------------+--------+------------+--------+


Other requirements
==================

As long as the above requirements are met, there are no additional dependencies
for AEN.

See also :doc:`system requirements for Anaconda Repository and Anaconda Scale
<../../../anaconda-enterprise/system-requirements>`.


What's next
===========

:doc:`Prepare for installation <prepare-for-install>`.
