On this page

This tutorial shows how to prepare an Ubuntu 14.04 (Trusty Tahr) server (with nginx, BIND, Dovecot) for the installation of ISPConfig 3, and how to install ISPConfig 3. ISPConfig 3 is a web hosting control panel that allows you to configure the following services through a web browser: Apache or nginx web server, Postfix mail server, Courier or Dovecot IMAP/POP3 server, MySQL, BIND or MyDNS nameserver, PureFTPd, SpamAssassin, ClamAV, and many more. This setup covers nginx (instead of Apache), BIND (instead of MyDNS), and Dovecot (instead of Courier).

If you want to use nginx instead of Apache with ISPConfig, please note that your nginx version must be at least 0.8.21, and you must install PHP-FPM as well. For CGI/Perl support, you must use fcgiwrap. This is all covered by this tutorial.

Please note that you cannot use this tutorial for Debian Squeeze because Squeeze comes with an older nginx version (0.7.67.) and does not have a PHP-FPM package!

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

I do not issue any guarantee that this will work for you!

ISPConfig 3 Manual

On more than 300 pages, it covers the concept behind ISPConfig (admin, resellers, clients), explains how to install and update ISPConfig 3, includes a reference for all forms and form fields in ISPConfig together with examples of valid inputs, and provides tutorials for the most common tasks in ISPConfig 3. It also lines out how to make your server more secure and comes with a troubleshooting section at the end.

ISPConfig Monitor App For Android

With the ISPConfig Monitor App, you can check your server status and find out if all services are running as expected. You can check TCP and UDP ports and ping your servers. In addition to that you can use this app to request details from servers that have ISPConfig installed (please note that the minimum installed ISPConfig 3 version with support for the ISPConfig Monitor App is 3.0.3.3!); these details include everything you know from the Monitor module in the ISPConfig Control Panel (e.g. services, mail and system logs, mail queue, CPU and memory info, disk usage, quota, OS details, RKHunter log, etc.), and of course, as ISPConfig is multiserver-capable, you can check all servers that are controlled from your ISPConfig master server.

2 Preliminary Note

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

I followed the guide installing on a Microsoft Azure server without getting any problem.I get a strange error : i cannot list directories when i connect by FTP, i get a timeout of 20 seconds.I've tested connecting in Google Chrome and the problem is still there.How to fix?

I installed the same tutorial today for a customer without any changes and it works fine, no issues at all.

The pure-ftpd things that you describe are only required if you block ports with a firewall.

The magento config that you posted is not fully compatible with ispconfig as you try to override the php setup so that all php files run under a wrong owner and you refernce directries like /home/... which are outside of the website.So remove the php config and set the corrcet path to the auth file.

Regarding saabase user: a database user gets created when you create the first database for it. Creating a mysql user when there is no database that it can be used for makes no sense and therefor it gets created together with the databse.

service networking restart does not work in Ubuntu 14.04 and according to official Ubuntu documents the correct method for reseting networking connections in Ubuntu 14.04 is using ifdown <interface> followed by ifup <interface>.

Would you please provide a step by step guide for how to use the ansible script?

I got the error...

debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /root/.ssh/id_dsa
debug3: no such identity: /root/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /root/.ssh/id_ecdsa
debug3: no such identity: /root/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: /root/.ssh/id_ed25519
debug3: no such identity: /root/.ssh/id_ed25519: No such file or directory
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.

I have created a file as instructed /etc/fail2ban/pureftp.conf, although there is already a file called /etc/fail2ban/pure-ftp.conf.

I also have an error at an earlier stage with jailkit saying that there are no socket defined in the configuration and it cannot be installed.

Any idea?

This is what has always put me off ISPConfig3. It is so difficult to prepare following this tutorial. Unfortunately there are no other. I really appreciate the tutorial as I do need it. But it is frustrating to get this type of error when following it to the letter. Using Ubuntu server 10.04.3 release.

this tutorial is for Ubuntu 14.04, when you use Ubuntu 10.04 then your server OS version is wrong for this tutorial and therefore the tutorial must fail. I used this tutorial last week, just copied all commands and it worked out of the box for me. The tutorials are for exactly one OS version, they can't work for another version as each Ubuntu release requires a different setup. Ubuntu 10.04 is outdated, so you should reinstall your server with ubuntu 14.04. If you really want to use the outdated 10.04 Ubuntu version, then use the tutorial for this old version: http://www.howtoforge.com/perfect-server-ubuntu-10.04-lucid-lynx-ispconfig-3

Btw: There is also an autoinstaller for ISPConfig available which works for Debian and Ubuntu 14.x and 15.x: https://www.howtoforge.com/tutorial/ispconfig-install-script-debian/

I did this on my server setup already for some time and it works great!

But I have a doubt, when I create a ALIAS for an account, I see that when email comes in the box by ALIAS, does not pass through SpamAssassin do not know if also not go through ClamAV, like and whether this is normal, it would be good if passase both.

Uhm, looks like this got copied verbatim from somewhere else. Why would *anyone* set PATH_INFO to be the script name? The idea behind PATH_INFO is to pass whatever has been passed right after the script name in the form of a path ...