# VM-RHEL

This article provides step-by-step instructions for installing and configuring **askEdgi Data Services** on **RHEL** environments. It includes **Python** and **Poetry** setup, service configuration, and deployment steps. The document also describes integration with the OvalEdge platform through system properties and application settings. Follow the steps in sequence to ensure successful installation and configuration

### Prerequisites

Ensure the following prerequisites are met before starting:

* **Sudo privileges** are available on the target VM
* The OvalEdge application is installed and configured
* Install askEdgi on the same VM where the OvalEdge application is installed.
* Network access is available to download the required packages

### Software Requirements

Install the following components:

* **Python 3.13**
* **Poetry 2.1.3**

### Install Python 3.13

#### Install Required Dependencies

1. Log in to the Linux VM and run the following commands:

   ```
   sudo dnf groupinstall -y "Development Tools"
   ```

   \
   Sample Reference Screenshots:

   <div align="left"><figure><img src="/files/E0BZs5TOweFyGmivDz4W" alt=""><figcaption></figcaption></figure></div>

   ```
   sudo dnf install -y openssl-devel bzip2-devel libffi-devel zlib-devel xz-devel tk-devel readline-devel sqlite-devel wget curl make gcc
   ```

   <div align="left"><figure><img src="/files/XGI6PaPOvoo84krSUNNU" alt=""><figcaption></figcaption></figure></div>

#### Download and Extract Python

1. Navigate to the source directory and run the following commands.

   ```
   cd /usr/src
   sudo curl -O 
   https://www.python.org/ftp/python/3.13.0/Python-3.13.0.tgz

   sudo tar -xzf Python-3.13.0.tgz
   cd Python-3.13.0
   sudo ./configure --enable-optimizations --with-ensurepip=install
   ```

   \
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/IWXE8t5WrYyVjvg7TQWH" alt=""><figcaption></figcaption></figure></div>
2. Compile the source code and build Python using available CPU cores:&#x20;

   ```
   sudo make -j$(nproc)
   ```

   \
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/zBuKH04MEjJal117TFHm" alt=""><figcaption></figcaption></figure></div>
3. Run the command below to install Python dependencies.

   ```
   sudo make altinstall
   ```

   \
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/sQo0s13YVnb8KmHEvxVN" alt=""><figcaption></figcaption></figure></div>
4. Check the Python version using the following command.

   ```
   python3.13 --version
   ```

#### Configure Python Version

1. Add Python 3.13 to alternatives using the following command.

   ```
   sudo alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.13 2
   ```
2. Select the default Python 3.13 version using the command.

   ```
   sudo alternatives --config python3
   ```

   \
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/WEtHHaXO3yk5GOhSTryA" alt=""><figcaption></figcaption></figure></div>

### Install Poetry (Version 2.1.3)

#### Install Poetry

1. Run the commands below to install Poetry.

   ```
   curl -sSL https://install.python-poetry.org | python3 - --version 2.1.3
   ```
2. Configure Environment Path.

   ```
   export PATH="$HOME/.local/bin:$PATH"
   source ~/.bashrc
   poetry --version
   ```

   \
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/CwYYkeUEdJfAAatamw2l" alt=""><figcaption></figcaption></figure></div>

### askEdgi Setup&#x20;

#### Create Base Directory

1. Create a base directory for askedgi configurations as shown below.

   ```
   mkdir askedgi
   ```

   \
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/wNwTIiUUMJoBAyoJi8WE" alt=""><figcaption></figcaption></figure></div>
2. Navigate to the askEdgi folder and create the following directories (asset, dbfolder, and service logs)

   ```
   mkdir asset
   mkdir dbfolder
   mkdir logs
   ```

   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/hSMQq9hFK5uCcxVRmj0s" alt=""><figcaption></figcaption></figure></div>

#### Create Environment Configuration File

