Cpanel & WHM

Tips sobre problemas comunes

Problemas para acceder a Roundcube - Redirección login

Introducción

Algunas veces RoundCube no permite a los usuarios, incluidos los administradores, el acceso a su webmail.

Síntomas

Muestra los síntomas de inicio de sesión fallidos o una redirección constante a la página de inicio de sesión si accede desde cPanel.

Corrección

Debemos posicionarnos en la carpeta de usuario

cd /home/<user>/etc/dominio

Recuperación de la copia de seguridad

Podemos restaurar a una versión anterior que hayamos obtenido de las copias de seguridad. Esta es la mejor opción ya que de esta forma no perderemos los datos que esa base de datos tuviera.

Restaurar la copia de seguridad de <correo_pop>.rcube.db en cd /home//etc/dominio/<correo_pop>.rcube.db

Reconstrucción del fichero de datos

Enlaces y agradecimientos

Palabras clave

roundcube, webmail, problemas de acceso a roundcube, roundcube redirecciona vuelve al login, no puedo logearme

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.

cPanel - Acceso al terminal (shell) via cPanel de usuario

Introducción

El acceso a SSH es algo necesario o cuando menos, mucho más eficaz para un usuario de hosting, que andar a golpes con el servidor FTP. Cierto es que muchos, por no decir casi todos los proveedores de alojamiento web, no permiten el acceso vía SSH al servidor.

Muchos aducen un problema de seguridad, cuando en realidad los problemas de seguridad son más importante en otras áreas del sistema, mucho más descuidadas que permitir un acceso a la consola shell, la cual puede ser monitorizada y fiscalizada con eficacia, siempre que el administrador de los sistemas de la empresa, esté cualificado para trabajar con sistemas y no con paneles de control solamente

Acceso a terminal (shell) para usuarios de cPanel

Si tu proveedor lo ha activado, desde cPanel puedes acceder al shell de tu cuenta para hacer múltiples operaciones: Visualizar en tiempo real los logs de error Editar ficheros de configuración o ficheros que necesitan cambios Verificar o cambiar permisos de ficheros y directorios Copias de seguridad de ficheros (rsync) o mysql ultra rápidas Creación de snapshots de tu sitio antes de hacer un upgrade

cPanel &gt; Terminal

Por favor, cuando leas en internet que alguien te dice que necesitas permisos 777 ó 666, como norma general cierra la pestaña del navegador y busca ayuda en otro artículo. Suele ser la información de un #copypaster. (copiar y Pegar)

Hosting con acceso a terminal o SSH

Si tu proveedor de hosting no te deja acceder vía SSH o no te da acceso al terminal, planteate un cambio. En castris te ofrecemos ambas posibilidades.

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.

Problemas con el uso de redes mixtas en cPanel

Introducción

Alguna vez por necesidades o por estrategias de red o administración de sistemas, es necesario usar redes mixtas en un mismo servidor.

En mi caso uso dos redes para los VPS de cPanel por estrategia de migración en caliente usando una IP primaria que uso exclusivamente para el host, pero no para las cuentas shared (compartidas) o con ip propia, para las que uso una red diferenciada.

Si estas dos redes tienen una diferente máscara de red, cpanel a veces se hace un lío en su gestión de ips alias, /etc/ips asignando un gateway incorrecto, por lo que la comunicación entre servidores con el mismo concepto de red, es imposible, ya que las rutas no están bien definidas

