Neil Aggarwal's picture

Would it be helpful to have live demos of some of the more popular appliances?

I can set them up on my servers as a showcase.  Visitors will have full root access to play with the appliance as much as they like.  The appliances will re-install every few hours to ensure they do not get crudded up.

If this sounds interesting, what appliances should we show?

Forum: 
Jeremy Davis's picture

As for which ones - I'd be inclined to just go for the more popular ones (as you suggested). Maybe best to let Liraz and Alon tell us which those are?

Liraz Siri's picture

Every once in a while I take a look at the download stats and order the appliances on the front page according to popularity.

We also have a cron job that parses the logs and sends us a weekly report. Here's an excerpt from the report during the last week of Christmas, which was a bit slow (holidays and weekends always are)...

downloaders: 2068
downloads: 3838

  ISO downloads: 1821
  ZIP downloads: 2017

412  joomla-2009.10-hardy-x86             (zip:  160, iso:  252)
301  lamp-2009.10-hardy-x86               (zip:  167, iso:  134)
229  drupal6-2009.10-hardy-x86            (zip:  147, iso:   82)
228  fileserver-2009.10-hardy-x86         (zip:  116, iso:  112)
191  domain-controller-2009.10-hardy-x86  (zip:  110, iso:   81)
184  wordpress-2009.10-hardy-x86          (zip:  114, iso:   70)
163  zimbra-2009.10-hardy-x86             (zip:   94, iso:   69)
159  torrentserver-2009.10-hardy-x86      (zip:   82, iso:   77)
154  core-2009.10-hardy-x86               (zip:   75, iso:   79)
143  redmine-2009.10-hardy-x86            (zip:   94, iso:   49)
104  rails-2009.10-hardy-x86              (zip:   66, iso:   38)
103  mediawiki-2009.10-hardy-x86          (zip:   61, iso:   42)
I think Joomla is our most downloaded appliance due to its promotion on the official Joomla demo site:

http://demo.joomla.org/turnkey.html

Neil Aggarwal's picture

I was just thinking it would be better to use the kickstart mechanism to perform an automated install for each demo and then have it shutdown after a given amount of time (Maybe 1 hour).  That will require some more integration.  Maybe I can do that as a later phase project.

Jeremy Davis's picture

so my input is possibly not useful. I have seen similar demos elsewhere to what you are suggesting. I'm not sure how they do it, but it seems like a clean install each login. I'm not sure if it could be done easily but perhaps you could set it up so it deletes the instance on logout and auto logout after 10 mins of inactivity or something like that?

Neil Aggarwal's picture

I think tracking logouts would be hard, especially since a user in a web panel such as webmin are not really logged into the system.

Liraz Siri's picture

Everything on the system that has user activity, including webmin, produces logs. A simple monitoring program could keep an eye on all of them and if you don't have anything in N minutes, the system is inactive.
Liraz Siri's picture

