Skip to content

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:

  1. System Cleanup:

  2. The installer stops any existing nginx or apache2 services to prevent port conflicts on ports 80 and 443.

  3. Any Docker containers currently publishing to ports 80 or 443 are identified and stopped.

  4. If a Docker Swarm is active, the node leaves the swarm to ensure a clean environment.

  5. Core Installation:

  6. The application is installed via the official shell script using the following command:

    curl -sSL https://get.easypanel.io | sh
    

  7. Proxy Configuration:

  8. 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 80 and 443 are 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 host network 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 a proxy_pass directive pointing to http://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:

curl -sSL https://get.easypanel.io | sh

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 the nginx_secrets volume.

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)

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×