Files
db-middleware/README.md

246 lines
7.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Capital Index Database Middleware
## Overview
### About This Project
The **Capital Index Database Middleware** provides an abstraction layer for your database, enhancing query management and change monitoring. It streamlines database interactions while ensuring efficient performance and security.
### Repository Contents
This repository includes:
- **Middleware Source Code** The core logic for database interaction.
- **Dockerfile** Configuration for containerized deployment.
- **Install & Management Scripts** Scripts for streamlined installation and maintenance.
### Table of Content:
- [Capital Index Database Middleware](#capital-index-database-middleware)
- [Overview](#overview)
- [About This Project](#about-this-project)
- [Repository Contents](#repository-contents)
- [Table of Content:](#table-of-content)
- [Getting Started](#getting-started)
- [Installation](#installation)
- [Step 1: Install Required Dependencies](#step-1-install-required-dependencies)
- [Step 2: Run the Setup Script](#step-2-run-the-setup-script)
- [Configuration](#configuration)
- [1. API\_PORT](#1-api_port)
- [2. CONTAINER\_NAME](#2-container_name)
- [3. HAS\_LOCAL\_DBS](#3-has_local_dbs)
- [Test your setup](#test-your-setup)
- [Using the `status` command:](#using-the-status-command)
- [Using the `test_setup` command:](#using-the-test_setup-command)
- [Create your first admin user](#create-your-first-admin-user)
## Getting Started
### Installation
#### Step 1: Install Required Dependencies
Before installing, ensure you have the necessary dependencies to download and build the Docker container.
<details>
<summary>Debian/Ubuntu</summary>
```bash
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y wget git docker.io
```
[Optional] Install Docker BuildKit:
```bash
sudo apt-get install -y docker-buildx
```
</details>
<details>
<summary>CentOS/Fedora</summary>
> **Note:** If using CentOS 7, replace `dnf` with `yum`.
```bash
sudo dnf update -y && sudo dnf upgrade -y
sudo dnf install -y wget git docker
```
[Optional] Install Docker BuildKit:
```bash
sudo dnf install -y docker-buildx
```
</details>
<details>
<summary>Arch Linux</summary>
```bash
sudo pacman -Syu --noconfirm
sudo pacman -S --noconfirm wget git docker
```
[Optional] Install Docker BuildKit:
```bash
sudo pacman -S --noconfirm docker-buildx
```
</details>
<details>
<summary>Alpine Linux</summary>
```bash
sudo apk update && sudo apk upgrade
sudo apk add --no-cache wget git docker
```
[Optional] Install Docker BuildKit:
```bash
sudo apk add --no-cache docker-cli-buildx
```
</details>
#### Step 2: Run the Setup Script
After installing dependencies, configure Docker permissions and run the setup script:
1. Add your user to the Docker group and re-login:
```bash
sudo usermod -aG docker $USER && sudo su - $USER
```
2. Download and execute the `setup.sh` script:
```bash
mkdir -p ~/.db-middleware/scripts \
&& rm -rf ~/.db-middleware/scripts/* \
&& cd ~/.db-middleware/scripts \
&& wget -qO setup.sh https://gitea.abdulhade.com/abdulhade/db-middleware/raw/branch/main/scripts/setup.sh \
&& bash setup.sh
```
3. Give the container permission to edit its files:
```bash
sudo groupadd -g 2000 dbmiddleware
sudo usermod -aG dbmiddleware $USER
sudo chown -R $USER:dbmiddleware /home/$USER/.db-middleware/files
sudo chmod -R 775 /home/$USER/.db-middleware/files
```
---
## Configuration
During installation, you will be prompted to configure the following variables:
### 1. API_PORT
- Defines the port the middleware listens on.
- **Default:** `8080`
- Access within your machine: `http://localhost:8080`
- Ensure this port is forwarded if external access is required.
### 2. CONTAINER_NAME
- Specifies the name of the Docker container running the middleware.
### 3. HAS_LOCAL_DBS
Determines how the middleware connects to databases:
- **Enter `0`** If all the databases are hosted on a remote server.
- **Enter `1`** If one or more of the database runs on the same machine.
> **Note:** By default, Docker containers operate on an isolated network. If your database is local, the middleware must be configured to run on the same network to ensure connectivity.
## Test your setup
### Using the `status` command:
Check the status of the container
```bash
$ db-middleware status
```
If the container is stopped, run `db-middleware start` command.
<details>
<summary>It shows something like this:</summary>
```
Config file loaded successfully.
+------------------------------+
| Checking container status... |
+------------------------------+
+--------------------------------------------+
| Database Middleware Status: |
| |
| |
| [Container] |
| |
| Name: con-db-middleware |
| Status: Up 11 minutes |
| |
| [Performance] |
| |
| CPU Usage: 0.33% |
| Memory Usage: 62.27MiB / 3.63GiB (1.68%) |
| Block I/O: 0B / 0B |
| Network I/O: 6.34kB / 4.09kB |
| |
| [Network] |
| |
| Network Mode: bridge |
| IP Address: 172.17.0.2 |
| 172.17.0.2 |
| Ports: 0.0.0.0:8080->8080/tcp |
| |
| [App] |
| |
| Run Command: "bash /app/scripts/run.sh" |
+--------------------------------------------+
```
</details>
### Using the `test_setup` command:
If the container is created and running, use the test setup command:
```bash
$ db-middleware test_setup
```
```bash
Config file loaded successfully.
+-------------------------------------------+
| Container 'con-db-middleware' is Found. |
| Container 'con-db-middleware' is running. |
| App returned Ok to ping request. |
+-------------------------------------------+
```
## Create your first admin user
We recommend creating one admin user, and use that to create normal users via the API.
To create your first admin user, simply use the `create_user` command:
```bash
$ db-middleware create_user
Config file loaded successfully.
Enter username: myadmin
Enter role (admin/user): admin
+-----------------------------------------------------------------------------+
| > User 'myadmin' with role 'admin' created successfully. |
| > API Key: 4887f28e378dfd99e622833ccbebc174a45d |
+-----------------------------------------------------------------------------+
```
---
For further assistance, refer to the project documentation or open an issue in the repository.