> ## Documentation Index
> Fetch the complete documentation index at: https://anaconda.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Standard installation

export const Danger = ({children}) => {
  return <div class="callout my-4 px-5 py-4 overflow-hidden rounded-2xl flex gap-3 border danger-admonition dark:danger-admonition" data-callout-type="danger">
      <div class="mt-0.5 w-4">
        <svg width="14" height="14" viewBox="0 0 14 14" fill="rgb(239, 68, 68)" xmlns="http://www.w3.org/2000/svg" class="w-4 h-4 text-sky-500" aria-label="Danger">
          <path fill-rule="evenodd" clip-rule="evenodd" d="M7 1.3C10.14 1.3 12.7 3.86 12.7 7C12.7 10.14 10.14 12.7 7 12.7C5.48908 12.6974 4.0408 12.096 2.97241 11.0276C1.90403 9.9592 1.30264 8.51092 1.3 7C1.3 3.86 3.86 1.3 7 1.3ZM7 0C3.14 0 0 3.14 0 7C0 10.86 3.14 14 7 14C10.86 14 14 10.86 14 7C14 3.14 10.86 0 7 0ZM8 3H6V8H8V3ZM8 9H6V11H8V9Z"></path>
        </svg>
      </div>
      <div class="text-sm prose min-w-0 w-full">
        {children}
      </div>
    </div>;
};

This topic provides guidance on installing Anaconda Server and verifying your installation.

<Note>
  To successfully install Anaconda Server, you must have already prepared your environment according to the [Standard environment preparation](../prep/standard-prep) topic.
</Note>

**On this page:**

