Ask HN: How can I sustainably run a website without charging a fee?

63 points by chabeligian ↗ HN
I have (what I think to be) a pretty good idea for a website. I also have a full-time job that I'm very happy with.

I'm thinking of launching my idea on Heroku, and the monthly fees would run around $300 a month. Mind you, this is with two dynos, two workers, and the "production" level of a few add-ons (Redis, Postgres, etc).

My problem is that I have no interest in charging money or providing an additional tier of features for people who would pay money. I want to try launching my idea, see if it's useful, then scale the site/add-ons to match those needs. I'd also like to open-source the whole site. But what happens if (a very large, hypothetical if) it does turn out to be more useful than I expected?

The only way I can think of breaking even is by asking for donations. Is donationware in the Internet age a viable option? Has anyone done it successfully?

65 comments

[ 5.0 ms ] story [ 129 ms ] thread
I had a small website - a content aggregation - on which I put Google AdWords on. This was about 5 years ago and it's still going. It generates anywhere between 50-100 per month. Not much, but has been enough to support all of my other side projects.

Do you really need to start with $300/month fee? Can you start small(er)?

1. Heroku is expensive. Odds are you can get the exact same virtual/hardware specs with a cheap VPS from Digital Ocean or Linode or any of various other providers. It'll require a tiny bit more setup and configuration on your part, but it'll save you money. You could also consider shopping around lowendbox.com and lowendtalk.com to find the best current deals.

2. Optimize your application so that you won't need to scale via upgrading or adding new hardware for a long time. Be mindful of your database queries, cache things in the application itself, and use a caching web server like nginx as well. Only upgrade or scale to multiple servers if you've optimized everything as best you could at all the software layers and yet you're still experiencing more traffic load than you can deal with.

I've run medium-traffic sites and applications off of $5 and $10/month VPSs by following those 2 steps, with consistently good and stable performance and latency. My guess is that if you order a cheap VPS from the start and do everything else right, you'll find that it'll scale just fine for years and you won't ever need to leave it.

3. Have a donation banner and if it fits okay with your application, place ads.

This. Very much this.

That said, I wouldn't trust lowendtalk.com too much if you want stability. If you are seriously contemplating a $300 budget, you can get away with $60 on Linode or Digital Ocean and have much, much better stability compared to some of the providers there. If stability isn't a big issue for you [e.g. 95% uptime is okay] then you can go with those providers.

That said, I wouldn't rely on a donationware model to bring in enough money unless it is less than $100. I know some sites that do function that way (mainly forums with strong communities) but generally they can't raise more than $100/mo reliably.

I agree with the lowendtalk bit - I previously switched between 2 or 3 providers on lowendtalk, and I even had issues with one of the larger / more reputable ones on the site. Digital Ocean or Linode won't cost you that much more, and the stability will be worth it.

I've been running a pretty popular site off of a $5 / month digital ocean box with no issues for over a year now. Does Heroku have this large of a markup generally, or is the op just overconfiguring?

As far as I can tell, all of Heroku's plans beyond their free tier have quite a lot of markup.
Heroku is expensive because of their markup, but more so because their platform forces everything to be separate managed, modular instances whose costs add up fast.

* Want a web server instance that doesn't get shut down between requests? Then get at least 2 web dynos at $35/month each.

* Want to run background jobs that are longer than 30 seconds? Then get a separate worker dyno at $35/month.

* Want a database with more than 10K (!) rows? That's at least $10/month.

* Want a memcache? That's $15+/month.

And so on. For a small to medium popularity site, all of these could be combined into one VPS on traditional cloud hosting. Heroku would make sense for a startup that has plenty of cash and limited developer resources (-> buy fully-managed-everything), and knows it will need to scale to tens or hundreds of servers to handle traffic very soon. But for most hobby webapps, a single VPS somewhere else will be 10x cheaper and good enough for a long, long while.

* minor correction to the above -- the first dyno is "free", so you only need to pay for one $35/month dyno to get 2 web dynos that don't get shut down
Even beyond medium popularity (depending on the type of site of course), you can move from a VPS to a dedicated server and handle quite a bit of traffic before you would need to use multiple boxes. (At least with some basic sysadmin skills, like using nginx instead of apache, or at least switching apache to the worker or event mpm and configuring it appropriately.)

The next step from there could be moving the database to a separate server. You can get quite a ways without even worrying about load balancing/proxying/mirroring/etc.

If you enable the free New Relic add on and turn on availability checking, then the pings it sends every 60 seconds keep the dynos from ever being shut down.

Also, if you're using Rails, switching to Unicorn as the server allows 3-5 concurrent requests, so you can get quite a bit out of the one free dyno if you don't use the standard config.

