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

# Air-gapped installation

This topic provides guidance for installing Anaconda Team Edition in an air-gapped environment.

<Note>
  To successfully install Team Edition in an air-gapped environment, you must have already prepared your environment according to the [Air gap environment preparation](../prep/airgap-prep) topic.
</Note>

* [System validation checks](#system-validation-checks)
* [Installing Anaconda Team Edition](#installing-anaconda-team-edition)
* [Installing packages and CVEs in Team Edition](#installing-packages-and-cves-in-team-edition)
* [Restarting and logging in to Team Edition as admin](#restarting-and-logging-in-to-team-edition-as-admin)
* [Administering Team Edition in Keycloak](#administering-team-edition-in-keycloak)
* [Using Team Edition](#using-team-edition)

## System validation checks

Run the following commands to gain information on your system and validate that it is ready for a Team Edition install.

Display what type of processor your system is running, including the number of CPUs present:

```sh theme={null}
cat /proc/cpuinfo
```

Report the amount of free and used memory (both physical and swap) on the system, as well as the shared memory and buffers used by the kernel:

```sh theme={null}
cat /proc/meminfo
```

A standard Unix command used to display the amount of available disk space for file systems on which the invoking user has appropriate read access:

```sh theme={null}
df -h
```

Displays the operating system name as well as the system node name, operating system release, operating system version, hardware name, and processor type:

```sh theme={null}
uname -a
```

Displays the operating system identification data:

```sh theme={null}
cat /etc/os-release
```

Docker verification check:

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

## Installing Anaconda Team Edition

Obtain the **Team Edition installer** and your **Team Edition license** from your Anaconda representative before proceeding.

Download Anaconda Team Edition:

```sh theme={null}
# Replace <ATE-AIRGAP-INSTALL-URL> with the installer .sh file
curl -O \ <ATE-AIRGAP-INSTALL-URL>
```

Make it executable:

```sh theme={null}
chmod 700 te-installer-6.1.5-airgap-3d840d9.sh
```

Install Team Edition and providing ability to view the output file:

```sh theme={null}
# Replace <IP ADDRESS OR DOMAIN> with your IP address/FQDN
$ ./ate-installer.sh --keep -- --domain <IP ADDRESS OR DOMAIN> --default-user anaconda 2 > &1 | ate.install.output
```

<Note>
  Keep an eye out for the admin credentials generated during the install. **You'll need these usernames and passwords later.**
</Note>

The credentials will look like the following:

```sh theme={null}
User anaconda created, realm=dev, roles=admin
password: <anaconda_pw_here>
User admin created, realm=master, roles=admin
password: <admin_pw_here>
```

Example output:

```sh expandable theme={null}
net.ipv4.conf.all.forwarding = 1
Loading Repo images ...
Loaded image: nginx:6.1.5
Loaded image: keycloak:6.1.5
Loaded image: redis-ubi:6.1.5
Loaded image: postgres:9.6
Loaded image: prom/prometheus:v2.15.2
Loaded image: repo:6.1.5
Loaded image: repo-proxy:6.1.5
Successfully loaded images
Installing into /opt/anaconda/repo
Generated secret for repo-service
secret=978kb2M2BcrWR812PxY8yCvp62906C20
realm role=view-users
Generated secret for repo-account-sync
secret=h4ZkM1892p9gK95W8A68T4T0TA4aK5Z7
# Usernames and passwords below:
User anaconda created, realm=dev, roles=admin
password: T2206u7iNFS0226Qy2ro0lX1
User admin created, realm=master, roles=admin
password: 6kd01Rmqz46849gRh8U78Uu3
```

## Installing packages and CVEs in Team Edition

After downloading the zip files during [air gap environment preparation](../prep/airgap-prep#installing-packages-and-cve-files), move them to the preferred location. We have used `/repo/airgap/` in the following example:

```sh theme={null}
mv conda_main_airgap.zip /opt/anaconda/repo/airgap/
mv cve.zip /opt/anaconda/repo/airgap/
```

In the Team Edition base directory, update `REPO_CVE_DEFAULT_MIRROR` in the `.env` file to the following:

```sh theme={null}
REPO_CVE_DEFAULT_MIRROR=file://opt/anaconda/repo/airgap/cve.zip
```

## Restarting and logging in to Team Edition as admin

In your base Team Edition directory, run the following commands:

```sh theme={null}
docker-compose stop
docker-compose up -d
docker ps  # to make sure all processes are up
```

Log in to Team Edition, either at `http://<DNS>` or `http://<your instance public IP address>`.

Use the following credentials when logging in:

**Username**: anaconda

**Password**: your generated password from when you installed Team Edition

On your very first login, you will be redirected to Keycloak to authenticate your access.

## Administering Team Edition in Keycloak

Once you've been redirected to Keycloak upon login, you can begin setting up your keycloak.

Log in using the following credentials:

**Username**: admin

**Password**: your generated password from when you installed Team Edition

Once you have logged in to Keycloak, you will see the main page, as shown below. On the left-hand side, navigate to **Users**.

Click on the blue hyperlink in the ID column to take you to the admin profile.

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/QCWY8EsGZWJYinOU/images/kc_ID.png?fit=max&auto=format&n=QCWY8EsGZWJYinOU&q=85&s=715f3de2b21bd3d4236e95831fadd764" alt="" width="803" height="443" data-path="images/kc_ID.png" />
</Frame>

From the **Details** tab, you can make changes to the profile.

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/_0MqQ39OoYOKQTk5/images/kc_details.png?fit=max&auto=format&n=_0MqQ39OoYOKQTk5&q=85&s=727c26ebd045d91dd7c1e307de0ffe3c" alt="" width="1177" height="609" data-path="images/kc_details.png" />
</Frame>

From the **Credentials** tab, you can change the password.

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/_0MqQ39OoYOKQTk5/images/kc_credentials.png?fit=max&auto=format&n=_0MqQ39OoYOKQTk5&q=85&s=6891a0b070f37f6c5a5e8db03d367dca" alt="" width="1557" height="556" data-path="images/kc_credentials.png" />
</Frame>

From the **Role Mappings** tab, you can add or remove permissions.

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/_0MqQ39OoYOKQTk5/images/kc_rolemap.png?fit=max&auto=format&n=_0MqQ39OoYOKQTk5&q=85&s=5ae5940b0263e1bf1618b74816015d74" alt="" width="1414" height="448" data-path="images/kc_rolemap.png" />
</Frame>

Once you have made your changes, you can log in to your Anaconda Team Edition instance. You will be prompted to enter your license to continue. This is the license you obtained from your Anaconda representative.

## Using Team Edition

Log in to your Team Edition instance as administrator with the generated ID and password.

### Creating a channel

There are a few key things to note when creating a channel:

* If a channel name is already in use, create a new channel with a different name. That channel can then be set as the default channel on the **Settings** page under **My Account**.
* If an email is used as a username, the portion of the email before the "@" symbol (also known as the "local-part") will be used as the username. Because channel names are restricted to a limited set of characters (a-z 0-9 - \_), some characters may be replaced with `_`.
  For example, if the email address `annie.anaconda@website.com` is used as a username, the channel `annie_anaconda` will be created.
* If you don't see any way of creating a channel (as shown in the following section), you might be lacking the permission to do so. Ask your administrator about [modifying your permissions](../admin/Keycloak_config/user_roles) to allow you to create channels.

1. Click on the **My account** button in the top right, and then click **Create a Channel**. You can also create a channel by clicking the green **Create Channel** button from your channel page.

   <Frame>
     <img src="https://mintcdn.com/anaconda-29683c67/6fJRxAwYs9izUc34/images/createchan.png?fit=max&auto=format&n=6fJRxAwYs9izUc34&q=85&s=8f991f140ad3ec5c23923e059b77b716" alt="" width="2976" height="1702" data-path="images/createchan.png" />
   </Frame>

2. Fill in a name and description when prompted.

   <Frame>
     <img src="https://mintcdn.com/anaconda-29683c67/YGtija9HXl-k020Y/images/airgap-createchannel.png?fit=max&auto=format&n=YGtija9HXl-k020Y&q=85&s=4a8629c366aefce345cf4ad9916577d4" alt="" width="795" height="851" data-path="images/airgap-createchannel.png" />
   </Frame>

### Creating a mirror

In the new channel, create a new mirror by clicking the green **Mirror** button in the channel.

Ensure **Passive** is selected at the top.

<Note>
  Mirroring passively reduces the storage space used. You will still get the packages you need, as they are already stored in the Team Edition instance.
</Note>

In the field **External Source Channel**, enter the file path to the `conda_main_airgap.zip` file.

<Frame>
  <img src="https://mintcdn.com/anaconda-29683c67/YGtija9HXl-k020Y/images/airgap-mirror.png?fit=max&auto=format&n=YGtija9HXl-k020Y&q=85&s=fd4819f7555f1ecbad841f3c1fe6f296" alt="" width="1168" height="426" data-path="images/airgap-mirror.png" />
</Frame>

***

Once you have created the mirror, you are all set to use Team Edition!
