
Show HN: VirtKick – Self-hosted Digital Ocean - Nowaker
https://www.virtkick.io/
======
davexunit
This is an awesome project! Thanks for choosing the AGPLv3!

I tried to create a VM on the demo site, and got a nice Ruby error message
next to the VM's name on the 'Machines' page: undefined method `+' for
nil:NilClass

Still, I'm very excited about this!

If anyone from the project reads this: Where is the appropriate place to
request support for an additional GNU/Linux distribution? I would love to get
GNU Guix running on this.

Edit: It seems that I have jumped the gun with my enthusiasm for this project.
They will be selling proprietary re-licensed versions as a reward and require
copyright assignment for contributions.

VirtKick, please reconsider your decision to require copyright assignment. I
want my contributions to the free software community to remain free.

~~~
bjornsing
> I want my contributions to the free software community to remain free.

And you don't feel that the AGPLv3 ensures that...? Or you mean "I don't want
my contributions to be distributed under any other license"?

~~~
richardwhiuk
If you have a contributor assignment, the assignee can choose to release the
changes under a proprietary license.

~~~
bjornsing
> If you have a contributor assignment, the assignee can choose to release the
> changes under a proprietary license.

Exactly! Hence my request for clarification (see above).

If more explanation is necessary: What davexunit is saying is that he wants
his contributions to remain free. The AGPLv3 ensures that, even with copyright
assignment. But what I guess davexunit really means is that he wants to be
sure that all contributors, present and future, are locked into the AGPLv3
forever. I'm not saying the latter is wrong, I'm just saying you should call a
spade a spade.

~~~
richardwhiuk
It doesn't ensure they remain free - a copyright assignment allows the
contributions to be used as part of a proprietary release.

------
eltondegeneres
This looks cool, but I can't see why contributors should assign you copyright
so you can sell proprietary versions of VirtKick. Very few free software
projects have copyright assignment requirements (GNU being a notable
exception).

~~~
hellerbarde
CLA's are both good and bad. The good thing is that the software project has
more flexibility when it comes to licenses, but the bad is that they have more
flexibility when it comes to licenses...

------
catern
So what exactly is the advantage of using this layer over the existing libvirt
ecosystem? If this is supposed to manage your VMs for you instead of you using
the existing libvirt tools, I can see a number of disadvantages.

* No virt-manager with SPICE, networking configuration, and other features

* No virt-install for very easy creation of VMs, even straight from distro repository URLs

* No virsh for command-line management

* In general, no seamless use of any of the vast ecosystem of tools around libvirt

Is the only advantage that it supports Docker? In that case, why not just add
support for Docker into libvirt, and Docker images into virt-install? Is the
advantage that it's a web UI for libvirt? There are certainly plenty of those
already, but I guess creating another one is fine. I really don't see the use-
case.

~~~
Nowaker
What one regards as a feature, other regard as misfeatures. If you like virt-
manager, then VirtKick isn't really for you. We value a simple UI more than
virt-manager, and REST API more than virsh. We don't say your way is wrong.
It's just more difficult.

Existing libvirt clients, at least those that we know of, aren't super
reliable though. libvirt stucks when there's too much happening on the HV, or
denies jobs without even trying (e.g. when a pool has async jobs). A backend
that schedules tasks for background execution is needed for that (and we have
it), so even now we're not "just" a frontend for libvirt.

The use case is a very simple panel with zero virt knowledge needed to start.

Thanks for your comment.

~~~
catern
> so even now we're not "just" a frontend for libvirt.

I would certainly prefer that virtkick was 'just a frontend' for libvirt. Then
the people who are making use of virtkick can seamlessly rely on the huge
amount of existing software that supports libvirt. You can provide a REST API
that is translated to the existing libvirt API rather than replacing it.

If you have task-scheduling improvements for libvirt, they should be
upstreamed rather than only exist in your software, so everyone can benefit
from them.

------
warcode
So just for clarity. I'll be able to download your source/package, install, go
to the web interface and start spinning up VM instances on the same machine?

Are the extras like monitoring 3rd party integrations that I'll have to pay
for, or actual features of VirtKick?

~~~
Nowaker
Excactly right - plus on remote hypervisors too.

