Archive for the ‘Collaborative Software’ Category

MECC 2011 – Don’t Get Ninged

Sunday, March 13th, 2011

So, there has been a lot of interest in how to build your own school services such as blogs, wikis, and social network. This session is dedicated to understanding the basics of how you can setup a basic social networking sites for your class, school, or district.

To accomplish this task we are going to need to learn about a few things:

  1. Server Virtualization
  2. DNS basics
  3. Linux LAMP
  4. WordPress and Buddypress


WPMU DEV - The WordPress Experts

Server Virtualization

Basically virtualization is software/hardware that allows you to run a complete operating system on an existing machine as through it is a different physical machine. This allows a systems resources to be maximized and for an end user to interact with an operating system independent of the underlying hardware.

We are going to use Virtualbox by Oracle an open-source virtualization tool for this session. It is quit easy and can be used on Windows, OS X, and just about any variety of Linux.

  1. Install following the directions in the user manual.
  2. Configure Example VM settings
    1. Copy Example.VDI folder to your VMMachine Directory
    2. Adjust VM settings to suit your machine
    3. Start it up.

VM Setup after install:

  1. Update Current Modules
    sudo apt-get update
  2. Upgrade your server to latest software and patches
    sudo apt-get upgrade
  3. Install openSSH server so that you can use a terminal to control server
    sudo apt-get install openssh-server
  4. Open terminal session your platform of choice and ssh into the box
    ssh bpadmin@<your-ip-address>
    (You’ll be prompted to add the RSA Key, type “yes” and then input your password.)
  5. Setup Webmin on your server using APT repositories
    1. Add Webmin APT repository to server APT sources
      sudo nano /etc/apt/sources.list
    2. Add Comment and Webmin URLs
      ##Webmin Repositories for web-based server administration
      deb http://download.webmin.com/download/repository sarge contrib
      deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib
    3. Fetch and install my GPG key with which the repository is signed
      cd /root
      wget http://www.webmin.com/jcameron-key.asc
      sudo apt-key add jcameron-key.asc
    4. Update your repositories and install webmin
      sudo apt-get update
      sudo apt-get install webmin
    5. Test your webmin install by navigating to https://<your-ip-address>:10000
    6. Your get an untrusted certificate warning (This is normal unless you purchased a 3rd party certificate, which is totally unnecessary.)
    7. Accept it.
    8. Login using admin user info.
  6. Configure local DNS using Hosts file
    1. Server DNS
      1. Set up an entry for host server in the /etc/hosts file
        sudo nano /etc/hosts
      2. Add line with server reference to end
        <your-ip-address> buddypress
      3. Check your DNS by pinging your URL, it should have the IP in the response.
      4. Save
    2. Client DNS
      1. Setup an entry on your client machine, this various depending on the flavor of your OS.
      2. Check your DNS by pinging your URL, it should have the same IP as the server
  7. Begin our LAMP (Linux, Apache, MSQL, and PHP) server setup (Adapted from HowtoForge.com)
    1. Install MySQL database server
      sudo apt-get install mysql-server mysql-client 

      1. Set up a strong root password
      2. Check MySQL in command-line
        mysql -u root -p
        (enter password)
      3. We’ll check the status of the server with a sql command (the semi-colon is critical)
        show status;
      4. Exit MySQL Shell
        exit;
    2. Install Apache2 server
      sudo apt-get install apache2 

      1. Open your web-browser and check your apache server at both IP address and buddypress URL. Both should work.
      2. Configure apache2 settings and modules in webmin
        1. Log into Webmin @ https://<server-ip-address>:10000
        2. Click Servers
        3. Click Apache Webserver
        4. Click Global Configuration Tab
        5. Click Configure Apache Modules icon
        6. Make sure rewrite is enabled and save
        7. Stop and start the apache server using the hyperlink in the top right corner
    3. Install PHP5 to use with Apache2
      sudo apt-get install php-5 php5-suhosin 

      1. Restart Apache
        sudo /etc/init.d/apache2 restart
      2. Create a phpinfo file to verify PHP settings
        1. sudo nano /var/www/info.php
        2. Add the phpinfo function to file
          <?php phpinfo(); ?>
        3. Save
      3. In your web-browser navigate to http://<your-ip-address>/info.php
      4. Verify PHP settings.
    4. Add additional useful PHP extensions
      sudo apt-get install php5-mysql php5-gd php5-imagick php5-curl
    5. Your webserver is now ready to rock!

