HestiaCP es un panel para gestionar el servidor de código abierto, que permite configurar diferentes aplicaciones en él. Cuando se añade una web nueva en HestiaCP, ésta se debe de configurar una una plantilla para Nginx y otra para Apache. Estas plantillas son la configuración que se cargará para la web y tenemos diferentes plantillas para cada servicio.
Por ejemplo, para Nginx, tenemos disponibles las siguientes plantillas:
- caching: Plantilla de Nginx con la cache configurada.
- default: Plantilla por defecto para Nginx.
- hosting: Plantilla similar a caching pero con los enlaces simbólicos desactivados.
En ocasiones nos encontraremos que necesitamos una configuración diferente a la que hay por defecto. Por ejemplo para configurar un plugin de algún CMS o bien para configurar alguna tecnologia como Laravel, Symfony o NodeJS.
IMPORTANTE
¿No podemos modificar directamente la configuración de Nginx/Apache?
No debido a que HestiaCP tiene tareas internas que se ejecutan cada cierto tiempo y que además actualiza la configuración de Nginx/Apache -y otros servicios- de nuestras webs aplicando las plantillas configuradas y si hacemos algún cambio se perderán.
Para que nuestra web funcione correctamente en HestiaCP, tendremos que crear una plantilla nueva y añadir las modificaciones para que funcionen correctamente.
A continuación os explicamos como crear las plantillas nuevas, como configurarlas y como aplicarlas en vuestra web.
Crear nueva plantilla
Para poder crear una plantilla nueva, es necesario que nos conectemos por SSH al servidor ya que desde la interfaz de HestiaCP no es posible realizarlo. Una vez accedamos a nuestro servidor, debemos de ir a la siguiente ruta donde se encuentran todas las plantillas:
cd /usr/local/hestia/data/templates/web
Aquí encontraremos las siguientes plantillas:
- Apache2: Todas las plantillas para el servidor web.
- Nginx: Todas las plantillas para el Proxy Web.
- Awstats: Plantillas para las estadísticas web.
- PHP-FPM: Plantillas para seleccionar la versión de PHP.
- suspend: Plantilla para cuando suspendes un dominio.
- skel: Documentos para public_html y errores HTTP.
Si necesitamos crear una plantilla nueva para Nginx, lo recomendable es realizar una copia de la plantilla default.tpl y default.stpl. La plantilla .tpl es la plantilla que se usará para HTTP y la .stpl para HTTPS.
Por ejemplo, si queremos hacer una plantilla para Nginx para una web con NodeJS, podemos crear las siguientes plantillas:
cp /usr/local/hestia/data/templates/web/nginx/default.tpl /usr/local/hestia/data/templates/web/nginx/nodejs.tpl
cp /usr/local/hestia/data/templates/web/nginx/default.stpl /usr/local/hestia/data/templates/web/nginx/nodejs.stpl
Al final, tendremos este resultado:
root@hestiacp:/usr/local/hestia/data/templates/web/nginx# ls -lat
total 56
drwxr-xr-x 3 root root 4096 Sep 16 10:15 .
-rw-r--r-- 1 root root 1505 Sep 16 10:15 nodejs.stpl
-rw-r--r-- 1 root root 1264 Sep 16 10:15 nodejs.tpl
Si necesitas crear otra plantilla distinta, crea la plantilla con el nombre que quieras:
cp /usr/local/hestia/data/templates/web/nginx/default.tpl /usr/local/hestia/data/templates/web/nginx/[NOMBRE_PLANTILLA].tpl
cp /usr/local/hestia/data/templates/web/nginx/default.stpl /usr/local/hestia/data/templates/web/nginx/[NOMBRE_PLANTILLA].stpl
Ahora si vamos a nuestro HestiaCP, podremos observar que ya aparece en el listado:
Si por ejemplo, necesitamos hacer una plantilla para Apache, el proceso sería lo mismo:
cp /usr/local/hestia/data/templates/web/apache2/default.tpl /usr/local/hestia/data/templates/web/apache2/[NOMBRE_PLANTILLA].tpl
cp /usr/local/hestia/data/templates/web/apache2/default.stpl /usr/local/hestia/data/templates/web/apache2/[NOMBRE_PLANTILLA].stpl
Configurar nuestra plantilla
Lo siguiente será adaptar la configuración de Nginx/Apache para nuestra plantilla, pero antes debemos de tener en cuenta que en estas plantillas se utilizan variables que deberéis de conocer y tener en cuenta para aplicar en vuestra configuración.
Por ejemplo, para indicar el directorio donde se encuentra una web en Nginx, debéis de hacerlo con el parámetro root y de la siguiente forma:
root %home%/%user%/web/%domain%/public_html;
Donde %home% equivale a /home, %user% equivale al usuario que pertenece la web, %domain% el dominio. Esto, en la configuración que encontrarás en /home/zagur/conf/web/miweb.com/nginx.conf lo verás de la siguiente forma si el usuario es admin y el dominio es dominio.com:
root /home/admin/web/dominio.com/public_html;
Por lo que la plantilla que vayas a crear, debe de contener este tipo de variables para que se puedan utilizar en otras webs independientemente del dominio o usuario que la configure. Tienes más información de todas las variables disponibles en la documentación Oficial de HestiaCP.
NodeJS
Si necesitas configurar una aplicación con NodeJS, te recomendamos seguir las instrucciones de este tutorial específico: Cómo usar NodeJS en HestiaCP.
Laravel
Si necesitas configurar una aplicación con Laravel, te recomendamos seguir las instrucciones de este tutorial específico: Cómo usar Laravel en HestiaCP.
Si por lo contrario algún CMS te pide añadir alguna configuración extra en Nginx/Apache deberás de adaptar el código que te dan para que funcione en HestiaCP, por ejemplo, el Plugin Smush para configurar imagenes tipo webp te pide que añadas el siguiente trozo de configuración:
location ~* "wp-content\/(uploads\/)(.*.(?:png|jpe?g))" { add_header Vary Accept; set $image_path $2; if (-f "/home/admin/web/dominio.com/public_html/wp-content/smush-webp/disable_smush_webp") { break; } if ($http_accept !~* "webp") { break; } try_files /wp-content/smush-webp/$image_path.webp $uri =404; }
Si observas, verás que hay una ruta absoluta para el plugin, para que esta ruta funcione en todos los dominios deberás de configurarlo de la siguiente forma:
location ~* "wp-content\/(uploads\/)(.*.(?:png|jpe?g))" { add_header Vary Accept; set $image_path $2; if (-f "%home%/%user%/web/%domain%/public_html/wp-content/smush-webp/disable_smush_webp") { break; } if ($http_accept !~* "webp") { break; } try_files /wp-content/smush-webp/$image_path.webp $uri =404; }
Esto deberemos de añadirlo dentro de la plantilla que hemos creado anteriormente, siendo este el resultado final:
#=========================================================================#
# Default Web Domain Template #
# DO NOT MODIFY THIS FILE! CHANGES WILL BE LOST WHEN REBUILDING DOMAINS #
# https://docs.hestiacp.com/admin_docs/web.html#how-do-web-templates-work #
#=========================================================================#
server {
listen %ip%:%proxy_port%;
server_name %domain_idn% %alias_idn%;
include %home%/%user%/conf/web/%domain%/nginx.forcessl.conf*;
location / {
proxy_pass http://%ip%:%web_port%;
location ~* ^.+\.(%proxy_extensions%)$ {
root %docroot%;
access_log /var/log/%web_system%/domains/%domain%.log combined;
access_log /var/log/%web_system%/domains/%domain%.bytes bytes;
expires max;
try_files $uri @fallback;
}
}
location /error/ {
alias %home%/%user%/web/%domain%/document_errors/;
}
location @fallback {
proxy_pass http://%ip%:%web_port%;
}
location ~ /\.(?!well-known\/|file) {
deny all;
return 404;
}
location ~* "wp-content\/(uploads\/)(.*.(?:png|jpe?g))" {
add_header Vary Accept;
set $image_path $2;
if (-f "%home%/%user%/web/%domain%/public_html/wp-content/smush-webp/disable_smush_webp") {
break;
}
if ($http_accept !~* "webp") {
break;
}
try_files /wp-content/smush-webp/$image_path.webp $uri =404;
}
include %home%/%user%/conf/web/%domain%/nginx.conf_*;
}
Recuerda que deberás de configurar también el fichero .stpl para HTTPS, que deberá de ser similar pero teniendo en cuenta las variables para SSL, tienes mucha más información al respecto en la documentación Oficial de HestiaCP.