# Usando caché compartida

Shared Cache es un servidor local que permite a los equipos compartir de forma segura archivos que han sido accedidos por otros miembros del equipo dentro de la misma LAN.

Como ejemplo:

1. **Miembro del equipo 1** accede `large_video.mp4` mientras está conectado al shared cache
2. ShadeFS comienza a servir ese archivo a **Miembro del equipo 1** desde la nube
3. En segundo plano, el shared cache también comienza a almacenar en caché `large_video.mp4`
4. El shared cache termina completamente de almacenar en caché `large_video.mp4`
5. **Miembro del equipo 2** ahora accede `large_video.mp4` en ShadeFS
6. El shared cache ejecuta comprobaciones de permisos para validar **Miembro del equipo 2** tiene acceso a `large_video.mp4`
7. `large_video.mp4` se sirve inmediatamente a la máxima velocidad de la LAN desde el shared cache

En esta configuración, el segundo acceso se sirve a la máxima velocidad, haciendo la reproducción en gran parte instantánea y evitando el uso de ancho de banda contra la nube. Las grandes instancias de shared cache pueden prácticamente evitar los viajes de ida y vuelta a la nube excepto en el primer acceso.

## Descarga e instalación

Shared Cache es un ejecutable de terminal sin interfaz de usuario. Puedes obtener una versión para descargar solicitándola. Los valores predeterminados suelen ser correctos para la mayoría de las configuraciones, lo que significa que para la mayoría de las personas normalmente es solo un doble clic para iniciar.

## Compatibilidad con S3

Shared Cache admite el uso tanto de un backend local (disco) como de un destino S3 local para almacenar en caché los datos. Esto puede habilitarse pasando `--storage-backend=s3` con el endpoint, bucket, región, access y secret.

## Opciones de configuración

```bash
Uso: shared-cache [opciones]

Opciones:
  --port <number>                    Puerto del servidor (por defecto: 8003)
  --fs-ws-url <url>                  URL WebSocket upstream de ShadeFS (por defecto: wss://fs.shade.inc)
  --fs-api-url <url>                 URL API upstream de ShadeFS (por defecto: https://fs.shade.inc)
  --local-cache-location <path>            Directorio de almacenamiento de la caché (por defecto: ./cache)
  --database-location <path>         Ruta del archivo de base de datos SQLite (por defecto: ./shared_cache.db)
  --max-cache-size <bytes>           Tamaño máximo de la caché en bytes (por defecto: 500GB)
  --cache-check-interval <ms>        Intervalo de limpieza de la caché en milisegundos (por defecto: 300000)
  --storage-backend <type>           Backend de almacenamiento: filesystem o s3 (por defecto: filesystem)
  --discovery-server-name <name>     Nombre del servicio mDNS (por defecto: Default Name)

  Opciones de almacenamiento S3 (cuando --storage-backend=s3):
  --s3-endpoint <url>                URL del endpoint S3
  --s3-bucket <name>                 Nombre del bucket S3
  --s3-region <region>               Región S3
  --s3-access-key-id <key>           ID de la clave de acceso S3
  --s3-secret-access-key <secret>    Clave secreta de acceso S3
  --s3-path-prefix <prefix>          Prefijo de clave S3 (opcional)

  Opciones avanzadas:
  --download-worker-count <number>   Número de trabajadores de descarga (por defecto: 5)
  --download-concurrent-chunks <n>   Fragmentos concurrentes por trabajador (por defecto: 4)
  --download-chunk-size <bytes>      Tamaño de fragmento de descarga (por defecto: 128MB)
  --upload-concurrent-chunks <n>     Fragmentos concurrentes de subida (por defecto: 4)
  --upload-chunk-size <bytes>        Tamaño de fragmento de subida (por defecto: 64MB)
  --version, -v                      Mostrar información de la versión
  --help, -h                         Mostrar este mensaje de ayuda

Variables de entorno:
  Todas las opciones también pueden establecerse mediante variables de entorno usando SCREAMING_SNAKE_CASE.
  Ejemplo: PORT, FS_WS_URL, CACHE_LOCATION, MAX_CACHE_SIZE_BYTES, etc.

Ejemplos:
  ./shared-cache --port 8080 --local-cache-location /var/cache/shade
  ./shared-cache --storage-backend s3 --s3-bucket my-bucket --s3-region us-east-1
  PORT=8080 LOCAL_CACHE_LOCATION=/var/cache/shade ./shared-cache
```

## Unirse al Shared Cache

Dado que los permisos los gestiona el Shared Cache, unirse es increíblemente fácil y no requiere contraseña. El shared cache se anuncia usando bonjour. En la mayoría de los casos los clientes en la misma red lo detectan y aparecerá un modal preguntando si desean unirse.

Si no aparece un modal, se puede unir al caché directamente yendo a Ajustes → Shared Cache → Conectar manualmente e ingresando la dirección. Un ejemplo de entrada podría verse como `http://192.168.1.45:8003`