Setting Up WordPress with SVN

  1. Install SVN client for linux
    sudo apt-get install subversion
  2. Change to web directory
    cd /var/www
  3. Use the guide provided by WordPress.org
    sudo svn co http://core.svn.wordpress.org/tags/3.1 .
  4. Now prepare a database for wordpress install using Webmin
    1. In your browser navigate to https://<your-server-ip>:10000
    2. Go to >Servers>MySQL Database Server
    3. Login using root and root password
    4. Click Create a New Database
    5. Give it an original name (“wpbp”), set character set to (“utf8″), and set collation to (“utf8_bin”)
    6. Click Save
    7. Create wordpress DB user to limit server permissions.
    8. Under Global Options click User Permissions
    9. Click Create new User
    10. Give it a name (“wpdb_user”), a complex password, and give it the following permissions (“select, insert, update, delete, create, alter, and drop”)
    11. Click save.
    12. Now your DB and DB user are ready for the installation
  5. Make sure that your wordpress files and directories are read/write for install and default html is removed.
    sudo chown -R www-data:www-data /var/www
    sudo rm /var/www/index.html
  6. Configure mod_rewrite in Apache so that you can use pretty URLS
    1. In Webmin go to >Servers>Apache Webserver
    2. Click on virtual server
    3. Click Edit Directives
    4. Find options and make sure that it includes FollowSymLinks
    5. Find AllowOverride and make sure that it include FileInfo or ALL
    6. Save
    7. Start and stop Apache2 server
  7. Navigate to our webserver in a web browser and follow the directions.
  8. Verify successful wordpress install at your URL.

Setting Up Blog Network and Buddypress

  1. Create blog network following directions @ wordpress.org
  2. In terminal edit the /var/www/wp-config.php file as described in the article above by adding
    define(‘WP_ALLOW_MULTISITE’, true);
  3. Log in and go to >Tools>Network
  4. Select sub-directories
  5. Follow directions on the “Enabling Networks” page by using copy and paste with terminal
    1. Create directory
      sudo mkdir /var/www/wp-content/blogs.dir
    2. Correct folder permissions for upload folder
      sudo chown -R www-data:www-data /var/www/wp-content/blogs.dir
    3. Edit /var/www/wp-content.php
      sudo nano /var/www/wp-content.php
    4. Edit /var/www/.htaccess
      sudo nano /var/www/.htaccess
    5. Log out of WordPress and then log back in.
    6. You should now have a “Network Admin” in the top right corner.
    7. Now we need to make sure that our site permissions are correct with CHMOD
      1. For most installations the following should suffice
        sudo chmod -R 755 /var/www
      2. If you are interested in setting a more hardened WordPress install check out this article
    8. You are ready start building blogs and installing Buddy Press.
  6. Install Buddypress plugin
    1. Login in as admin if you haven’t already
    2. Click “Network Admin” in the top right corner
    3. Go to > Plugins > Add Plugin
    4. Search for Buddypress
    5. Click Install Now link
    6. Click the Network Activate link
    7. Make Buddypress theme available to main blog
      1. Go to Sites
      2. Click the edit link under “/” blog
      3. Click theme tab
      4. Enable Buddypress default theme
    8. Go back to main blog admin page by clicking Site Admin link
    9. Click > Appearance > Themes
    10. Activate Buddypress theme
    11. View site

Keynote Theme Issues with Latest Office

Friday, January 21st, 2011

So, we regularly convert our teachers keynote files to PowerPoint of our partner school districts in Beyond Textbooks. We come to realize that many of the newer templates don’t convert correctly. I have not quite figured out the reason, but the problem is easily resolved by changing the Keynote theme to one of the compatible themes.

Here is the matrix of ’09 Themes and whether or not they convert correctly.

Keynote-Template-Compatibility

Burned by Ning

Thursday, April 15th, 2010

This is exactly why K-12 institutions need to spend more time developing their own cloud services.

Ning is no longer free….

I hope your district hasn’t focused on staff development tied to free services.

DIMDIM Web Meetings

Monday, November 23rd, 2009

Sorry, I’ve not finished part two of the cloud series but life has gotten away from me and the last thing I’ve wanted to do when I get home is write.

That being said I could help but enjoy a web conferencing tool that I recently “discovered”. DIMDIM is a great little free online tool that I found while searching for an Eluminate Alternative. I started with the open source VM appliance, but it is crap.

I should state that for the record, it isn’t really open source in any meaningful way. The community has been neglected and there has been no forward progress for almost a year.

