ISPConfig is arguably the most complete open source server administration control panel in existence. Developed by Till Brehm of projektfarm in 2005, it has stood the test of time and endured as the de facto favorite among serious self-hosters and hosting agencies alike.
Not only does ISPConfig offer a full-featured control panel for managing multiple servers, but it also includes support for a customer billing system, available as a paid module. That means you can use your server to run your own reseller hosting business at very little cost. The two other paid modules are the Migration Toolkit for moving your ISPConfig around, and the ISPProtect Malware Scanner module.
Hosting control panels like ISPConfig are designed to make managing a server easy by abstracting away the gnarly technical bits behind middle-man automation. That said, some people may be turned away from ISPConfig because it has an air of complexity about it, which is somewhat true.
ISPConfig gives you extremely fine-grained control over your server from its web-based control panel interface. Through this central interface, you can manage everything from per-website web server environments, email accounts, databases, FTP users, jailed SSH users, cron jobs, to DNS zone settings and more. The control panel supports four built-in user roles: administrator, reseller, client, and email user.
In this tutorial, you’ll learn how to install and configure the latest ISPConfig 3.1 on Ubuntu 18.04.
- A VPS or dedicated server with Ubuntu 18.04 freshly installed. The recommended OS is Debian, but Ubuntu comes in at a close second since it’s based on Debian, just with newer package releases. 1GB+ of RAM is best.
Step 1: Add a sudo user
We’re going to use the root user to install ISPConfig, but you’ll want to create a non-root user for later down the road, in case you ever need to SSH into the server for some reason. Log in to your server as root and add a new user (replace “myuser” with your own username):
Next, add “myuser” to the sudo group:
usermod -aG sudo myuser
Step 2: Use the install script
One of the perks of ISPConfig is that you have complete control over the server setup process, and thankfully the developers happen to provide detailed tutorials on how to prepare a new server for ISPConfig.
We’re going to skip all that and use the automated installation script instead. Note that the script is not guaranteed to work on every OS image, even though the distribution (e.g. 18.04) may be correct. If you have trouble with the installer, consult the HowToForge Perfect Server tutorials to install ISPConfig step-by-step. Be warned, it’s quite a slog, but worth it if you want to understand what’s running under the hood.
Copy and paste this into your terminal:
cd /tmp; wget –no-check-certificate -O installer.tgz “https://github.com/servisys/ispconfig_setup/tarball/master”; tar zxvf installer.tgz; cd *ispconfig*; bash install.sh
Now complete the Standard Mode installation by following the prompts in the console.
Troubleshooting: If the installer script freezes on this line:
“Updating apt package database and upgrading currently installed packages…”
… Then you will need to reinstall the server and run apt-get update and apt-get upgrade manually like this:
apt-get update && apt-get upgrade
Once done, you can try running the install script again.
Step 3: Check your server config
When ISPConfig is installed, you can log in to your control panel by entering https://Your_IP_Address:8080 in your browser. The admin area is secured with a self-signed SSL certificate, so you can safely add an exception when the security warning pops up.
Go to the System tab, click CP Users, and then change the admin password.
From the System tab, you can manage:
- System services
- General server config
- Server networking and firewall
- App packages and repositories
Feel free to take a look at System > Server Config and explore all the different configuration options. Since there are so many options, it can be tricky to know what to configure here. Try to stick with what you know (and need), and leave the advanced configuration settings as default.
Step 4: Add a new website
The Sites tab lets you manage:
- FTP and Shell users
- Cron jobs
To add a new website, go to Websites > Website and fill out the form after clicking “Add new website”.
ISPConfig’s forms are designed so that you can assign websites, databases, and users to different client accounts. This allows you to limit hard disk space and traffic bandwidth on a per-client basis. Of course, if you’re only running ISPConfig for yourself, then you ignore the “Client” field and leave most of the other fields as default (e.g. unlimited).
At a minimum, you will have to enter these fields: Server IP, Domain, and PHP type (PHP-FPM is recommended for HTTP/2 support).
Next, make sure you’ve set your DNS host records for your domain to the server IP that you set for your website on ISPConfig. Then, you can test your website by typing its URL into a browser. You will see the default Apache2 index page:
Excellent. Now, to install something actually worth running (like WordPress or another PHP app) you must create a new database user and database, and then set up an FTP user so that you can upload the files onto your website. All this can be done easily under the Sites tab as well.
Step 5: Set up email
What good is a website without email? To set up mailboxes for your domain, go to the Email tab and add a new email domain. Remember to set your spam filter sensitivity.
Once you’ve added your domain, go to Email Mailbox and create a new mailbox – e.g. email@example.com.
You can then access your mailbox with Roundcube by navigating to http://yourdomain.com/webmail and logging in.
Step 6: Going further
ISPConfig is extremely powerful and includes way more than we could reasonably cover in this brief tutorial. Don’t be afraid to explore its capabilities. Once you have a handle on the basic control panel features, consider purchasing the ISPConfig User Manual. For free software as amazing as this, it’s the least you can do to support it (while supporting yourself at the same time).