1. Inside the askEdgi directory, create a .env file and add the following configuration:

   ```
   ## Required VM Configuration
   DEPLOYMENT_TYPE=vm  #( default)
   ENV=production #( default)
   # MySQL (required)
   mysql_url=jdbc:mysql://localhost:3306/ovaledgedb?useUnicode=true&character_set_server=utf8mb4&useSSL=false&allowPublicKeyRetrieval=true
   mysql_user=<mysql_user>
   mysql_password=<mysql_password> # special characters @ not taking edgi servies
   # Workspace Identification (required)
   WORKSPACE_PROJECT_ID=0001 #( default)
   WORKSPACE_USER=unknown #( default)
   # Logging (recommended)
   EDGI_ASSET_PATH=/home/ovaledge/ovaledge/askedgi/asset
   LOG_PATH=/home/ovaledge/ovaledge/askedgi/logs
   LOG_MODE=INFO    #( default)
   # DuckDB (recommended)
   DB_FOLDER=/home/ovaledge/ovaledge/askedgi/dbfolder
   # Pooling (optional)
   MYSQL_POOL=10 
   MYSQL_POOL_NAME=ovaledge_pool
   # Edgi Data Servie port
   APP_PORT=8000
   # Recipe connection (optional)
   OVALEDGE_RECIPE_CONNECTION_ID=-1
   # Elasticsearch Configuration
   es_host=<es_hostname>
   es_port=9200
   es_username=<es_username>
   es_password=<es_password>
   es_protocol=http
   elasticsearch.enabled=true
   elasticsearch.index.name.prefix=ovaledge
   elasticsearch.index.name.seperator=_
   elasticsearch.ovaledge.env=uat
   CREDENTIAL_PROVIDER=jceks
   LOG_FILE_NAME=edgi-data.log
   ```

   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/alfWZXzhfAh2V0QR3qqW" alt=""><figcaption></figcaption></figure></div>
2. Save the file and exit.

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><ul><li>Provide valid MySQL and Elasticsearch credentials</li><li>Verify asset, log, and DB paths</li><li>Avoid unsupported special characters in passwords</li></ul></div>

#### Extract askEdgi Package

1. Obtain the askEdgi tar file from the OvalEdge team and run the following command inside the askEdgi directory:

   ```
   tar -xvf <tar_file_name>
   ```

   \
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/zR4MPM7j7SQNIe0vdtLO" alt=""><figcaption></figcaption></figure></div>
2. Now navigate to the extracted directory and perform the following activities as shown.\
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/LJDCs7DFxFXiREakYaMV" alt=""><figcaption></figcaption></figure></div>

   ```
   poetry install
   ```

   \
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/NwH3D3OwZHsmiesGwC62" alt=""><figcaption></figcaption></figure></div>

#### Validate Service Execution

1. Start the askEdgi data services manually using the following command.

   ```
   poetry run service
   ```

   \
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/Ko2At5vDzFD6IXgPakBI" alt=""><figcaption></figcaption></figure></div>
2. Verify that the service starts successfully
3. Stop the service using Ctrl + C

### Configure askEdgi as a System Service

#### Identify Poetry Path

```
which poetry
```

Sample Reference Screenshot:

<div align="left"><figure><img src="/files/ObkUR12dNDQregMQhr4H" alt=""><figcaption></figcaption></figure></div>

#### Create Systemd Service File

```
sudo vim /etc/systemd/system/data.service
```

1. Add the following configuration:

   ```
   [Unit]
   Description=Last Modified S3 Scanner
   After=network.target
   [Service]
   User=ovaledge
   WorkingDirectory=/home/ovaledge/ovaledge/askedgi/oe_edgi_data_service-8.1.0+ga.20260423.349
   ExecStartPre=/home/ovaledge/.local/bin/poetry install
   ExecStart=/home/ovaledge/.local/bin/poetry run service
   Restart=always
   StandardOutput=append:/home/ovaledge/ovaledge/askedgi/logs/edgi-data.log
   StandardError=append:/home/ovaledge/ovaledge/askedgi//logs/edgi-data.log
   Environment="PATH=/home/ovaledge/.local/bin:/usr/local/bin:/usr/bin"
   [Install]
   WantedBy=multi-user.target
   ```

   \
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/AyA0AL87wVmk7KRupDWD" alt=""><figcaption></figcaption></figure></div>
2. Update the configuration with the correct paths and save the file.

#### Enable and Start Service

1. Run the following commands

   ```
   sudo systemctl daemon-reload
   sudo systemctl start data.service
   sudo systemctl enable data.service
   sudo systemctl status data.service
   ```

   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/YlBtYWi3KRRtjTgPpRN7" alt=""><figcaption></figcaption></figure></div>

### Update OvalEdge Configuration

#### Update oasis.properties

1. Navigate to the OvalEdge configuration directory and open:

   ```
   oasis.properties 
   ```
