The Perfect Server - Ubuntu Lucid Lynx (Ubuntu 10.04) [ISPConfig 2]

Version 1.0
Author: Falko Timme
Follow me on Twitter
Last edited 04/29/2010

This tutorial shows how to set up an Ubuntu Lucid Lynx (Ubuntu 10.04) server that offers all services needed by ISPs and hosters: Apache web server (SSL-capable), Postfix mail server with SMTP-AUTH and TLS, BIND DNS server, Proftpd FTP server, MySQL server, Courier POP3/IMAP, Quota, Firewall, etc. In the end you should have a system that works reliably, and if you like you can install the free webhosting control panel ISPConfig 2 (i.e., ISPConfig runs on it out of the box).

I will use the following software:

  • Web Server: Apache 2.2.14 with PHP 5.3.2, Python, Ruby, and WebDAV
  • Database Server: MySQL 5.1.41
  • Mail Server: Postfix
  • DNS Server: BIND9
  • FTP Server: proftpd
  • POP3/IMAP: I will use Maildir format and therefore install Courier-POP3/Courier-IMAP.
  • Webalizer for web site statistics

Please note that this setup does not work for ISPConfig 3! It is valid for ISPConfig 2 only!

I want to say first that this is not the only way of setting up such a system. There are many ways of achieving this goal but this is the way I take. I do not issue any guarantee that this will work for you!


1 Requirements

To install such a system you will need the following:


2 Preliminary Note

In this tutorial I use the hostname with the IP address and the gateway These settings might differ for you, so you have to replace them where appropriate.


3 The Base System

Insert your Ubuntu install CD into your system and boot from it. Select your language:

Then select Install Ubuntu Server:

Choose your language again (?):

Then select your location:

Choose a keyboard layout (you will be asked to press a few keys, and the installer will try to detect your keyboard layout based on the keys you pressed):

The installer checks the installation CD, your hardware, and configures the network with DHCP if there is a DHCP server in the network:

Share this page:

11 Comment(s)

Add comment


From: scristi at: 2010-04-30 13:31:08

do you have any idea how i could install php 5.2 instead of 5.3 (because some of the software i run doesn't work on php 5.3), i could probably compile it from source, but i'm afraid of the incompatibilities, so i would like to use the previous version of php, that karmic koala used, that is in the repositories

From: Taarik at: 2010-05-15 11:16:17

Hi, You can try the script posted at  The script works fine (I think)...the only problem is that PHP is not automatically added-back to Apache. When I do  ls /etc/apache2/mods-enabled/, PHP doesn't appear.

From: Anonymous at: 2010-05-21 17:23:49

The screenshots are fine, but can't you make them optional (you know, a button or something?) and put in a Table of Contents? It is hard to find the actual information I need without viewing all the fluff.

From: Anonymous at: 2011-07-18 20:23:53

Can we have a button that only shows screenshots?  It's hard to get to the good stuff without all that annoying text in the way.

From: Anonymous at: 2010-09-08 10:02:02

Thank you for taking the time to write this out!

From: Anonymous at: 2012-04-19 00:44:12

Thank you for the screenshots. And for the person whining about getting through the fluff, you should be thanking the person who took time out to post screenshots. If you disagree I would like to see you do a better job before being critical of someone else efforts.

From: Anonymous at: 2010-05-12 16:01:18

Just want to give you the right address to Putty:

(The www was missing).


From: at: 2010-07-15 12:24:21

sudo su - (su dash) assumes roots' homedir rather than the users'.

From: Heidi Munksgaard at: 2010-12-06 21:03:50

Hi Falko!

Have been struggeling with setting up my Ubuntu server untill I came across this fantastic tutorial.

Just wanted to point out a little typo in the line:

"openssl x509 -req -days 3650 -in smtpd.csr -signkey smtpd.key -out smtpd.crt"

in the section for making TLS certificates. 

the " -in smtpd.csr -signkey smtpd.key -out smtpd.crt" part will give an error of:

"smtpd.csr; No such file or directory."

You need to change the name from "smtpd.csr" to "smtpd.crt" in the "-in smtpd.csr" part in order to avoid this error.


Heidi Munksgaard

From: DaGeek247 at: 2010-12-31 20:02:31

i love the tutorial, but i also now understand why programs like xampp  are out there. making your own server is tough.

I am wondering, is there like a shell script (for ubuntu users) that would do all this on its own? The user would have to watch the screen and whatnot, but it would help me alot. i frequently run into types and other problems.

From: Pete Gross at: 2010-05-26 00:25:02

After I did your howto  I tried to connect to https://localhost and got an error of " Error code: ssl_error_rx_record_too_long"


I figured the problem out, I just had to run: sudo a2ensite default-ssl 


I'd suggest adding this into your howto, so others don't have the same problem.


Thanks the howto was great!