Update to Skynet v7 - Complete documentation restructure
- Nueva estructura de carpetas según Skynet v7 - Añadidos schemas SQL completos - Documentación de entidades, componentes e integraciones - Modelo de seguridad actualizado - Infraestructura y operaciones reorganizadas
This commit is contained in:
83
04_INFRAESTRUCTURA/architect.md
Normal file
83
04_INFRAESTRUCTURA/architect.md
Normal file
@@ -0,0 +1,83 @@
|
||||
# ARCHITECT
|
||||
|
||||
**Tipo:** Servidor Central
|
||||
**Estado:** Operativo
|
||||
|
||||
---
|
||||
|
||||
## Descripción
|
||||
|
||||
Coordinador central del ecosistema. Contiene servicios compartidos y actúa como hub de desarrollo y despliegue.
|
||||
|
||||
---
|
||||
|
||||
## Servicios
|
||||
|
||||
| Servicio | Puerto | Función |
|
||||
|----------|--------|---------|
|
||||
| PostgreSQL | 5432 | Base de datos central |
|
||||
| Gitea | 3000 | Repositorios Git |
|
||||
| Infisical | 8082 | Gestión de secretos |
|
||||
| Orchestrator | 5000 | Coordinación multi-agente |
|
||||
|
||||
---
|
||||
|
||||
## Arquitectura
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ ARCHITECT │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
||||
│ │ PostgreSQL │ │ Gitea │ │ Infisical │ │
|
||||
│ │ (datos) │ │ (repos) │ │ (secretos) │ │
|
||||
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────┐ ┌─────────────┐ │
|
||||
│ │ Orchestrator│ │ Backups │ │
|
||||
│ │ (agentes) │ │ (R2) │ │
|
||||
│ └─────────────┘ └─────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Repositorios Gitea
|
||||
|
||||
| Categoría | Repos |
|
||||
|-----------|-------|
|
||||
| **tzzr/** | system-docs, architect, deck, corp, hst, etc. |
|
||||
| **admin/** | architect-app, data-structures, credentials |
|
||||
|
||||
---
|
||||
|
||||
## Infisical
|
||||
|
||||
Gestor centralizado de secretos.
|
||||
|
||||
| Parámetro | Valor |
|
||||
|-----------|-------|
|
||||
| Proyectos | anthropic, servers, databases, r2 |
|
||||
| Acceso | Machine Identities por cada instancia |
|
||||
|
||||
---
|
||||
|
||||
## Función
|
||||
|
||||
ARCHITECT es un **constructor de arquitecturas**, no un gestor permanente:
|
||||
|
||||
1. Diseña y construye la arquitectura de cada servidor
|
||||
2. Despliega configuraciones
|
||||
3. Mantiene repositorios
|
||||
4. Las instancias (DECK, CORP) funcionan independientemente
|
||||
|
||||
---
|
||||
|
||||
## Backups
|
||||
|
||||
| Destino | Frecuencia | Contenido |
|
||||
|---------|------------|-----------|
|
||||
| R2 (architect) | Diario | PostgreSQL, Gitea |
|
||||
| R2 (gitea) | Por commit | Repos bare |
|
||||
131
04_INFRAESTRUCTURA/backup-recovery.md
Normal file
131
04_INFRAESTRUCTURA/backup-recovery.md
Normal file
@@ -0,0 +1,131 @@
|
||||
# Backup y Recovery
|
||||
|
||||
**Versión:** 1.0
|
||||
**Estado:** Definición
|
||||
|
||||
---
|
||||
|
||||
## Estrategia
|
||||
|
||||
| Tipo | Frecuencia | Retención | Destino |
|
||||
|------|------------|-----------|---------|
|
||||
| **PostgreSQL** | Diario | 30 días | R2 |
|
||||
| **Gitea repos** | Por commit | Indefinido | R2 |
|
||||
| **Archivos** | Diario | 30 días | R2 |
|
||||
| **Configuración** | Por cambio | Indefinido | Gitea |
|
||||
|
||||
---
|
||||
|
||||
## Backup PostgreSQL
|
||||
|
||||
### Script
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# backup-postgres.sh
|
||||
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
BACKUP_FILE="postgres_backup_${DATE}.sql.gz"
|
||||
|
||||
# Dump
|
||||
pg_dump -U $DB_USER -h $DB_HOST $DB_NAME | gzip > /tmp/$BACKUP_FILE
|
||||
|
||||
# Upload a R2
|
||||
aws s3 cp /tmp/$BACKUP_FILE s3://$R2_BUCKET/backups/postgres/$BACKUP_FILE \
|
||||
--endpoint-url $R2_ENDPOINT
|
||||
|
||||
# Limpiar local
|
||||
rm /tmp/$BACKUP_FILE
|
||||
|
||||
# Limpiar antiguos (>30 días)
|
||||
aws s3 ls s3://$R2_BUCKET/backups/postgres/ --endpoint-url $R2_ENDPOINT | \
|
||||
while read -r line; do
|
||||
createDate=$(echo $line | awk '{print $1}')
|
||||
if [[ $(date -d "$createDate" +%s) -lt $(date -d "30 days ago" +%s) ]]; then
|
||||
fileName=$(echo $line | awk '{print $4}')
|
||||
aws s3 rm s3://$R2_BUCKET/backups/postgres/$fileName --endpoint-url $R2_ENDPOINT
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
### Cron
|
||||
|
||||
```bash
|
||||
0 3 * * * /opt/scripts/backup-postgres.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Recovery PostgreSQL
|
||||
|
||||
```bash
|
||||
# Descargar backup
|
||||
aws s3 cp s3://$R2_BUCKET/backups/postgres/$BACKUP_FILE /tmp/ \
|
||||
--endpoint-url $R2_ENDPOINT
|
||||
|
||||
# Restaurar
|
||||
gunzip -c /tmp/$BACKUP_FILE | psql -U $DB_USER -h $DB_HOST $DB_NAME
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Backup Gitea
|
||||
|
||||
Los repositorios bare se sincronizan automáticamente a R2:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# backup-gitea.sh
|
||||
|
||||
rsync -av /var/lib/gitea/git/repositories/ /tmp/gitea_repos/
|
||||
|
||||
tar -czf /tmp/gitea_backup_$(date +%Y%m%d).tar.gz -C /tmp gitea_repos/
|
||||
|
||||
aws s3 cp /tmp/gitea_backup_*.tar.gz s3://$R2_BUCKET/backups/gitea/ \
|
||||
--endpoint-url $R2_ENDPOINT
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Disaster Recovery
|
||||
|
||||
### Escenario: Pérdida total del servidor
|
||||
|
||||
1. Aprovisionar nuevo servidor
|
||||
2. Instalar Docker
|
||||
3. Clonar repos de configuración desde R2/Gitea backup
|
||||
4. Restaurar PostgreSQL desde R2
|
||||
5. `docker-compose up -d`
|
||||
6. Verificar servicios
|
||||
7. Actualizar DNS
|
||||
|
||||
### RTO/RPO
|
||||
|
||||
| Métrica | Objetivo |
|
||||
|---------|----------|
|
||||
| **RPO** (Recovery Point Objective) | 24 horas |
|
||||
| **RTO** (Recovery Time Objective) | 4 horas |
|
||||
|
||||
---
|
||||
|
||||
## Verificación de Backups
|
||||
|
||||
```bash
|
||||
# Verificar integridad mensualmente
|
||||
#!/bin/bash
|
||||
|
||||
# Descargar último backup
|
||||
LATEST=$(aws s3 ls s3://$R2_BUCKET/backups/postgres/ --endpoint-url $R2_ENDPOINT | tail -1 | awk '{print $4}')
|
||||
|
||||
aws s3 cp s3://$R2_BUCKET/backups/postgres/$LATEST /tmp/ --endpoint-url $R2_ENDPOINT
|
||||
|
||||
# Restaurar en BD temporal
|
||||
createdb -U $DB_USER test_restore
|
||||
gunzip -c /tmp/$LATEST | psql -U $DB_USER test_restore
|
||||
|
||||
# Verificar tablas
|
||||
psql -U $DB_USER test_restore -c "\dt"
|
||||
|
||||
# Limpiar
|
||||
dropdb -U $DB_USER test_restore
|
||||
```
|
||||
126
04_INFRAESTRUCTURA/despliegue.md
Normal file
126
04_INFRAESTRUCTURA/despliegue.md
Normal file
@@ -0,0 +1,126 @@
|
||||
# Despliegue
|
||||
|
||||
**Versión:** 1.0
|
||||
**Estado:** Definición
|
||||
|
||||
---
|
||||
|
||||
## Stack Tecnológico
|
||||
|
||||
| Componente | Tecnología |
|
||||
|------------|------------|
|
||||
| Contenedores | Docker + Docker Compose |
|
||||
| Base de datos | PostgreSQL |
|
||||
| Cache | Redis |
|
||||
| Proxy | Caddy |
|
||||
| Orquestación | Windmill |
|
||||
|
||||
---
|
||||
|
||||
## Docker Compose Base
|
||||
|
||||
```yaml
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:15
|
||||
environment:
|
||||
POSTGRES_USER: ${DB_USER}
|
||||
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
||||
POSTGRES_DB: ${DB_NAME}
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
redis:
|
||||
image: redis:7-alpine
|
||||
volumes:
|
||||
- redis_data:/data
|
||||
|
||||
caddy:
|
||||
image: caddy:2-alpine
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
volumes:
|
||||
- ./Caddyfile:/etc/caddy/Caddyfile
|
||||
- caddy_data:/data
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
redis_data:
|
||||
caddy_data:
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Checklist de Despliegue
|
||||
|
||||
### Pre-despliegue
|
||||
|
||||
- [ ] Servidor aprovisionado
|
||||
- [ ] DNS configurado
|
||||
- [ ] Secretos en Infisical
|
||||
- [ ] Backup de datos existentes
|
||||
|
||||
### Despliegue
|
||||
|
||||
- [ ] Clonar repositorio
|
||||
- [ ] Copiar .env desde Infisical
|
||||
- [ ] `docker-compose up -d`
|
||||
- [ ] Verificar healthchecks
|
||||
- [ ] Aplicar schemas SQL
|
||||
|
||||
### Post-despliegue
|
||||
|
||||
- [ ] Verificar servicios
|
||||
- [ ] Configurar backups
|
||||
- [ ] Test de endpoints
|
||||
- [ ] Documentar IPs y puertos
|
||||
|
||||
---
|
||||
|
||||
## Variables de Entorno
|
||||
|
||||
```bash
|
||||
# Base de datos
|
||||
DB_HOST=localhost
|
||||
DB_PORT=5432
|
||||
DB_USER=tzzr
|
||||
DB_PASSWORD=****
|
||||
DB_NAME=tzzr
|
||||
|
||||
# Redis
|
||||
REDIS_URL=redis://localhost:6379
|
||||
|
||||
# R2 Storage
|
||||
R2_ENDPOINT=https://{account}.r2.cloudflarestorage.com
|
||||
R2_ACCESS_KEY=****
|
||||
R2_SECRET_KEY=****
|
||||
R2_BUCKET=****
|
||||
|
||||
# Servicios externos
|
||||
ANTHROPIC_API_KEY=****
|
||||
RUNPOD_API_KEY=****
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Rollback
|
||||
|
||||
```bash
|
||||
# Parar servicios
|
||||
docker-compose down
|
||||
|
||||
# Restaurar backup
|
||||
pg_restore -U tzzr -d tzzr backup.dump
|
||||
|
||||
# Volver a versión anterior
|
||||
git checkout {commit_anterior}
|
||||
docker-compose up -d
|
||||
```
|
||||
114
04_INFRAESTRUCTURA/status.md
Normal file
114
04_INFRAESTRUCTURA/status.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# Estado del Sistema
|
||||
|
||||
**Última actualización:** 2024-12-24 10:45 UTC
|
||||
|
||||
---
|
||||
|
||||
## Estado Rápido
|
||||
|
||||
```
|
||||
Pipeline de Ingesta: [########--] 80%
|
||||
Procesamiento IA: [#---------] 10% (GRACE pendiente)
|
||||
Apps Usuario: [----------] 0%
|
||||
Observabilidad: [----------] 0%
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Servicios Activos
|
||||
|
||||
### DECK (72.62.1.113) - tzzrdeck.me
|
||||
|
||||
| Servicio | Puerto | Función | Estado |
|
||||
|----------|--------|---------|--------|
|
||||
| Clara (secretaría) | 5051 | Ingesta de datos | ✓ OK |
|
||||
| Alfred (producción) | 5052 | Flujos predefinidos | ✓ OK |
|
||||
| Mason (administración) | 5053 | Enriquecimiento | ⚠ Pendiente |
|
||||
| Feldman (contable) | 5054 | Consolidación | ⚠ Pendiente |
|
||||
|
||||
### CORP (92.112.181.188) - tzzrcorp.me
|
||||
|
||||
| Servicio | Puerto | Función | Estado |
|
||||
|----------|--------|---------|--------|
|
||||
| Margaret (secretaría) | 5051 | Ingesta de datos | ✓ OK |
|
||||
| Jared (producción) | 5052 | Flujos predefinidos | ✓ OK |
|
||||
| Mason (administración) | 5053 | Enriquecimiento | ✓ OK |
|
||||
| Feldman (contable) | 5054 | Consolidación | ✓ OK |
|
||||
|
||||
### RunPod (Serverless)
|
||||
|
||||
| Servicio | Endpoint ID | Función | Estado |
|
||||
|----------|-------------|---------|--------|
|
||||
| GRACE | r00x4g3rrwkbyh | GPU Processing | ⚠ Pendiente Docker image |
|
||||
| PENNY | 0mxhaokgsmgee3 | Asistente voz | ✓ OK |
|
||||
| FACTORY | - | Generación | ⚠ Pendiente |
|
||||
|
||||
### Infraestructura
|
||||
|
||||
| Servicio | Servidor | Puerto | Estado |
|
||||
|----------|----------|--------|--------|
|
||||
| Gitea | ARCHITECT | 3000 | ✓ OK |
|
||||
| Directus | Todos | 8055 | ✓ OK |
|
||||
| HST | HST | 80 | ✓ OK |
|
||||
| Infisical | ARCHITECT | 8082 | ✓ OK |
|
||||
|
||||
---
|
||||
|
||||
## Fases Completadas
|
||||
|
||||
| Fase | Descripción | Fecha |
|
||||
|------|-------------|-------|
|
||||
| 0 | Limpieza y consolidación | 2024-12-24 |
|
||||
| 1 | Pipeline mínimo - Clara (secretaría) | 2024-12-24 |
|
||||
| 3 | Flujo empresarial - Margaret (secretaría) | 2024-12-24 |
|
||||
| 4 | Alfred/Jared (producción), Mason (administración), Feldman (contable) | 2024-12-24 |
|
||||
|
||||
---
|
||||
|
||||
## h_instancia (Auth Keys)
|
||||
|
||||
| Servidor | Hash |
|
||||
|----------|------|
|
||||
| DECK | `f25e44ac3c075f57b9a198c880cb1fc05cf3af56f6466828b405d8c062374179` |
|
||||
| CORP | `ea9e99d5f95bcc23749d5f25b71a5b520ae7917438912fc6e29564534484a514` |
|
||||
|
||||
---
|
||||
|
||||
## Endpoints de Verificación
|
||||
|
||||
```bash
|
||||
# DECK (tzzrdeck.me)
|
||||
curl http://72.62.1.113:5051/health # Clara (secretaría)
|
||||
curl http://72.62.1.113:5052/health # Alfred (producción)
|
||||
curl http://72.62.1.113:5053/health # Mason (administración)
|
||||
curl http://72.62.1.113:5054/health # Feldman (contable)
|
||||
|
||||
# CORP (tzzrcorp.me)
|
||||
curl http://92.112.181.188:5051/health # Margaret (secretaría)
|
||||
curl http://92.112.181.188:5052/health # Jared (producción)
|
||||
curl http://92.112.181.188:5053/health # Mason (administración)
|
||||
curl http://92.112.181.188:5054/health # Feldman (contable)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Bloqueadores Actuales
|
||||
|
||||
| Componente | Bloqueador | Impacto |
|
||||
|------------|------------|---------|
|
||||
| GRACE | Docker image en RunPod | Procesamiento IA |
|
||||
|
||||
---
|
||||
|
||||
## Próximos Pasos
|
||||
|
||||
### Inmediato
|
||||
|
||||
1. **GRACE** - Construir Docker image y desplegar en RunPod
|
||||
2. **PACKET** - Publicar APK
|
||||
|
||||
### Posterior
|
||||
|
||||
1. SENTINEL - Observabilidad
|
||||
2. THE-FACTORY - Generación contenido
|
||||
3. PENNY - Procesamiento voz
|
||||
Reference in New Issue
Block a user