How to set up a computer lab for a school?
Below are some of my "best practices" thoughts about it. Ask a specific question about the individual options, it's too broad to dive into the details of all of them in this single Q&A, I think.
-
Manage them in a centralized way.
You have several options here: Puppet, Landscape and Chef are just a few examples.
-
Preseed the installation.
This will avoid manual ask/answer question in the installation and allows you to install it automatically in your central management from the item above.
-
Consider PXE booting.
In case of issues and you want to completely restore the original state of the system, this will make it a lot easier to reinstall from scratch. Consider this to be automated as well, so you can let users do it themselves if they don't trust the current state of the system (security wise).
Alternatively, you can even run of a customized (updated) Live environment in a diskless set up by using a central NFS server. Users can then store files on their USB flash drive or you can configure it to have the homes on a network share.
-
Surveillance on the machines.
I'm not sure if you're asking about viewing the screens of the individual machines or to view the screen of the "master" PC on the individual ones.
Several options here as well. The easiest way I think it is to enforce the start of a VNC server on each machine (using the central management) and then find a client application being capable of tiling 15 of those on the desktop of the teacher. The other way around is quite easy as well: just pre-configure a VNC client on those machines or even add a shortcut on their desktops.
-
Install a central proxy.
If you expect the users to use the Internet in a similar way (visit identical web pages), a proxy like Squid can help you reduce the bandwidth usage on the link to the ISP as well as an improvement in speed. The
squid-deb-proxy
package is useful for package updates, yes, but a regular Squid can do more than that. -
"cluster" SSH commands
I really recommend avoiding this, in favour of the first item (centralized management). However, if you need to run commands from a central location, PSSH or Cluster SSH can help you out in scripting. But really, look into options in Puppet/Landscape/Chef first.
My suggestion is to use Edubuntu LTSP (Ubuntu + Linux Terminal Server Project + teacher tools) for this.
The last time I managed computer labs was before Edubuntu existed, but I used LTSP quite effectively, and eventually used K12LTSP for this. You can search for K12LTSP -- the mail archives are still online and most problems you encountered will be similar to the ones there.
LTSP is wonderful for reusing older computers because most of the heavy lifting can be done on the server, with individual apps like Firefox or Scratch run locally on the client if you so choose. You also don't need to worry about locking the disks, since everything is run RO from the server, with /home mount RW (generally using NFS). You just set the server between you lab router and the outside, and set the clients to PXE boot, and you're generally done. The students won't be able to change anything, and any damage they do to their $HOME can be blasted away with no issues.
Edubuntu also comes with the kind of client monitoring tools you are asking for. http://www.edubuntu.org/