shadowcloud icon indicating copy to clipboard operation
shadowcloud copied to clipboard

Universal cloud storage client

shadowcloud Build Status codecov.io

shadowcloud is an enhanced cloud storage client. Download last release

Статья на русском: https://habr.com/post/428523/ Files view

Features

  • Allows to use different storages as one "drive" (virtual region)
  • Enables random file access, media streaming
  • Removes limits on file size, file names, etc
  • Full encryption by default
  • Checksums
  • Deduplication
  • File and directory versioning
  • Generates previews
  • Extracts documents content and metadata
  • Markdown notes
  • Easy web pages archiving
  • FUSE emulated file system (experimental, requires fuse, osxfuse or winfsp)
  • In-mem cache
  • Almost everything is customizable (see reference.conf)

How to use

  • Open http://localhost:1911/, switch to Regions tab
  • Generate new key (copy and save output)
  • Add your cloud storage
    • Example Dropbox configuration:
    credentials.login="[email protected]"
    type=dropbox
    
    • Example Yandex.Disk configuration:
    address.uri="https://webdav.yandex.com"
    credentials {
      login="johndoe"
      password="123456"
    }
    type=webdav
    
  • Create a region and attach storages to it
  • Switch to Folders tab and upload your files

Regions view

Synchronization

  • Import previously generated key on the second device
  • Create region with a same id and storages set (or use the export/import feature)

How to archive web page

shadowcloud uses webzinc to capture web pages in a single HTML file.

Page will be bundled with all of the embedded resources, allowing you to read it even if the original website goes down.

  • Open Upload form in the web interface
  • Select "Paste text"
  • Paste URL in the form and click Submit

rclone integration

If you have configured a rclone drive, you can run rclone mount drive123:/ /mnt/example, and then point the shadowcloud to this location:

address.uri="file:////mnt/example"
type=files

Google Drive quota exceeded error

You can bypass quota error by creating your own API key.

  1. Create API credentials as described here: https://rclone.org/drive/#making-your-own-client-id
  2. Paste your client_id and secret into the storage props in Web UI:
config.gdrive.oauth.secrets.installed {
  "client_id" = "YOUR_ID"
  "client_secret" = "YOUR_SECRET"
}

2.1: Or paste into your global ~/.shadowcloud/shadowcloud.conf:

shadowcloud.storage.gdrive.oauth.secrets.installed {
  "client_id" = "YOUR_ID"
  "client_secret" = "YOUR_SECRET"
}

How to configure Telegram (free+unlimited!) storage

  1. You should have Python 3 installed on your system: https://www.python.org/downloads/ and also the pip package installer: https://pip.pypa.io/en/stable/installing/
  2. Install required packages with pip (executable can be pip3 or pip depending on OS, on Windows it's most likely pip):
    • Linux/MacOS:
    sudo pip3 install "Telethon>=1.14.0" "cryptg==0.2.post1" "Quart>=0.12.0" "Hypercorn>=0.9.5" "lz4==3.1.0" "pytz>=2020.1"
    
    • Windows:
    pip install "Telethon>=1.14.0" "cryptg==0.2.post1" "Quart>=0.12.0" "Hypercorn>=0.9.5" "lz4==3.1.0" "pytz>=2020.1"
    
  3. Create storage with type=telegram and follow instructions

Plugins

Full list of currently supported algorithms (some requires libsodium):

Storages: dropbox, files, gdrive, mailrucloud, memory, webdav
Encryption: AES/CBC, AES/CCM, AES/CFB, AES/CTR, AES/EAX, AES/GCM, AES/OCB, AES/OFB, Blowfish/CBC, Blowfish/CFB, Blowfish/CTR, Blowfish/OFB, CAST5/CBC, CAST5/CFB, CAST5/CTR, CAST5/OFB, CAST6/CBC, CAST6/CCM, CAST6/CFB, CAST6/CTR, CAST6/EAX, CAST6/GCM, CAST6/OCB, CAST6/OFB, Camellia/CBC, Camellia/CCM, Camellia/CFB, Camellia/CTR, Camellia/EAX, Camellia/GCM, Camellia/OCB, Camellia/OFB, ChaCha20, ChaCha20/Poly1305, DES/CBC, DES/CFB, DES/CTR, DES/OFB, DESede/CBC, DESede/CFB, DESede/CTR, DESede/OFB, ECIES, GOST28147/CBC, GOST28147/CFB, GOST28147/CTR, GOST28147/OFB, IDEA/CBC, IDEA/CFB, IDEA/CTR, IDEA/OFB, Noekeon/CBC, Noekeon/CCM, Noekeon/CFB, Noekeon/CTR, Noekeon/EAX, Noekeon/GCM, Noekeon/OCB, Noekeon/OFB, RC2/CBC, RC2/CFB, RC2/CTR, RC2/OFB, RC6/CBC, RC6/CCM, RC6/CFB, RC6/CTR, RC6/EAX, RC6/GCM, RC6/OCB, RC6/OFB, RSA, Rijndael/CBC, Rijndael/CCM, Rijndael/CFB, Rijndael/CTR, Rijndael/EAX, Rijndael/GCM, Rijndael/OCB, Rijndael/OFB, SEED/CBC, SEED/CCM, SEED/CFB, SEED/CTR, SEED/EAX, SEED/GCM, SEED/OCB, SEED/OFB, Salsa20, Serpent/CBC, Serpent/CCM, Serpent/CFB, Serpent/CTR, Serpent/EAX, Serpent/GCM, Serpent/OCB, Serpent/OFB, Shacal2/CBC, Shacal2/CFB, Shacal2/CTR, Shacal2/OFB, Skipjack/CBC, Skipjack/CFB, Skipjack/CTR, Skipjack/OFB, TEA/CBC, TEA/CFB, TEA/CTR, TEA/OFB, Threefish/CBC, Threefish/CFB, Threefish/CTR, Threefish/OFB, Twofish/CBC, Twofish/CCM, Twofish/CFB, Twofish/CTR, Twofish/EAX, Twofish/GCM, Twofish/OCB, Twofish/OFB, X25519+XSalsa20/Poly1305, XSalsa20, XSalsa20/Poly1305, XTEA/CBC, XTEA/CFB, XTEA/CTR, XTEA/OFB
Signatures: ECDSA, Ed25519, RSA
Hashing: Blake2b, GOST3411, Keccak, MD2, MD4, MD5, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA1, SHA224, SHA256, SHA3, SHA384, SHA512, SM3, Skein, Tiger, Whirlpool

Docker image

Docker

Docker image is available at https://hub.docker.com/r/karasiq/shadowcloud/

Usage example:

docker run -v ~/.shadowcloud:/opt/docker/sc -p 1911:1911 -i -t karasiq/shadowcloud:latest

With FUSE drive:

docker run -v ~/.shadowcloud:/opt/docker/sc -v ~/sc:/opt/docker/sc-drive --device /dev/fuse --cap-add SYS_ADMIN -p 1911:1911 -i karasiq/shadowcloud:latest