Este proyecto se compone de dos módulos principales:
- Servidor (
/server) - Cliente (
/client)
Cada uno tiene su propio entorno de configuración (.env) y puede ejecutarse de forma independiente.
El servidor se encarga de la gestión de la base de datos y la lógica central, mientras que el cliente interactúa con él mediante peticiones.
Antes de comenzar, asegúrate de tener instalado:
- Python 3.10+
- MariaDB
- Make (en Linux y macOS viene instalado; en Windows se puede usar con Git Bash o WSL)
Desde la raíz del proyecto (INTEGRIDOS/), ejecuta:
make setupEste comando:
- Crea un entorno virtual (
venv/) - Instala las dependencias definidas en
requirements.txt - Genera el archivo
.env.templatesi no existe (deberás completarlo manualmente)
Ve a la carpeta /server y copia el archivo de plantilla (si no existe):
cp .env.template .envEdita el .env con tus valores:
# Configuración del servidor
SERVER_HOST=localhost
SERVER_PORT=8001
# Configuración criptográfica
PEPPER=TU_PEPPER_AQUI
HMAC_KEY=TU_HMAC_KEY_AQUI
# Configuración de base de datos (MariaDB)
DB_USER=mi_usuario
DB_PSSWRD=mi_contraseña
DB_HOST=localhost
DB_PORT=3306
DB_NAME=integridos
⚠️ Importante: el servidor es quien accede directamente a la base de datos.
De igual forma, entra en la carpeta /client y crea tu .env:
cp .env.template .envEdita el archivo .env con los datos de conexión al servidor:
# Configuración del cliente
SERVER_HOST=localhost
SERVER_PORT=8001
# Configuración criptográfica
HMAC_KEY=LA_MISMA_HMAC_KEY_DEL_SERVIDOREl cliente debe compartir el mismo HMAC_KEY que el servidor para poder validar mensajes y firmas correctamente.
-
Inicia el servidor de MariaDB.
-
Crea una base de datos vacía:
mysql -u mi_usuario -p -e "CREATE DATABASE integridos;" -
Importa el esquema desde el archivo SQL que se encuentra en
/server:mysql -u mi_usuario -p integridos < server/integridos.sql
Esto creará todas las tablas y relaciones necesarias.
Desde la raíz del proyecto o desde la carpeta /server:
python server/server.pyEl servidor arrancará usando la configuración definida en server/.env.
En una nueva terminal (manteniendo el servidor corriendo):
python client/client.pyEl cliente se conectará al servidor usando las variables configuradas en client/.env.
| Comando | Descripción |
|---|---|
make setup |
Crea el entorno virtual, instala dependencias y genera .env.template |
make clean |
Elimina el entorno virtual (venv/) |
INTEGRIDOS/
├── client/
│ ├── .env
│ ├── client_crypto_utils.py
│ ├── client_functions.py
│ ├── client.py
│ ├── config_client.py
│ └── logs/
│
├── server/
│ ├── .env
│ ├── config_server.py
│ ├── db_interaction.py
│ ├── failures.py
│ ├── integridos.sql
│ ├── server_crypto_utils.py
│ ├── server_functions.py
│ ├── server.py
│ └── logs/
│
├── Makefile
├── requirements.txt
├── .gitignore
└── README.md