> ## Documentation Index
> Fetch the complete documentation index at: https://cometchat-22654f5b-feature-react-native-sdk-quotedmessage-a.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Docker

It is suggested to be familiar with the various kinds of roles for the on-premise deployment.

## 1. Hardware required for Docker Swarm

Below is the list of hardware required that you will need to provision.

| Minimum CPU | Minimum RAM | Minimum Storage | Requires Public IP | VM  | Open Public Ports                         |
| ----------- | ----------- | --------------- | ------------------ | --- | ----------------------------------------- |
| master      | 8 core      | 32GB            | 250GB              | Yes | TCP: 80,443                               |
| storage1    | 8 core      | 32GB            | 250GB              | No  |                                           |
| storage2    | 8 core      | 32GB            | 250GB              | No  |                                           |
| calling     | 8 core      | 32GB            | 50GB               | Yes | TCP: 80,443, 10000-20000 UDP: 10000-20000 |
| websocket   | 8 core      | 32GB            | 50GB               | Yes | TCP: 80,443,7070,5222,5223                |
| node1       | 4 core      | 8GB             | 50GB               | No  |                                           |
| node2       | 4 core      | 8GB             | 50GB               | No  |                                           |
| extensions  | 4 core      | 8GB             | 50GB               | Yes | TCP: 80, 443                              |

## 2. Once the hardware and public IP's are ready

Please inform us of the IP's so that we can complete the required DNS record changes and configurations.

Ensure that the machines can connect to one another.

## 3. Install docker, docker compose are installed on all machines

Ensure that a recent docker (version `3.7`) with docker-compose is installed on all machines.

## 4. Download the On-Prem shared by CometChat

Which will be shared with you.

## 5. Begin bootstrapping master

<Note>
  This will be shared with you, and restricts the deployment by number. of attempts, the IP's , your customer metadata, billing and renewal with CometChat Pro.
</Note>

```bash theme={null}
cd cometchatpro-onprem-dockerswarm-1.0.0
._master_bootstrap.sh
```

Expected Logs

```sh theme={null}
Step 1: Please paste the CometChat Pro On-Premise Token shared with you                                                           
Password:                                                                                                                        
Login Succeeded                                                                                                                   
Step 2: Starting Docker Swarm for CometChat Pro On-Premise
Swarm initialized: current node (....) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token ...

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Step 3: Please run the above from node1 and node2
```

You are now ready to bootstrap the other machines. Once they are all bootstrapped, we will come back to master to complete the bootstrap.

## 6. Bootstrapping other machines

Docker, docker-compose and the CometChat Folder must be available.

```bash theme={null}
# see step2 of bootstrap master
docker swarm join...

cd cometchatpro-onprem-dockerswarm-1.0.0

#on calling
._calling_bootstrap.sh

#on websocket
._calling_bootstrap.sh

#on node1, node2
._node_bootstrap.sh

#on extensions
._extensions_bootstrap.sh
```