This is the approach I would take too, but I'm not sure I would recommend it.

The downside to Linode, Digital Ocean, et al is that you'll have to spend more of your time doing sysadmin work. If you're not already an experienced sysadmin, figuring out how to get the pieces playing nice with eachother can easily take up more than $300/month of your time.

And, once you're done with the setup, you're still not done: you have to stay on top of log files, watch for abuse, keep software up-to-date.

And and, if you've never done this before, you won't know what you don't know. (Pop quiz: you've never done sysadmin work before, what's the correct way to configure sshd? Bonus points: if you use MySQL, what's the first command you should run right after package installation, that nobody runs?)

I like sysadmin work, I consider it to be an important part of my software stack. But I'd be reluctant to tell anybody else that they should spend their time on it, too.

You can get around some of these issues if you use a control panel like cpanel. (Although as you get further from the old-school LAMP stack the complexity starts to return.) Regardless, in the early stages, when you're just trying to determine whether there's a market for your product, there's a fairly low bar for system administration. As long as it works, it's probably good enough. Even security (beyond the most blatant things) can probably wait until you've got some revenue, since it's very unlikely you'll be subjected to a targeted attack before anyone has even heard of you.
cpanel has a loooooong history of security issues. It's probably the single most vulnerable part of any hosting company's infrastructure. ISPConfig is probably better, but it too has had some issues (http://www.exploit-db.com/exploits/29322/).

There's a fairly low bar for system administration for "just getting it to work", but a really long upward curve from there to "properly managed". For example, backups (which typically require some special handling for Postgres and MySQL). Also, if you store any user data at all, you're kind of obligated to make sure it's safe. You kinda want to have automated DB backups and data safety even if you're using Heroku, but doing your own sysadmin might add to the effort required to get it all working right.

You're right for the most part that you're not likely to see much in the way of targeted attacks, but be careful not to discount the number of automated attack systems that are out there now. Within a minute or two of bringing a server online, I begin to see hits for spam, ssh, and root password attempts from around the world. It's sort of amazing really. None of these are likely to go very far on a default install, but if for example you decide to set up an MTA so that your application can send you (or your users) email notifications, it's easy to goof up a sendmail config and end up with an accidental open relay.

Maybe another way to put this is, Heroku charges that much because they provide that much value to people who don't want to deal with this stuff. I prefer to deal with this stuff myself, but a lot of other people don't, and I can't say they're wrong.

Do not use cPanel. Its security is disastrous.
I don't know, I really don't agree. I've never had a sysadmin job but I never found any problems with any of these things. All it takes is basic *nix knowledge.

I do work in infosec though, so as for your pop quiz:

1. Disable root login and enable public key auth only (PasswordAuthentication no, PermitRootLogin no).

2. Run mysql_secure_installation

All of these things are easy to learn with a little Googling. "How do I secure X?" "How do I install/configure X?" Way, way easier to learn than learning how to program or start a business, at least.

It is not worth $300 or more per month just to outsource some sys admin tasks.

Not to mention I doubt Heroku is paying very close attention to your log files for you; it's probably easier for you to do that yourself on your own VPS (where you'll also have access to more logs in the first place). If you have a vulnerability in your application then no hosting/platform provider is going to notice it and fix it for you 9 times out of 10.

How far could you get with the free tier on OpenShift?
Have you considered VPS? There are quite a lot of hosts these days that are reasonably priced - Digital Ocean and Linode come to mind first. Initial setup is usually all about trying new things and testing and starting small may be more cost-effective at least in the short term.

Depending on how efficiently you create the site and its functionality, you may be able to get away with minimal resources.

Edit: Ah, meowface beat me to it! :-)

Have you considered AdSense?
You need traffic in the hundreds of thousands of visitors to earn $300/month with AdSense.
You (probably) need traffic in the hundreds of thousands to justify the $300/month infrastructure spend.
$300 per month? You can finance and colocate big server for that price, as one of my customers does. $300 could also be used to rent 5-10 real servers in different countries, to run your own cloud with GeoIP and Linux containers. An other customer is running a shoutcast cluster of 6 hosts, two in US, 1 in Canada, two in Europe, and one in Korea for half that price. AWS traffic for such a shoutcast cluster would be several thousand $ per week.

Drop the stupid cloud. It costs to much. Rewrite your site to use only free software. Get a cheap Xen site. E.g. my own small server cost only €4 per month, offering 100mbit flat. Unfortunate my provider does no longer offer this contract, but there are other affordable hosts. Just take care, that you do not sign at a Virtuozzo/OpenVZ, or some cookie cutter provider who cripples performance like rackspace.

