Actualmente, muchas compañías brindan servicios de almacenamiento en la nube, pero cada una tiene su propio cliente propietario y su funcionalidad, por regla general, deja mucho que desear.
Las alternativas existentes no me convenían por muchas razones, así que decidí hacer mi propio cliente universal - shadowcloud
Algo como esto:

Que puede
- Descarga directa (sin usar un disco local) a Google Drive, Yandex Disk (WebDAV), Cloud Mail.Ru, Dropbox
- Cifrado completo por defecto, una gran selección de algoritmos y configuraciones
- Base de datos protegida por contraseña
- Sumas de comprobación y deduplicación
- Elimina el límite de tamaño de archivo
- Replicar o dividir archivos en diferentes repositorios
- Transmisión de medios ilimitada
- Crea vistas previas y extrae metadatos y texto de documentos
- Versiones de archivos y toda la estructura de directorios
- Notas de rebajas, resaltado de código
- Guarde rápidamente páginas web con recursos integrados
- Almacenamiento en caché de archivos en memoria
- Usar como disco local usando FUSE (requiere winfsp)
- Código abierto, casi todos los aspectos son configurables a través de shadowcloud.conf


Como usar
En realidad, el repositorio
Para usarlo es necesario:
- Genere una clave de cifrado (más tarde deberá importarla en otros dispositivos)
- Configurar almacenamiento en la nube
- Cree una región de datos y conecte el almacenamiento (las ID de región deben coincidir en todos los dispositivos)

Después de eso, puede ir al panel con archivos, seleccionar una región y cargar documentos.
Un poco sobre la implementación
El programa está escrito en Scala y está construido casi por completo en el marco de Akka (actores, transmisiones, http, persistencia), la interfaz está escrita completamente en Scala.js.
Bouncy Castle y opcionalmente libsodium se utilizan para el cifrado (algoritmos predeterminados: Blake2b / ChaCha20 / ECIES / ECDSA).
Apache Tika y JavaCV están excluidos de la versión ligera debido a su gran tamaño; se utilizan para extraer metadatos de documentos y crear vistas previas para videos.