External monitoring integration, and off-site status page, will be actual
features of VirtKick. Think of VirtKick is a 1-click installable panel that
you can use both on your desktop and as a VPS provider. Instead of paid
features, we want it to be forever free - instead, we aim to be crowdfunded.
[https://www.indiegogo.com/projects/virtkick-take-cloud-
back](https://www.indiegogo.com/projects/virtkick-take-cloud-back)

~~~
toomuchtodo
> Excactly right - plus on remote hypervisors too.

Things get crazy here (in a good way). You could create federation where you
allow remote hypervisor management from a central authority (your app).
#ArchiveTeam needs their VM running for the latest web property shutdown?
Here, have access to my overpowered home router to run a few tiny VMs to help
the cause.

Knocked it out of the park here guys (and/or gals)! Awesome job.

~~~
RushPL
(co-founder here) we try to not get ahead of ourselves, working on the basics
first but it's sometimes nice to think big as well and you have some
interesting ideas sir, thanks!

------
sciurus
This looks interesting: I've often wanted something with more features than
just kvm+libvirt but less complexity than OpenStack or other "private cloud"
projects. The one thing that worries me about the pitch is the emphasis on the
management panel. I don't want to create a VM in 5 clicks, I want to create it
in one API call.

~~~
Nowaker
Thanks for your comment. UI comes first as every user will hit it. API comes
next. We planned DigitalOcean-compatible API altogether with a CLI. Looks like
we removed this from our website by mistake (will get it back real quick), but
it's listed in our IGG campaign: [https://www.indiegogo.com/projects/virtkick-
take-cloud-back](https://www.indiegogo.com/projects/virtkick-take-cloud-back)

~~~
sciurus
That sounds like a good approach; reimplementing an existing API like EC2 or
DO makes it easier to integrate your software with tools like Vagrant and
Terraform.

~~~
Nowaker
Exactly right, we value existing tools - that's what makes DO so strong. :)

------
Oculus
I feel as though this is one step above just a web page with an email box.
Aside from listing a suite of popular OSS, you haven't explained what this app
does. Is it similar to Panamax in that it offers you a UI, but only for one
box / Flynn or Deis which is trying to create an open source Heroku /
something completely different?

~~~
Nowaker
Flynn, Deis, Heroku are PaaS - they are focused on applications.

VirtKick is like DigitalOcean or Linode - they are focused on machines (and
containers, that you think of as machines). You install it on your Linux
desktop (for localhost hacking), or home or dedicated server (for something
more).

Will try to express it a little bit better. Thanks for your feedback.

------
Communitivity
This is a great project. However, given the nature of the project and the
license, would this then require any software hosted with it to be AGPLv3?
Could I run software that is a mix of Apache, MIT, and Erlang Public License
in a VirtKick container without violating AGPLv3?

~~~
kordless
All infra code needs to carry the MIT license or similar, IMHO. It's
infrastructure.

~~~
davexunit
Virtkick has a web application component, which makes the AGPL a great choice.
Without the 'Affero' component, anyone could host a version of VirtKick with
proprietary modifications.

~~~
duaneb
What's wrong with that? Don't we want to encourage proprietary companies to
host using open software?

~~~
MoOmer
The point would be to enforce the openness of changes to the source. If you go
in and add some things, change the design etc. and pass it off as your own,
someone can take the changes you've made and do the same. Not only that, but
you're required, not just encouraged, to make public any changes, which may or
may not be improvements.

~~~
duaneb
So if I'm trying to use this in my proprietary product, I can either a) use it
and open up all my code, or b) use a better-licensed, MIT/BSD/APSL2-compatible
code.

I also might point out, as a person working on a proprietary service, it's in
our interest to contribute upstream. Who wants to maintain compatibility
patches? It's in EVERYONE's best interest to have solid, open infrastructure
used by everyone (yes, even evil closed companies like google)

------
breakingcups
Trying this, seeing a LOT of '[virtm] libvirt: XML-RPC error : Cannot recv
data: ssh: connect to host localhost port 22: Connection refused: Connection
reset by peer'

This is because I don't use port 22 for SSH. Can I fix this easily?