If unsure what Xen provider is good, get a real iron at Hetzner spot market for about €20-25, install a minimal Debian on with Linux containers, and run your site within a container. A real iron will likely provide more processing power then your site needs. So you can cross finance the host, by running applications you wrote for customer.

And always unbundle DNS contract from hosting contract, so you can switch fast, in case your hosting provider sucks.

> $300 per month? You can finance and colocate big server for that price

In the immortal words of Han Solo, "Yeah, but who's going to sysadmin it, kid? You?"

(I agree with you, however.)

maybe I have just been lucky but I am running a site on a dedicated Linux server for 3 years without any significant issues. There have been zero security issues. The only downtimes were caused by me. It requires maybe 2 hours of maintenance per month. It is also running on bleeding edge packages. Of course I invested some days into the initial setup but that is fun if it's your hobby.
If you need $300/mo worth of Heroku hosting, chances are good that you aren't doing something that's going to be terribly hands-off. Systems administration isn't hard, but it is involved - there's a lot of learning ramp-up that has to go into it.
> And always unbundle DNS contract from hosting contract, so you can switch fast, in case your hosting provider sucks.

With Hetzner that is indeed a necessity. They sell cheap iron, but don't expect any support from them and be prepared to move out quickly.

Hetzner null route you in the event of a DDoS.

Better using OVH.

What about a kickstarter for $3000 or so? Enough money to run the site for 10 months and see if there is enough interest to keep it going. Not so much money that it's impossible to raise from small donations over the course of a month either.
Has that worked for any largeish webapps at all?

I'm especially curious as I would like to do something like this for searchcode. The costs aren't too high but since it has no revenue stream it would help keep things going even if my personal costs suddenly went up and something had to go.

- Look for a cheaper host for your MVP. Worry about scaling later. OpenShift has free options.

- Ads

- Referral programs (Amazon, eBay)

- Paid support, rather than extra features

- Collect statistics/analytics, sell them to other companies (a la bit.ly)

- Superficial upgrades, like a little badge against their username to show they're a gold/donating member

Checkout AWS's Elastic Beanstalk. Full DevOps built in. I have an app setup to use a new cheap t2.micro server and skips the load balancer (but I can add one at any time). Performance is pretty good and best of all, it only runs me around $13/m.
We use AWS Elastic Beanstalk and couldn't be happier. We compared the performance of quite a few clouds and EB has incredible speeds over the competition even for paid plans. They just lowered our prices too from their old t1.micros to t2.micros about 50% and we have 4 EB applications so that really made a difference and we combine the CloudFront CDN to leverage even more caching where we can and have a scalable solution for very little cost. Data reliability is also a very important concern so we use AWS RDS with MySQL for our primary data store and Elasticache with Redis.

If AWS lowers the pricing of the entry level EC2 instances that Elastic Beanstalk uses a bit more, I plan on moving all my side projects as it just doesn't make any sense to manage any servers or pay $20/app when I get more flexibility with AWS (ssh to find logs, tight integration between AWS services, etc). The other thing I wish they had was the ability to use a EC2 instance for more than 1 application as we don't really need 4 separate apps, but it's just mostly for cost reasons as a bootstrapped startup.

One thing we don't use, but want to down the road is using AWS CloudSearch unfortunately and currently just use a file based search, but if they lower the entry level pricing (currently more than our entire AWS spend) or we can afford it we plan on using them to manage search.

As far as multiple apps per VM, have you taken a look at OpsWorks? It seems to be aiming to be as automatic as Elastic Beanstalk, but significantly more flexible (at the expense of up-front configuration effort).

It certainly is unfortunate that CloudSearch doesn't scale down smaller, I had to skip it for the same reason.

The only issue with AWS is that it is an American company. If you are an EU citizen as me and worry about data security, I would not trust an American company.
Sign up for BizSpark and you can get free hosting for 3 years in a cloud environment.
You get a $150 monthly credit for microsoft azure a month. While that is not anything to scoff at - a VM with 1 vCPU core & 1.75 GB ram is $45 / month.

Growing beyond $150 a month would be quite easy, even with a small user base, and at that point you are paying _a lot_ for what you are getting.

My point is just make you fully evaluate long term consequences of locking yourself into a closed source ecosystem with very expensive servers (Azure and AWS are both guilty here.)

I use vpscheap.net for my side projects. They are very good. They have unmetered bandwidth plans that start as low as a couple bucks a month. I use the 10 dollar/month plan, and it's 1gig ram, unmetered on a 50mbit/s link, quad core, 100 GB ssd. You can do quite a lot with that.

Only thing I don't like is that I can't get a clean install. They seem to have one Ubuntu image, and it's not really minimal, so I have to do some cleaning when I start a new instance. Other than that, it's pretty great.