* [Installing Anaconda Server](#installing-anaconda-server)
  * [Installing without root access](#installing-without-root-access)
  * [Installing with root access](#installing-with-root-access)
  * [Installing with external Postgres and Redis](#installing-with-external-postgres-and-redis)
  * [Installing with Podman](#installing-with-podman)

* [Verifying your installation](#verifying-your-installation)

* [Next steps](#next-steps)

## Installing Anaconda Server

1. Download your installer by running the command:

   ```sh theme={null}
   # Replace <INSTALLER_LOCATION> with the provided installer URL
   curl -O <INSTALLER_LOCATION>
   ```

2. Run one of the following installation commands. Choose the command that corresponds with your setup.

### Installing without root access

If you do not have root access, you must add yourself to the docker group by running the following command before you install:

```sh theme={null}
# Replace <USERNAME> with your Anaconda username
usermod -a -G docker <USERNAME>
```

Choose and run an [installation command](#installing-with-root-access) that corresponds to your setup.

### Installing with root access

**HTTP Installation**

If you have root access, run this command to install Anaconda Server:

```sh theme={null}
# Replace <INSTALLER> with the installer you just downloaded
# Replace <FQDN> with the fully qualified domain name of your Anaconda Server instance
bash <INSTALLER> --keep -- --domain <FQDN> --default-user anaconda
```

**HTTPS Installation**

If you are using TLS/SSL certificates, run this command to install Anaconda Server:

```sh theme={null}
# Replace <INSTALLER> with the installer you just downloaded
# Replace <FQDN> with the fully qualified domain name of your Anaconda Server instance
# Replace <PATH_TO_CERT> with the path to your TLS/SSL cert
# Replace <PATH_TO_KEY> with the path to your TLS/SSL key
bash <INSTALLER> --keep -- --domain <FQDN> --tls-cert <PATH_TO_CERT> --tls-key <PATH_TO_KEY> --default-user anaconda
```

During installation, login credentials will be generated and displayed in the terminal for two separate roles:

* **anaconda**: for administration in Anaconda Server UI
* **admin**: for administration in Keycloak

<Warning>
  **You’ll need the user names and passwords shown to log in to your instance of Anaconda Server and Keycloak. Make sure you save them!**
</Warning>

**Example output:**

```sh theme={null}
User anaconda created, realm=dev, roles=admin
password: J86j193PwaH92tjIN5J78m67 # This will be your password for logging into Anaconda Server
User admin created, realm=master, roles=admin
password: 79g2X1Zx02iY9RKe729MP38Y # This will be your password for logging into your Keycloak instance
```

The installer file directory contains both the installation script (`install.sh`), and the `docker-compose.yml` file, which define how the Anaconda Server services are run.

By default, `/opt/anaconda/repo` is the default file path for the installation folder. You can either create the folder manually by assigning write access to the current user, or use the `-b` (`--base-install-dir`) parameter to specify the folder for your installation.

### Installing with external Postgres and Redis

Before you begin installation, make sure you are using Postgres version 9.6 or later and Redis version 6.0 or later, then perform the following steps:

1. Download the installer.

   ```sh theme={null}
   # Replace <INSTALLER_LOCATION> with the provided installer URL
   curl -O <INSTALLER_LOCATION>
   ```

2. Modify the downloaded file to make it executable, then run the installation command:

   ```sh theme={null}
   # Replace <INSTALLER> with the installer file you just downloaded
   # Replace <FQDN> with the fully qualified domain name of your Anaconda Server instance
   # Replace <PATH_TO_CERT> with the path to your TLS/SSL cert
   # Replace <PATH_TO_KEY> with the path to your TLS/SSL key
   # Replace <EXTERNAL_PS/RD_INSTANCE_IP4> with your external instance IP4 address (in both locations)
   # Replace <ASSIGNED_PORT> with the port used for communication
   # Replace <POSTGRES_USERID> with your postgres user ID
   # Replace <POSTGRES_PASSWORD> with your postgres password
   chmod +x <INSTALLER>
   bash <INSTALLER> --keep -- --domain <FQDN> --tls-cert <PATH_TO_CERT> --tls-key <PATH_TO_KEY> -e redis://<EXTERNAL_PS/RD_INSTANCE_IP4> -h <EXTERNAL_PS/RD_INSTANCE_IP4> -p <ASSIGNED_PORT> -u <POSTGRES_USERID> -pw <POSTGRES_PASSWORD> --default-user anaconda -y
   ```

### Installing with Podman

Verify that your environment meets the [requirements](/docs/psm-on-prem/6.4.0/prep/standard-prep) for a Podman installation by running the following command:

```sh theme={null}
podman-compose --version
```

To install using Podman, download the installer, then make it executable by running the following commands:

```sh theme={null}
# Replace <INSTALLER_LOCATION> with the provided installer URL
# Replace <INSTALLER> with the installer you just downloaded
curl -O <INSTALLER_LOCATION>
chmod +x <INSTALLER>
```

Set the system variable `CONTAINER_ENGINE` to `podman` by running the following command:

```sh theme={null}
export CONTAINER_ENGINE=podman
```

Copy `podman-compose` into `usr/bin/` by running the following command:

```sh theme={null}
sudo cp /usr/local/bin/podman-compose /usr/bin/
```

Choose and run an [installation command](#installing-with-root-access) that corresponds to your setup.

***

## Verifying your installation

Services are one-to-one to containers. Therefore, verifying that all major containers are up and not restarting or failing is a good first step.

In a terminal, run:

```sh theme={null}
docker ps
```

You should see output similar to the following:

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/GAawxvWy-HUVSCqf/images/output.png?fit=max&auto=format&n=GAawxvWy-HUVSCqf&q=85&s=25dfe1dcda65b8d659fa2357d92aab0a" alt="" width="974" height="133" data-path="images/output.png" />
</Frame>

It is important to note that each container appears in the output:

* `<INSTALLER>_repo_api_1`
* `<INSTALLER>_nginx_proxy_1`
* `<INSTALLER>_repo_worker_1`
* `<INSTALLER>_repo_dispatcher_1`
* `<INSTALLER>_proxy_1`
* `<INSTALLER>_keycloak_1`
* `<INSTALLER>_postgres_1`
* `<INSTALLER>_redis_1`

It is also important to make sure that the status of each container is *Up*, and not stuck in a restart loop.

Finally, you should be able to use a browser to navigate to the domain that you supplied when executing the installer. If you are able to successfully authenticate and use the product, it has installed correctly.

***

## Next steps

After the installation has completed, open a browser and visit the domain you used during the product installation.

<Danger>
  Never delete the install directory containing the `docker-compose.yml` and `.env` files.
</Danger>

Further installation options can be seen by running the following command:

```sh theme={null}
# Replace <INSTALLER> with your installer file
./<INSTALLER>/install.sh --help
```

This will present you with the following list of possible arguments:

| **Arguments (shorthand)** | **Arguments (longhand)**                 | **Description**                                                        |
| :------------------------ | :--------------------------------------- | :--------------------------------------------------------------------- |
| `-r DOCKER_REGISTRY`      | `--registry DOCKER_REGISTRY`             | Docker registry, url:port (default uses the system Docker daemon)      |
| `-h POSTGRES_HOST`        | `--pg-host POSTGRES_HOST`                | Postgresql host (default is on internal Postgres instance)             |
| `-p POSTRES_PORT`         | `--pg-port POSTRES_PORT`                 | Postgresql port                                                        |
| `-u POSTGRES_USER`        | `--pg-user POSTGRES_USER`                | Postgresql user                                                        |
| `-pw POSTGRES_PASSWORD`   | `--pg-password POSTGRES_PASSWORD`        | Postgresql password (will set the internal Postgres instance password) |
| `-e REDIS_URL`            | `--redis REDIS_URL`                      | Redis URL (default is an internal Redis instance)                      |
| `-d DOMAIN`               | `--domain DOMAIN`                        | External domain (or IP) of host system                                 |
| `-c TLS_CERTIFICATE`      | `--tls-cert`                             | Path to TLS certification file for optionally configuring HTTPS        |
| `-k TLS_KEY`              | `--tls-key TLS_KEY`                      | Path to TLS key file for optionally configuring HTTPS                  |
|                           | `--default-user DEFAULT_USER`            | Default user name                                                      |
|                           | `--custom-ca-cert CA_CERTIFICATE`        | Path to custom CA certification, which should be respected             |
|                           | `--custom-cve-source CVE_DEFAULT_MIRROR` | For Airgaped environments provide a custom source for CVE data         |
|                           | `--upgrade-from PREVIOUS_DIR`            | Previous install folder                                                |
| `-l`                      | `--no-image-load`                        | Don’t load Docker images                                               |
| `-y`                      | `--no-prompt`                            | Answer yes to all prompts                                              |
|                           | `-- help`                                | Print help text                                                        |
