Ask HN: How can I sustainably run a website without charging a fee?
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 ] threadDo you really need to start with $300/month fee? Can you start small(er)?
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.
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'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?
* 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.
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.
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.
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.
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.
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.
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! :-)
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.
In the immortal words of Han Solo, "Yeah, but who's going to sysadmin it, kid? You?"
(I agree with you, however.)
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.
Better using OVH.
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.
- 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
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.
It certainly is unfortunate that CloudSearch doesn't scale down smaller, I had to skip it for the same reason.
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.)
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.
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?
But then again, the post is from 2 years ago :)
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.
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.
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.
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.
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
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.