2. Add the following configuration:

   ```
   oe.edgi.enabled=true
   oe.edgi.client.prefix=oe_dev
   oe.edgi.bucket.name=edgi_data_sync_bucket
   oe.edgi.consumer.queue=data_sync_queue
   oe.edgi.credential.type=static
   oe.edgi.aws.region=us-east-1
   oe.edgi.aws.secret-key=xxxx
   oe.edgi.aws.access-id=xxxxx
   oe.edgi.workspace.discovery=static
   oe.edgi.workspace.host=localhost
   oe.edgi.workspace.port=8000
   oe.edgi.asset.path=~/assets
   oe.edgi.cluster.name=cdw
   oe.edgi.subnets=subnet-0f2992f9467adfa26,subnet-0c4f764d6cdbd6bfb
   oe.edgi.security.groups=sg-09c8f8702687c179c
   oe.edgi.standard.task.family=edgi-data-service
   oe.edgi.medium.task.family=edgi-data-service-medium
   oe.edgi.large.task.family=edgi-data-service-xl
   ```

   \
   Sample Reference Screenshot:

   <div align="left"><figure><img src="/files/0jt8FeW0B6jg9QUijRdc" alt=""><figcaption></figcaption></figure></div>

   <div data-gb-custom-block data-tag="hint" data-style="info" class="hint hint-info"><p><strong>VM Deployment</strong></p><ul><li>For a <strong>Single VM</strong> deployment, update the highlighted parameters in the <code>oasis.properties</code> file and save the changes.</li><li>For a <strong>Multi-VM</strong> deployment, update the highlighted parameters in the <code>oasis.properties</code> file on both VM1 and VM2, and then save the changes.Restart Tomcat</li></ul></div>
3. **Restart** the **Tomcat service** after updating the configuration.

## Application Configuration

#### Validate Connector

1. Navigate to **Administration → Connectors**.
2. From the connectors list, select the **MySQL connector(-1).**
3. Click the **9 dots menu** at the top-right corner.
4. Select **Validate** Connector and ensure validation is successful.
5. Click the **Crawl/Profile** button at the top right corner.

   <div align="left"><figure><img src="/files/PZR9RF1L78TLOyNJYxpX" alt=""><figcaption></figcaption></figure></div>

   <div align="left"><figure><img src="/files/otulpINgweGtdQgrl6mC" alt=""><figcaption></figcaption></figure></div>

#### Update System Settings

1. Navigate to **Administration → System Settings**.
2. Click on the **AI tab**.
3. Locate the required **system setting keys**.
4. **Update** the keys with the **appropriate values** as specified.
5. Save the changes.
   1. askedgi.edition = Data Analytics
   2. askedgiplus.enable = true
   3. askedgi.ovaledge.recipe.connection.id = -1

      <div align="left"><figure><img src="/files/w6OAEJUnADhK8p7P0qqf" alt=""><figcaption></figcaption></figure></div>

      <div align="left"><figure><img src="/files/b95lGWybr7xQIfpRGWMc" alt=""><figcaption></figcaption></figure></div>
   4. Ai.config = (Developer will provide the KEY), and the remaining settings are the same as below.

      <div align="left"><figure><img src="/files/0zX1BlorDECfFwRaHzx3" alt=""><figcaption></figcaption></figure></div>
6. Ensure marketplace configurations are populated correctly.

   <div align="left"><figure><img src="/files/7hJPc9QMLfLh7HZQKgDB" alt=""><figcaption></figcaption></figure></div>

#### Access askEdgi

1. Log out of the OvalEdge application after completing the configuration changes.
2. Log in again to apply the updated settings.
3. From the application header, click the askEdgi icon.&#x20;

   <div align="left"><figure><img src="/files/1yWBp3sQgUsAcxw8mhKW" alt=""><figcaption></figcaption></figure></div>
4. Create a workspace.

   <div align="left"><figure><img src="/files/FUSX54CjknLlEwCZ1Uu2" alt=""><figcaption></figcaption></figure></div>
5. Add a table to the workspace.&#x20;

   <div align="left"><figure><img src="/files/SS1k1doObMAP8vl66oQ5" alt=""><figcaption></figcaption></figure></div>
6. Verify data access through the catalog.

   <div align="left"><figure><img src="/files/FunnpzP8nkotcXxrvDVn" alt=""><figcaption></figcaption></figure></div>

   <div align="left"><figure><img src="/files/8YcVHm8ksiiHkzPITTR1" alt=""><figcaption></figcaption></figure></div>
7. The successful response confirms that askEdgi is configured correctly and functioning as expected. Users can now perform searches and access data through the askEdgi interface.

***

Copyright © 2026, OvalEdge LLC, Peachtree Corners, GA, USA.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ovaledge.com/release8.1/askedgi/deployment-and-installation/installation/vm-rhel.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
