
Ask HN: Is a home server good enough ? - karam
Hello HN!,<p>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.<p>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.<p>The proposed solution:
I have a 512KBps internet connection at home. It's supposed to be 512 up &#38; 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 &#38; 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.<p>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.<p>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.<p>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.<p>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.<p>Is this set-up good enough ?<p>Thanks HN !<p>-------------------------------------<p>Home computer details here :
http://www.acer.co.in/acer/product.do?link=oln93e.redirect&#38;changedAlts=&#38;kcond48e.c2att101=50579&#38;CRC=3875343219
======
patio11
>> Is this set-up good enough ? >>

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.

~~~
karam
Believe me, I grasp the idiocy and irony of owning a macbook & an iphone and
not having $75 to spare. Life's like that sometimes.

With regard to the hosting, it has to be a VPS becuase I'm relying on openCV
for some basic image recognition.

------
RobGR
The hardware is fine. The bandwidth is passable, if you write a clean and
minimal site. Can you pay a small amount extra and get a fixed IP ? Dyndns
will suffice to get you started, though.

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".

------
ja27
I ran a couple servers at home using "business class" cable a few years ago.
Real static IPs, my own DNS servers, etc. It absolutely sucked as far as the
network. We never got close to the outbound bandwidth we were sold. I could
have lived with it being 50% but it was often so slow and laggy that it was
unusable.

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.

------
ars
Port it to linux, and you'll be able to get hosting MUCH cheaper. If it's
already php, and you use .NET just for image manipulation, it should not be
hard to do.

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.

------
brk
Hardware-wise, you're probably fine.

The 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.

~~~
karam
Thanks for the offer !

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.

------
Xichekolas
Latency and slow upload speed are usually what makes a home server unfit for
this kind of duty. Not to mention you'll be violating your TOS most likely.

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.

------
noonespecial
In my experience, dydns will be an enormous hassle that never really does work
quite right. It will work from some places and not from others in a very
haphazard fashion that leaves you never quite sure if you're up or not.

I'd spot you a slice too, but its specifically forbidden to have any windows
machines with public access in our rack.

~~~
ratsbane
If it's in php it should be reasonably easy to port to linux or *nix. Have you
looked at using ImageMagick instead of .Net? To resize a pic you can `convert
original.jpg -resize 640x480 new.png` for example. To make it faster use a php
imagemagick library.

~~~
karam
I'm using the openCV library with .NET for some image recognition. I've looked
at imageMagick but its not suited to this purpose unfortunately.

~~~
ars
You can use openCV on linux.

------
fsniper
Home server is only reliable if you have static ip and a stable line.
Otherwise it's more of a pain than a cure. I do have some mission critical
businesses run through ADSL (4Mbit down/1Mbit up) in Turkey. Some of them have
been running over a year now.

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.

------
joeld42
I ran a home server with dyndns, just used it for family stuff. The issues I
had weren't with bandwidth but with upload speed (important for your app) and
mostly with uptime, between regular home pc outages, dyndns snafus, and
occasional outages from the provider.

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.

------
jws
Gandi is running 30 day free trials of their VPS hosting. You could use that
to see if you can make a VPS solution work for you without having to splash
out any cash.

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.

------
alaskamiller
I say go for it. You might find that you might not even need to upgrade for a
dedicated or even a VPS for maybe half a year. I mean, who really knows how
many users you're going to support? Necessity is the mother of invention.

searchyc.com runs off of a home server.

------
jakewolf
I'm pretty sure most ISPs prohibit using their service to host a site.

There are plenty of ways to get $100 in your pocket which can get you going
for a while.

~~~
karam
Thanks for all the responses so far !

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.

------
pclark
just use S3.

------
mikecurry
Home setup is never good enough unfortunately. Though, I am not saying DON'T
try, as it could work out for you. One thing you should consider, is, most
internet service providers have fast downloading speed, but the upload speeds
are very slow... meaning you won't serve a lot, if any, without long waits for
the end user.

