6 ms·
Show HN: BewCloud is a simpler alternative to Nextcloud written in TypeScript
For the last month or so I've been working on bewCloud, and today I'm making its source code public and open!
Right now, the Dashboard (URLs + freeform notes), News (RSS/Atom/JSON feeds), and Contacts (CardDav) are working.
If you have any suggestions, comments, or recommendations, I'd love to hear it.
Thank you for your attention and kindness. I really appreciate it!
- szszrk 3y agoThis could be great for homelabbers. I have around 40 services I run currently but every time I tried Next/owncloud I just removed it shortly after. Found it lacking speed, or resource consumption that was comparable to... the other 40 services combined etc. This could perfectly fill that spot. Will be testing soon.
- BrunoBernardino 3y agoI'd hope so (eventually, right now it's pretty bare)! I do currently have a couple of Nextcloud instances (one optimized for availability and another for storage, each with few and different apps) and each hogs more than all the other services combined (many Deno projects, but also containers like Huginn and Gitea, which aren't "simple" or "small"). My goal is to be able to not have to run any Nextcloud instance, and I'm happy to already have shutdown News and Contacts from the "availability" instance! Calendar won't be as "easy" or quick, but I'm looking at this as a long-term thing anyway, no rush.
- codethief 3y agoWhat libraries does your Contacts app use under the hood? I'm asking because pretty much every contacts app I've tried had countless bugs – either in CardDav or the vCard part (when importing/exporting) or both.
- BrunoBernardino 3y agoI specifically didn't want to use any libraries as I'm trying hard to avoid bloat, and I kind of enjoy reverse-engineering the CardDav (and next CalDav) clients, while reading the RFCs. It's likely this will have bugs for the weirdest things, and where I'd appreciate help as long as it's not making things too slow/heavy. It's currently very naive and simple and using https://deno.land/x/xml@2.1.3 https://deno.land/x/xml@2.1.3 for some minor parsing in some of the requests; I drew the line to stop supporting fields and actions as soon as it worked perfectly for me and my wife (Linux and Android + macOS and iOS). That being said, here's the function to build a vCard: https://github.com/bewcloud/bewcloud/blob/b81710a720d7d6afc2d71d1782b13e60941b4d0a/lib/utils.ts#L287 https://github.com/bewcloud/bewcloud/blob/b81710a720d7d6afc2... And the function to parse a vCard: https://github.com/bewcloud/bewcloud/blob/b81710a720d7d6afc2d71d1782b13e60941b4d0a/lib/utils.ts#L340 https://github.com/bewcloud/bewcloud/blob/b81710a720d7d6afc2...
- andrewaylett 3y agoI fear you may be in for a painful time :(. My experience with DAV in general is that there are enough inconsistencies between clients that it's hard to support everyone properly. To be fair, that was well over a decade ago, maybe things are better now -- but it's the sort of spec where it makes sense to put effort into reusable libraries, to amortise the effort across multiple projects. On the other hand, if you're enjoying yourself then great :). I'm looking forward to seeing what the project evolves into.
- BrunoBernardino 3y agoThanks! > I fear you may be in for a painful time :(. Oh, I had some pain with Gnome and iOS already! DavX5 (Android) was pretty easy to debug and "tell me" what was wrong. > On the other hand, if you're enjoying yourself then great Exactly. I don't need bewCloud to replace Nextcloud or ownCloud for everyone, but as long as it does it for me and my family, it's cool. If others benefit, even better!
- mnutt 3y ago
- crazytweek 3y ago"bew is web in reverse, similar to how deno is node reversed. " Deno is an anagram of node, not reversed :) But looks nice, will have a look at it!
- Latty 3y agoWell, it is reversed in a sense, in that it is "no, de" reversed, it's just not reversed character-by-character. I'd agree that's not generally how we used "reversed" for words, but it tracks more generally, you can reverse something without necessarily breaking it down into its smallest possible parts. For example, that "Pets a dog" reversed could be either "Dog a pets" or "God a step", obviously words are a more natural breakpoint though. To really try too hard, in Japanese it'd be something like ノデ so it would be reversed character by character as it'd be split like that (not a Japanese speaker, so take with a lot of salt, I imagine it'd actually use another character to sound more like the English pronunciation of node).
- sdrothrock 3y agoIn Japanese, it's ノード, which is no-do.
- Latty 3y agoMakes sense, closer pronunciation.
- BrunoBernardino 3y agoThank you for the correction, I already updated the text!
- lagrange77 3y agoLooks cool, congrats to the launch!
- BrunoBernardino 3y agoThanks!
- jmprspret 3y agoLooking forward to see where this goes. For me, the Files/cloud storage portion of nextcloud is essentially why I _would_ use it.
- BrunoBernardino 3y agoThanks! That should happen after Calendar + Tasks/CalDav!
- ocdtrekkie 3y agoAny reason this is all one giant project? One of Nextcloud's IMHO fatal mistakes is it tries to be everything. So people have to choose between say, a better todo app, or the one that's integrated with their monolith of choice. Meanwhile, if you approach each module as it's own project, but with shared code where sensible, and open standards driving your integrations, people including you, can select the parts that best suit them while mixing in software from others where appropriate.
- DirkH 3y agoThis is why I abandoned it. And I am happier after I gave up on it. You want me to have how many services running just so I can have a calDav/cardDav server? And sometimes you'll just stop working because of some unrelated issue of something I'm not using? Headache upon headache when you depend on it, but only for one thing. Radicale people. Forgive me for doubting you. I have never used Radicale but I certainly do now just to point people away from nextCloud if all they want is a calDav/cardDav server.
- BrunoBernardino 3y agoGood point! I did consider using Radicale or other CardDav/CalDav services for that, but ultimately I also wanted to build this. Who knows, maybe in a few months or years I'll just throw in the towel and install Radicale and FileBrowser and just rely on `rsync` or Syncthing for the desktop/mobile sync.
- BrunoBernardino 3y agoThanks for the great question! I think the main issue for me is I don't want to install and maintain multiple different services (contacts, calendar, tasks, files, notes, photos, though arguably those could all "fit" in 2 services -- which is why I have two Nextcloud instances), and having a single service/server with those becomes easier to maintain. They all use open standards (CardDav, CalDav, WebDav), and that's why I can use DavX5 on Android and Gnome on Linux and Apple's default accounts/apps too. bewCloud has and will have a simple UI for each of those just because I think there's value to having an easy web access that's not sync-dependent. I hope that makes sense!
- shortformblog 3y agoThis looks cool. I don’t know what direction you’re going to take this, but my big challenge with Nextcloud is that the file syncing gets very unreliable in short order. I honestly would love to see someone do something like this with Syncthing as a file management backend. It is honestly the best tool of its kind, and it is extremely fast and reliable.
- DirkH 3y agoSecond this. Setting up syncthing was incredibly easy and it is a beast. Has no problems syncing all my huge video media files All it did is beg the question for me: why has nobody created a file sync UI where you can essentially use syncthing like you might Google Drive but with a slick effortless interface that non-technical folks wouldn't mind using?
- mrAssHat 3y agoOn the contrary, I didn't find Syncthing setup very easy, as I don't want to be dependent on external resources when doing a sync over LAN and thus I had to setup a coordinator myself and it's a bit confusing with all these long tokens that I needed for some reason.
- BrunoBernardino 3y agoThanks for sharing your experience! Is there something else you use right now?
- traverseda 3y agoIt uses direct udp peer discovery on Lan though?
- BrunoBernardino 3y agoThanks! I'm not sure just yet and I still have Calendars/CalDav to work on first, but I've added Syncthing as a potential backend for the desktop client. I also have notes to explore `rclone` or `rsync` since those are very reliable, simple, and slim.
- DirkH 3y agoSite is down?
- BrunoBernardino 3y agoMy monitors and logs report no such thing, but if you can't reach the website (which explains more about the project and has screenshots), the GitHub repo might be helpful to see the code and how to run it: https://github.com/bewcloud/bewcloud https://github.com/bewcloud/bewcloud.
- getwiththeprog 3y agoI look forward to the photo and file sharing. Will I still have to install postgres?
- BrunoBernardino 3y agoThanks! You'll have to install it only if you don't want to use Docker to run it.
- zamalek 3y agoMy biggest gripe is how often Nextcloud goes into maintenance mode. While this is currently slightly annoying, Nextcloud would quickly be rendered useless to my family would I pass away. Please keep the upgrade process hands-off.
- BrunoBernardino 3y agoThanks for sharing your perspective! I guess updates wouldn't happen anymore if that were to happen to me too, but I do have everything documented and upgrades on our services are just a matter of `docker compose stop && docker compose up -d`, which might be trivial for someone with some tech knowledge, but not family. What is your solution right now?
- zamalek 3y agoI upgrade the _container_ using what you said (actually Podman auto upgrade, but it's basically the same thing). This subsequently sends Nextcloud into maintenance mode 9/10 times - I guess could have another/init container which pessimistically runs `oci`.
- BrunoBernardino 3y agoThanks! That makes sense and I'll keep that in mind if/when upgrades become a thing, here!
- slooonz 3y agoHave you given a try to cozycloud ? It’s the first on my radar for when I’ll find time to tinker with a personal cloud.
- BrunoBernardino 3y agoThanks! I didn't know Cozy! It seems very full-featured and more focused on being a platform rather than a simple server using open protocols, and I'm happy to learn there are alternatives I hadn't known about!
- vrinsd 3y agoReally cool to see this I hope you're able to continue this work. As others have said, CalDAV / CardDAV are complex standards and getting the nuances right without using some tried/true libraries (sabre-dav) might be a challenge. Two points: For just CalDAV / CardDAV there's Radicale, Davical and Baïkal all of which work pretty well and are relatively easy to set up, so this might be a bit of wheel re-invention. Perhaps you might consider relying on those projects for calendar / contact sync and then add your other pieces (file, photos, etc). Second point is I think the reason why Nextcloud / Owncloud end up becoming super-slow for file sync is unfortunately the use of WebDAV. I can't find the thread at the moment but I remember the developers from one of those projects saying that WebDAV itself makes the file-sync super slow and resource heavy. As a result I think the Owncloud++ or their golang based re-implementation prefers the use of S3-compatible for backend file store. I'm not saying you should use S3, but if you continue down the path with WebDAV for file-sync you might find it's resource heavy and slow as Nextcloud/Owncloud might be.
- BrunoBernardino 3y agoThank you! If I find trouble building a "good enough" CalDav server I'll definitely consider something like Radicale and convert the contacts app to a CardDav client instead. As for WebDav, that's still a while off, but will also take that in consideration, thank you!