=========================
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: More disk space will be required on compute nodes if the project and
conda env directories are on separate filesystems.

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>`.
