{"id":17084829,"url":"https://github.com/karasiq/shadowcloud","last_synced_at":"2025-04-19T18:13:39.607Z","repository":{"id":62605080,"uuid":"102305795","full_name":"Karasiq/shadowcloud","owner":"Karasiq","description":"Universal cloud storage client","archived":false,"fork":false,"pushed_at":"2024-08-19T16:04:52.000Z","size":10878,"stargazers_count":73,"open_issues_count":31,"forks_count":6,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-29T11:34:32.728Z","etag":null,"topics":["cloudstorage","cryptography","scala"],"latest_commit_sha":null,"homepage":"","language":"CSS","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Karasiq.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-04T01:22:44.000Z","updated_at":"2025-03-03T16:24:14.000Z","dependencies_parsed_at":"2024-11-07T16:00:59.126Z","dependency_job_id":"22a2d63e-059f-47a7-a7f8-e67960081234","html_url":"https://github.com/Karasiq/shadowcloud","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Karasiq%2Fshadowcloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Karasiq%2Fshadowcloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Karasiq%2Fshadowcloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Karasiq%2Fshadowcloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Karasiq","download_url":"https://codeload.github.com/Karasiq/shadowcloud/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249760306,"owners_count":21321843,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloudstorage","cryptography","scala"],"created_at":"2024-10-14T13:09:45.533Z","updated_at":"2025-04-19T18:13:39.577Z","avatar_url":"https://github.com/Karasiq.png","language":"CSS","readme":"# [shadowcloud](https://karasiq.github.io/shadowcloud) [![Build Status](https://travis-ci.org/Karasiq/shadowcloud.svg?branch=master)](https://travis-ci.org/Karasiq/shadowcloud) [![codecov.io](https://codecov.io/github/Karasiq/shadowcloud/coverage.svg?branch=master)](https://codecov.io/github/Karasiq/shadowcloud?branch=master)\nshadowcloud is an enhanced cloud storage client. [Download last release](https://github.com/Karasiq/shadowcloud/releases)\n\nСтатья на русском: https://habr.com/post/428523/\n![Files view](https://github.com/Karasiq/shadowcloud/raw/master/images/files%20view.png \"Files view\")\n\n# Features\n* Allows to use different storages as one \"drive\" (virtual region)\n* Enables random file access, media streaming\n* Removes limits on file size, file names, etc\n* Full encryption by default\n* Checksums\n* Deduplication\n* File and directory versioning\n* Generates previews\n* Extracts documents content and metadata\n* Markdown notes\n* Easy web pages archiving\n* FUSE emulated file system (experimental, requires [fuse, osxfuse or winfsp](https://github.com/SerCeMan/jnr-fuse/blob/master/INSTALLATION.md))\n* In-mem cache \n* Almost everything is customizable (see [reference.conf](https://github.com/Karasiq/shadowcloud/blob/master/core/src/main/resources/reference.conf))\n\n# How to use\n* Open http://localhost:1911/, switch to Regions tab\n* Generate new key (copy and save output)\n* Add your cloud storage\n  * Example Dropbox configuration:\n  ```\n  credentials.login=\"test@firemail.cc\"\n  type=dropbox\n  ```\n  * Example Yandex.Disk configuration:\n  ```\n  address.uri=\"https://webdav.yandex.com\"\n  credentials {\n    login=\"johndoe\"\n    password=\"123456\"\n  }\n  type=webdav\n  ```\n* Create a region and attach storages to it\n* Switch to Folders tab and upload your files\n\n![Regions view](https://github.com/Karasiq/shadowcloud/raw/master/images/regions%20view.png \"Regions view\")\n\n# Synchronization\n* Import previously generated key on the second device\n* Create region with a same id and storages set (or use the export/import feature)\n\n# How to archive web page\nshadowcloud uses [webzinc](https://github.com/Karasiq/webzinc) to capture web pages in a single HTML file.\n\nPage will be bundled with all of the embedded resources, allowing you to read it even if the original website goes down.\n* Open Upload form in the web interface\n* Select \"Paste text\"\n* Paste URL in the form and click Submit\n\n# rclone integration\nIf you have configured a rclone drive, you can run `rclone mount drive123:/ /mnt/example`, and then point the shadowcloud to this location: \n```\naddress.uri=\"file:////mnt/example\"\ntype=files\n```\n\n# Google Drive quota exceeded error\nYou can bypass quota error by creating your own API key.\n\n1. Create API credentials as described here: https://rclone.org/drive/#making-your-own-client-id\n2. Paste your client_id and secret into the storage props in Web UI:\n```hocon\nconfig.gdrive.oauth.secrets.installed {\n  \"client_id\" = \"YOUR_ID\"\n  \"client_secret\" = \"YOUR_SECRET\"\n}\n```\n2.1: Or paste into your global ~/.shadowcloud/shadowcloud.conf: \n```hocon\nshadowcloud.storage.gdrive.oauth.secrets.installed {\n  \"client_id\" = \"YOUR_ID\"\n  \"client_secret\" = \"YOUR_SECRET\"\n}\n```\n\n# How to configure Telegram (free+unlimited!) storage\n1. 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/\n2. Install required packages with pip (executable can be `pip3` or `pip` depending on OS, on Windows it's most likely `pip`):\n    * Linux/MacOS:\n    ```bash\n    sudo pip3 install \"Telethon\u003e=1.14.0\" \"cryptg==0.2.post1\" \"Quart\u003e=0.12.0\" \"Hypercorn\u003e=0.9.5\" \"lz4==3.1.0\" \"pytz\u003e=2020.1\"\n    ```\n    * Windows:\n    ```bash\n    pip install \"Telethon\u003e=1.14.0\" \"cryptg==0.2.post1\" \"Quart\u003e=0.12.0\" \"Hypercorn\u003e=0.9.5\" \"lz4==3.1.0\" \"pytz\u003e=2020.1\"\n    ```\n3. Create storage with `type=telegram` and follow instructions\n\n# Plugins\nFull list of currently supported algorithms (some requires libsodium):\n```\nStorages: dropbox, files, gdrive, mailrucloud, memory, webdav\nEncryption: 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\nSignatures: ECDSA, Ed25519, RSA\nHashing: Blake2b, GOST3411, Keccak, MD2, MD4, MD5, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA1, SHA224, SHA256, SHA3, SHA384, SHA512, SM3, Skein, Tiger, Whirlpool\n```\n\n# Docker image\n[![Docker](http://dockeri.co/image/karasiq/shadowcloud)](https://hub.docker.com/r/karasiq/shadowcloud/)\n\nDocker image is available at https://hub.docker.com/r/karasiq/shadowcloud/\n\nUsage example:\n```bash\ndocker run -v ~/.shadowcloud:/opt/docker/sc -p 1911:1911 -i -t karasiq/shadowcloud:latest\n```\n\nWith FUSE drive:\n```bash\ndocker 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\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarasiq%2Fshadowcloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkarasiq%2Fshadowcloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkarasiq%2Fshadowcloud/lists"}