You could run a cluster of 30 of those for your Heroku budget, and I have no doubt that would be an insane amount of overkill. If you were absolutely sure you were going to get killed with traffic, I would spin up a small one of these as a load balancer and put it in front of two web/app servers and do one more for database. That's still just around 35 bucks a month. And you should be able to get that from donations.

(comment deleted)
As others in this thread have pointed out, $300/month is a ridiculous amount of money to pay. Get a small Linode or something for a tenth the price.
There is no way you can know exactly that two workers and two dynos are right. Just start off with Heroku. Maybe even pay for a worker or an extra dyno. Remember you can run multiple instances on a single dyno with eg. unicorn. Once your idea takes off you can deploy using the other posters' suggestions. By that time I thoroughly recommend Cloud 66. https://www.cloud66.com/
Surprised no one has mentioned App Engine. Their free tier will take you a long way.
Second that, if i'm not mistaking, there is a guy running his 4000 $ monthly biz running on the free tier... Can't remember which biz or where i saw it though.

It was just API calls if i'm not mistaking and he wrote a post where he slimmed his app so it could fit in the free tier again.

Anyone has an idea?

Don't over optimize too early. Maybe it would be just okay if you run everything on a $40 linode node.
> But what happens if (a very large, hypothetical if) it does turn out to be more useful than I expected?

This is what you might call 'a good problem to have.' Either the site is sufficiently useful to people that you can charge them money (even if you don't want to...call it "donations" if it feels better), or it isn't.

The odds of you making donations viable is minimal. You're far more likely to make the idea breakeven or profitable by charging real money for it (preferably some amount of money greater than $3/month).

This topic has been worked over repeatedly over the past few years on HN. Try searching for past threads that involve cperciva, patio11, and tptacek for an idea.

(comment deleted)
Honestly, even for funded startups scale is generally the last thing one should worry about... it's the single best problem to have.

If you're doing it because you love it just do it, wikipedia exists on donations. Worst comes to worst you decide you can't afford hosting anymore, and you either limit traffic, or shut it down and paste a link to the code. It's not like you owe anyone anything for having provided them a free service for years.

Try the cheapest server from Hetzner (http://www.hetzner.de/en/hosting/produkte_rootserver/ex40) with their fees even an expensive hobby turns out pretty affordable.
I use hetzner for a side project, but I used their server auction. It doesn't have setup fees like their regular plans. https://robot.your-server.de/order/market/sortcol/price/sort...

So far it has been pain free and I recommend the service for someone looking for something more powerful and with more ram than the $40 digitalocean server. DO is the better deal up until around 40-60$ in my opinion.

Hey, if I read that well the guy asks for advice on how he can get some money, not how he can spend less money. ;)
I wish you weren't all the way down here, because you're absolutely right. The HN people that know about monetization must be sleeping right now -- probably blissful, happy sleep, full of dreams of what to do with their money.
but it seems reasonable to teach him about lowering his costs so he need to get less money, right?
Nobody has taught anything about lowering costs so far; all of the suggestions have been for trading more time for money. Since he's already got a full time job, I doubt this is the advice he was looking for.
If you host on AWS, I can give you two $100 credit codes to get started with.
If unclaimed by OP, could I have them, or one of them? I'm just looking into starting an AWS project, which will similarly cost me money in return for as yet unknown rewards. The idea is to create ad-hoc render farms from multiple EC2 instances, so development costs could end up being non-trivial.
For sure. Please drop me at note at tejas83 at gmail dot com. All the best for your project.
Have you considered using a [kimsufi](http://www.kimsufi.com/uk/). It's basically a cheap dedicated server. You can get a decent configuration for a less than $10/month.

You will need to admin it yourself but this depends more on the size of your website, I don't think you should worry about it so early, especially given the fact that you're not sure if you website is actually going to take off.

It surprises me how many replies try to solve a side problem instead of what the OP asks for. The OP doesn't seem a computer illiterate, so no need to educate him on anything.

IMO, he asks: "How does one scale a free web application, money-wise?". For example, "How did they scale Tumblr? [1]".

That's a real mystery for me too. I know they were funded by some big names [2], but that kind of financial support here in Europe is not even a dream.

[1] http://highscalability.com/blog/2012/2/13/tumblr-architectur... [2] http://www.crunchbase.com/organization/tumblr

That's because in all likelihood OP was asking the completely wrong question. He has no application yet and no user base, so it's a waste of time to consider these kinds of things when you're trying to create your own application or business.

But of course, if you grow at such a scale where you're getting a lot of users despite investing little money into the product, odds are many venture capitalists and incubators will be interested in you.