Deployment Overview of Easypanel on Server¶
Prerequisites and Basic Requirements¶
To ensure a successful deployment, the following requirements must be met:
-
Operating System: Ubuntu.
-
Privileges: Root or sudo access is required for installation scripts and service management.
-
Ports:
-
80(HTTP) - Required for Let's Encrypt challenges and redirection. -
443(HTTPS) - Required for secure web traffic. -
3000(Internal) - Used by the Easypanel application internally.
FQDN of the final panel on the hostkey.in domain¶
The access URL for the management panel is generated based on the following template:
| Parameter | Value |
|---|---|
| Prefix | easypanel |
| Domain | hostkey.in |
| Full template | easypanel{Server_ID_from_Invapi}.hostkey.in |
File and Directory Structure¶
The following directories are used for configuration and certificate management:
-
/root/nginx: Contains the Docker Compose file for the Nginx proxy. -
/data/nginx/user_conf.d: Stores Nginx configuration files, including the reverse proxy settings for the application. -
/data/nginx/: Contains environment files for the SSL container. -
/opt/traefik/dynamic: Directory used by Traefik to watch for dynamic configuration changes. -
/opt/traefik/acme.json: Stores Let's Encrypt SSL certificates.
Application installation process¶
The installation of Easypanel is performed using an official automated script and a series of system preparations:
-
System Cleanup:
-
The installer stops any existing
nginxorapache2services to prevent port conflicts on ports 80 and 443. -
Any Docker containers currently publishing to ports 80 or 443 are identified and stopped.
-
If a Docker Swarm is active, the node leaves the swarm to ensure a clean environment.
-
Core Installation:
-
The application is installed via the official shell script using the following command:
-
Proxy Configuration:
-
A dedicated Nginx container is deployed to handle SSL termination and proxying traffic to the application on port
3000.
Access Rights and Security¶
-
Firewall: Ensure that ports
80and443are open in your system firewall. -
Service Isolation: The application runs within a Docker environment, isolating it from the host's primary services.
-
SSL/TLS: All external traffic is secured via Let's Encrypt certificates managed by an Nginx container.
Databases¶
Easypanel manages its own internal data and configurations. No separate database configuration is required for the initial deployment as it is handled within the application environment.
Docker Containers and Their Deployment¶
The following containers are deployed to manage traffic and SSL:
Nginx-Certbot Container¶
-
Image:
jonasal/nginx-certbot:latest -
Ports: Uses
hostnetwork mode (accesses ports 80 and 443 directly on the host). -
Volumes:
-
nginx_secrets:/etc/letsencrypt -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d -
Environment Variables: Configured via
/data/nginx/nginx-certbot.env. -
Restart Policy:
unless-stopped
Custom Scripts and Additional Setup¶
The deployment includes several automated configuration steps:
-
Nginx Proxy Configuration: A script modifies the Nginx configuration files in
/data/nginx/user_conf.d/to include aproxy_passdirective pointing tohttp://127.0.0.1:3000. This ensures that traffic reaching the server via HTTPS is correctly routed to the Easypanel application. -
Dynamic Routing: Traefik configuration files are prepared to handle routing based on the FQDN template defined in the prerequisites.
Application Update Instructions¶
To update the main Easypanel application, you should re-run the official installation script:
Location of configuration files and data¶
-
Application Configuration: Managed internally by Easypanel within its Docker volumes.
-
Nginx Proxy Configs:
/data/nginx/user_conf.d/ -
SSL Certificates:
/opt/traefik/acme.json(managed via Traefik) and thenginx_secretsvolume.
Available ports for connection¶
| Port | Service | Access Type |
|---|---|---|
| 80 | HTTP (Redirect to HTTPS) | External |
| 443 | HTTPS (Easypanel Panel) | External |
| 3000 | Easypanel Internal API/UI | Internal Only |
Starting and Stopping the application¶
The application is managed via Docker. To manage the proxy service, use:
-
Stop Nginx Proxy:
docker compose down(within/root/nginx) -
Start Nginx Proxy:
docker compose up -d(within/root/nginx)