Looking into implementing live demos is one of the many tasks we have on our todo list, though we're not actively working on that yet. We've considered using EC2 to implement automatic on-demand hourly demos. JumpBox does this (TurnKey's proprietary competitor). As an open source project that's a bit more difficult to do because you need to set aside some funding for this and it's hard to anticipate in advance how much it will cost every month.

Letting anonymous people log in as root also poses a risk for abuse (e.g., default passwords changing, attacks against other networks, spam). OTOH, so far people in our community seem to follow the Ubuntu code of conduct, so I think would we only have to worry about a tiny minority. Most people are essentially good though so I wouldn't add too many security restrictions until it becomes necessary to do so. I'd start with something simple like reseting the machine every once in a while.

Another thing to keep in mind is that performance isn't really an issue here, so it's probably possible to squeeze more demo juice out of your machines if you can setup a VM with OpenVZ.

Neil Aggarwal's picture

Here is what I am thinking:

I set up a Joomla demo appliance.

Web: http://tkl-joomla.unmeteredvps.net

Admin: https://tkl-joomla.unmeteredvps.net/administrator
Login: admin, password: turnkey

Shell In A Box: https://tkl-joomla.unmeteredvps.net:12320
Login: root, password: turnkey

Webmin: https://tkl-joomla.unmeteredvps.net:12321
Login: root, password: turnkey

PhpMyAdmin: https://tkl-joomla.unmeteredvps.net:12322
Login: root, password: turnkey

SSH/SFTP: root@tkl-joomla.unmeteredvps.net, port 22
Password: turnkey

The appliance will shutdown and reset itself every 2 hours.
For security, our external firewall is set to only allow the connections listed above.

What do you think?

  Neil

Liraz Siri's picture

Do you mean that you limited outgoing traffic while still allowing incoming traffic? I think that would be a good idea. With a few firewall rules you could let everybody into the machine but not out. That way you don't have to worry as much about abuse.

Also, how long does it take to reset the appliance?

It would be neat if we do that without downtime. Via some kind of heartbeat setup for example (e.g., resetting appliance A shifts traffic to appliance B until appliance A is back up, which then resets appliance B). That way the demo is reliably available. Also, having a heartbeat type redundant setup allows us to do other neat things such as trigger a reset if a set of conditions are not met (e.g., services went down, someone changed a default password, etc.)

Neil Aggarwal's picture

Yes, the firewall only allows inbound connections.  Outbound connections are blocked.

It takes about 5 minutes to reset the appliance.  At that time, existing users are booted and the appliance is not available until the new copy of it is ready.  I agree the downtime sucks.

The best solution to avoid the downtime problem is to configure and launch a new appliance on demand, which would involve more code development.

Maybe the best solution for now is to only reset the appliance one each night since the chance of abuse is pretty low.

Liraz Siri's picture

Abuse is perhaps a misnomer. If enough people explore and mess around with a globally shared demo appliance that is only reset once a day it's pretty easy to imagine things getting screwed up to the point where the demo is a crap shoot. So I think we do want to think about how to prevent that.

If you reset every hour, 5 minutes downtime translates into 90% uptime, or 95% uptime if you reset every two hours. Which isn't so bad if it happens at regularly scheduled intervals so users know it isn't a reliability issue.

Obviously the purpose of a demo is to make it easy for users to test drive TurnKey and get a good impression without even having to download and install an appliance, or without having to sign-up for EC2 (which they can already do at a very low cost). OTOH, an unreliable demo that leaves users with a bad impression may be worse in this respect than no demo at all.

Right now we're just speculating though. It shouldn't be too difficult to try this out and to collect data with a simple script that tests the sanity of an instance. That might be an interesting experiment to run and maybe blog about later.

Neil Aggarwal's picture

I think the mecca for offering a demo is to have instances created on demand and destroyed when no longer needed.  I am sure that can be done, but will take some effort.

I was trying to do something simple to offer users the ability to play with an appliance.  First hand experience is always so much better than reading documents.

Do you feel there is a way to do something simple or are the limitations it poses too problematic?

Liraz Siri's picture

I think what you've done is a great first step. Currently the scope is obviously limited because we don't yet support demos for all appliances and what we do have may not be ready for prime time in terms of reliability and robustness.

Also, keep in mind that whatever solution we come up with we still have to figure out how to integrate it with the web site. That requires some thought. Currently we're in the middle of a development cycle so it's hard to give something like this our full attention. The joomla demo is a nice proof of concept but I'm not sure the pros (vs cons) are significant enough to justify making sweeping changes to the web site (e.g., a demo link on every appliance page), at least not yet.

OK, here's an idea. Maybe you could initially develop/host these demos as an independent demonstration of your VPS service? That way you have full control over the entire package and we don't have as much extra work to do. If memory serves you were planning on updating your web site anyhow to better showcase your support for TurnKey.

The approach we've tried to follow with TurnKey is similar. Start small and simple but don't compromise on quality. What you do - do well. Test carefully with the help of the community. So for example, you could start by soliciting feedback on the forums. When everything is ready you could write a nice guest blog post about it. Later when the time is right we could figure out how to more tightly integrate this with the web site.

Does that make sense?

Neil Aggarwal's picture

As you suggested earlier, we can use two appliances to avoid booting someone while they are using an appliance.

Lets take this scenario:

We have two appliances running.  Each resets on a 4 hour cycle, offset from the other.  For example:

tkl-joomla-1 resets at: 8 am, noon, 4 pm, etc.
tkl-joomla-2 resets at: 10 am, 2 pm, 6pm, etc.

When a user requests a demo, we send them to one of the appliances based on the time they make the request.  We make sure to tell them the demo may reset anytime after 1 hour.

If they request a demo between 8:30 am and 10:30 am, we send them to tkl-joomla-1 (If a user happens to make a request at exactly 10:30am, they still have 1.5 hours before the appliance resets). If they request a demo between 10:30 am and 12:30 pm, we send them to tkl-joomla-2.  And so on...

This strategy ensures the appliances are reset often enough to get cleaned up and users do not get booted during the promised 1 hour of usage time. 

What do you think?

Neil Aggarwal's picture

As far as integration with TKL is concerned, you would not have to anything more than posting a link on the specific appliance page.

So, for example, on the TKL Joomla appliance page, you can have a link that states something like Live Demo sponsored by UnmeteredVPS.net which points to http://tkl-joomla.unmeteredvps.net
Hopefully, donating the VMs and bandwidth for this project is valuable enough to show us a a sponsor.

We take care of everything from there.  Our server can check the time and generate links to the correct appliance.

Liraz Siri's picture

The appliance pages are not static HTML, Drupal pulls in fields from the database and populates a page template. The only place a link to the demo would fit naturally is the download/deploy action bar, but that requires changes to the page template, adding content type fields in the database, etc. The link would lead to a separate page that would give the relevant demo information - an equivalent to the confconsole's usage screen with links. Along with maybe some guidelines on what not to do (e.g., change the passwords).

Or something like that. The devil is as always in the details in this sort of thing.

To determine how/if this would fit in with our development roadmap for the project, I had a chat with Alon about this and the long term direction is enabling demos by leveraging the cloud management service that's currently under development. Once users subscribe they can demo and and as many appliances as they want at about a dime an hour, and these would be personal non-limited instances that you can do whatever you want with. No security, abuse or reliability issues.

The downside of this approach is that instances take a few minutes to spin up, so it's not instant gratification.

Long story short, that means there may still be room for always-on communal demos as you suggest (sponsored by your service), but it remains to be determined how we'll integrate that with the web site and in what time frame. I'd rather be up-front about this to avoid giving you the wrong impression. I still think it's a great idea, it's just a matter of where to focus our limited energies and what we get to first. That's always a compromise.

Neil Aggarwal's picture

Thanks for the info on the project direction.  I will implement the demos on my direct site.  Hopefully, people will find them useful while we are waiting for your demo system to be ready.

 

Neil Aggarwal's picture

Hold a sec guys, I deleted the appliance by mistake.  I am reinstalling it.

Neil Aggarwal's picture

OK, I restored the appliance, try it out and let me know what you think.

Liraz Siri's picture

Unfortunately, I still can't get through to Joomla's web interface. The connection is just hanging there.
Neil Aggarwal's picture

The appliance was not running.  I had a bug in my script that reinitialized the appliance.  It should be working now.  Please try it again.

Liraz Siri's picture

OK, I managed to connect and log in via the web and SSH. I can see that outgoing traffic is already restricted, which makes the machine much less interesting as a target for abuse. Sweet!
T.Keyes's picture

Just my 2 cents worth...I found, (a few months ago when I discovered CMS's what they are and what they do) this website that I think is similar to what you are doing.

I don't understand how it's done technically, I'm just a user (no pun intendedangle)

http://php.opensourcecms.com/scripts/details.php?scriptid=191&name=Drupal

And another 2 cents worth, please keep demos, tutorials, etc, up to date. As a newbie to all this, I've wasted so much time researching a subject only to find out that the demo/tutorial/video was old, inaccurate, or was not applicable to the latest version. no

Jeremy Davis's picture

but as TKL is a 2 man show (with a bit of community involvement) I think it a big ask to get Alon & Liraz to do all the leg work and also keep developing, bugfixing and updating appliances.

Ideally it would be great to have heaps of up to date tutorials and broader and deeper documentation on all of the appliances, but none of us seem to have the time or the energy to get there. Despite that I think it would be a good idea to at least note which version the tutorials apply to so it would be clear that you may find some differences.

Perhaps you could contribute to the tutorials/documentation etc and help keep it up to date (although there will be a new release out sometime soonish, so perhaps wait until after then?) I know that you have said that you're a newbie to it all, but often tutorials made by people such as yourself are really comprehensive whereas Linux Pros often seem to take for granted huge chinks of knowledge (I know I have experienced this during my Linux learning curve, and have probably done it to others since its leveled out a bit).

Add new comment