Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 81 lines (65 sloc) 4.155 kB
efcf2dd @lloyd yummy, travis support
lloyd authored
1 [![Build Status](https://travis-ci.org/mozilla/awsbox.png?branch=master)](https://travis-ci.org/mozilla/awsbox)
2
238eae5 @lloyd first cut at documentation
lloyd authored
3 ## A Lightweight DIY PaaS for Amazon Web Services
4
5 Amazon Web Services (AWS) "Elastic Compute Cloud" provides low cost, instant
6 on VMs that can be used to deploy any kind of service. AWS also provides a
7 full set of APIs that make it possible to programatically allocate servers.
8 Finally, AWS offers the ability to create "template" instances (Amazon Machine
9 Images) that are VM snapshots.
10
11 *The problem:* For small scale nodejs projects, there's a lot of
12 administrative boiler plate work that one must to set up a machine.
13 You must install web server software, set up security policies and network
14 access, copy up your keypair, determine how you'll deploy your software on the
15 new VM, etc.
16
17 "Platform as a service" providers like heroku make most of these decisions for
18 you, providing a demand spun "vm-like" thing that you can deploy code on by
19 adhering to a couple conventions and `git pushing`. Where heroku breaks down
20 is in *generativity* - you are limited to doing things that heroku has thought
21 of, and when you want to do something custom (install a new native software
22 library, run an experimental database for which you cannot find a third party
23 hosted provider) - you are screwed.
24
25 Also, heroku is relatively expensive. The moment you want to run two
26 processes, you're paying 0.05$/hr for that process vs. on aws where
27 you can purchase a "micro" instance for 0.02$/hr for the whole VM.
28 The final area of expense is in "add-ons" - service providers that offer
29 things like hosted databases, email sending, etc. A small scale database
30 can cost another .015$/hr.
31
b82f324 @lloyd say nice things about nodejitsu, they deserve it.
lloyd authored
32 But Wait! What about [nodejitsu]? Well, probably use them: they're
33 awesome, smart, admirably share their work, have a free service for
34 non-commercial deployments, and *just work* for most apps. But
35 sometimes you might want full control. That you? Read on... (NOTE:
36 awsbox is *built* on lots of nodejistu stuffs).
8704713 @lloyd remove whitespace @ eol
lloyd authored
37
b82f324 @lloyd say nice things about nodejitsu, they deserve it.
lloyd authored
38 [nodejitsu]: http://nodejitsu.com/
39
40 So what we maybe want is the convenience of Nodejitsu and Heroku, and the
41 pricing and freedom of a raw amazon image...
238eae5 @lloyd first cut at documentation
lloyd authored
42
43 *The solution:* **awsbox** is a set of nodejs scripts, a command line utility,
44 and a template image (AMI). Together it allows you to deploy a new server
45 from the command line that is pre-configured to run your Node.JS service.
46
47 ## Features
48
cd3523b @lloyd don't use words like easy. you'll be sorry.
lloyd authored
49 * **nodejs focused** - While other stacks could be supported in the future,
238eae5 @lloyd first cut at documentation
lloyd authored
50 awsbox is laser focused on node.js to start.
51 * **full root access** - awsbox just gets you started, after that you can do
52 Whatever You Want.
53 * **magic ssh key config** - Your SSH key will be copied up and installed for you.
54 * **git push support** - After you provision a vm, it's pre-configured so you can
55 push to deploy
6e3ea19 @lloyd update README with new features and the move to nginx
lloyd authored
56 * **multi-region support** - awsbox base AMIs are published in every region AWS
57 supports, so you can deploy anywhere.
238eae5 @lloyd first cut at documentation
lloyd authored
58 * **command line or programmatic usage** - type at it, or script it.
59 * **OS level user isolation** - all deployed code is run with user permissions under
60 a single account.
6e3ea19 @lloyd update README with new features and the move to nginx
lloyd authored
61 * **HTTP forwarding with custom 503 page** - [nginx] is pre-configured to forward
238eae5 @lloyd first cut at documentation
lloyd authored
62 requests to your nodejs process bound to a local port.
3bd06b4 @gurjeet Typo
gurjeet authored
63 * **SSL support** - By default your process runs with a self-signed cert. Enabling
9263bf6 @lloyd update to an image that used http-proxy instead of nginx. when merge…
lloyd authored
64 SSL support is as easy as copying up a private key and certificate in [PEM] format.
39fc754 @lloyd prominently advertise websocket support
lloyd authored
65 * **WebSocket support** - AWSBOX fully supports WebSockets, via [socket.io] or otherwise.
6e3ea19 @lloyd update README with new features and the move to nginx
lloyd authored
66 * **Route53 support** - manage your DNS from the command line, and have DNS set up for
67 your boxes at creation time.
9263bf6 @lloyd update to an image that used http-proxy instead of nginx. when merge…
lloyd authored
68
6e3ea19 @lloyd update README with new features and the move to nginx
lloyd authored
69 [nginx]: https://nginx.org
9263bf6 @lloyd update to an image that used http-proxy instead of nginx. when merge…
lloyd authored
70 [PEM]: http://en.wikipedia.org/wiki/X.509
39fc754 @lloyd prominently advertise websocket support
lloyd authored
71 [socket.io]: http://socket.io
238eae5 @lloyd first cut at documentation
lloyd authored
72
4e120b5 @lloyd moar docs
lloyd authored
73 ## Get Started
238eae5 @lloyd first cut at documentation
lloyd authored
74
4e120b5 @lloyd moar docs
lloyd authored
75 Start by working through [the tutorial]. Then have a look at the [Hello World] sample app.
76 And after that, check out [the documentation] in this repository.
ab1ae98 @lloyd mention hello world sample app in readme
lloyd authored
77
5b555f8 @lorcanmcdonald Fixed links to documentation in README.md
lorcanmcdonald authored
78 [the tutorial]: https://github.com/mozilla/awsbox/blob/master/doc/TUTORIAL.md
ab1ae98 @lloyd mention hello world sample app in readme
lloyd authored
79 [Hello World]: https://github.com/lloyd/awsbox-helloworld
5b555f8 @lorcanmcdonald Fixed links to documentation in README.md
lorcanmcdonald authored
80 [the documentation]: https://github.com/mozilla/awsbox/tree/master/doc
Something went wrong with that request. Please try again.