Standarizing your multiple Linux machines for easy usage, install and upgrades.
If you’re a linux person then, hey, there’s no reason why you shouldn’t have lots of machines ;-)
I currently run:
- Dual monitor desktop in home office
- Dual monitor desktop at clients office
- Laptop
- TV room desktop attached to TV
- EEEBox in the kitchen for TV and media
- File server
With free software that runs on any old box, one tends to accumulate multiple machines, and that means more maintenance. Here are some ways to make that easy.
File Server
If you even have more than one machine in constant use on the same network, then why not turn an old clunker of a machine into a fileserver? Once installed with Ubuntu server, you don’t even need a monitor after it’s installed.. just let it sit there. Don’t consider this a hard task. The entire install of Ubuntu server including setting up a static IP etc. is all just point and click during install. It’ll only take you an hour!
- Add a megabit card for better throughput
- Old machine is fine. No really big requirements for power or ram
- RAID it if you want, or just rsync nightly to an external drive and you can stop worrying about loosing stuff on different machines
- Use NFS mounts for super fast, super reliable transfer. Don’t think twice about watching movies across the lan
- One source for all your movies, music, pics etc.
- Standardize your mounting path on all your other machines and they all just feel the same
Version control
One use of version control like git or svn is to allow multiple developers to use a central repository of code. Why not use this as a central repository of all your files that you want on your local machine, but are the same for EACH machine. This really comes into it’s own when you are also talking about machines that are NOT on the same LAN, e.g. your laptop and in my case the machine at my clients office.
SVN is pretty easy to install, and there is a site called “Google” that could no doubt help you find a free SVN repo that you can use. I use SVN to manage a directory called config in my home folder. In the repo I keep:
- txt files of stuff I forget
- Emerald theme, extra fonts, my favorite icon library
- Setup scripts
- Configuration files for apps
- My IM icons and other frequently used images
- My screenlets
- scripts that create SSHFS connects to various servers I use alot
When I install a new thing, then I grab that repo and all of a sudden I have so much of my “standard” config. I have setup scripts that do things like e.g. create symbolic links inside application directories, so that they are using my checked in standard config files. or e.g. 2 create a symbolic link from the emerald themes directory to the theme that I like best in my repo.
All the files are LOCAL - not used in the repo in real time.. it’s just that if I change one, or add something I can sync that up to the repo, then pull it down to all the other machines.
IMAP or similar
This is a bit of a no brainer. It’s 2009. Nobody should have emails locally on any specific machine anymore that can be lost. Whether that means using Google Apps with IMAP, or some other providor, or going to the next ( unnecessary ) level of using Exchange Server or Zimbra.
Setup scripts
With linux it’s really easy to automate tasks. I use setup scripts to configure specific applications, or reconfigure them to use config files in my repo, but it can be much simpler than that. e.g. I maintain a list of applications that I always install.. and have a simple script file that has all of them in an apt-get statement.
More complicated are scripts that autogenerate my /etc/hosts file including all the hosts that I have no my lan and elsewhere, and scripts that do things like tail config files ( e.g. .bashrc ) to include extra stuff I want.
This may all seem like a lot of work, but it’s worth it. If a machine goes down, I’m back up and running FULLY functionally in just over an hour. If I feel like doing a fresh install instead of an upgrade, no big deal. I love this stuff.



