===================
System requirements
===================

Your server must meet the requirements for hardware, software,
security and network. Please review and verify that you have met
all system requirements before beginning your installation.

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

See also the :doc:`system requirements
</anaconda-enterprise/system-requirements>` for all of Anaconda
Enterprise.


.. _repo-hardware-reqs:

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

* Physical server or virtual machine.

* CPU: 2 x 64-bit, 2.8 GHz, 8.00 GT/s CPUs or better.
  :ref:`Verify machine architecture <directive-1>`.

* Memory: minimum RAM size of 32 GB, or 16 GB RAM with 1600 MHz
  DDR3 installed, for a typical installation with 50 regular
  users. :ref:`Verify memory requirements <directive-6>`.

* Storage: Recommended minimum of 100 GB, or 300 GB if you are
  planning to mirror both Anaconda Repository, which is
  approximately 90 GB, and the PyPI repository, which is
  approximately 100 GB, or at least 1 TB for an air gapped
  environment. Additional space is recommended if Repository is
  used to store packages built by your organization. :ref:`Verify
  storage requirements <directive-2>`.

* Internet access to download the files from Anaconda Cloud, or a
  USB drive containing all of the files you need with alternate
  instructions for air gapped installations.

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

* Linux environment: Installations have been tested on Redhat,
  CentOS 6.7 and Ubuntu 12.04+. :ref:`Verify Linux version
  <directive-7>`.

* Client environment may be Windows, macOS or Linux.

* Ubuntu users may need to install cURL. :ref:`Verify cURL
  access <directive-3>`.

* MongoDB version 2.6+ installed as root and running. Versions
  through 3.4 are supported. :ref:`Verify MongoDB installation
  <directive-4>`.

* bzip2. :ref:`Verify bzip2 installation <repo-verify-bzip2>`.

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

* Root access or sudo capabilities. :ref:`Verify root access and
  sudo privileges <directive-5>`.

* OPTIONAL: Ability to make IPTables modifications.

* SELinux policy edit privileges.

  NOTE: SELinux does not have to be disabled for Repository operation.

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

TCP ports are used as follows:

* Inbound TCP 8080, 8443: Anaconda Repository.

* Inbound TCP 22: SSH.

* Outbound TCP 443: Anaconda Cloud.

* Outbound TCP 25: SMTP.

* Outbound TCP 389/636: LDAP(s).

You need your `Anaconda.org <https://anaconda.org/>`_---Repository
in the cloud---account username and password and the installation
token provided to you by Anaconda at the time of purchase. If you
did not receive your token, please contact your sales
representative or our `Professional Support Team
<https://www.anaconda.com/support>`_.


Hardware verification
=====================

.. _directive-1:

Machine architecture
--------------------

Repository is built to operate only on 64-bit computers.

To verify that you have a 64-bit or x86_64 computer, in a
terminal window, run::

  arch

This command displays what your system is: 32-bit "i686" or
64-bit "x86_64."

.. _directive-6:

Memory requirements
-------------------

You need a minimum RAM size of 32 GB, or 16 GB RAM with 1600 MHz DDR3.

In a terminal window, run::

  free -m

This command returns the free memory size in MB.

.. _directive-2:

Storage requirements
--------------------

To check your available disk space---hard drive or virtual
environment size---use the built-in Linux df utility with the
``-h`` parameter for human readable format::

  df -h

.. _directive-7:

Software verification
=====================

Other versions of the Linux environment
---------------------------------------

Please contact us by filing a `GitHub issue
<https://github.com/Anaconda-Platform/support/issues>`_ if you have
problems with a version other than Redhat, CentOS or Ubuntu.
Prompts may vary slightly depending on your version.

.. _directive-3:

cURL access for Ubuntu users
----------------------------

RedHat and CentOS Linux distributions have cURL pre-installed,
but Ubuntu does not.

To verify cURL access, in a terminal window, run::

  curl --version

If cURL is not found, Ubuntu users can use the Advanced Packaging
Tool (APT) to get and install cURL::

  sudo apt-get install curl

TIP: If you already have Miniconda or Anaconda installed, in all
versions of Linux you can use the conda command::

  conda install curl

.. _directive-4:

MongoDB version 2.4+ installed
------------------------------

MongoDB version 2.4 or higher must installed as root and running.
Versions through 3.4 are supported. To check for the existence of
MongoDB and its version number, in a terminal window, run::

  mongod --version

If you get a "not found" message or if the MongoDB version is 2.3
or earlier, then install MongoDB 2.4 or higher using the
`official installation instructions
<http://docs.mongodb.org/manual/administration/install-on-linux/>`_.
Remember to install as root with the sudo command.

MongoDB must always be running before Repository can be started.

To start MongoDB::

    sudo service mongod start

To verify that MongoDB is running::

    mongo --eval 'db.serverStatus().ok'

.. _repo-verify-bzip2:

bzip2 is installed
------------------

To check for the existence of bzip2 and its version number, in
a terminal window, run::

  bzip2 --version

.. _directive-5:

Security verification
=====================

Root access and sudo privileges
-------------------------------

The Repository installation process cannot be completed without root
access.

To verify that you have sudo privileges, in a terminal window,
run::

  sudo -v

Enter your root password when prompted and press Enter.

If you receive a message like the following, contact your system
administrator for root access::

  Sorry, user [username] may not run sudo on [hostname].