Este artículo es única y exclusivamente a nivel de operaciones de red, para cPanel que tiene su propio sistema de ip alias, [Add a New IP Address](https://docs.cpanel.net/whm/ip-functions/add-a-new-ip-address/)

Síntomas

Un de ellos es el correo ya que los dominios de ambos servidores, tiene definidos como servidor remoto la IP shared (red B) en lugar de la IP de la interfaz de red primaria (red A)

La red A es una red /26 y la red B es una /27

Comprobamos que la red no tiene acceso aunque si lo tenemos a la interfaz primaria

$ telnet IP.RED.X.B 25
Trying 178.32.236.135...

Visualizamos la ruta o el fichero de ips /etc/ips

IP.RED.X.B:255.255.255.OCTETO:178.32.236.GATEWAY

Si observamos la Ip del gateway es incorrecta, ya que en realidad por lo que sea cpanel ha calculado el gateway para la red de la primaria, por lo que la tabla de rutas que crea el sistema de cpanel al activar (levantar) la red con su servicio ipaliases es incorrecta para la comunicación entre estas IPs.

Solución

Se trata de asignar de forma correcta en el fichero /etc/ips la ip adecuada a nuestra red B y reiniciar la red y el sistema de alias de cPanel

Mi consejo es que estas cosas siempre las hagas en un terminal multiplexado **(screen)**
service network restart && service ipaliases restart

Enlaces

How To Use Linux Screen

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.

all hosts for 'example.es' have been failing for a long time (and retry time not reached)

Introducción

A veces ocurren errores de comunicación muy continuados entre nuestros servidor cpanel y otro servidor, y cuando lo arreglamos, y ya estamos en disposición de enviar correos de nuestro servidor al otro, ocurre que obtenemos ese error

all hosts for 'example.tld' have been failing for a long time (and retry time not reached)
También puede ocurrir que nuestro cliente reclame que el administrador del otro servidor indique que nuestro servidor le rechaza. Y el 99% de los casos en una empresa de hosting, el administrador remoto, insistirá y golpeara el teclado en vez de analizar el problema usando un simple telnet. Recuerdale este tip

Prueba de trabajo

Primero verificaremos que la comunicación con el servidor de correo es correcta

telnet IP.XXX.XXX.XXX 25
Trying IP.XXX.XXX.XXX...
Connected to IP.XXX.XXX.XXX
Escape character is '^]'.
220-serXXXX.YYYYYYY.com ESMTP Exim 4.94.2 #2 Wed, 14 Jul 2021 11:10:24 +0200
220-We do not authorize the use of this system to transport unsolicited,
220 and/or bulk e-mail.

Pero sigue dándonos el error nuestro servidor exim

all hosts for 'example.tld' have been failing for a long time (and retry time not reached)

Solución

Debemos eliminar las entradas de la base de datos de exim para los reenvios, los rechazos y los servidor en espera

# /usr/sbin/exim_tidydb -t 0d /var/spool/exim retry > /dev/null
# /usr/sbin/exim_tidydb -t 0d /var/spool/exim reject > /dev/null
# /usr/sbin/exim_tidydb -t 0d /var/spool/exim wait-remote_smtp > /dev/null
# /scripts/restartsrv_exim

Tras estas acciones el problema debería quedar resuelto.

Enlaces

all hosts for domain.ca have been failing for a long time (and retry time not reached)

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.

Como instalar Snapd en CentOs 7

Introducción

Snapd es un sistema universal de gestión de paquetes creado por Canonical (Ubuntu), que usa un formato de archivo llamado snap que se monta como un sistema de archivos comprimidos basado en el formato squashfs, montado dinámicamente en el sistema operativo host.

Sin embargo su instalación en centos 7 ó 8, no está exenta de problemas que requieren algún tip..

Instalación

La instalación habitual de snap es sencilla, pero en CentOs se requiere la instalación del repositorio EPEL.

Instalar snapd en Centos Install

Si por cualquier casual estás usando un servidor cPanel, instalar el repositorio EPEL, tiene sus peculiaridad en cPanel si no quieres tener problemas posteriores, entre ellas que deberías desactivar por defecto el repositorio epel. Consultar el artículo enlazado. 
[root@centos7 ~]# yum --enablerepo=epel install -y snapd
…
Instalado:
  snapd.x86_64 0:2.51-1.el7

¡Listo!

Una vez instalado, el manejador de servicios systemd necesita activar el sistema de comunicación por sockets.

[root@centos7 ~]# systemctl enable --now snapd.socket
Created symlink from /etc/systemd/system/sockets.target.wants/snapd.socket to /usr/lib/systemd/system/snapd.socket.

Después para activar el soporte del snap clásico, deberemos crear el enlace simbólico entre /var/lib/snapd/snap y /snap

[root@centos7 ~]# ln -s /var/lib/snapd/snap /snap

Otros enlaces

Especificaciones sobre root y sudo

En esta y otras muchas entradas de esta wiki, no se actúa como usuario, sobre todo cuando no se trata de cuestiones como compilar paquetes, programas, ya que mi preferencia es trabajar como root salvo cuando por cuestiones de seguridad como las anteriores descritas si lo aconsejen, por lo que las entradas no tiene el uso de sudo

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.

Instalar redis / phpredis con control de estado en cPanel

Introducción

Redis es para mi una de las mejores soluciones básicas para el caché de aplicaciones y sobre todo para la gestión de colas es Redis. Es perfecto para Wordpress, Prestashop, Laravel, Symfony, e imprescindible para Magento.

En este doc te explico en pocos pasos cómo instalar Redis para tus aplicaciones web en un entorno de cPanel CentOs.

Instalación redis en CentOs (cPanel)

Debemos instalar epel, y al ser un sistema con el intrusivo panel de control cPanel deberemos deshabilitar el repositorio, so pena de tener problemas en el futuro.

Cuando nos pregunte pecl por las opciones es recomendable usar igbinary y la compresión lzf

# yum install epel-release
# grep -q '^enabled' /etc/yum.repos.d/epel.repo && sed -i 's/^enabled.*/enabled=0/' /etc/yum.repos.d/epel.repo || echo 'enable=0' >> /etc/yum.repos.d/epel.repo
# yum install --enablerepo=epel redis
# systemctl enable redis
# systemctl start redis
# /opt/cpanel/ea-php80/root/usr/bin/pecl install igbinary igbinary-devel redis # ea-php80 para php 8.0, Deberás repetir para cada versión php instalada
/opt/cpanel/ea-php80/root/usr/bin/pecl  install igbinary igbinary-devel redis 
Ignoring installed package pecl/igbinary
Ignoring installed package pecl/igbinary
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading redis-5.3.4.tgz ...
Starting to download redis-5.3.4.tgz (268,154 bytes)
........................................................done: 268,154 bytes
29 source files, building
running: phpize
Configuring for:
PHP Api Version:         20200930
Zend Module Api No:      20200930
Zend Extension Api No:   420200930
enable igbinary serializer support? [no] : yes
enable lzf compression support? [no] : yes
enable zstd compression support? [no] : no

Script de control de estado

Como norma general, Redis en un entorno fuerte con memoria abundante y de calidad (ECC) no suele tener ningún problema. En caso de no estar trabajando en un entorno HA (High Availability) mediante un cluster de redis, es más que bueno y necesario tener un monitor que controle la salud de nuestro servicio.

#!/bin/sh

active=$(redis-cli ping)  # redis sin contraseña
# Si usamos protección por contraseña
#  active=$(redis-cli -a +S62tFFXqTXhAQ1Y2X1PxUQNJASHSHSHFu4aS5iBZiCQfCz4wp6hrpCc62vNLlKXE3LPsJxBIgM6 ping)
hostname=$(hostname -f)

if [ "$active" != "PONG" ]; then
        echo "Redis ${hostname} down" | mail -s "Redis ${hostname} down"  monitor@myemail.com
        systemctl restart redis
fi

Damos permisos de ejecucion 700 y añadimos al crontab de root

*/* * * * *  /usr/local/bin/redischeck.sh  > /dev/null 2>&1

Tips sobre la configuración

WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128

Editar el fichero chmod +x /etc/rc.d/rc.local

# Añadir
sysctl -w net.core.somaxconn=65535

Ejecutar

chmod +x /etc/rc.d/rc.local

WARNING overcommit_memory is set to 0!

nano /etc/sysctl.conf
vm.overcommit_memory = 1

WARNING you have Transparent Huge Pages (THP) support enabled in your kernel

echo never > /sys/kernel/mm/transparent_hugepage/enabled

Editar tambien /etc/rc.d/rc.local

echo never > /sys/kernel/mm/transparent_hugepage/enabled

Redis 6.2 con control ACL

yum install systemd-devel
cd /usr/lcoal/src
# https://redis.io/download
wget https://download.redis.io/releases/redis-6.2.6.tar.gz 
tar xvfz redis-6.2.6.tar.gz 
cd redis-6.2.6
make 
make test
make install
groupadd redis
adduser --system -g redis --no-create-home redis
mkdir -p /var/lib/redis
chown redis: /var/lib/redis
chmod 770 /var/lib/redis
mkdir /etc/redis
cp /usr/local/src/redis-6.2/redis.conf /etc/redis/
mkdir /var/run/redis
chown redis: /var/run/redis

Editamos el ficheor de configruacion

supervised systemd 
unixsocket /var/run/redis/redis.sock
unixsocketperm 770
port 0

Creamos el fichero system /etc/systemd/system/redis.service

[Unit]
Description=Redis Data Store
After=network.target
[Service]
User=redis
Group=redis
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
[Install]
WantedBy=multi-user.target

Activamos y arrancamos

systemctl enable redis
systemctl start redis
systemctl status redis

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.

Composer 1 y Composer 2 en la misma máquina cPanel

Introducción

Algunas veces trabajamos con proyectos que no son nuestro y que están muy obsoletos y no nos pagan por actualizarlos y para actualizar los paquetes del proyecto con composer tenemos que usar composer version 1.

La mejor y más rápida solución es tener instalados las dos versiones de composer en nuestra máquina.

Este tip es válido para cPanel aunque con otros ajustes es válido para máquinas sin cPanel

Instalar la versión de composer 1 junto a composer 2

# wget -O /opt/cpanel/composer/bin/composer1  https://getcomposer.org/composer-1.phar
--2021-11-15 11:20:22--  https://getcomposer.org/composer-1.phar
Resolviendo getcomposer.org (getcomposer.org)... 54.36.53.46, 2001:41d0:302:1100::8:104f
Conectando con getcomposer.org (getcomposer.org)[54.36.53.46]:443... conectado.
Petición HTTP enviada, esperando respuesta... 200 OK
Longitud: 1982164 (1,9M) [application/octet-stream]
Grabando a: “/opt/cpanel/composer/bin/composer1”

# chmod a+x /opt/cpanel/composer/bin/composer1

Uso composer1

$ composer1 -v
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 1.10.23 2021-10-05 09:44:27

Usage:
  command [options] [arguments]

Notas de seguridad

No incluye la verificación del hash md5 del archivo descargado, lo cual es a elección del administrador.

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.

Cambiar el public_html del dominio principal en cPanel

Introducción

Aunque todo se puede hacer vía .htaccess, no soy partidario de esto. Estoy más acostumbrado a Nginx, y por otro lado cuanto menos se complique .htaccess mejor será la respuesta FRT (First Time Response) mejor.

Así que prefiero adecuar el sitio a un formato via configuración de Apache. Pero cPanel es un panel altamente intrusivo que te obliga a respetar sus formas, más con Apache.

Modificación de los ficheros userdata del usuario y dominio

/var/cpanel/userdata/usuario/dominio.principal.tld

---
customlog:
 -
   format: combined
   target: /etc/apache2/logs/domlogs/dominio.principal.tld
 -
   format: "\"%{%s}t %I .\\n%{%s}t %O .\""
   target: /etc/apache2/logs/domlogs/dominio.principal.tld-bytes_log
documentroot: /home/usuario/public_html/public
group: usuario
hascgi: 0
homedir: /home/usuario
ip: 87.98.230.68
owner: root
phpopenbasedirprotect: 1
port: 80
scriptalias:
 -
   path: /home/usuario/public_html/public/cgi-bin
   url: /cgi-bin/
serveradmin: webmaster@dominio.principal.tld
serveralias: mail.dominio.principal.tld www.dominio.principal.tld
servername: dominio.principal.tld
usecanonicalname: 'Off'
user: usuario

dominio.principal.tld_SSL


---
documentroot: /home/usuario/public_html
group: usuario
hascgi: 0
homedir: /home/usuario
ip: 87.98.230.68
ipv6: ~
owner: root
phpopenbasedirprotect: ~
port: 443
secruleengineoff: ~
serveradmin: webmaster@dominio.principal.tld
serveralias: mail.dominio.principal.tld www.dominio.principal.tld
servername: dominio.principal.tld
ssl: 1
usecanonicalname: 'Off'
user: usuario
userdirprotect: ''

Eliminar los ficheros de caché

 rm -vf /var/cpanel/userdata/username/*.cache

Actualizar Apache via WHM

# /scripts/updateuserdatacache

# /scripts/rebuildhttpdconf

Aviso

Esta documentación y su contenido, no implica que funcione en tu caso o determinados casos. También implica que tienes conocimientos sobre lo que trata, y que en cualquier caso tienes copias de seguridad. El contenido el contenido se entrega, tal y como está, sin que ello implique ningún obligación ni responsabilidad por parte de Castris

Si necesitas soporte profesional puedes contratar con Castris soporte profesional.