ShadowCloud - universal cloud client
Currently, many companies provide cloud storage services, but each has its own proprietary client and their functionality, as a rule, leaves much to be desired.
The existing alternatives did not suit me for many reasons, so I decided to make my own universal client - shadowcloud
Something like this:
- Direct download (without using a local disk) to Google Drive, Yandex Disk (WebDAV), Cloud Mail.Ru, Dropbox
- Full encryption by default, a large selection of algorithms and settings
- Password Protected Database
- Checksums and Deduplication
- Removes file size limit
- Replicate or split files across different repositories
- Unlimited media streaming
- Creates previews and extracts metadata and text documents
- Versioning files and the entire directory structure
- Markdown notes, code highlighting
- Quickly save web pages with embedded resources
- In-memory file caching
- Use as a local disk using FUSE (requires winfsp)
- Open source, almost every aspect is configurable via shadowcloud.conf
How to use
To use it is necessary:
- Generate an encryption key (later you need to import it on other devices)
- Set up cloud storage
- Create a data region and connect storage to it (region IDs must match on all devices)
After that, you can go to the panel with files, select a region and upload documents.
A bit about implementation
The program is written in Scala and is almost entirely built on the Akka framework (actors, streams, http, persistence), the frontend is written entirely on Scala.js.
Bouncy Castle and optionally libsodium are used for encryption (default algorithms: Blake2b / ChaCha20 / ECIES / ECDSA).
Apache Tika and JavaCV are excluded from the light version due to their large size; they are used to extract metadata from documents and create previews for videos.