However, their free online service is great if you are in a position of needing to conduct small, 20 or less attendees, web conferences. It is super easy to upload your PPT slides and/or PDFs. There is a great little interactive whiteboard and the ability to share your screen. There is a web share, but it doesn’t seem to work with any of the authenticated websites that I need for my trainings.

Unfortunately, the recording ability doesn’t seem to apply to the whiteboard or PowerPoint (this seems very odd) so it is pretty much useless (Edit: It actually records PPT slides and screencasts fairly well). To be honest I’m not sure if that is a result of using the free version or just a product limitation.

Below are a couple of screenshots.

Building your own “Cloud” – Part 1

Thursday, October 15th, 2009

While this post is written with K-12 schools in mind it could be used by small colleges and even businesses.

So what the heck is a “cloud”? For the most part it is a return to centralized computing using the web browser as the application of choice. The using the cloud allows you to provide software as a Service (SaaS). This is a great article on the cloud.

Ultimately, schools have not systematically embraced the “cloud” or Web 2.0 because they have very little control over the tools that are offered. Even Google Apps for Education, arguably the best “cloud” application currently available to schools, has some Terms of Use language that makes some teachers and/or administrators flinch. The need for control, whether necessary or not, has held back innovation in schools for too long. This guide will help lay out a path to creating your own “cloud”.

So let’s start with some basics:

  • Virtualization
    Server that supports virtualization. At this point you can pretty much use PC, Mac, or Linux depending on personal preference. This will allow you to tinker more, and the resulting virtualized application is highly portable.

    Here are some of the virtualization products I’ve used:

  • Linux
    Basically, this is a package that lets you easily install an Apache web server with all of the necessary technologies (PHP and MySQL) very quickly. Each one is a bit different depending on the host OS but they all do the same thing. I suggest that for the first time you use a Linux distro with a GUI. This allows you to start experimenting with Linux while still having a comfortable GUI from which to work. In particular, I’ve found both Ubuntu and OpenSUSE to be very user friendly and both have a wide base of support.
  • Web Apps
    For an average school or classroom the following give you a great starting point:

  • LDAP via Active Directory/Open Directory
    LDAP allows you to more efficiently control your user-base on these systems. Most school districts already a have one of these systems in place so it is just a matter of setting up the correct permissions and your users, faculty and students, can log in using their usual info.
  • Server Hardware
    To begin with you can run any of these applications via laptop or desktop. My original setup was on a Macbook with a Core 2 Duo and 2 GB of RAM. For production, you want something a little more substantial but we’ll address that when we get there.
  • Dedicated IP Address and DNS Record
    Most of these applications require that you use a dedicated/static IP address. This just means that your server’s IP address will not change over time. It is also important that your server has a domain name. This can be done via DNS, which will most likely require the help of your IT department or to begin with a modification to your servers HOSTS file.

Above, is the outline of what the next few posts will be about. We’re going to look at setting up a linux webserver inside of Virtual Box, then we are going to install our first web application, and then we’ll look at how to use Apache Virtual servers to host multiple web applications.

The end result will be cloud services for your organization with a focus on utilizing current open-source technologies.

Lawsuits and Web 2.0

Wednesday, July 1st, 2009

Will Richardson seems a bit concerned about the “Tops” lack of understanding, when it comes to high level officials. I wonder though if Brad Jupp isn’t correct. I mean there are two major undiscussed issues here.

The first is, “What Lawsuits?” Can anybody actually find a lawsuit related to blogging or the use of wikis? I couldn’t upon a 5 minute Google search. All I could find is a student suing their old principal for discipline related to cyberbullying on Facebook. It seems like every reference to a pending lawsuit had to do with social networking…interesting.

It would seem to me that the bigger problem is two-fold. First, in most cases schools have a ineffective or outdated policies for dealing with students/staff use of the web. Second, there is a major generational gap between how adults and teens/kids view the use of the Internet and what constitutes public.

Now is the time that school districts should update their AUP policies. Most important is that these policies are updated with a group of students, teachers, parents, and administrators. Each group looks at Web 2.0 applications through a different lens and it is a chance to set expectations for their use by all interested parties. Having a defined set of policies related to these technologies makes it much easier to handle the occasional problem that may come up from their use.

Now is also time to do some work to bridge the generational gap. It is important that educators using these tools understand how they are preceived by youth. Of course this is a two way street and using these tools is also a great time for educators to share important information about why privacy is important, the permanacy of the web, and the web is not as anonymous as you may think.

