Content
Introductory
In this description, we will create a newer, Debian 11 (Bullseye) version of the perfect server. Unlike the previous perfect server installations, this will not be done with lengthy package installations and configurations, but with the help of an automation script, which is ISPConfig compiled by its developers to make server creation easier. The script has been available for some time, with the help of which it can be used not only on the Debian 11 (Bullseye) operating system, but also on the following distributions and their versions. I have automated the components of the perfect server:
- Debian 10 (Buster)
- Debian 11 (Bullseye)
- Ubuntu 20.04 (Focal Pit)
- Ubuntu 22.04 (Jammy Jellyfish)
Of these, in this description we will now automatically prepare the installation of the ISPConfig server environment for the Debian 11 (Bullseye) operating system.
Prerequisites
The repository database and updating packages
First, let's update our luggage racks and our packages root-Kent:
apt-get update
apt-get upgrade
Run the automatic installer for the first time
In the next section, we will prepare a shell script downloaded from a "foreign" source root- on our system, so always follow a general rule: If we do not 100% understand the operation of the running command - what it does with the downloaded command file on our machine - or we do not trust the source, then do not run it!
In the present example, of course, the source is reliable, and we will also interpret the running command, so as soon as we understand its operation, we can run it.
So I wrote all of this just as a reminder that we should always be careful at this time.
Our automatic installation command is therefore the following, of which we will first look only at the help section, so that we can see what installation options are available to us. The help is below wget we can do it using the command rootyou are as sudo using it, of course after we have understood its operation:
wget -O - https://get.ispconfig.org | sh -s -- --help
The wget command does the following:
- -SHE: output. Specify the output of the downloaded content.
- - (single hyphen alone): Based on a Linux convention (not followed by all programs), a single hyphen in the filename position refers to standard input (stdin) or standard output (stdout), depending on the context. Since this is the argument to -O (output) in this case, it refers to stdout. In this way, we instruct the wget command to redirect the downloaded content to the standard output, i.e. to display it in the terminal.
- https://get.ispconfig.org: You download content from this URL.
After that, the resulting output (which is otherwise a shell script) is not displayed on the screen, but is forwarded using a pipeline to the system's default command interpreter (sh) - Which in the case of Debian 11 is Dash, if it has not been converted - which receives the following parameters :
- -s: If the -s option is present, or if there are no arguments left after processing the option, commands are read from standard input. This option allows you to set positional parameters when invoking an interactive shell or reading input through a pipe (detail in Bash manual page, which is almost identical to Dash in everything).
- --: And the double hyphen ensures that the parts after it are not processed by the system shell as additional shell options, but as their own arguments of the specified script file (in this case, the script content received from the pipeline).
- --help: Based on the previous item, this part is therefore not the Dash/Bash received as a parameter, but becomes a parameter of the downloaded and executed script file, which results in the program's help being displayed.
So now that we have a clear view of this command line, let's see what happens:
The wget download starts, then the resulting output is processed by the shell.
At the beginning of the script, it checks to see if it is installed PHP on the system. Since we are working with the minimal server, there is nothing on the machine yet, so the automatic installer installs command-line PHP and some other necessary PHP packages.
Then you configure PHP 7.4, which is the default PHP version of Debian 11 (Bullseye):
Here you configure a little more, and then the help appears:
**************************************************************************************************************************************
ISPConfig 3 Autoinstaller
**************************************************************************************************************************************
Usage: ispc3-ai.sh [<argument>] [...]
This script automatically installs all needed packages for an ISPConfig 3 setup using the guidelines from the "Perfect Server Setup" howtos on www.howtoforge.com.
Possible arguments are:
--help Show this help page
--debug Enable verbose logging (logs each command with the exit code)
--channel Choose the channel to use for ISPConfig. --channel=<stable|dev>
"stable" is the latest ISPConfig release available on www.ispconfig.org
"dev" is the latest dev-branch from the ISPConfig git repository:
https://git.ispconfig.org/ispconfig/ispconfig3/tree/develop
-> The dev channel might contain bugs and less-tested features and should only be used in production by very
experienced users.
--lang Use language for ISPConfig installation. Specify with --lang=en|de (only en (English) and de (German) supported
currently).
--interactive Don't install ISPConfig in non-interactive mode. This is needed if you want to use expert mode, e. g. to install a
slave server that shall be integrated into an existing multiserver setup.
--use-nginx Use nginx webserver instead of apache2
--use-amavis Use amavis instead of rspamd for mail filtering
--use-unbound Use unbound instead of bind9 for local resolving. Only allowed if --no-dns is set.
--use-php Use specific PHP versions, comma separated, instead of installing multiple PHP, e.g. --use-php=7.4,8.0 (5.6, 7.0,
7.1, 7.2, 7.3, 7.4, 8.0 and 8.1 available).
--use-php=system disables the sury repository and just installs the system's default PHP version.
ommiting the argument (use all versions)
--use-ftp-ports This option sets the passive port range for pure-ftpd. You have to specify the port range separated by hyphen, e.
g. --use-ftp-ports=40110-40210.
If not provided the passive port range will not be configured.
--use-certbot Use Certbot instead of acme.sh for issuing Let's Encrypt certificates. Not adviced unless you are migrating from a
old server that uses Certbot.
--no-web Do not use ISPConfig on this server to manage webserver setting and don't install nginx/apache or pureftpd. This
will also prevent installing an ISPConfig UI and implies --no-roundcube as well as --no-pma
--no-mail Do not use ISPConfig on this server to manage mailserver settings. This will install postfix for sending system
mails, but not dovecot and not configure any settings for ISPConfig mail. It implies --no-mailman.
--no-dns Do not use ISPConfig on this server to manage DNS entries. Bind will be installed for local DNS caching /
resolving only.
--no-local-dns Do not install local DNS caching / resolving via bind.
--no-firewall Do not install ufw and tell ISPConfig to not manage firewall settings on this server.
--no-roundcube Do not install roundcube webmail.
--roundcube Install Roundcube even when --no-mail is used. Manual configuration of Roundcube config is needed.
--no-pma Do not install PHPMyAdmin on this server.
--no-mailman Do not install Mailman mailing list manager.
--no-quota Disable file system quota
--no-ntp Disable NTP setup
--monit Install Monit and set it up to monitor installed services. Supported services: Apache2, NGINX, MariaDB,
pure-ftpd-mysql, php-fpm, ssh, named, Postfix, Dovecot, rspamd.
--monit-alert-email
Set up alerts for Monit to be send to given e-mail address. e.g. --monit-alert-email=me@example.com
--ssh-port -> Configure the SSH server to listen on a non-default port. Port number must be between 1 and 65535 and can not
be in use by other services. e.g. --ssh-port=64
--ssh-permit-root
-> Configure the SSH server wether or not to allow root login. Available options: yes | without-password | no -
e.g. --ssh-permit-root=without-password
--ssh-password-authentication
-> Configure the SSH server wether or not to allow password authentication. Available options: yes | no - e.g.
-ssh-password-authentication=no
--ssh-harden -> Configure the SSH server to have a stronger security config.
--unattended-upgrades
Install UnattendedUpgrades. You can add extra arguments for automatic cleanup and automatic reboots when necessary
with --unattended-upgrades=autoclean,reboot (or only one of them).
--i-know-what-i-am-doing
Prevent the autoinstaller to ask for confirmation before continuing to reconfigure the server.
Here we get many options. Now I would not go into detail about each of them, but basically here we can switch the components on/off, and for some components we can request the installation based on several preset schemes. Like how it is Apache instead of Nginx Do we ask for the installation with a web server or is the SSH if we allow password entry, etc.
Perfect server automatic installation
The following installation is presented here with the default settings. To do this, we need to run the following command:
wget -O - https://get.ispconfig.org | sh -s
Here, the help part is removed from the command, so the installation starts.
The process provides detailed information on each step, here are the pictures:
First, it warns that this script will completely reconfigure the entire server, and that it should be run on a completely fresh installation, and that all current configurations will be lost. It then asks us to enter the word "yes" if we are sure about starting the installation.
The installer will then start.
Anyone who has installed perfect servers manually before is probably familiar with the software packages listed here.
Here you are installing all available PHP versions. Previously, the by installing different PHP versions how much work it was, and the installed PHP versions were still there It also had to be set in the ISPConfig panel. Good old days...
Here, it packages the PHP packages massively, and then installs additional packages - familiar from earlier. ISPConfig used to be Let's Encrypt ACME used CertBot as a client, but some time ago they switched to acme.sh, which allows for more modern integration.
And in the last picture, it installs many other packages and then restarts the services.
Finally, it will write out the randomly generated ISPConfig admin and MySQL root passwords, which should be stored immediately.
And at the very end, it warns us to remove the installation log files from the /tmp directory, as they also contain these passwords.
Let's also delete the file:
rm /tmp/ispconfig-ai/var/log/setup-*
The output of the installer is:
WARNING! This script will reconfigure your complete server! It should be run on a freshly installed server and all current configuration that you have done will most likely be lost! Type 'yes' if you really want to continue: yes [INFO] Starting perfect server setup for Debian GNU/Linux 11 (bullseye) [INFO] Checking hostname. [INFO] Enabling contrib and non-free repositories. [INFO] Updating packages [INFO] Updated packages [INFO] Installing packages ssh, openssh-server, nano, vim-nox, lsb-release, apt-transport-https, ca-certificates, wget, git, gnupg, software-properties-common, curl, cron, ntp [INFO] Installed packages ssh, openssh-server, nano, vim-nox, lsb-release, apt-transport-https, ca-certificates, wget, git, gnupg, software-properties-common, curl, cron, ntp [INFO] Activating rspamd repository. [INFO] Activating sury php repository. [INFO] Activating GoAccess repository. [INFO] Updating packages (after enabling 3rd party repos). [INFO] Updated packages [INFO] Default shell is currently dash. [INFO] Setting bash as default shell. [INFO] Default shell is now bash. [INFO] Installing packages dbconfig-common, postfix, postfix-mysql, postfix-doc, mariadb-client, mariadb-server, openssl, rkhunter, binutils, sudo, getmail [INFO] Installed packages dbconfig-common, postfix, postfix-mysql, postfix-doc, mariadb-client, mariadb-server, openssl, rkhunter, binutils, sudo, getmail [INFO] Installing packages dovecot-imapd, dovecot-pop3d, dovecot-mysql, dovecot-sieve, dovecot-managesieved, dovecot-lmtpd [INFO] Installed packages dovecot-imapd, dovecot-pop3d, dovecot-mysql, dovecot-sieve, dovecot-managesieved, dovecot-lmtpd [INFO] Generating MySQL password. [INFO] Writing MySQL config files. [INFO] Configuring postfix. [INFO] Restarting postfix [INFO] Installing packages software-properties-common, update-inetd, dnsutils, resolvconf, clamav, clamav-daemon, clamav-docs, zip, unzip, bzip2, xz-utils, lzip, rar, borgbackup, arj, nomarch, lzop, cabextract, apt-listchanges, libnet-ldap-perl, libauthen-sasl-perl, daemon, libio-string-perl, libio-socket-ssl-perl, libnet-ident-perl, libnet-dns-perl, libdbd-mysql-perl, bind9, rspamd, redis-server, postgrey, p7zip, p7zip-full, unrar-free, lrzip [INFO] Installed packages software-properties-common, update-inetd, dnsutils, resolvconf, clamav, clamav-daemon, clamav-docs, zip, unzip, bzip2, xz-utils, lzip, rar, borgbackup, arj, nomarch, lzop, cabextract, apt-listchanges, libnet-ldap-perl, libauthen-sasl-perl, daemon, libio-string-perl, libio-socket-ssl-perl, libnet-ident-perl, libnet-dns-perl, libdbd-mysql-perl, bind9, rspamd, redis-server, postgrey, p7zip, p7zip-full, unrar-free, lrzip [INFO] Stopping Rspamd. [INFO] (Re)starting Bind. [INFO] Disabling spamassassin daemon. [INFO] Checking local dns resolver. [WARN] Unexpected resolver response: Server: 192.168.1.1 (/lib/os/class.ISPConfigDebianOS.inc.php:1584) [INFO] Installing packages apache2, apache2-doc, apache2-utils, libapache2-mod-fcgid, apache2-suexec-pristine, libapache2-mod-python, libapache2-mod-passenger [INFO] Installed packages apache2, apache2-doc, apache2-utils, libapache2-mod-fcgid, apache2-suexec-pristine, libapache2-mod-python, libapache2-mod-passenger [INFO] Installing packages php-pear, php-memcache, php-imagick, mcrypt, imagemagick, libruby, memcached, php-apcu, jailkit, php5.6, php5.6-common, php5.6-gd, php5.6-mysql, php5.6-imap, php5.6-cli, php5.6-mcrypt, php5.6-curl, php5.6-intl, php5.6-pspell, php5.6-recode, php5.6-sqlite3, php5.6-tidy, php5.6-xmlrpc, php5.6-xsl, php5.6-zip, php5.6-mbstring, php5.6-soap, php5.6-opcache, php5.6-cgi, php5.6-fpm, php7.0, php7.0-common, php7.0-gd, php7.0-mysql, php7.0-imap, php7.0-cli, php7.0-mcrypt, php7.0-curl, php7.0-intl, php7.0-pspell, php7.0-recode, php7.0-sqlite3, php7.0-tidy, php7.0-xmlrpc, php7.0-xsl, php7.0-zip, php7.0-mbstring, php7.0-soap, php7.0-opcache, php7.0-cgi, php7.0-fpm, php7.1, php7.1-common, php7.1-gd, php7.1-mysql, php7.1-imap, php7.1-cli, php7.1-mcrypt, php7.1-curl, php7.1-intl, php7.1-pspell, php7.1-recode, php7.1-sqlite3, php7.1-tidy, php7.1-xmlrpc, php7.1-xsl, php7.1-zip, php7.1-mbstring, php7.1-soap, php7.1-opcache, php7.1-cgi, php7.1-fpm, php7.2, php7.2-common, php7.2-gd, php7.2-mysql, php7.2-imap, php7.2-cli, php7.2-curl, php7.2-intl, php7.2-pspell, php7.2-recode, php7.2-sqlite3, php7.2-tidy, php7.2-xmlrpc, php7.2-xsl, php7.2-zip, php7.2-mbstring, php7.2-soap, php7.2-opcache, php7.2-cgi, php7.2-fpm, php7.3, php7.3-common, php7.3-gd, php7.3-mysql, php7.3-imap, php7.3-cli, php7.3-curl, php7.3-intl, php7.3-pspell, php7.3-recode, php7.3-sqlite3, php7.3-tidy, php7.3-xmlrpc, php7.3-xsl, php7.3-zip, php7.3-mbstring, php7.3-soap, php7.3-opcache, php7.3-cgi, php7.3-fpm, php7.4, php7.4-common, php7.4-gd, php7.4-mysql, php7.4-imap, php7.4-cli, php7.4-curl, php7.4-intl, php7.4-pspell, php7.4-sqlite3, php7.4-tidy, php7.4-xmlrpc, php7.4-xsl, php7.4-zip, php7.4-mbstring, php7.4-soap, php7.4-opcache, php7.4-cgi, php7.4-fpm, php8.0, php8.0-common, php8.0-gd, php8.0-mysql, php8.0-imap, php8.0-cli, php8.0-curl, php8.0-intl, php8.0-pspell, php8.0-sqlite3, php8.0-tidy, php8.0-xsl, php8.0-zip, php8.0-mbstring, php8.0-soap, php8.0-opcache, php8.0-cgi, php8.0-fpm, php8.1, php8.1-common, php8.1-gd, php8.1-mysql, php8.1-imap, php8.1-cli, php8.1-curl, php8.1-intl, php8.1-pspell, php8.1-sqlite3, php8.1-tidy, php8.1-xsl, php8.1-zip, php8.1-mbstring, php8.1-soap, php8.1-opcache, php8.1-cgi, php8.1-fpm [INFO] Installed packages php-pear, php-memcache, php-imagick, mcrypt, imagemagick, libruby, memcached, php-apcu, jailkit, php5.6, php5.6-common, php5.6-gd, php5.6-mysql, php5.6-imap, php5.6-cli, php5.6-mcrypt, php5.6-curl, php5.6-intl, php5.6-pspell, php5.6-recode, php5.6-sqlite3, php5.6-tidy, php5.6-xmlrpc, php5.6-xsl, php5.6-zip, php5.6-mbstring, php5.6-soap, php5.6-opcache, php5.6-cgi, php5.6-fpm, php7.0, php7.0-common, php7.0-gd, php7.0-mysql, php7.0-imap, php7.0-cli, php7.0-mcrypt, php7.0-curl, php7.0-intl, php7.0-pspell, php7.0-recode, php7.0-sqlite3, php7.0-tidy, php7.0-xmlrpc, php7.0-xsl, php7.0-zip, php7.0-mbstring, php7.0-soap, php7.0-opcache, php7.0-cgi, php7.0-fpm, php7.1, php7.1-common, php7.1-gd, php7.1-mysql, php7.1-imap, php7.1-cli, php7.1-mcrypt, php7.1-curl, php7.1-intl, php7.1-pspell, php7.1-recode, php7.1-sqlite3, php7.1-tidy, php7.1-xmlrpc, php7.1-xsl, php7.1-zip, php7.1-mbstring, php7.1-soap, php7.1-opcache, php7.1-cgi, php7.1-fpm, php7.2, php7.2-common, php7.2-gd, php7.2-mysql, php7.2-imap, php7.2-cli, php7.2-curl, php7.2-intl, php7.2-pspell, php7.2-recode, php7.2-sqlite3, php7.2-tidy, php7.2-xmlrpc, php7.2-xsl, php7.2-zip, php7.2-mbstring, php7.2-soap, php7.2-opcache, php7.2-cgi, php7.2-fpm, php7.3, php7.3-common, php7.3-gd, php7.3-mysql, php7.3-imap, php7.3-cli, php7.3-curl, php7.3-intl, php7.3-pspell, php7.3-recode, php7.3-sqlite3, php7.3-tidy, php7.3-xmlrpc, php7.3-xsl, php7.3-zip, php7.3-mbstring, php7.3-soap, php7.3-opcache, php7.3-cgi, php7.3-fpm, php7.4, php7.4-common, php7.4-gd, php7.4-mysql, php7.4-imap, php7.4-cli, php7.4-curl, php7.4-intl, php7.4-pspell, php7.4-sqlite3, php7.4-tidy, php7.4-xmlrpc, php7.4-xsl, php7.4-zip, php7.4-mbstring, php7.4-soap, php7.4-opcache, php7.4-cgi, php7.4-fpm, php8.0, php8.0-common, php8.0-gd, php8.0-mysql, php8.0-imap, php8.0-cli, php8.0-curl, php8.0-intl, php8.0-pspell, php8.0-sqlite3, php8.0-tidy, php8.0-xsl, php8.0-zip, php8.0-mbstring, php8.0-soap, php8.0-opcache, php8.0-cgi, php8.0-fpm, php8.1, php8.1-common, php8.1-gd, php8.1-mysql, php8.1-imap, php8.1-cli, php8.1-curl, php8.1-intl, php8.1-pspell, php8.1-sqlite3, php8.1-tidy, php8.1-xsl, php8.1-zip, php8.1-mbstring, php8.1-soap, php8.1-opcache, php8.1-cgi, php8.1-fpm [INFO] Disabling conflicting apache modules. [INFO] Enabling apache modules. [INFO] Enabling default PHP-FPM config. [INFO] Setting default system PHP version. [INFO] Installing phpMyAdmin [INFO] HTTPoxy config. [INFO] Installing acme.sh (Let's Encrypt). [INFO] acme.sh (Let's Encrypt) installed. [INFO] ISPConfig does not yet support mailman3 and mailman2 is no longer available in Debian 11. [INFO] Installing packages quota, quotatool, haveged, geoip-database, libclass-dbi-mysql-perl, libtimedate-perl, build-essential, autoconf, automake, libtool, flex, bison, debhelper, binutils [INFO] Installed packages quota, quotatool, haveged, geoip-database, libclass-dbi-mysql-perl, libtimedate-perl, build-essential, autoconf, automake, libtool, flex, bison, debhelper, binutils [INFO] Adding quota to fstab. [INFO] Installing packages pure-ftpd-common, pure-ftpd-mysql, awstats, goaccess, awffull [INFO] Installed packages pure-ftpd-common, pure-ftpd-mysql, awstats, goaccess, awffull [INFO] Enabling TLS for pureftpd [INFO] Disabling awstats cron. [INFO] Installing packages fail2ban, ufw [INFO] Installed packages fail2ban, ufw [INFO] Configuring SSHd [INFO] Installing roundcube. [INFO] Installing packages roundcube, roundcube-core, roundcube-mysql, roundcube-plugins [INFO] Installed packages roundcube, roundcube-core, roundcube-mysql, roundcube-plugins [INFO] Installing ISPConfig3. [INFO] Adding PHP version(s) to ISPConfig. [INFO] Checking all services are running. [INFO] mysql: OK [INFO] clamav-daemon: OK [INFO] postfix: OK [INFO] bind9: OK [INFO] pureftpd: OK [INFO] apache2: OK [INFO] rspamd: OK [INFO] redis-server: OK [INFO] dovecot: OK [INFO] Installation ready. [INFO] Your ISPConfig admin password is: kgurRd51KMRTepk [INFO] Your MySQL root password is: pbBZhgLVEdxvupxF3KkF [INFO] Warning: Please delete the log files in /tmp/ispconfig-ai/var/log/setup-* once you don't need them anymore because they contain your passwords!
There was one warning, and this was because of the name server, since I ran it on a virtual machine, so the address of the resolver is the address of the gateway of my router, which it could not do anything with. But of course there is no problem with this in a live environment.
Server overview and control
First, let's review the web parts. Let's start with an overview of the ISPConfig control panel itself.
Overview and configuration of ISPConfig
Open a browser and load our server IP addresses, and the ISPConfig port number, which is 8080 by default:
https://192.168.1.140:8080
Enter the admin user here and the password you received at the end of the installation.
Let's set up some basics.
Set language
If you want to change the language of the admin user, then go to the "CP Users" menu of the "System" main menu, then change your language here in the lower part of the form:
Then exit, then back again, and the Hungarian translations will appear. Of course, not all of it is completely translated, but some of it is.
Firewall setup
In the next step, configure the firewall. To do this, enter the "System" main menu, then the "Firewall" menu. Then click the "New firewall entry" button here:
The system automatically fills in the settings of the open TCP and UDP ports based on the installed services. Of course, these depend on the settings of the ports selected during installation. Here we check that the TCP port 8080 is included in the list, otherwise we cannot re-enter the panel.
If the settings are correct, save the firewall rule. Then, as usual, the red circle appears above in the ISPConfig panel, which tells us that a setting is in progress:
This server configuration is UFW uses a firewall, with which the system can be adjusted comfortably and flexibly network ports. Interestingly, if you look at it from the command line, it is for UFW firewall settings, then we can see that at first it was still inactive, and after we set our first firewall rule, its status became active from then on, and it lists the open ports corresponding to our setting:
Of course, it is recommended on a live server individual port settings be used so that our server is better protected during possible attacks from the outside world, for example one port scanning in case of. Therefore, it is advisable to change the port number of all services that do not perform public tasks, but serve administrative or maintenance purposes, to a unique value.
Deactivating prefixing of usernames
It is also worth mentioning the prefixing function of the ISPConfig panel. If we plan to synchronize websites between two ISPConfig servers, for example between our production server and the server storing development/backup copies at home, we can avoid many later headaches if we turn off prefixing. Of course, this only makes sense if we use the server ourselves and want to keep the web hosts and their databases on it in sync.
In this case, let's go through the following description, in which we can find out about this in detail:
Check phpMyAdmin
In this section a phpMyAdmin we check the web database management system. To do this, enter the /phpmyadmin section after the IP address of our server:
http://192.168.1.140/phpmyadmin/
Here we note that it is not HTTPS phpMyAdmin comes in, since there is no unique port setting for which an HTTPS connection is set, as in the case of ISPConfig, for example. However, when we create websites and they already have working (Let's Encrypt) SSL, the database manager under the /phpmyadmin subdirectories can be accessed using HTTPS under the domain names of the websites.
To log in, enter the root user and the MySQL password you received at the end of the installation:
After logging in, we are greeted by the well-known home page:
Check Roundcube webmail
We check the Roundcube webmail:
http://192.168.1.140/webmail/
There is no access here by default, for this you need to create an email address, which also requires an email domain. For the sake of the presentation, I created a mail account, so now we can also take a look at the internal interface of Roundcube:
So that would be the quick overview, of course there are still a lot of things that have been set up that work in the background.
What's next?
Once our server is ready and everything is in order, all that's left is to start creating our web hosting. You can find out more about this at the following link:
Conclusion
With the help of the automated installer of the ISPConfig server environment, we can save a lot of time - for which we are grateful to the creators of the script - and reduce to zero the number of possible errors resulting from inattention during long installations and configurations. Of course, the polishing and perfecting of the server did not end here; the tutorials that prepared the updated versions of the previous perfect servers can also be used excellently for this server configuration.
I hope I managed to make you want to install a server again, enjoy!
- How to build and arming our ISPConfig3 server and how to secure our control panel, main services and websites with Let's Encrypt SSL
- Creating the first Web account in the ISPConfig server configuration
- How can we check the used and free TCP/UDP ports of our Debian or Ubuntu Linux operating system?
- Encyclopedia - UFW (Uncomplicated Firewall)
- Installing, configuring and using a UFW firewall on Debian / Ubuntu systems
- How can we change the default tcp port 22 of our SSH server on our Debian or Ubuntu Linux server for better security?
- Basic port scanning - Or how to check the security of our Linux server against unauthorized intruders
- Perfect server: Debian 8 (Jessie) V1.0
- Perfect server: Debian 9 (stretch) V1.0
- Perfect server: Debian 10 (Buster) V1.0
- How to set the default website on our ISPConfig server so that the Apache2 Debian Default page is not loaded when accessing the server's IP address or full hostname
- howtoforge.com/ispconfig-autoinstall-debian-ubuntu
- To post registration and login required
- 724 views
















