Deployment Overview of Ispconfig on Server¶
Prerequisites and Basic Requirements¶
Before beginning the installation, ensure the server meets the following requirements:
-
Operating System: Ubuntu or Debian.
-
Privileges: Root or sudo access is required for all installation steps.
-
Network/Ports: The following TCP ports must be open in the firewall:
-
22(SSH) -
80(HTTP) -
443(HTTPS) -
8080(ISPConfig Panel)
FQDN of the final panel on the hostkey.in domain¶
The ISPConfig panel is accessible via a specific Fully Qualified Domain Name (FQDN) based on the server ID.
| Parameter | Value |
|---|---|
| Prefix | ispconfig |
| Domain | hostkey.in |
| Full template | ispconfig{Server_ID_from_Invapi}.hostkey.in |
File and Directory Structure¶
The following paths are used for configuration files, application data, and SSL certificates:
-
/usr/local/ispconfig: Main installation directory of the ISPConfig interface. -
/usr/local/ispconfig/interface/lib/config.inc.php: Primary ISPConfig configuration file. -
/etc/nginx/sites-available/000-ispconfig.vhost: Nginx virtual host for the ISPConfig panel. -
/data/nginx/user_conf.d/: Directory containing custom Nginx user configurations and proxy settings. -
/root/nginx/compose.yml: Docker Compose file for the SSL management container.
Application installation process¶
The application is installed using a combination of package management and an automated installer script:
-
System Preparation: The system updates the APT cache, installs base utilities (
wget,curl,ca-certificates, etc.), and ensures necessary dependencies likenginxandbind9are present. -
Docker Installation: Docker is installed to manage the SSL certificate container.
-
ISPConfig Download: The application source is downloaded from the official ISPConfig repository, extracted to
/tmp/ispconfig-ai, and prepared for installation. -
Automated Installation: An installation script (
ispconfig.ai.php) is executed with specific flags: -
--use-nginx: Configures Nginx as the web server. -
--no-roundcube: Skips Roundcube installation. -
--no-mail,--no-dns,--no-ftp: Disables these components from being managed by the autoinstaller to allow for custom configuration. -
--unattended-upgrades: Enables automatic security updates. -
PHP Environment: PHP 8.3 is installed via a dedicated repository to provide the necessary FPM environment for the panel's web interface.
Access Rights and Security¶
Security is managed through several layers:
-
Firewall (UFW): The Uncomplicated Firewall (UFW) is enabled, with rules specifically allowing traffic on ports 22, 80, 443, and 8080.
-
User Permissions: The
www-datauser is granted read access to the ISPConfig configuration file (config.inc.php) and write access to the/usr/local/ispconfig/interface/tempand/usr/local/ispconfig/interface/lib/classes/IDS/tmpdirectories. -
Directory Permissions: Critical application directories are set to
0755or0770as required for proper service operation.
Databases¶
ISPConfig utilizes a MariaDB database for its internal configuration and user management:
-
Database Name:
dbispconfig -
Connection Method: Localhost via socket/TCP.
-
Storage Location: Managed by the system's MariaDB service.
-
Default Credentials:
-
Root User:
root(Password managed via system defaults). -
ISPConfig User:
ispconfig.
Docker Containers and Their Deployment¶
The deployment includes one primary application container used for SSL certificate management:
Nginx Certbot Container
-
Image:
jonasal/nginx-certbot:latest -
Ports: Binds to host ports 80 and 443.
-
Volumes:
-
nginx_secrets:/etc/letsencrypt: Persists SSL certificates. -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d: Provides custom Nginx configurations. -
Network Mode:
host -
Restart Policy:
unless-stopped
Custom Scripts and Additional Setup¶
The deployment performs several non-standard actions to ensure the panel is correctly integrated with the host's web server:
-
Nginx Proxy Configuration: A configuration file is generated in
/data/nginx/user_conf.d/that usesproxy_passto route traffic from port 443 (via Certbot) to the ISPConfig service running on port 8080. -
ISPConfig Vhost Setup: A custom Nginx virtual host (
000-ispconfig.vhost) is created and enabled, configured specifically to communicate with the PHP 8.3 FPM socket. -
Database Password Update: An automated command updates the
sys_usertable in the MariaDB database to set the ISPConfig admin password.
Application Update Instructions¶
To update the main application:
-
If using Docker components, navigate to
/root/nginxand run: -
For system-level updates, use the standard package manager:
Location of configuration files and data¶
| Component | Path |
|---|---|
| ISPConfig Main Config | /usr/local/ispconfig/interface/lib/config.inc.php |
| Nginx User Configs | /data/nginx/user_conf.d/ |
| Docker Compose (SSL) | /root/nginx/compose.yml |
Available ports for connection¶
-
80: HTTP (Redirected or used by Certbot).
-
443: HTTPS (Managed via Nginx Certbot).
-
8080: ISPConfig Web Interface (Internal/Local access).
-
22: SSH.
Starting and Stopping the application¶
The application relies on several system services:
-
Starting ISPConfig Panel: Ensure PHP-FPM and Nginx are running:
-
Stopping ISPConfig Panel:
Proxy Servers (Nginx, SSL, custom domains)¶
The deployment uses a reverse proxy architecture:
-
Certbot/Nginx Container: Handles SSL termination and manages certificates via Let's Encrypt.
-
Host Nginx: Acts as the primary entry point for traffic on ports 80 and 443. It is configured to proxy requests to the ISPConfig backend running on
127.0.0.1:8080.