feat(manager): add remote VM support via NEXUS_SERVER_HOST
- config.py: add NEXUS_SERVER_HOST env var for cross-VM deployment - health_service.py: graceful Redis failure when only localhost-bound - systemd service: document remote VM configuration - README: add dedicated 'VM separada' installation section - .env.example: new file with remote connection examples
This commit is contained in:
@@ -35,11 +35,12 @@ manager/
|
||||
│ └── index.html # Single Page App
|
||||
├── scripts/
|
||||
│ └── init_manager.py # Inicialización de DB + admin
|
||||
└── systemd/
|
||||
└── nexus-manager.service
|
||||
├── systemd/
|
||||
│ └── nexus-manager.service # Servicio systemd
|
||||
└── README.md # Documentación completa
|
||||
```
|
||||
|
||||
## Instalación rápida
|
||||
## Instalación rápida (mismo servidor)
|
||||
|
||||
### 1. Dependencias
|
||||
|
||||
@@ -65,8 +66,8 @@ Esto crea:
|
||||
Asegúrate de que estas variables estén disponibles (en systemd o `.env`):
|
||||
|
||||
```bash
|
||||
MASTER_DB_URL=postgresql://postgres@/nexus_autoparts
|
||||
TENANT_DB_URL_TEMPLATE=postgresql://postgres@/{db_name}
|
||||
MASTER_DB_URL=postgresql://postgres@localhost/nexus_autoparts
|
||||
TENANT_DB_URL_TEMPLATE=postgresql://postgres@localhost/{db_name}
|
||||
MANAGER_JWT_SECRET=genera-un-segredo-largo-aqui
|
||||
POS_DIR=/home/Autopartes/pos
|
||||
REDIS_URL=redis://localhost:6379/0
|
||||
@@ -100,6 +101,76 @@ server {
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Instalación en Máquina Virtual separada (misma red local)
|
||||
|
||||
Si el manager corre en una VM diferente al servidor principal (donde está PostgreSQL + POS):
|
||||
|
||||
### Requisitos de red
|
||||
- PostgreSQL del servidor principal debe escuchar en `0.0.0.0:5432` (verificar `listen_addresses = '*'` en `postgresql.conf`)
|
||||
- POS (5001), Dashboard (5000) y Quart (5002) ya escuchan en `0.0.0.0` por defecto
|
||||
- Redis puede estar solo en `127.0.0.1`; en ese caso el health check mostrará advertencia pero no afecta el funcionamiento
|
||||
|
||||
### 1. Clonar el repo en la VM
|
||||
|
||||
```bash
|
||||
git clone https://git.consultoria-as.com/consultoria-as/Autoparts-DB.git /home/Autopartes
|
||||
cd /home/Autopartes/manager
|
||||
```
|
||||
|
||||
### 2. Instalar dependencias
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 3. Configurar variables para conexión remota
|
||||
|
||||
Crea `/home/Autopartes/manager/.env` o edita el servicio systemd:
|
||||
|
||||
```bash
|
||||
# IP del servidor principal donde corre PostgreSQL y POS
|
||||
NEXUS_SERVER_HOST=192.168.10.91
|
||||
|
||||
# PostgreSQL remoto (cambiar localhost por la IP del servidor)
|
||||
MASTER_DB_URL=postgresql://nexus:PASSWORD@192.168.10.91/nexus_autoparts
|
||||
TENANT_DB_URL_TEMPLATE=postgresql://nexus:PASSWORD@192.168.10.91/{db_name}
|
||||
|
||||
# Redis remoto (puede no funcionar si Redis solo escucha en localhost)
|
||||
REDIS_URL=redis://192.168.10.91:6379/0
|
||||
|
||||
# Seguridad
|
||||
MANAGER_JWT_SECRET=genera-un-segredo-largo-aqui
|
||||
POS_DIR=/home/Autopartes/pos
|
||||
```
|
||||
|
||||
**Nota importante:** La VM manager no necesita una instalación completa del POS. Solo necesita:
|
||||
- Los archivos de `manager/`
|
||||
- Los archivos de `pos/` (para reutilizar `tenant_manager.py` y migraciones)
|
||||
- Conectividad TCP al puerto 5432 del servidor principal
|
||||
|
||||
### 4. Inicializar DB y admin
|
||||
|
||||
```bash
|
||||
cd /home/Autopartes/manager
|
||||
python scripts/init_manager.py --email admin@nexus.local --password TU_PASSWORD
|
||||
```
|
||||
|
||||
### 5. Systemd
|
||||
|
||||
```bash
|
||||
cp systemd/nexus-manager.service /etc/systemd/system/
|
||||
# Edita el archivo y cambia localhost por la IP del servidor en MASTER_DB_URL y NEXUS_SERVER_HOST
|
||||
nano /etc/systemd/system/nexus-manager.service
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable nexus-manager
|
||||
systemctl start nexus-manager
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Uso
|
||||
|
||||
### Crear una demo
|
||||
@@ -122,8 +193,11 @@ server {
|
||||
- Ve a **Migraciones** para ver la versión de schema de cada tenant
|
||||
- **Ejecutar todas pendientes** aplica migraciones en TODOS los tenants
|
||||
|
||||
---
|
||||
|
||||
## Notas de seguridad
|
||||
|
||||
- Cambia `MANAGER_JWT_SECRET` en producción
|
||||
- El panel expone acciones destructivas (delete/reset); protege el acceso con firewall o VPN
|
||||
- Usa HTTPS en producción
|
||||
- Si despliegas en VM separada, asegúrate de que el firewall del servidor principal permite conexiones desde la IP de la VM manager al puerto 5432 (PostgreSQL)
|
||||
|
||||
Reference in New Issue
Block a user