bewCloud
bewcloud.comWebModern and simpler alternative to Nextcloud/ownCloud crafted with TypeScript. Unifies file management, sync, sharing, notes, RSS, expenses, calendars, contacts, and photos, with MFA, WebDAV, CalDAV, CardDAV, SSO, and more.
- Homepage:bewcloud.com
- GitHub:github.com/bewcloud/bewcloud
- Web info:web-check.xyz/check/bewcloud.com
bewCloud Source Code
Author
Description
A simpler alternative to Nextcloud and ownCloud, built with TypeScript and Deno. 🦕
Homepage
https://bewcloud.comRepository
- LicenseAGPL-3.0
- Created16 Mar 24
- Primary languageTypeScript
- Size1,571 KB
- Stars1,240
- Forks60
- Watchers1,240
Top Contributors
@BrunoBernardino (193)
@medallyon (9)
@ntninja (7)
@aquaspy (2)
@loboda4450 (2)
@0xGingi (1)
@thjxs (1)
@BaccanoMob (1)
@DcZipPL (1)
@ryuuzake (1)
@sergi0g (1)
@qwist1233-cpu (1)
@themadbit (1)
@theophinetheodore (1)
@stakeswky (1)
Recent Commits
Bruno Bernardino(17 Oct 26)
Prepare next default release
Bruno Bernardino(17 Oct 26)
Fix tests and directory cache misses
qwist1233-cpu(17 Oct 26)
Validate user-supplied fetch URLs to block SSRF into the network (#187) * Validate user-supplied fetch URLs to block SSRF into the network Feed and preview URLs reach `fetch` straight from the user, so the server could be asked for loopback, private, link-local and container addresses (including the cloud metadata endpoint) and the body came back to the caller. `isFetchableUrl` keeps http/https only and rejects internal hostnames: localhost, single-label container names like `radicale`, the `.localhost/.local/.internal/.home.arpa` suffixes, and the private, loopback, link-local, CGNAT, benchmarking and multicast IPv4/IPv6 ranges (including the decimal, octal and short IPv4 forms, and IPv4-mapped IPv6). Redirects are now followed manually so every hop is checked, since a public URL is free to redirect to an internal one. Co-Authored-By: Claude Opus 5 <[email protected]> * Check the canonical hostname instead of parsing IPv4 and IPv6 `new URL()` normalizes a hostname before `isInternalHostname` ever sees it: the short, decimal and octal IPv4 notations all become dotted form, and IPv6 becomes the bracketed, lowercase, compressed form. So the two parsers only ever received input they could have matched with a regex, and the IPv6 one reimplemented `::` expansion for nothing. Now a dotted-IPv4 match plus a handful of prefix checks cover the same ranges. IPv4-mapped IPv6 is rejected outright rather than unpacked back into octets, as no feed URL is written that way. The existing tests, including the `127.1`, `2130706433` and `0177.0.0.1` cases, pass unchanged: 18 passed, 0 failed. Co-Authored-By: Claude Opus 5 <[email protected]> * Only follow redirect statuses and keep crawling when one feed is rejected Co-Authored-By: Claude Fable 5.1 <[email protected]> * Assert that the fetch stub is called with redirect: 'manual' --------- Co-authored-by: Claude Opus 5 <[email protected]> Co-authored-by: qwist1233-cpu <[email protected]>
Tilman(17 Oct 26)
Fix: directory size timeout fallback (#180) * fix: only fall back to manual directory size walk when du is missing * fix: show unknown directory size instead of 0 B when du times out * perf: calculate directory sizes in the background instead of blocking listings * perf: size a few directories at a time, cache only slow ones, and test directory sizing * fix: cap running directory size calculations process-wide, keep the du-less walk under the same limits, and size a failed du instead of calling it unknown * fix: bound the slow directory size cache, evicting the oldest measurement
Bruno Bernardino(16 Oct 26)
Add new sponsor, PodBy
Bruno Bernardino(12 Oct 26)
Update stable release version
Tilman(12 Oct 26)
Improvement: Upload UX (#179) * change: upload error string format * fix: force browser to always fetch sw.js to pick up code changes * feat: show file-count progress during batch uploads * fix: resync upload state on tab visibility/pageshow to prevent stuck Uploading label * fix: match (name): message error format across files/photos/notes/sw.js * fix: match single-item chunk upload progress copy to fallback path * fix: persist upload error on the job so resync restores it * fix: decrease upload totalCount when directory-delete drops queued items * fix: truncate long file names in upload status row * fix: use globalThis instead of window prefix to satisfy deno lint * fix: don't decrement upload totalCount twice for an already-cancelled item * fix: name the file in single-item upload progress, matching the fallback path * fix: keep the last upload error in the worker so a resync restores it * fix: clear the last upload error on logout * fix: expire the last upload error and give it an id that survives a worker restart * fix: don't re-show a seen upload error on every visit, and clear it in every tab once the worker drops it * fix: truncate the upload error row like the progress row * test: cover upload error resync, logout clearing, dedupe, and the cancelled-item total guard * fix: count a batch abort out of the upload total and keep a drop's last error while its next file starts a new job * fix: match the drag-and-drop upload messages to the (name): message format * fix: clear an expired upload error in a tab that stays open on it * fix: recount the in-flight upload label as a drop's files join, and keep a drop's count when its next file starts a new job * fix: carry over a drop's own upload count, not the drained job's total, when its next file starts a new job * fix: drop a drop's carried upload count once another upload joins its job
Bruno Bernardino(11 Oct 26)
Set new latest stable version
Bruno Bernardino(11 Oct 26)
Make login redirect safer (#184) Fixes #183
Bruno Bernardino(10 Oct 26)
Update version for release
Bruno Bernardino(10 Oct 26)
Fix security issue on file shares (#182) Fixes #181 implementing a series of regression tests.
Bruno Bernardino(10 Oct 26)
Fix security issue on file shares Fixes #181 implementing a series of regression tests.
Tilman(10 Oct 26)
Feature: Drag & Drop (#105) (#178) * Add drag-and-drop upload with conflict resolution * Implement service worker for uploads Allows page refreshes (intentional or accidental) during file and directory uploads without interrupting the upload. * Merge branch 'feature/upload-service-worker' intelligently * Extract upload queue and register SW for Files, Notes, Photos * Ensure TS files like the new `useUploadQueue.ts` are always compiled correctly * Fix a caching bug * Implement suggested Upload Session Tag * Improved Upload error handling * Generate some tests * Update deno.lock * Abort SW upload queue on logout, broadcast upload kind * Tag upload queue items by kind, filter Notes/Files/Photos progress by it * Return 503, not 403, when uploads are refused because the app is disabled * Rebuild compiled components and tailwind output * Give Files and Photos their own upload kind, not a shared default * Rebuild compiled MainFiles/MainPhotos for the per-kind upload fix * Skip files that already exist before uploading them, not after * Rebuild compiled useUploadQueue for the pre-upload existence check * Cancel the upload queue and clean up .chunk-uploads when the destination directory is deleted * Scoped chunk cleanup, selective directory-delete abort, pre-check race/timeout, old-worker fallback * Route upload service worker messages through registration.active, not controller * Build docker image for every branch * fix: remove function async decorators; satisfy tests * Revert edit to build-docker-image * refactor: dedupe drag-and-drop upload logic into shared hook/modal * style: unwrap multi-line comments to single lines * fix: detect and replace existing files in nested drag-and-drop directory uploads * fix: match File Conflict modal theme; add Skip All and Abort Upload * fix: clear stale upload state on empty batch; two-row conflict modal layout; instant upload feedback * fix: only allow dropping files into the window * fix: Abort Upload also cancels service-worker job; equal-width conflict-modal buttons * fix: surface drag-and-drop upload errors and show dropped item name while uploading * chore: rebuild artifacts after dropping upload-progress-ux commits * fix: send overwrite only when user chose Replace or Replace All * fix: write chunked overwrite upload to temp path before replacing original * fix: paginate directory entry reads past the 100-entry batch cap * fix: don't attach drag-and-drop upload handlers on public file-share pages * fix: scope Abort Upload to its own session and block overlapping drops * fix: make drop overlay actually translucent * fix: surface an error when a drop has no files the view accepts * change: show full path in conflict modal, tab to Skip first * change: show conflict-check status text and copy drop cursor * fix: capture path once and surface errors in createDirectoryFromPath * fix: prevent browser navigation on a drop outside the handled area * fix: capture drop-time path before the tree walk, not after * fix: assemble an overwriting chunked upload inside .chunk-uploads so a failure leaves nothing behind * fix: accept photos with an empty MIME type by falling back to the extension list * fix: fall back to dataTransfer.files when the entry walk yields nothing * fix: don't clobber the current directory listing when creating dropped empty directories * change: focus Skip, close the conflict prompt on Escape, and say Replace is permanent * fix: give the conflict-resolution phase its own signals so the worker can't wipe them * fix: scope Abort Upload to the drop it came from instead of the whole session * fix: catch a dropped file clashing with an existing directory name * test: cover the existing-names listing check, including its fail-open path * build: regenerate tailwind css for the conflict modal note * fix: serialize the file picker with drops so a pick mid-resolve can't strand the first batch * build: keep component tests out of the compiled public/components * fix: upload dropped files under the path in view at drop time, same as empty directories * fix: report a dropped empty directory that the server failed to create * fix: fall back to the photo extension list for generic MIME types like application/octet-stream * fix: report the files a mixed drop skips instead of dropping them silently * perf: list a few directories at a time when checking a drop for conflicts * fix: catch a dropped directory whose name an existing file already has * fix: write a small Replace to a temp file and rename it over the original, like chunked uploads * test: cover overwrite-only-on-Replace, batch-scoped Abort, and no drops on share pages * chore: shorten drag-and-drop comments to one short sentence each * fix: offer photo extensions in the Photos picker and word a mixed drop's skip line as a partial success
Bruno Bernardino(30 Sept 26)
Update dependencies
Bruno Bernardino(20 Aug 26)
Hide + change config path in deploy
Bruno Bernardino(13 Aug 26)
Make the chunk-based upload work more consistently Fix/remove the denosass dependency (#177) Fixes #177
Tilman(13 Aug 26)
Feature: Implement service worker for uploads (#174) * Implement service worker for uploads Allows page refreshes (intentional or accidental) during file and directory uploads without interrupting the upload. * Extract upload queue and register SW for Files, Notes, Photos * Ensure TS files like the new `useUploadQueue.ts` are always compiled correctly * Fix a caching bug * Implement suggested Upload Session Tag * Improved Upload error handling * Generate some tests * Update deno.lock * Abort SW upload queue on logout, broadcast upload kind * Tag upload queue items by kind, filter Notes/Files/Photos progress by it * Return 503, not 403, when uploads are refused because the app is disabled * Rebuild compiled components and tailwind output * Give Files and Photos their own upload kind, not a shared default * Rebuild compiled MainFiles/MainPhotos for the per-kind upload fix * Skip files that already exist before uploading them, not after * Rebuild compiled useUploadQueue for the pre-upload existence check * Cancel the upload queue and clean up .chunk-uploads when the destination directory is deleted * Scoped chunk cleanup, selective directory-delete abort, pre-check race/timeout, old-worker fallback * Route upload service worker messages through registration.active, not controller * Improve logout service worker messaging
Bruno Bernardino(09 Aug 26)
Update Deno and remove `--unstable-no-legacy-abort` "hacks"
Bruno Bernardino(02 Aug 26)
Addresses the UX/UI bug at https://github.com/bewcloud/bewcloud/issues/175#issuecomment-5153194315
Bruno Bernardino(31 Jul 26)
Fix changing email Fixes #175
Bruno Bernardino(25 Jul 26)
Update Deno and dependencies, prepare for new release
Tilman(25 Jul 26)
Improvement: Directory Download Optimizations (continued) (#173) * Stream zip directly to Response * Address PR feedback * Check for permissions, return 403 * Address potential status race condition
Bruno Bernardino(03 Jul 26)
Update default version for release
Bruno Bernardino(03 Jul 26)
Fix remaining WebDAV compliance issues found via real litmus testing Ran the actual litmus WebDAV test suite against a live server (not just manual curl) and fixed everything it caught: DELETE didn't recursively remove non-empty directories (threw 500 instead), MKCOL on an existing resource returned 409 instead of the RFC-mandated 405, MKCOL didn't reject request bodies (415), COPY/MOVE couldn't handle directories at all since Deno.copyFile is file-only (now uses @std/fs's copy, respects Depth: 0 for shallow copies, and correctly replaces an existing destination collection), PROPFIND silently ignored malformed/invalid XML instead of returning 400, and LOCK refresh didn't work when targeting a member of a Depth: infinity-locked collection. Real litmus results after these fixes: basic/copymove/http suites at 100%, props/locks suites substantially improved (remaining gaps are unimplemented features — PROPPATCH, shared locks, lock-null resources — not bugs). Closes #32
Bruno Bernardino(03 Jul 26)
Fix WebDAV protocol bugs and implement real LOCK/UNLOCK support Fixes MOVE/COPY building a bad filesystem path when the Destination header keeps its /dav/ prefix (#155), missing Overwrite header support (#169), filesystem errors collapsing to the wrong HTTP status (#170), and LOCK/UNLOCK being pure theater that enforced nothing while still advertising WebDAV class 2 support (#171) — replaced with real per-path lock tracking, Depth: infinity cascading, and 423 enforcement across PUT/DELETE/MOVE/COPY/MKCOL. Also adds regression coverage for the trailing-slash 307-redirect report in #32, which no longer reproduces since Fresh was removed. Fixes #155 Fixes #169 Fixes #170 Fixes #171
Bruno Bernardino(29 Jun 26)
Fix potential XSS in RSS feed reader
Bruno Bernardino(29 Jun 26)
Update default docker image version
Bruno Bernardino(29 Jun 26)
Feature: Sort by header (#168) * Make file and directory sorting case-insensitive Updated sorting functions to compare names in lowercase, ensuring case-insensitive sorting for files and directories. Addresses #101. * Use locale lowercase for sorting * Implement column sorting * Keep .Trash at the top, ignore sort * deno fmt * Use sort SVGs * Sort without page reload * Remove unnecessary server sorting * Address review comments, improvements * Undo random formatting for unrelated files * Fix server-side sorting (reload with and without params) Also run `make build` to update Tailwind --------- Co-authored-by: Tilman <[email protected]>
Bruno Bernardino(27 Jun 26)
Fix lint and update deno
Bruno Bernardino(27 Jun 26)
Merge pull request #166 from medallyon/feature/simpler-passkey-login Implement discoverable passkey flow
bewCloud Website
Website
bewCloud is a modern and simpler alternative to Nextcloud and ownCloud written in TypeScript
Have your files, news, notes, and photos under your own control.
Redirects
Does not redirect
Security Checks
All 65 security checks passed
Server Details
- IP Address162.55.55.87
- Hostnamestatic.87.55.55.162.clients.your-server.de
- LocationNuremberg,Bayern,Germany,EU
- ISPHetzner Online GmbH
- ASNAS24940
Associated Countries
FR
DE
Safety Score
Website marked as safe
100%
Trackers
No known trackers found
Blacklist Check
bewcloud.com was found on 0 blacklists
- AntiSocial Blacklist
- Artists Against 419
- Badbitcoin
- Bambenek Consulting
- CERT Polska
- CoinBlockerLists
- CRDF
- CryptoScamDB
- EtherAddressLookup
- EtherScamDB
- Fake Website Buster
- MetaMask EthPhishing
- NABP Not Recommended Sites
- OpenPhish
- PetScams
- PhishFeed
- PhishFort
- Phishing.Database
- PhishStats
- PhishTank
- Phishunt
- RPiList Not Serious
- Scam.Directory
- SecureReload Phishing List
- Spam404
- StopGunScams
- Suspicious Hosting IP
- ThreatFox
- ThreatLog
- TweetFeed
- URLhaus
- ViriBack C2 Tracker
Website Preview
bewCloud Reviews
More Backup and Sync
Feature-rich productivity platform, that can be used to backup and selectively sync encrypted files and folders between 1 or more clients. A key benefit the wide range of plug-ins in the NextCloud App Store, maintained by the community. NextCloud was a hard fork off OwnCloud.
An open source cloud storage and sync solution. Files are grouped into Libraries, which can be individually encrypted, shared of synced. Docker image available for easy deployment, and native clients for Windows, Mac, Linux, Android and iOS.
Continuous file synchronization between 2 or more clients. It is simple, yet powerful, and fully-encrypted and private. Syncthing can be deployed with Docker, and there are native clients for Windows, Mac, Linux, BSD and Android.
About the Data: bewCloud
Change History
- Added #393
Edit bewCloud Data
You can edit bewCloud's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external
sources, a list of these can be found data documentation.
Origin Data
Modify Data
API
You can access bewCloud's data programmatically via our API. Simply make a GET request to:
https://api.awesome-privacy.xyz/v1/services/bewcloudThe REST API is free, no-auth and CORS-enabled. To learn more, view the API Docs or read the API Usage Guide.
Share bewCloud
Help your friends compare Backup and Sync, and pick privacy-respecting software and services.
Share bewCloud and Awesome Privacy with your network!