All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.
Lobster: hourly billing panel for virtual machines on top of OpenStack/SolusVM
I've been working on a Golang billing panel over the last few weeks. Currently the intention is to produce a panel that provides functionality for a prepaid hourly billed service, but to keep the code simple by avoiding support for too much customization.
Lobster is built on top of APIs provided by VM backends like OpenStack and SolusVM. It uses a prepaid hourly billing model, where users add credit via a payment interface (currently just Paypal/Coinbase), and then can provision virtual machines or add templates/ISOs. Lobster bills for active VM instances, image storage (if the backend supports custom images), and bandwidth overages.
Lobster itself provides an API that clients can use to manage their services. Importantly, Lobster is provided as an available backend for Lobster, i.e., any Lobster client can resell services on their own Lobster panel by using the API. This ensures that the API supports all panel functionality.
Lobster is free software; it is released under Apache License, Version 2.0.
- GitHub: https://github.com/LunaNode/lobster
- Documentation: http://lobster.lunanode.com/docs/
- Installation instructions: http://lobster.lunanode.com/docs/install.html
- Demo: http://lobster.lunanode.com/
- Issue tracker: https://github.com/LunaNode/lobster/issues
Note that, as the template text implies, the demo does not connect to an actual backend. Instead, it gives you fake VM instances so that you can see the front-end. Currently there is no demo for admin section; such a demo wouldn't be useful anyway since the administration section is very incomplete.
The software is very much pre-alpha but might be semi-usable (report bugs in the issue tracker!). Long-term goals include support for more OpenStack features such as volumes/virtual networks (snapshots via nova image-create should be supported soon).
Comments
I need to have a look at this. Looks like an awesome project.
+1 to what @Traffic said! Loving it
Are you looking for people to make additional Backends/Gateway modules or do you have other areas that you would prefer to focus on? More like a priority list rather than a issue tracker.
+1 for Golang
At this stage additional vm/payment interfaces may not be that useful, but if you're interested in adding an interface implementation then that'd certainly be great! Similarly, if you want to contribute on anything else, you an either just implement it and submit a pull request, or open issue first to get an opinion before you start coding, depending on your style.
BTW the issue tracker has priority labels, and is for both features and bugs and maybe other things.
Damn! That looks solid as hell. And as @qrwteyrutiyoup wrote, kudos for going with Golang.
I'm watching this project.
@perennate I love the sound of it, lets say right now I have WHMCS and SolusVM, can you roughly talk me through the use of Lobster and how it will enable me to start selling with this model?
I assume (hope) integration in to currently running systems has been a consideration from the first day, i am not quite understanding if this enables current hosts or is designed to be a primary model from day 1 and only appeals to new hosts that have not yet started?
It is not designed to appeal to anyone in particular, the only concrete goal is to hopefully replace our own software at Luna Node at some point.
Lobster manages billing and user accounts, and does not integrate with WHMCS. You would create a SolusVM client with username "lobster" and a set of SolusVM plans called "Lobster openvz", "Lobster kvm", etc. for each virtualization type that you want to support. These are dummy plans, since Lobster will override the plans based on its own configuration using custommemory/customdisk/other parameters.
So you would then define the plans you want in Lobster from the administration panel, and configure the lobster.cfg.json with administrative API key (with automatic node selection enabled) / virtualization type / node group for the SolusVM interface.
When users create new virtual machines, Lobster will provision it under the "lobster" client in SolusVM. Users will not be able to login to the SolusVM panel directly (this isn't strictly necessary and may change in the future if needed), instead everything needs to be done through API calls made via Lobster. A noVNC client and proxy is provided that connects based on the VNC information provided by SolusVM. Bandwidth overages are billed per GB overage based on a configurable fee; bandwidth is accounted for on a region-wide basis, so it's total traffic used by VMs compared with sum of bandwidth allocated on the plans (option to shutdown VM instead of pay overage needs to be added).
I don't see a good way to integrate with WHMCS. iwStack probably has the best model, you do billing in WHMCS and services on CloudStack are charged to the credit maintained by module, but even that is clumsy IMO.
Edit: actually, maybe it could be connected with WHMCS just with add credit WHMCS products that communicate with Lobster to add the credit (and create new user account if one matching WHMCS email address doesn't exist already). I'll think about that, not sure if there's interest though.
Understood, makes sense now.
I think the interest would be huge, it adds the feature that Vultr and DO have which is the advantage they have over the current Solus/WHMCS model, I would certainly use it and pay for it, been looking for a model like this for LES anyway.
Wonder if a pricing model like that of NearlyFreeSpeech would be feasible for VPS hosting. Paying for usage, not allocation.
Well that is kind of my plan for LES, if you use a VPS all year then its €3.00 over the year, otherwise you can just create and destroy your server in another or the same region as you would at DO/Vultr, while your not using it your not paying.
It would work out at €0.0082 p/day, so I am hopeful that this is something I will be able to use to achieve this.
Right, but I didn't really mean it that way. I mean literally paying per GB of disk usage and per MB of RAM usage, not a 'plan'. That's what NFS does for shared hosting, basically.
It's missing multi language, it will be hard to add it later.
yes but surely there needs to be a minimum?
@Zen a VPS with 1mb of ram is not going to be of much use, and while I appreciate that a VPS may idle on 4mb it probably needs at least 32mb to boot, I suppose some testing would need to be done but @joepie91 I would love to employ that model obviously based on the bare minimum to boot and 1GB disk unless solusvm v2 allows disks in MB in which case a few hundred MB would be fine.
been having a play, sort of got it functional, will wait until it has had a bit more work done but I am double excited about this
Added basic support, let me know if there's anything wrong with the implementation -- https://github.com/LunaNode/lobster/commit/234fb7a6f8c8c9c7d176adf7a05d784c1928e9e2
Exactly!
If you just charge by the MB/GB, you wouldn't need to 'set a minimum', as there isn't one. Again, it's usage-based, not allocation-based - if somebody can manage to run their stack in 10MB of RAM, they'd be paying for 10MB of RAM. If they can't, they're paying more
You'd basically just have to poll resource usage over time, and charge based on that.
It's an interesting idea, but I don't think there'll be any companies doing that any time soon. It requires too much live migration between host nodes whenever someone's memory usage increases, each migration usually involves a couple hundred milliseconds of downtime. Also questionable if memory/disk/CPU can be balanced in proportion to the hardware (I guess I mean to do market research to predict that, and then find hardware that has the same proportion as will likely be utilized).
Bottom line though, I don't think there's very high demand for that. People are perfectly happy using AWS/Google Compute/etc. with specific RAM/disk/CPU allocations and scaling up/down by the predefined instance types. It's probably a factor of two cheaper than what you can do with the usage billing.
CPU is a bit easier to do since there's no specific cap on it (depending on the application), if everyone is using too much CPU then they just get less of a share and pay less, but still no one offers that.
Edit: actually really it sounds like this would only be desirable for people who only have one VM, but that's pretty much the opposite of the customers interested in scalability and such. How successful/large is that web hosting business you mentioned?
And the monthly bill is way more predictable.
I don't know. Most people seem to have a pretty predictable stack, with pretty predictable usage, as far as I've seen. You'd just end up with estimations similar to what providers do now for overselling
Same goes for shared hosting and NFS - yet they still have a business model that apparently works for them (given how long they've been around for). Doesn't have to be high demand.
They've been around since 2002
Anyone know how well the SolusVM disk resize works when the new plan is smaller? Trying to figure out what options should be allowed if resize option is there.
Also post here or on the issue tracker if you find any bugs / have suggestions.
I don't think SolusVM allows you to downsize the disk if it's KVM, only upsize.
With Xen PV/HVM it works great on shrinking disks, it is growing disks that tends to fail on occasion, I cant remember the exact issue but iirc it was due to it issuing a lvresize to fast on occasion before the guest OS was shut down completely so it was locked, because it had no validation built in it marked it as success anyway and updates the solusvm database.
The work around was to shrink by 1GB then resize again, it still happens on occasion, it is rare though maybe 1 in 50 times and that is due to lack of validation.
Testing out web-based serial console:
https://github.com/LunaNode/lobster/commit/087f961b427159781f2e54949bb359cfd47e2f6c
I've been playing around trying to get the HTML5-based serial console to resize, but can't figure it out (most attempts mess up the JS terminal)
Anyway there's basic WHMCS integration support now: https://github.com/LunaNode/lobster/issues/26#issuecomment-124883098
I noticed this topic and thought it might be useful to implement some similar functionality in Lobster. Basically Lobster would support API's for various cloud providers, so if you want to then you can use Lobster to control personal virtual machines so that you don't have to login to the UI of each provider. Of course it'd also be possible to resell as normal since it's just another VM backend.
Is this something people would be interested in? I already started adding Digital Ocean API at https://github.com/LunaNode/lobster/commit/6d2303b2fa84334f16c1d84361e9dca72cfa3a49
Edit: to be clear, the idea would be that you could run your own instance of Lobster to control personal VMs; the situation where you run Lobster and a service user can link VMs on their own DO/Linode/etc accounts would not be supported. Also I don't think SolusVM can be supported like this until at least the 2.0 API, because most actions aren't available from client API.
Well, Digital Ocean and Vultr are now supported as VM backends.
I'm considering redesigning plan system (currently plans are global instead of region-specific), let me know if you have a good strategy to handle easily configuring and storing plans for multiple regions.
WHMCS plugin looks good.
@perennate Virtualizor/API would be a good addition to supporting Solus.