diff --git a/04_INFRAESTRUCTURA/NEXTCLOUD.md b/04_INFRAESTRUCTURA/NEXTCLOUD.md new file mode 100644 index 0000000..f6e9a80 --- /dev/null +++ b/04_INFRAESTRUCTURA/NEXTCLOUD.md @@ -0,0 +1,64 @@ +# Nextcloud - Sistema de Almacenamiento + +## Instancias + +| Servidor | URL | Usuario | Symlink Local | +|----------|-----|---------|---------------| +| ARCHITECT | cloud.tzzrarchitect.me | architect | /nextc_architect → files/ | +| DECK | cloud.tzzrdeck.me | deck | /nextc_deck → bandeja de salida/ | +| HST | cloud.tzrtech.org | hst | /nextc_hst → files/ | + +## Arquitectura + +Cada instancia corre en Docker: +- `nextcloud:32` - Servidor Nextcloud +- `postgres:16-alpine` - Base de datos +- `redis:7-alpine` - Cache + +Los datos se almacenan en volúmenes Docker: +``` +/var/lib/docker/volumes/nextcloud_nextcloud-data/_data/data/{usuario}/files/ +``` + +Los symlinks `/nextc_*` apuntan directamente a estas carpetas para acceso rápido desde scripts. + +## Configuración Caddy + +```caddyfile +# ARCHITECT +cloud.tzzrarchitect.me { + reverse_proxy localhost:8085 +} + +# DECK +cloud.tzzrdeck.me { + reverse_proxy localhost:8084 +} + +# HST +cloud.tzrtech.org { + reverse_proxy localhost:8084 +} +``` + +## Comandos Útiles + +```bash +# Escanear archivos de usuario +docker exec -u www-data nextcloud php occ files:scan {usuario} + +# Listar usuarios +docker exec nextcloud php occ user:list + +# Ver configuración +docker exec nextcloud php occ config:list +``` + +## Convenciones de Nombres + +Todos los archivos siguen el formato: `yymmdd_nombre_archivo.ext` +- yy: año (2 dígitos) +- mm: mes +- dd: día + +Caracteres especiales (acentos) se convierten a ASCII para compatibilidad. diff --git a/05_INTEGRACIONES/SYNC_ATC_R2.md b/05_INTEGRACIONES/SYNC_ATC_R2.md new file mode 100644 index 0000000..4e01516 --- /dev/null +++ b/05_INTEGRACIONES/SYNC_ATC_R2.md @@ -0,0 +1,75 @@ +# Sincronización ATC ↔ R2 ↔ Nextcloud + +## Objetivo + +Sincronizar archivos seleccionados desde buckets R2 hacia Nextcloud DECK, permitiendo descarga selectiva en dispositivos locales (Mac). + +## Arquitectura + +``` +┌─────────────┐ ┌──────────────┐ ┌─────────────┐ ┌─────────┐ +│ R2/S3 │ │ Windmill │ │ Nextcloud │ │ Mac │ +│ deck/ │────▶│ flow.tzzr │────▶│ /nextc_ │────▶│ Local │ +│ personaldeck│ │ deck.me │ │ deck/sync │ │ Sync │ +└─────────────┘ └──────────────┘ └─────────────┘ └─────────┘ + │ + ▼ + ┌──────────────┐ + │ PostgreSQL │ + │ atc_status │ + └──────────────┘ +``` + +## Tablas PostgreSQL + +### tzzr_storage.buckets +Configuración de buckets R2. + +| bucket_mrf | name | endpoint | +|------------|------|----------| +| d83032... | deck | R2 Cloudflare | +| c1b0e6... | personaldeck | R2 Cloudflare | + +### tzzr_storage.atc +Catálogo de archivos con metadata. + +| Campo | Descripción | +|-------|-------------| +| mrf | Hash único del archivo | +| private_mrf | Hash privado | +| bucket_mrf | FK a buckets | +| roothash | Ruta/estructura del archivo (pendiente) | +| ref | Tipo: img, doc, cad, etc. | + +### tzzr_storage.atc_status +Lista blanca de archivos a sincronizar. + +| Campo | Descripción | +|-------|-------------| +| mrf | FK a atc | +| status | enable / disable / deleted | +| bucket_mrf | FK a buckets | + +## Flujo de Sincronización + +1. Usuario marca archivo en `atc_status` con `status='enable'` +2. Windmill detecta cambio (trigger/schedule) +3. Script consulta archivos con `status='enable'` +4. Para cada archivo: + - Obtiene ruta de `roothash` + - Descarga de R2 a `/nextc_deck/sync/{ruta}/` +5. Nextcloud detecta archivos nuevos +6. Mac sincroniza via app Nextcloud + +## Windmill + +- URL: `flow.tzzrdeck.me` +- Puerto interno: 8100 +- Propósito: Orquestación de workflows + +## Pendiente + +- [ ] Definir formato de `roothash` +- [ ] Crear workflow en Windmill +- [ ] Configurar trigger (webhook vs schedule) +- [ ] Implementar script de sync