As a personal preference, I use the latest Ubuntu Long Term Support (LTS) distribution for my desktop environemnt. Since I reproduce this environment on multiple machines (desktop, laptop, work, etc), it is only obvious to automate the process. This setup has been tested on Ubuntu 12.04 LTS (Precise Pangolin)
The goal is to setup a full-fledged workstation with applications for development, office productivity, basic photo/audio/video editing and entertainment.
Canonical does not implement a great deal of changes between LTS releases in the Ubuntu environment. Therefore, you can use this configuration script with any recent release with minimum to no changes.
The complete list of packages to be installed are available in the packages.list
file. Here is a list with the most significant applications and packages:
- Essential Software & Services: ssh, openssl, build-essential, binutils, sudo, ntp, screen, byobu & linux headers
- Networking Applications: curl, traceroute, nmap, Filezilla, OpenVPN & Network Manager VPN Plugins
- Web Server: lighttpd, Apache Tomcat (disabled by default)
- Database Server & Apps: MySQL & NySQL Workbench
- EMail MTA: Exim Light
- Programming Languages & Platforms: C/C++, Perl, PHP 5, Python 3, Ruby 1.9.3, Java (OpenJDK 7)
- Version Control: Git, Subversion, Mercurial, bzr
- Text Editors: Vim 7, Emacs 24, Gedit, Nano
- IDEs: Eclipse, Netbeans
- Disk Utilities: gParted, Zip, Rar, Ace, Wipe
- Desktop Apps: LibreOffice, Firefox, Thunderbird, Dropbox, Shutter
- Google Apps: Chromium, Chrome, Earth, GoogleTalk Plugin
- Graphics: Gimp, Inkscape, dia
- PDF Support: Acrobat Reader & pdftk
- Multimedia: ubuntu-restricted-extras, non-free-codecs, mplayer, audacity, vlc, banshee, openshot, handbrake
- LaTeX: TeXLive, TeXMaker, Gummi & Ghost Script
- Virtualization: Virtual Box
The following actions are performed by the script:
- Set repositories to include:
- All official main, restricted, universe, multiverse, backport and extra repositories
- Canonical partner repositories
- Medibuntu
- Google Linux Repository
- Emacs 24 Snapshots PPA
- Virtual Box Repository
- Dropbox
- Handbrake PPA
- Install packages in
packages.list
- Add
$SUPER_USER
as member ofsudo
,adm
andwww-data
groups. - Create a local [shared] git user account for locally hosted git repositories
- Set Timezone
- Set Locale (default is
en_US.UTF-8
) - Set iSpell wordlist (default is American English)
- Hostname
- DNS (inserting Google Public DNS
8.8.8.8
,8.8.4.4
) - SSH Setup
- Change port to non-standard port number
- Explicitly add inet interface to
Listen
directive - Disable root login
- Disable password login
- Disable X11 forwarding
- Disable PAM & DNS
- Only allow
$SUPER_USER
to access machine viassh
- Disable Guest Login on greeting screen
- Make GPG Use SHA256 instead of SHA1
Steps 0 & 1 are mainly advise on how to start the setup process. Step 2 is the
As always, you need to backup your current system just in case something goes wrong. I, personally, like to refer to the 3-2-1 Backup Strategy: for each file you should have 3 copies on 2 different storage mediums with at least 1 off-site.
- Go to Ubuntu.com and download the latest ISO. Unless you have a bad Internet connection, you should download the Desktop Live CD version (not the DVD). The file would be named
ubuntu-XX.XX-desktop-amd64.iso
orubuntu-XX.XX-desktop-i386.iso
where XX.XX is the release number, e.g. 12.04. - Create a Boot CD or USB drive from the ISO file. Instructions for:
- Boot your machine from your medium of choice and run the live CD. This may be a good time to check if the following are functioning properly in the live CD. If one is not working as expected, don't attempt to install unless you know how to fix it:
- Audio
- WiFi or Ethernet connection
- Proper screen resolution and colors
- Click on the Install Ubuntu icon to start the installation process. You should check the following options:
- Download updates while installing
- Install this third party software
- Pay special attention to the Allocate Drive Space dialog. Actions performed in this step are irreversible and non-trivial to change afterwards.
This script is customizable in terms of specifying machine-specific attributes such as hostname, ssh port, forwarding email, etc. Customization of the desktop is based on variables set in a file named setup-env.conf
. Once you checkout the code or download it from github, you can run the script as follows:
# Setup configuration script
cp setup-env.conf.default setup-env.conf
# Edit configuration file to your liking
nano desktop_setup.sh
# Run the main script
chmod 755 desktop_setup.sh
./desktop_setup.sh
A number of important applications and/or platforms are not supported in the official Ubuntu repositories or in a trusted PPA. Therefore, these applications should be downloaded directly from their respective websites.
The wiki pages for this repository hosts the details for installing and setting up each of these applications. Here is the list of applications:
Some users may have application or hardware specific configuration options they would like to depoly. Here is a list of the ones I personally worked with also available through the The wiki pages:
The following items are a kind of TODO list of what I should add to this script
- GUI Preferences: the list of changes to the machine that can not be done with the command line
- Incorporate configuration from my dotfiles repository
See the LICENSE file.