~~~
Nowaker
I'm sorry but we missed your comment. Just created an issue to track this
problem:
[https://github.com/virtkick/virtkick/issues/65](https://github.com/virtkick/virtkick/issues/65)
Please subscribe to the issue so you'll get the updates.

------
lazyant
It seems we have HN'ed the service; after creating a Debian image: "internal
error: pool 'HDD' has asynchronous jobs running."

~~~
Nowaker
Yep. Our 128 GB hypervisor wasn't enough. We redirected traffic to a static
HTML prototype, so - at least - you guys have a chance to see the design and
planned features. [https://demo.virtkick.io/](https://demo.virtkick.io/)

~~~
lazyant
another thing: all the add-on links redirect to the same DNS add-on

~~~
Nowaker
Oh, forgot to actually add something there. To give you a better
understanding, it'll work the same way as on Heroku.

~~~
lazyant
thanks, I'll be checking the project out for sure

------
salesforce_wha
So what is this? A project based off of openstack, a complete re-working of an
openstack-like environment or something different?

~~~
Nowaker
A complete re-working - as OpenStack is too big if you're not a corporation
with a very big infrastructure.

~~~
q3k
I disagree - OpenStack scales down perfectly to two-machine or even (one-
machine) deployments (if you don't want HA).

It is a pain to configure, but that's the price you pay for flexibility,
future-proofing (scalability) and its' true community development model.

~~~
Nowaker
"Pain to configure" is a blocker here, though. That's why we sacrifice
flexibility for simplicity. OpenStack is great for environments that need it -
VirtKick won't fit them.

------
raphinou
seems the backend is python, and the web app is ruby. Curious as to why you
decided to use 2 different languages.

~~~
RushPL
(co-founder here) The backend will be ruby as well, we used webvirtmgr only as
a means to kickstart the project and have something usable quickly. :) On a
general note though we aren't afraid to mix languages. For example node.js is
used to handle web sockets for the VNC console as well as for the starter
application.

------
neom
I would not consider nor call this "Self-hosted DigitalOcean" \- Interesting
project never the less.

------
dailen
So excited to see this! Great job guys!

------
jameshk
I've been following this for a while, and it looks like an awesome way to roll
your own cloud!

------
Stephen304
I actually wanted to create something like this. Does it do ssh key injection
when VMS are created?

~~~
Nowaker
Not at this point (we mount an ISO as CD), but we've got it planned:
[https://github.com/virtkick/virtkick/issues/6](https://github.com/virtkick/virtkick/issues/6)

~~~
Stephen304
Perfect! I wanted to host my own DO type thing for personal projects and I
tried "webvirtmgr" which has a nice control panel for libvirt, but the creator
insists that ssh key injection is out of the scope of his project. I'm glad to
see this happening!

~~~
Nowaker
You may be surprised that VirtKick wraps WebVirtMgr and uses it as a JSON API
for libvirt. :-) This is a temporary solution but does the job - it allowed us
to start real quick with features that users care about, instead of harnessing
libvirt. (Of course, SSH key injection is in a scope of our project!
[https://github.com/virtkick/virtkick/issues/6](https://github.com/virtkick/virtkick/issues/6))

~~~
Stephen304
Ah, I didn't see that before. So without SSH key injection, what's the current
primary method of gaining access to VMS created from cloud images that have no
password & ssh key? I'm eager to start using it to host a throwaway jenkins
server locally. Do you manually edit in ssh key/password or is there some tool
to use?

------
daddykotex
Looking forward to it, you'll see my contribution!

~~~
Nowaker
Thanks, can't wait!

------
hangonhn
How does this compare to something like Cloud Foundry?

~~~
Nowaker
Cloud Foundry is a self-hosted Heroku. Both are PaaS (but it's you who provide
the "P" with the former).

VirtKick is a self-hosted DigitalOcean. Both are very simple IaaS (but it's
you who provide the "I" with the former)

Does it explain?

~~~
hangonhn
Yes. Quite clear actually too.

My follow-up then would be how would this compare to OpenStack? If they serve
the same purpose, where do you want to differentiate from OpenStack?

------
hbbio
Without any judgement over the project and its quality, I would not call it
"Self-hosted DO".

Because DigitalOcean, basically, is a way to get VMs without self-hosting
them!

~~~
RushPL
(co-founder here) Of course your perspective on DigigalOcean is valid but we
think of it simply as a good philosophy to deliver a VM to a user in a
seamless, straightforward way - that's the part that we want achieve and let
users to self-host. Essentially, you could build your own DigitalOcean using
VirtKick. Does it make sense for you? Doesn't mean you should rush and start
your own business .. you can run it privately for your own needs or for your
company's needs.

~~~
hbbio
Got downvoted for this...

I honestly value DO for the service of providing VMs, and I don't care to run
my private VMs. We also have dedicated servers, which run docker directly.

------
GBiT
Website offline, github page -
[https://github.com/virtkick/virtkick](https://github.com/virtkick/virtkick)

~~~
Nowaker
[https://www.virtkick.io/](https://www.virtkick.io/) works OK, but it seems
you killed [https://alpha.virtkick.io/](https://alpha.virtkick.io/) (our 128
GB hypervisor wasn't enough to handle load).
[https://demo.virtkick.io/](https://demo.virtkick.io/) is a static HTML
prototype to get familiar with planned features.

------
wolpherine
No LXC on the map? :(

~~~
pmalynin
Docker works with LXC

~~~
general_failure
Docker moved out of lxc long time ago

~~~
ABS
Docker by default uses their own libcontainer now but you can change that. In
fact last time I checked it supported quite a few via execution drivers like
OpenVZ, systemd-nspawn, libvirt-lxc, libvirt-sandbox, qemu/kvm, BSD Jails,
Solaris Zones, chroot

~~~
kapilvt
actually it only does two, lxc and libcontainer (aka native)
[https://github.com/docker/docker/blob/master/daemon/execdriv...](https://github.com/docker/docker/blob/master/daemon/execdriver/execdrivers/execdrivers.go)

------
anentropic
some documentation...?

~~~
Nowaker
Not at this point. We're focusing on features now. However, installing an
alpha is a matter of 4 commands, give it a try:
[https://github.com/virtkick/virtkick-starter#virtkick-
take-c...](https://github.com/virtkick/virtkick-starter#virtkick-take-cloud-
back)

