Hey everybody. I built this small Sinatra app because I wanted a simpler way for people to install my software OneBody[1] on DigitalOcean.
I'm not sure my little VPS will hold up under the strain of HN, but you can see the app in action at http://installer.71m.us and even use it to install itself (how meta!) on DigitalOcean.
This uses the new MetaData[2] feature of the DO API to pass a config string to be processed by CloudConfig[3].
Once that is done, there is a small bit of code running on the VM to tell this app when the install is finished so you get a progress bar while you're waiting.
To be clear, DigitalOcean is doing all the real work -- this app simply acts as a hand-off between your app.yml config file on GitHub and the DigitalOcean API.
If you have an ssh key set up in your DigitalOcean account, then that is the key set up on the root account. If not, you should have received a password email from DigitalOcean -- use that.
You might be more interested in installing our church app OneBody. You can do that by clicking the "Install on DigitalOcean" button in the readme here: https://github.com/churchio/onebody
It's installing a brand new VM. By definition, it's got more than just root, it's got enough permissions to bring up new VMs entirely. Being worried about whether it has sudo permissions or something inside the VM is beside the point once you've stipulated that.
I'd be interested in adding this button once it gets offical support from DigitalOcean.
I added the Heroku Button[1] to a self-hosted OS app I wrote[2] and it seems to be useful (over 100 "recent deploys" per Heroku). It would be great if there was some affiliate commission as well - if someone signs up for a VPS to run an app, would be awesome to get a small kickback from DigitalOcean.
I'm not sure this app would get official support from DO, since it's a bit hacky. I imagine DO would add their own install-button support at some point in the future (at least I hope so).
This app does set a referral cookie whenever someone chooses to install an app using it.
For OneBody, we have 6 different ways to install the software.[1] We're definitely not forcing anyone to pay DigitalOcean to host our open source app, but it sure is nice to give people that option when they don't want to mess with running their own host.
Why is "church" (specifically) built into the onebody product? The software would seem to be organization-agnostic, suitable for any community group. "Church" is certainly a reasonable target/majority use case for marketing, but it seems strange to exclude other cases where a group of people come together in a buildng, take classes, plan events, etc, where the software could work fine.
I agree somewhat, though OneBody does have church-specific features built-in, such as favorite bible verses and prayer requests etc. It is specialized for church communities, though you can turn that stuff off and use the software as a general community social network if you want.
This response annoys me a little bit. "Why not just use docker?" gets thrown around so much at the moment, as if Docker is the alpha and omega of app deployment. Is it just me? Docker's awesome. I love Docker. But it's not the Messiah of app deployment. Not that DO is, but that's not the point.
Upvoting, in part because as much as I don't understand why an open-source project would want to advertise a particular vendor, if one insists on Facilitating Deployment (while doing unpaid advertising), one should probably take effort to facilitate this deployment to as many vendors as possible. Thus Azure and Heroku too (linked in your comment to comment) if it's possible in similar way, and maybe there are more too.
edit: ah, I see from other comment that there's apparently possibility of gaining some "cash" from DO for the ads: https://www.digitalocean.com/referral-program/ although seems only useful if one's using the DO platform himself (works as a discount).
So, I wanted to give Azure a try. I created a new Microsoft account, and signed up for an Azure free trial. Unfortunately, I cannot even load http://deployto.azurewebsites.net, as there appears to be an OAuth failure:
Sorry, but we’re having trouble signing you in.
We received a bad request.
Based around what, one click VPS/PAAS deploys? There are a lot of tools out there that can do this. Vagrant with a bash script is the simplest that comes to mind.
You'd probably be able to create a marketplace around these types of services which wraps monitoring/uptime/alerting/management/autoscaling/software updates etc into one interface.
There could be a standard, but I don't think it exists today (at least not one that is supported by the services I hope to use, e.g. DigitalOcean, Amazon, Google).
This is a tool that scratches my own itch -- certainly not something I care to be the end-all of service-agnostic app installer.
Soon each person will have a computer in the cloud. There is no reason why apps shouldn't be as easy to install on any user-provided server as on desktops. I am very excited about this and would be interested helping code it.
I think you are looking for Topology and Orchestration Specification for Cloud Applications (TOSCA) [1] which allows you not only to create one node but a cluster, their drives, network rules, autoscalling etc.
There is also another project which is cloud-init [2] that defines an standard way of mounting the initial data, and provision the shh keys.
Cloud Formation is aws implementation of this and is quite good. You can create define a template of how your application should be deployed and parameters for the end user like Heroku button.
You can check a good example of these technologies on the coreos landing page [4].
I have a very simple demo of this running for StackMonkey and should have a live demo on the site by Tuesday or Wednesday of the OpenStack Summit. It uses the Launcher APIs (which are still in progress and currently undocumented) which runs this page: https://www.stackmonkey.com/launcher/. Obviously you need Bitcoin to start the instances on the various providers.
How are you planning on handling support for this going forward?
I have no specific need, I'm just always curious about how folks transition from, "I have a neat idea" to "I want my neat idea to work for most people".
56 comments
[ 2.7 ms ] story [ 105 ms ] threadI'm not sure my little VPS will hold up under the strain of HN, but you can see the app in action at http://installer.71m.us and even use it to install itself (how meta!) on DigitalOcean.
This uses the new MetaData[2] feature of the DO API to pass a config string to be processed by CloudConfig[3].
Once that is done, there is a small bit of code running on the VM to tell this app when the install is finished so you get a progress bar while you're waiting.
To be clear, DigitalOcean is doing all the real work -- this app simply acts as a hand-off between your app.yml config file on GitHub and the DigitalOcean API.
[1] https://github.com/churchio/onebody
[2] https://www.digitalocean.com/community/tutorials/an-introduc...
[3] https://www.digitalocean.com/community/tutorials/an-introduc...
But now what? I can't even SSH into it as I don't have the pw. I hit port 80 and all I get is the same "install it on DO page".
I thought it'd do a 1 click deployment, I'm stumped :(
but as for the app, I hit the IP and i just see the "DO Install Button" page. http://cl.ly/image/032E0s0S122I
is this expected?
thx for the awesome work btw, i am just so anxious to try it out, atleast for one of the church i know who could def use something like this.
But for a whole host of people, getting the app running quickly on a host they control is like magic.
[1] https://github.com/churchio/onebody/wiki/Manual-Installation
Please submit it to our projects page so we can highlight it:
https://www.digitalocean.com/community/projects
I added the Heroku Button[1] to a self-hosted OS app I wrote[2] and it seems to be useful (over 100 "recent deploys" per Heroku). It would be great if there was some affiliate commission as well - if someone signs up for a VPS to run an app, would be awesome to get a small kickback from DigitalOcean.
[1]: https://buttons.heroku.com/
[2]: https://github.com/swanson/stringer
I'm not sure this app would get official support from DO, since it's a bit hacky. I imagine DO would add their own install-button support at some point in the future (at least I hope so).
This app does set a referral cookie whenever someone chooses to install an app using it.
[0] https://www.digitalocean.com/referral-program/
We have yet to properly document the feature, but we've used it in a few places already.
it's an ansible playbook that configures the server and installs all requirements, and sets up nginx, python for you.
whoever is interested, here is the source code:
https://github.com/level09/enferno-ansible
[1] https://github.com/churchio/onebody/wiki/Installation
There is no universal API for Docker that would allow one to install "anywhere that has docker", at least as far as I know.
edit: ah, I see from other comment that there's apparently possibility of gaining some "cash" from DO for the ads: https://www.digitalocean.com/referral-program/ although seems only useful if one's using the DO platform himself (works as a discount).
Sorry, but we’re having trouble signing you in. We received a bad request.
Why is "DigitalOcean" a choice made by the app, instead of by the user? Can there be a standard for this sort of installation metadata?
This is a tool that scratches my own itch -- certainly not something I care to be the end-all of service-agnostic app installer.
There is also another project which is cloud-init [2] that defines an standard way of mounting the initial data, and provision the shh keys.
Cloud Formation is aws implementation of this and is quite good. You can create define a template of how your application should be deployed and parameters for the end user like Heroku button.
You can check a good example of these technologies on the coreos landing page [4].
[1]: http://en.m.wikipedia.org/wiki/OASIS_TOSCA https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=...
[2]: http://cloudinit.readthedocs.org/en/latest/
[3]: http://aws.amazon.com/cloudformation/
[4]: https://coreos.com
I have no specific need, I'm just always curious about how folks transition from, "I have a neat idea" to "I want my neat idea to work for most people".