208 lines
4.0 KiB
Markdown
208 lines
4.0 KiB
Markdown
# CLARA - Deployment Guide
|
|
|
|
## Despliegue rápido con Docker Compose
|
|
|
|
### 1. Configuración
|
|
|
|
```bash
|
|
# Copiar archivo de ejemplo
|
|
cp .env.example .env
|
|
|
|
# Editar con tus credenciales
|
|
nano .env
|
|
```
|
|
|
|
### 2. Generar H_INSTANCIA
|
|
|
|
```bash
|
|
# Generar hash único para la instancia DECK
|
|
echo -n "deck-seed-$(date +%s)-$(hostname)" | sha256sum | cut -d' ' -f1
|
|
```
|
|
|
|
Copiar el resultado a `.env` como `H_INSTANCIA`.
|
|
|
|
### 3. Configurar credenciales R2
|
|
|
|
Obtener de Cloudflare R2:
|
|
- Account ID
|
|
- Access Key ID
|
|
- Secret Access Key
|
|
|
|
Actualizar en `.env`:
|
|
```
|
|
R2_ENDPOINT=https://<account-id>.r2.cloudflarestorage.com
|
|
R2_ACCESS_KEY=<access-key-id>
|
|
R2_SECRET_KEY=<secret-access-key>
|
|
```
|
|
|
|
### 4. Iniciar servicios
|
|
|
|
```bash
|
|
# Construir y levantar
|
|
docker-compose up -d
|
|
|
|
# Ver logs
|
|
docker-compose logs -f clara
|
|
|
|
# Verificar estado
|
|
curl http://localhost:5051/health
|
|
```
|
|
|
|
### 5. Verificar base de datos
|
|
|
|
```bash
|
|
# Conectar a PostgreSQL
|
|
docker exec -it clara-postgres psql -U postgres -d tzzr
|
|
|
|
# Ver tabla
|
|
\d clara_log
|
|
|
|
# Ver registros
|
|
SELECT * FROM clara_summary LIMIT 10;
|
|
```
|
|
|
|
## Endpoints API
|
|
|
|
### Health Check
|
|
```bash
|
|
curl http://localhost:5051/health
|
|
```
|
|
|
|
### Ingest (recibir contenedor)
|
|
```bash
|
|
curl -X POST http://localhost:5051/ingest \
|
|
-H "X-Auth-Key: $H_INSTANCIA" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"id": "uuid-contenedor",
|
|
"archivo_hash": "sha256-archivo",
|
|
"origen": {
|
|
"dispositivo": "uuid-dispositivo",
|
|
"timestamp_captura": "2025-12-23T20:00:00Z"
|
|
},
|
|
"archivo": {
|
|
"tipo": "image/jpeg",
|
|
"categoria": "imagen"
|
|
}
|
|
}'
|
|
```
|
|
|
|
### Query (consultar por hash)
|
|
```bash
|
|
curl http://localhost:5051/query/sha256-archivo \
|
|
-H "X-Auth-Key: $H_INSTANCIA"
|
|
```
|
|
|
|
### List (listar contenedores)
|
|
```bash
|
|
curl "http://localhost:5051/list?limit=10&offset=0" \
|
|
-H "X-Auth-Key: $H_INSTANCIA"
|
|
```
|
|
|
|
## Despliegue en DECK (72.62.1.113)
|
|
|
|
### Opción 1: Docker Compose (Recomendado)
|
|
|
|
```bash
|
|
# SSH al servidor
|
|
ssh root@72.62.1.113
|
|
|
|
# Clonar repositorio
|
|
git clone http://69.62.126.110:3000/tzzr/clara.git
|
|
cd clara
|
|
|
|
# Configurar
|
|
cp .env.example .env
|
|
nano .env
|
|
|
|
# Iniciar
|
|
docker-compose up -d
|
|
```
|
|
|
|
### Opción 2: Servicio systemd
|
|
|
|
Ver `clara.service` para configuración systemd.
|
|
|
|
## Nginx Reverse Proxy
|
|
|
|
```nginx
|
|
server {
|
|
listen 80;
|
|
server_name clara.tzzrdeck.me;
|
|
|
|
location / {
|
|
proxy_pass http://localhost:5051;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
}
|
|
}
|
|
```
|
|
|
|
## Monitoreo
|
|
|
|
### Logs
|
|
```bash
|
|
# Docker Compose
|
|
docker-compose logs -f clara
|
|
|
|
# Si usa systemd
|
|
journalctl -u clara -f
|
|
```
|
|
|
|
### Métricas
|
|
```bash
|
|
# Número de contenedores
|
|
docker exec -it clara-postgres psql -U postgres -d tzzr -c "SELECT COUNT(*) FROM clara_log;"
|
|
|
|
# Último contenedor recibido
|
|
docker exec -it clara-postgres psql -U postgres -d tzzr -c "SELECT * FROM clara_summary ORDER BY id DESC LIMIT 1;"
|
|
```
|
|
|
|
## Backup
|
|
|
|
```bash
|
|
# Backup de PostgreSQL
|
|
docker exec clara-postgres pg_dump -U postgres tzzr > clara_backup_$(date +%Y%m%d).sql
|
|
|
|
# Restaurar
|
|
cat clara_backup_20251223.sql | docker exec -i clara-postgres psql -U postgres tzzr
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Error: "unauthorized"
|
|
Verificar que `X-Auth-Key` en el request coincida con `H_INSTANCIA` en `.env`.
|
|
|
|
### Error: "r2_upload_failed"
|
|
Verificar credenciales de R2 y que el bucket existe.
|
|
|
|
### Error: "connection refused" al PostgreSQL
|
|
```bash
|
|
# Verificar que el contenedor está corriendo
|
|
docker ps | grep postgres
|
|
|
|
# Ver logs
|
|
docker logs clara-postgres
|
|
```
|
|
|
|
## Seguridad
|
|
|
|
1. **Firewall**: Solo exponer puerto 5051 a IPs confiables (PACKET)
|
|
2. **Auth**: Usar `H_INSTANCIA` largo y aleatorio
|
|
3. **HTTPS**: Usar reverse proxy con SSL (Let's Encrypt)
|
|
4. **Backup**: Configurar backups automáticos a R2
|
|
|
|
## Próximos pasos
|
|
|
|
Después de desplegar CLARA:
|
|
1. Configurar PACKET para enviar a `https://clara.tzzrdeck.me/ingest`
|
|
2. Implementar MASON para enriquecimiento
|
|
3. Implementar FELDMAN para consolidación
|
|
4. Configurar backups automáticos
|
|
|
|
---
|
|
|
|
*Actualizado: 2025-12-23*
|