In early 2012, I signed up to help teach a computer literacy course at a local school in Johannesburg, South Africa. At the start, we had eight laptops connected to the internet using a 3G-capable wireless router. While these laptops were well tended to by the previous volunteers, there was (understandably) no real infrastructure in place to support a network of any significant size.
About a month into the course, the school received a generous donation of computers and office equipment from Ricoh through Tshwaranang Foundation. In order to efficiently use the new computers—many of which were desktops—the school now required a greater sophistication of its network infrastructure, and I took up the task of designing this new network.
In addition to the general sysadmin goals I strive for in any site—pervasive automation, remote deployment, and effortless expandibility—there were several additional factors I considered when designing this network:
Continuity. I needed to continue providing an appropriate environment for the computer training program. The course covers basic computer hardware and software, including Microsoft Windows and Office, as well as an introduction to the internet.
In some townships, Telkom does not run fixed-line ADSL connections, and connections over 3G are too expensive to use without throttling/proxying.
Easy to use
The end users are children and adults who may have never properly used a computer before. In addition, the network needs to operate without the continual presence of a system administrator.
Free or Open Source Software
My personal inclination is to prefer Free or Open Source Software in general. Where the use of Free or Open Source Software (FOSS) did not conflict with the above goals, I opted for it.
My purpose in this series is to document how I stitched together various tools to create a network that fulfilled these requirements. Ultimately, of course, it is just another LAN, but I wanted to document the process for my benefit, for the benefit of the school, and for the benefit of anyone trying something similar under these conditions.
At a high level, I put together a system using the following bits of open source software: Unattended for automated Windows XP deployment, Chef (in local mode) for the deployment (and redeployment) of the central server, Squid in transparent proxy mode to manage bandwidth, and Samba to simulate a Windows domain for centralized login and home directory storage. Various other tools proved helpful in putting it all together. On the actual computers, we are using Tux Typing, Tux Math, and Tux Paint to teach keyboard use and basic math to the students of Drake Koka.
Watch this space for the next post in the series which focuses on deploying the server.