Finally, I think that teachers, administrators, and school IT departments need to look at the “free” Web 2.0 applications and decide why do we actually want this tool? What is the pedagogy driving instruction with these tools?

Part two of this issue is whether or not you need to use public Web 2.0 apps at all. There are some many incredibly easy to setup and use open source Web apps out there today. Any IT director worth a dime can have these systems up and running in no time. Most importantly these tools can almost always be tied to a directory server which makes user management a snap.

Using these tools a district can host it’s own social networking (Elgg or Buddypress), wikis (Deki Wiki), and blogs (WordPress or Moveable Type). Educators get the advantage of these powerful tools, while administrators and IT directors get to have the control they need. Give you students some training wheels before they set off on the information superhighway.

Basically, it comes down to the basic issue of control and accountability. In a K-12 school environment you have to have both and the only way to do this is keep you Web 2.0 services in house.

Elgg (Old Version 0.9) LDAP Authentication Working

Thursday, February 28th, 2008

Elgg 1.1 LDAP info can be found here.

It turns out that getting the LDAP authentication working with Elgg was very easy.

All you need to do is look in the “home/auth/ldap” folder, where you will find “lib.php”. This file gives you basic directions on setting up LDAP authentication. I followed the following steps:

  1. Copy lines 18-43 of “home/auth/ldap/lib.php” and paste them below line 10 in “home/config.php”.
  2. Next you need to clean up the code by removing all of the asterisks. There are also several places where semicolons are missing, so put them at the end of line where they are missing. When your done it should look something like this:

    // Authentication set to LDAP
    $CFG->auth = ‘ldap’;

    // LDAP Authentication parameters
    // LDAP host
    $CFG->ldap_host = ‘your.domain.com’;
    // LDAP port
    $CFG->ldap_port = 389;
    // Base DN – can be string or array of string for multiple DNs
    $CFG->ldap_basedn = ‘cn=users,dc=your,dc=domain,dc=com’;
    // Protocol version
    $CFG->ldap_protocol_version = ’3′;
    // Filter for username, common are cn, uid or sAMAccountName
    $CFG->ldap_filter_attr = ‘uid’;
    // Search attibutes: associative array with the key being the attribute
    // description, and the value being the actual LDAP attribute. firstname
    //lastname and mail are used to create the elgg user profile. The
    //example below works for ActiveDirectory.
    $CFG->ldap_search_attr = array(‘firstname’ => ‘givenName’,
    ‘lastname’ => ‘sn’,
    ‘mail’ => ‘mail’);
    // Create user, relies on the givenname, sn, and email attributes for now
    $CFG->ldap_user_create = true;
    // Fallback option, try internal authentication if everything fails
    $CFG->ldap_internal_fallback = true;

  3. Use your domain information instead of “your.domain.com” and make appropriate adjustments to “$CFG->ldap_search_attr” if you are using non-standard LDAP attributes.
  4. Als0, you will need to use a couple of additional lines of code if you require a password to bind to your directory. These are found in the “home/auth/ldap/lib.php” file.
  5. It should now work!

Now the only thing that is bugging me is that default name is your surname. But that should be easy enough to fix. This was done on a xServe G4 running OS X Server 10.4.9, running entrophy php 5.2.4.

Been a while….

Tuesday, February 26th, 2008

It has been a long while since I’ve updated this blog. Life has a way of getting ahead of you.

I’m almost done with the implementation phase of my master’s program and look forward to getting back to some of the newer things I’ve been toying with at school.

I’d like to get a program start which takes advantage of Elgg to create a school social networking/blog/portfolio system. It was incredible simple to get the installation running and the portfolio piece (by Nathan Garrett) installed. Also, it looks as though the LDAP authentication piece should be easy to implement.

My only real complaint is that standard registration requires an email address. Unfortunately, there are just to many institutions, at the K-12 level, who are worried about students accessing email. It would be nice if the LDAP authentication removed the need for an email.

I’ll be sharing my discovers about Elgg as the project develops.

OS X 10.5 Server for Ed Tech

Saturday, December 8th, 2007

On the 4th of December, I went to Phoenix to attend a half-day seminar on the new client and server software from Apple. I wasn’t that amazed with the client (although it is pretty nice), just a lot of 3rd party ideas that are now part of the base OS. However, the server piece has amazing potential.

Apple was managed to stupid-proof a convergence of wiki, blog, and  web-based calendar. While none of these services are new,  the manner in which they are pulled together and centrally controlled by OS X Server will open these tools up to a wider audience.

If you haven’t checked it out yet, it is worth a look.