17 ms·
Show HN: Baxx – Unix-friendly backup service
- zulgan 8y agoauthor here: I am going to my daughter's birthday, so I wont reply to comments for a while, but if anyone runs into trouble please send an email to jack@baxx.dev thanks a lot for the feedback, much appreciated!
- mistrial9 8y agoroach motel ?
- antoineMoPa 8y agoInteresting! How did you integrate PayPal payment in the shell without a website?
- zulgan 8y agousing paypal IPN and redirect to paypal subscribe page, literally as simple as https://github.com/jackdoe/baxx/blob/master/api/account_route.go#L440 https://github.com/jackdoe/baxx/blob/master/api/account_rout...
- Topgamer7 8y agoYour email provider domain appears to have been hacked and is being used for Black SEO purposes: http://sofialondonmoskva.com/blog/ http://sofialondonmoskva.com/blog/
- zulgan 8y agowhoa this is my friends's company domain, i just have email there for 10 years or so, will let him know, thanks!
- samat 8y agoSome very basic html with no css would be much easier to read than parsing markdown in my head. Machines should do machine work, not people. Edit: still love idea and execution, thanks for sharing!
- spdionis 8y agoWhat markdown? I don't see markdown anywhere.
- samiralajmovic 8y agoHeaders in markdown are denoted as # and bullet points as * or - usually.
- squanch 8y agoThe "# headlines", the "* bullet points" would parse as valid markdown. Which would give the headlines visual style to distinguish them from the other part of the content.
- tobyhinloopen 8y ago/r/wooosh?
- wccrawford 8y agoI think a good portion of it would parse as Markdown, but I don't think that was the intent. There's at least 1 header that isn't actually a typical header's content.
- furyofantares 8y agoThis is kind of a funny comment, markdown was designed specifically to be readable as-is, which is why so much of it’s syntax looks like conventional email and other plain-text usages that predate it.
- throwaway123156 8y agoTrue, but markdown was meant to be readable for a markup language. Which is likely still less readable than something whose sole purpose is to present to humans, such as HTML/CSS.
- marssaxman 8y ago
- Tepix 8y agoWhat's a good way to encrypt filenames on the remote side?
- zulgan 8y agoi use something like curl -T path/to/file https://baxx.dev/io/$BAXX_TOKEN/$(echo https://baxx.dev/io/$BAXX_TOKEN/$(echo | encrypt -k ~/.pass | base32) which uploads: /EAAAAAEQJUAYSU5PR3WO7IKOX2ZPM5NSNIALFYJE5MMDJYNMNUZEA===
- decide1000 8y agoThis is great. Building a company from the terminal. Good luck on your journey. Don't need a backup solution right now, but I keep it in mind.
- nzjrs 8y agoWhere is this located (for GDPR purposes)?
- wongarsu 8y agoDeducing from [1]: Currently somewhere on Digital Ocean infrastructure. Long term on Hetzner servers (apparently SX62 [2]), so at that stage it's either Germany or Finland. 1: https://github.com/jackdoe/baxx/blob/master/infra-and-pricing.txt https://github.com/jackdoe/baxx/blob/master/infra-and-pricin... 2: https://www.hetzner.com/dedicated-rootserver/matrix-sx https://www.hetzner.com/dedicated-rootserver/matrix-sx
- justanegg 8y agoi found a website
- billpg 8y agoIf there's no website, what am I looking at when I follow the link?
- Topgamer7 8y agoIt's a grabby title. However you're basically looking at the repo readme.
- kiallmacinnes 8y agoI think the intent is that, there is no web UI for the product itself. The UI for product itself is a terminal program, accessed via either SSH, or a web based terminal client. The product UI has zero HTML/CSS/etc.
- gojomo 8y agoThe website https://ui.baxx.dev https://ui.baxx.dev is, in fact, serving HTML, CSS, and JS. I get the point, but the "without a website" claim is kind of a cutesy attention-grabbing prevarication. I'm usually pretty tolerant of those, but personally find that here it mixes poorly with the idea of a backup service. From such a service, I'd prefer to see total honesty, and a sort of buttoned-down, almost military humorlessness/seriousness.
- kiallmacinnes 8y agoYou're of course right, that page is serving HTML/CSS/JS - but that's kinda nitpicking. It roughly akin to me saying "my Golang on Linux program is 100% C code free - no C is used in the execution of my code!" .. well, clearly that statement would be false. However, it's perfectly legitimate to say my project is C code free - and that's what this project is saying. It's saying the project is web-tech free. There just happens to be an off-the-shelf execution environment which uses web-tech.
- gojomo 8y agoPerhaps if you don't mind fuzzy hand-wavy claims that are as likely to mislead as inform, they could say "our project's source code includes no 'web-tech'. But that's not the headline. The headline was instead that it's a service "without a website". But there is absolutely, positively, no-nitpicking-involved an HTTPS-accessible website for the service, set up by the service's own creators.
- Arkanosis 8y agoI'm confused by the `find | xargs | sha256 | curl` trick… Is it even remotely as efficient as the rolling checksum of an actual rsync?
- weakwire 8y agoThat is a website.
- ebg13 8y ago> Trial 1 Month 0.1E > Subscription: 5E per Month > ... > I decided to charge 5$ (0.1$ trial) So which is it? $ or E? And is E supposed to be €? Also, in English the currency marker goes to the left of the number.
- isostatic 8y ago> Also, in English the currency marker goes to the left of the number. But in the majority of european countries where they use euros, the symbol is placed to the right
- ebg13 8y agoThat is only correct when writing in a language other than English. Doing it in English is a mistake transferred from doing it in other languages. http://publications.europa.eu/code/en/en-370303.htm#position http://publications.europa.eu/code/en/en-370303.htm#position
- fao_ 8y agoI don't see how you can find language prescriptivism as a tenable position in this day and age
- nikeee 8y agoThe link seems broken.
- ebg13 8y agoLol, woah. Maybe HN broke the doc site. Here's an archive.org backup https://web.archive.org/web/20190323083630/http://publications.europa.eu/code/en/en-370303.htm https://web.archive.org/web/20190323083630/http://publicatio...
- computerfriend 8y agoIn general it is standard to put the unit after the quantity though.
- dsr_ 8y agoMy key objection is that it doesn't offer any additional value: if you are the sort of customer who would do this, you are also the sort of customer who would implement the same chain of commands to backup to a virtual machine that you owned, eliminating the attractiveness of baxx.dev as a aggregated target. What additional value can you add?
- zulgan 8y ago* it took me good 2 weeks to implement it * i have actually implemented this kinds of systems multiple times and always failed at the 'who watches the watchers' and usually had broken backups (as in i usually needed them few years after the system is written and by then something is always wrong) * in the future it will use contextual bandits to probe for broken backups (such as: hey, is file XYZ with size X uploaded at Y weird?) and learn from all the customers triggering the AI flywheel, more backups more data, better contextual bandits, better service, more customers (the idea is to use bandits[or something else with exploration factor] for probability of "good" notification) so in few words: value = out of the box alerting + nice api + machine learning (not implemented yet) + good price (no cloud)
- sdwisely 8y agoit's not in the same place as the rest of my data is the feature to me. If you can do it at a price competitive to what I can buy storage (and everything that comes along with housing it) and worry about it then it's one of the few things I'm happy enough to have a managed service for. edit for a bit more context: I do a lot of video work so my storage needs are constantly growing.
- quickthrower2 8y agoIf it can do the “Dropbox thing” and make it seamless, then that’s a definite plus.
- brg1007 8y ago".... 750E profit - 50% tax = 375E profit"[1]. 50% Taxes in DE, nice place to do business ... [1] https://github.com/jackdoe/baxx/blob/master/infra-and-pricing.txt https://github.com/jackdoe/baxx/blob/master/infra-and-pricin...
- deleted 8y ago[deleted]
- q3k 8y agoAre you sure this is Germany? The author has their location set to 'Amsterdam' on GH, and has no impressum on their site. FWIW, corporate taxes in Germany aren't 50%, but 15%. What is close to 50% is personal income tax + health care if you pass a certain threshold. However, even if you're running a just sole tradership (Freier Beruf or Gewerbe), this would only be your personal income - all business expenses are not counted towards your personal income tax base and you get the VAT you paid back.
- biztos 8y agoI would guess it’s someone with a job, and this is hitting income tax. But corporate taxes in DE are about 30%, not 15. Don’t forget your Gewerbesteuer.
- mitjak 8y agoloving the transparency of this. i'm definitely becoming converted as I'm reading…
- asterix_pano 8y agoFree school, healthcare and nice infrastructures have a cost..
- mruts 8y agoToo bad that cost is levied on people who don’t even need or want those services. The rich, childless, houseless, and single are subsidizing services for everyone else regardless of whether they personally derive any benefit. If that doesn’t strike you as unfair I’m not sure what would.
- cyphar 8y agoI have a feeling rsync.net is far more Unix-friendly as a backup service (it's basically a Unix shell provider with automated ZFS snapshots). I do think the website has a neat aesthetic though, and it is cute you can register over SSH (not that this is practically advantageous over a website-based registration -- registration is a one-time operation). The repo on GitHub doesn't have a license AFAICS.
- bloopernova 8y ago(Alternative product recommendation, please downvote/remove if you feel that isn't appropriate) For Unix/Linux backups, may I suggest Borg Backup? It encrypts and does dedupe astonishingly well. It also works over SSH incredibly fast, and restores are via a mounted FUSE filesystem so they're easy to pick and choose what you need. It prunes really well too, and is a single executable so it's easy to distribute via Ansible/Puppet/etc. I've been using it for several years and it hasn't failed me yet. If y'all want to laugh at my bash scripting skills, I have a backup script that sends backup status to a Zabbix monitor server at https://gist.github.com/anthonyclarka2/cef41d201dd5b890dae6786010531aeb https://gist.github.com/anthonyclarka2/cef41d201dd5b890dae67... (I'd appreciate improvements to that script if anyone wants to critique)
- dmix 8y agoI don't see anything wrong with that bash script. It's well formatted and very simple, there aren't any functions or anything, just a single switch and two conditionals. Not much to optimize. Simple and explicit is better in shell scripts than being fancy.
- bloopernova 8y agoThank you, I really appreciate the feedback.
- StavrosK 8y agoBorg is hands-down the best backup utility I've used. I also use Borgmatic for some added niceties around checks/notifications/etc.
- garettmd 8y agoDoes anyone know how it compares to Restic? That's what I've been using and have been pretty pleased. It seems like the main difference is that restic supports integrations with other services, whereas Borg seems uses SSH for its connections
- escaper 8y agoI get that it's probably "trendy" to say you don't have or need a website but with it being so easy to create a static page, I'm failing to understand why you wouldn't just do that, which is already the bare minimum, if you care about your project and want to sell it?
- dmos62 8y agoWhy is an HTML document the bare minimum? I absolutely appreciate this far more accessible form, author's dedication to function and disregard for showmanship. Somewhat paradoxically, for a potential client like me, this is way better marketing than any amount of superfluous CSS sugaring or formatting.
- recursive 8y agoI think this text/plain presentation is a form of showmanship. Put another way, do think there is ever any amount of CSS that is not superfluous?
- dmos62 8y agoIt's showmanship in that it's so nonstandard that it's theatrical. We shouldn't stigmatize that. CSS can be non-superfluous in documents, like when formatting text or a table. I'd like to focus on the fact that this required orders of magnitude less effort than designing a web site, and most importantly – the presentation did not suffer. There were no compromises to be made. Some have mentioned that this lacks functionality, but I'm having a hard time imagining what that might be. Maybe mobile-readiness, in that it's preformatted. Considering that this is a Unix-y tool for power-users, I think it's ok to expect them to read this on a PC.
- bigj0n 8y agoHTML is the standard form of internet document delivery, that's why it's the bare minimum. It's marginal effort to set up and objectively more accessible than not having a website. I'm all for reducing complexity, but at this extent your are removing pretty huge pieces of functionality for extremely marginal streamlining. It's a gimmick
- StreamBright 8y agoHow is this comparing to Tarsnap? https://www.tarsnap.com/ https://www.tarsnap.com/
- xaybey 8y agoFor some reason there's a lot of negativity in this thread. I thought the txt file was really cool, signed up immediately, and have been having a lot of fun with the interface. I don't remember the last time I found registering for a SASS product to be fun.
- zulgan 8y agothanks! i have a plan to make a whole midnight commander-like ui to list files, manage tokens and notification rules and etc started playing with https://github.com/rivo/tview https://github.com/rivo/tview last week, but didnt have much time.
- rsync 8y ago" I don't remember the last time I found registering for a SASS product to be fun." Agreed. This: "The way you register is through ssh, just `ssh register@ui.baxx.dev`" Is very cool and makes me happy.
- peteradio 8y agoThat is very cool, how is this accomplished??
- humblebee 8y agoEnable empty password for a particular user, and set the default login shell to the registration program. [0]https://github.com/jackdoe/baxx/blob/3d2f6f014e5def3b5c35496e9b68df220f68e099/gui/docker/sshd_config#L33 https://github.com/jackdoe/baxx/blob/3d2f6f014e5def3b5c35496... [1]https://github.com/jackdoe/baxx/blob/3d2f6f014e5def3b5c35496e9b68df220f68e099/gui/docker/entry.sh#L24 https://github.com/jackdoe/baxx/blob/3d2f6f014e5def3b5c35496...
- cat199 8y agonot author, but you can force login commands for users in ssh configuration, so make this your script and away you go
- Krokku 8y agoInteresting concept to sell a shell service. I hope we will see this more in the future.
- swlkr 8y agoThis is really cool. The aesthetic is amazing. This really speaks to the hacker in me, the no-website thing is a really inventive way to stand out from other backup services. Great execution!
- lazyant 8y agoNobody has commented on what jumped at me as a great feature: detecting if the backup seems bad. * get notified if the file is too small * get notified if the file is too old
- stephenr 8y agoCalling it Unix friendly but not supporting ssh (and thus sftp/rsync/etc) seems like quite a weird choice, and one that’s lost you a potential customer.
- zulgan 8y agothanks for the feedback having `scp file $BAXX_TOKEN@scp.baxx.dev:file` support is definitely in my list
- edoo 8y agoFor my home directory/active data I use 'rdiff-backup' to keep 7 days of hourly snapshots. If I screw anything up I never lose more than an hour. My bulk data gets a snapshot every 3 days due to the size/time. All that data is already on raid1 but the extra filesystem level backup will protect from any low level disk hosings. I mirror that backup drive weekly and keep an extra copy off site. If I'm super paranoid about losing something I'll also save it with 'duplicity' to S3, although I also like remote mounting an AWS volume and using it with 'EncFS'. If I'm going anywhere with my laptop and want access to my data faster than internet speeds I'll preload everything with 'unison' onto the laptop and temporarily have my own Dropbox clone while mobile. Using those open source tools lets me do basically the same thing as these services while keeping full control of my data.
- sanderjd 8y agoThis is really neat. I really love the idea and the presentation. I would not trust my backups to your service yet, just because of the "this is a prototype" language. My immediate thought is, "this seems great, I'll have to come back and check it out once it's more of a real business". But therein lies the rub, I think: what will drive me back to check it out later? There doesn't seem to be a mailing list to sign up for. Maybe you'll hit the front page of HN with a full launch later, and I'll see it that way, which would be great, but maybe not! In any case, nice work!
- marceloneil 8y agoMay I suggest Kimsufi along with Hetzner for if you scale up? Its similar pricing and they have some NA locations (although less storage). I've had good experiences with them.
- zulgan 8y agoi will check it out thanks!
- helper 8y agoRegistration over ssh is cute but not safe from MITM attacks. Even if the ssh key was published somewhere (which as far as I can tell it isn't) you would be dependent on people manually adding the key to their known_hosts file which you can't reasonably expect most people to bother with.
- marci 8y agoYou can't reasonably expect most people who would register to a service over ssh and make backups with cUrl in a shell script to update their known_hosts file? The instructions on the main page would change from: ssh register@ui.baxx.dev to something like curl https://ui.baxx.dev/ssh_keys -o /tmp/baxx_ssh_keys cat /tmp/baxx_ssh_keys cat /tmp/baxx_ssh_keys >> ~/.ssh/known_hosts rm /tmp/baxx_ssh_keys ssh register@ui.baxx.dev or in one line: curl https://ssh_key.baxx.dev >> ~/.ssh/known_hosts && ssh register@ui.baxx.dev
- helper 8y agoThe author of this service didn't think it important to provide the ssh key and based on the comments in this thread people have already signed up for this service without caring about the key. So yes, I think even people who would use this service mostly can't be bothered to manually update their known_hosts file.
- marci 8y agoIn that sense then I agree with you. Edit: I thought you meant that, given the command, most would still not do it.
- zulgan 8y agoYou are right. it is super cute though, I still get excited every time I try the registration flow. the registration api is quite easy (https://baxx.dev/help/register https://baxx.dev/help/register) curl -d '{"email":"your.email@example.com", "password":"mickey mouse"}' \ https://baxx.dev/register I will probably do make register.sh endpoint that returns a bash script that runs local dialog like: curl https://baxx.dev/register.sh https://baxx.dev/register.sh | sh (just idea, not implemented yet) this will be fun, making portable tty dialogs :D
- DINKDINK 8y agoIssuing invoices and paying directly in the terminal via Bitcoin's Lightning network would be pretty cool add-on. Machine to Machine payments: Say you deploy a bitcoin miner to stranded gas. It starts to mine coins and can start paying you to back up it's data without ever needing to create a Paypal account.
- arendtio 8y agoTwo reasons why I do not want to use the service in its current state (meant as constructive criticism): 1. If I would send my backups to some SASS there is no way I would do that without encryption. 2. I like to backup my filesystem and not just the files in it (to make sure I've got everything and make restoring easy). Currently, I just dd my block devices, but I am sure that could be optimized to not upload a complete image every time. Sure, I could solve those two problems myself, but then I could also use AWS S3/Backblaze ;-)
- ars 8y ago> Currently, I just dd my block devices That's actually not a good idea at all. It's very fragile, the slightest problem and you may lose the entire backup. Silent corruption may get backed up for months and you won't notice until it's too late. Doing a restore means having space for the full file, just to restore a single small file. If you don't know when your file changed you may have to do that multiple times instead of just being able to check when that single file changed. In short: don't do that. Copy the full directory structure, sure. But not the disk image.
- cellularmitosis 8y agoRather than "don't do that", I would say "also, backup individual files". Fragile seems to be a matter of perspective. I do a dd block-device backup before doing anything "risky" with a machine (i.e. upgrading major OS version, etc), because it is by far the most bullet-proof / fail-proof way to go back in time.
- arendtio 8y agoWhy is dd fragile? I mean, yes doing so while the filesystem is mounted is like Russian Roulette, but if the filesystem is unmounted? I see that it isn't very efficient, but I never had any problems with reliability. Silent corruption might actually be a problem, but that is something you won't solve by backing up files and directories instead of block devices. After all, a block devices backup just contains more information than the files and directories backup. The only advantage of filesystem backups is that you can easier validate if a file should have changed, but even if you detect that it changed even if it shouldn't have, you still need some kind of checksum or so to find out which version is correct. On the other hand, if you back up the files and directories you have to care about the filesystem type and if there are special types like links, devices nodes and the like. On that side, I had enough unpleasant experiences that I am trying to avoid that trouble. To restore single files I can simply mount the image on a loop device, so no problem there.
- marssaxman 8y agoI like this. Another down-to-earth, unix-oriented, fair-deal style "cloud" service worth investigating is rsync.net. I've been using it to sync data between my devices, and I like the way it leaves the user in control. I have not tried Baxx yet, but it seems to be a project in a similar spirit, and I am happy to see more investment in that kind of future.
- alexandernst 8y agoAs cool as this could be, this service is not passing any company-grade backup quality requirements. Also, the price is a complete no. Not because 5€/m is much, but because 5€/m can get you hundreds of GBs of storage in AWS Glacier, with contractual guarantees about your data, how it's managed, etc... Basically, this is a toy. Use it as a toy, not as a service where you'd actually put your company files. That said, good job!
- GordonS 8y ago> because 5€/m can get you hundreds of GBs of storage in AWS Glacier Yes... until you want to take anything back out - then you're going to have to wait, and you're going to pay a lot more than €5
- alexandernst 8y agoIndeed, but it matters how much of the data you want to recover and how fast you want to recover it. Getting 100gb from glacier is not expensive at all if you can wait a couple of days.
- GordonS 8y agoWhen Glacier first launched I looked at pricing, and it was going to cost a lot to restore from backup if needed. But after your comment I checked the pricing again, and you're right - it's very much cheaper now that it used to be!
- zulgan 8y agoit is absolutely in alpha stage, and yes please use it as a toy and have fun in the future my plan is to do 5€/m for 1TB which is pretty much glacier price
- nik1aa5 8y agoI use borgbackup to a NAS on the LAN. I then use rclone to copy the repositories to a Google Drive that happens to be unlimited because of the subscription of my previous university. :-) Luckily my account persisted when I left the uni.
- alexellisuk 8y agoI love the UX for this.. why haven't we seen more of going back to UNIX principles? I'm also curious.. why and what ML do you want to add?
- zulgan 8y ago* in the future it will use contextual bandits to probe for broken backups (such as: hey, is file XYZ with size X uploaded at Y weird?) and learn from all the customers triggering the AI flywheel, more backups more data, better contextual bandits, better service, more customers (the idea is to use bandits[or something else with exploration factor] for probability of "good" notification) i think the problem needs exploration, i have been bitten by bad anomaly detection and setting up alerts post-moretm after losing data one too many times :) i imagine creating a bunch of features such as: * file extension * time of upload * delta from previous version * size difference from other files in the directory * etc.. and having enough customers we should be able to do good-ish prediction when a file version is "weird", so we could send notifications such as: > hey is this file ok? with some exploration factor, even using UCB will(should) be better than nothing I plan to use vowpal wabbit's contextual bandits with only 2 actions, "send notification"/"dont send notification" given all the context this of course will be just extra on top of the manual alert rules, but hopefully it will save some data :) If the users agree we could also publish anonymized datasets with labeled data (such as: given context alert was sent: was [good]/[bad]) Which will be awesome.
- johnklos 8y agoGo isn't as portable as it should be.
- UI_at_80x24 8y agoI want to thank-you for using a good-name for your service. Too many times some developer will pick a common word to launch their service/product thus making it impossible to search for it. Your name (a) is a single syllable (b) almost hints at what it does in the name (Baxxup?) (c) is not easily confused with other products (d) Your closest competitor from a google SEO standpoint is a tanning salon (single word google) Great job! I wish I was creative like that. Usually my crap looks like: sbs (server backup script) Works for me but my co-workers hate me.
- zulgan 8y agothanks! my process is actually much easier than you think i simply do some small transpositions on really cool(for me) names i have seen in world of warcraft :) such as zulgan and juun, judoc; jaxx -> baxx because backups start with b others I chose are horrible, such as https://scrambled-eggs.xyz https://scrambled-eggs.xyz which is effectively unsearchable, though you could say it was by design haha
- presto8 8y agoLove the idea and implementation! However I have two main questions/concerns that might prevent me from being a customer: Cost. Currently I pay $10/month to CrashPlan to store 2TB a month. I think your plan is to simply pass through the glacier price, but even that would be much higher cost I think? Large files. Because I only have finite monthly bandwidth and a limited upload speed, it would be good to do incremental backup of large binaries, only changing the parts that changed.