Ask HN: Is a home server good enough ?
The idea: I'm planning to launch an image storage service that allows users to upload photos from their IPhone. Think of it along the lines of twitpic wherein the user has a native IPhone application that can upload photos from the device's camera. I don't intend to copy twitpic, I'm just using it as an example to illustrate the general nature of the service.
The problem: After applying for an IPhone developer's license, my budget is now fairly close to $0, leaving me no money to rent a server.
The proposed solution: I have a 512KBps internet connection at home. It's supposed to be 512 up & down, but my ISP oversells its bandwidth as any ISP does, so this tends to vary wildly depending on time of day. Using a combination of dydns and port-forwarding I can set up a computer at home to be a server. The computer in question is an Acer with a 2.5GHZ intel processor & 2GB of RAM. This computer is only used occasionally for checking email or light wordprocessing. 95% of its time will be dedicated to this application alone.
The photos coming from the phone will be resized and compressed down to about 20kb per photo. There will be some additional metadata that comes with the photo like username, geolocation, etc. which brings the total data outgoing from the phone to about 25kb per photo.
Once receiving the photo, the server will send back some confirmation data which weighs in at about 4kb. If the user is requesting their profile for editing, the server sends back data that is about 25kb, ie; username, email, thumbnail of avatar, etc.
The server app is written in PHP with a smidgen of .NET for some image manipulation. The estimated frequency of use is perhaps 4 photos per day per user.
The question: This setup is only to launch the service and gain minimal traction, say 5000 users or so. That means it has to run for 3 months ? ( I have no idea how long it'll take to get 5000 users) The general idea is to get the service running with some users, iterate to the 2nd version of the product with the feedback received and then approach an investor.
Is this set-up good enough ?
Thanks HN !
-------------------------------------
Home computer details here : http://www.acer.co.in/acer/product.do?link=oln93e.redirect&changedAlts=&kcond48e.c2att101=50579&CRC=3875343219
20 comments
[ 5.7 ms ] story [ 162 ms ] threadThe issue is going to be that you're violating the terms of your consumer Internet connection, and will likely be subjected to all kinds of random filtering and outages. Murphy's Law dictates this will happen as soon as you start to get some attention, as soon as you try to go to sleep, etc.
If it wasn't for the .NET thing, I'd give you a slice to get started on, but I don't do any windows hosting.
The reason I'm using .NET is becuase I'm comfortable using the openCV library with it.
I'm a total noob when it comes to linux/unix, but I'm sure with a little work I can get my app running entirely on linux.
Can I take you up on your offer ? To be honest the only thing I can offer in return at the moment is "Hosting generously provided by..." banner on the site.
I'd spot you a slice too, but its specifically forbidden to have any windows machines with public access in our rack.
There are plenty of ways to get $100 in your pocket which can get you going for a while.
I agree that $100 doesn't seem like a lot to raise for hosting services.
A couple of things things to the contrary though; First, Its a lot harder to raise a $100 when you're from a third world country :) Second, I do have a little money to spare, but its parked aside "In case shit happens". Finally, Life sometimes puts you in a place where raising even a $100 is hard to do. I understand that running a homeserver for this sort of thing violates my ISP's terms of service, if I could put the money together for hosting, I would.
On the other hand, no need to buy hosting until you have something to put on it, so you might as well go with this setup while you test/develop your service.
You can get two months of a 256 slice by mowing someone's lawn... hosting shouldn't be hard to come by once you need it.
First see if the built in php image functions http://php.net/manual/en/refs.utilspec.image.php are good enough (you have a choice of three libraries to pick from), and if not, then use the command line program imagemagick (probably the command 'convert').
You might even be able to install imagemagick on windows, so you don't have to switch your desktop to linux. Then get linux hosting and work out any porting issues.
Another thing to try is some of the personal plans - I've seen some that are just $4 per month. If everything is done internally in PHP you should have a pretty easy time using those. If you need to install extra programs it gets a bit harder.
You personal machine is fine for CPU, but not for network. An online hosting place will be good for network, but probably not much CPU.
I don't know how much CPU you need, but maybe, if you need a lot of CPU. and you can do stuff offline, write the program in two parts - an online section, and then use your machine to download, and process the images, then send them back up.
No. No project should be run out of your home. The idea has absolutely nothing to recommend it. It isn't adequate for a Wordpress blog, to say nothing of a web application your customers will be relying on.
Get yourself a VPS. They're absurdly cheap -- 3 months on Slicehost will run you $75. (I assumed you would want backups. If that was not in the cards, reevaluate your readiness to be trusted with anyone else's data.) If you have an iPhone, you have far more than $75 available if you apply yourself. If you absolutely, positively do not have $75, skip your next run out for pizza, get yourself shared hosting from GoDaddy (for about $4 a month last time I checked), and put up with the nuisances of shared hosting (which is still better than self hosting!) until you have revenue. Then, go to a VPS.
With regard to the hosting, it has to be a VPS becuase I'm relying on openCV for some basic image recognition.
The main thing is not to let the problem of lacking hosting stop you from getting your project to the point where you have users and some potential income, as fast as possible.
Which is more likely: a) you halt work on your project because something is not up to "professional" standards, start making money on something else, and your project just dies or b) 1 million people instantly decide to visit your site as soon as it is launched, and can't get to it, and then methodically check the whois on every site they visit for the rest of their lives to make sure you can't do another startup ?
The answer is, if you know a way to get a few users now, do it. Try the site yourself from other internet connections, and tweak it to make it fast on your connection, but don't get bogged down on it. When you have a few users get hosting. Or, just put a small text line somewhere, saying "my service needs hosting, if you like it and can offer me a very cheap deal please contact me".
I haven't used Gandi's hosting, but have used other VPS providers. You will need to be vigilant. VPS providers can degrade your experience as time goes on. I suspect they either increase the load on machines due to cost pressure, or sometimes you just get bad luck and some CPU pigs end up on your server with you.
searchyc.com runs off of a home server.
But I had some googlebot problems. For a while googlebot could not reach my sitemaps without any reason.
Also my applications are download intensive. The only one that is upload intensive never had critical audience and is some kind of abandoned. If it had any more audience would it matter if it's a home server, i don't know.
The worst part was the almost complete lack of support. We had about 1 short outage a month of an hour or so, but about 1 long outage every 3-6 months. I was down for 3 days once because some cable installer screwed up inside the junction box out by the street. No matter how I screamed, I couldn't get someone out quicker than their usual residential "whenever we feel like it" schedule. I did however get 3 days knocked off my bill. That didn't make a dent in my pissed-off customers though. That's the day we started to move to a bargain colo. (That wound up sucking just as badly except they were on the other side of the country.)
And remember, that's all with "business class" officially sanctioned hosting-grade cable. If you host on the sly, with dyndns and sneaking it in on your residential cable, I know how the story will end. You'll grow for a month or three then one day they'll cut you off or block port 80 on you. You'll be down for days as you scramble to get hosted on a real server and get the DNS updates out.
You can do it, but you need to plan for that eventuality. It would be great if there were some matchmaking service for really small startups where they could share a VPS or a full-blown colo server.
in my experience, this would work for a "closed beta" but not for 5000 users.
If you're willing to use python or (java) for the server-side stuff, take a look at google apps if you are price sensitive. You can host a pretty substantial site without paying anything.