viernes, 27 de octubre de 2017

VESTACP: VESTA TUTORIAL DE INSTALACIÓN, USO Y PROBLEMAS COMUNES ESPAÑOL





       
       CONSIDERACIONES PREVIAS

Buen día a todos, esta es una guía detallada para aquellos que quieran usar Vestacp el cual es un web panel gratuito, alternativo a Cpanel que es de pago, Vesta nos ofrece funcionalidades de reseller para aquellos que deseen vender hosting, tiene una interfaz simple e intuitiva y aunque no cuenta con algunas funcionalidades gráficas de Cpanel u otros web panel de pago, estas carencias pueden ser resueltas con un comando en el terminal en la mayoría de ocasiones.
Vesta incluye todo para comenzar a trabajar: servidor apache para el funcionamiento de Vesta y servidor nginx para el funcionamiento de nuestras webs, servidor dns, motor de base de datos, firewall, etc.
Para este tutorial suponemos que el usuario tiene alquilado un VPS propio o sea no está usando un servidor compartido, de esta manera podrá tener todo el server a su disposición, en mi caso, estoy usando los servidores de scaleway.com para el alquiler del VPS, Pero cada uno puede adaptar el tutorial para su proveedor de hosting, estoy usando un SO Ubuntu Xenial 16.04, de igual manera cada uno puede adaptar algunos comandos del terminal a su versión de sistema operativo.
Para manejar los DNS estamos usando los servicios gratuitos de Cloudflare.com

CONFIGURACIÓN DEL SERVER

Una vez creado el server que queremos usar, (recomendamos VCS1 con Ubuntu Xenial para comenzar proyectos pequeños/medianos), Para la configuración de SSH para el primer server creado con Scaleway seguimos este manual:
https://www.scaleway.com/docs/configure-new-ssh-key/

Importante: Específicamente en servidores scaleway, cada que ingresemos nuestra clave pública en credenciales, reiniciar el server (Hard reboot y ahi si intentar el ingreso por ssh).


INSTALACIÓN DE VESTA CPANEL

*NOTA: Los comandos ssh indicados en este manual son relativos al SO Ubuntu, específicamente Xenial.

Antes de comenzar la instalación , se recomienda tener listo el FQDN para ingresarlo cuando lo solicite el instalador. El FQDN es el dominio que identificará al servidor para no tener que usar ip, este FQDN lo podemos crear desde clouflare para alguno de nuestros dominios ya añadidos como se explica en la sección "ASIGNAR DOMINIO A VESTA CPANEL Y SSL con Cloudflare", por el momento debemos saber qué FQDN usar aunque no lo tengamos aún en Cloudflare, por ejemplo ejemplo1.tudominio.com

Para instalar Vesta, ya logueados en el servidor mediante ssh, ejecutar:

curl -O http://vestacp.com/pub/vst-install.sh
bash vst-install.sh

Va a preguntar por el FQDN, el cual luego deberemos volver a diligenciar una vez ingresados al panel, por ejemplo puede ser sub.dominio.com.
Al finalizar el instalador genera un usuario: 'admin' y una contraseña y la url de acceso que es 'ip_publica_del_server:8083'


ASIGNAR DOMINIO A VESTA CPANEL Y SSL con Cloudflare


Recomendamos usar Cloudflare para manejar el dns de sus dominios, tendrá la ventaja de no tener que esperar horas para que sus cambios se apliquen sino minutos o segundos.

En primer lugar debemos cambiar el puerto por el cual se ingresa a Vesta Cpanel, se recomienda el 2087 para que se pueda usar el ssl con Cloudflare, para ello, en Vesta vamos al menú Firewall->+Add rule, en 'action'->accept, 'Protocol'->tcp, 'port'-> 2087 o el que deseemos, 'Ip adress'->0.0.0.0/0 y clic en 'Add'.
Luego ingresamos al servidor por ssh y ejecutamos:

sudo vi /usr/local/vesta/nginx/conf/nginx.conf

Para editar este archivo, buscamos donde dice:

# Vhost
    server {
        listen          8083;

pulsamos la tecla "i" para editar y cambiamos el puerto 8083 por el que pusimos anteriormente, guardamos mediante {ESC}:wq{ENTER}.
Ahora creamos un registro A en cloudflare el cual debe ser el mismo FQDN que ingresamos en la instalación pero solo el subdominio, por ejemplo 'sub', en el valor ponemos la ip pública del servidor, dejamos el icono de la nube marcado en color naranja y luego clic en 'add', luego vamos a Vesta -> menú 'SERVER' y en la lista inferior sobre el nombre de nuestro servidor damos a 'Configure' , en el campo hostname escribimos el dominio completo, o sea, sub.dominio.com  y clic en 'save' (Si lo pusimos correctamente en la instalación, aparecerá ya escrito y no tendremos que cambiar nada), ya Vesta tiene sus propias llaves ssl por defecto.

Luego en la terminal reiniciamos Vesta y nginx:

service vesta restart
service nginx restart

Esperamos unos minutos, se puede seguir trabajando normalmente, cerramos sesión y volver a ingresar con el nuevo hostname, lo intentamos con https://sub.dominio.com:puerto , es muy importante no omitir poner el puerto que elegimos, por ejemplo el 2087.



 CONFIGURACIÓN DE CORREO



Antes de comenzar a crear nuestros dominios, es recomendable poner a funcionar el servidor de correos y el ssl para el panel de Vesta, para que, en caso de algún error no perdamos todo el trabajo anterior.
Por defecto Vesta viene configurado para enviar y recibir emails, puede ocurrir que se reciban pero que el proveedor de vps  tenga bloqueada la salida de emails por cuestiones de seguridad relativas a spam (Por ejemplo Scaleway lo hace), así que se debe crear ticket de soporte con ellos para solicitar el desbloqueo del puerto SMTP.
Una vez que se desbloquee el puerto SMTP, debemos configurar la DNS inversa:
1.en scaleway vamos al dashboard de scaleway->servers->nuestro_server->En public ip clic en 'view' ->en 'reverse' clic en 'edit'->ingresamos nuestro FDQN y clic en el chulo verde, debes hacer lo mismo para tu proveedor de VPS adaptando lo anteriormente dicho.
2.Para comprobar que está bien configurada nuestra DNS inversa ejecutamos en cualquier terminal local o ssh:

dig -x ip_publica_del_server

En los resultados buscamos en ANSWER SECTION y luego de PTR debería aparecer nuestro FQDN, si aparece algo diferente deberíamos revisar que todo se haya realizado correctamente.

4. En este momento ya podemos crear una cuenta de email : En primer lugar creamos un dominio como se explica en la sección inferior "AÑADIR DOMINIOS", una vez añadido el dominio, creamos una cuenta de correo para este, en Vesta vamos a MAIL, y sobre el dominio deseado damos clic en "add account", ingresamos el nombre de usuario y si deseamos restringir la cuota de espacio para ese usuario damos a "advanced options".

5.Antes de enviar emails de prueba, debemos configurar los registros SPF, DMARC y DKIM lo que evitará que nuestros correos lleguen como spam.
- Para ello en el panel de Vesta damos clic en la sección 'DNS', en nuestro dominio clic en list N records, N puede ser 10, 12,etc.
- Nos aparece una lista de registros, buscamos el que diga 'mail._domain...' normalmente es el primero, este es el DKIM, clic a 'edit'.
- Debemos crear en Cloudflare un registro TXT con estos datos, o sea lo que está en el campo 'record' y como valor lo que está en el campo
 'IP or Value', muy importante tener en cuenta para este último campo del registro DKIM, que al copiarlo a Clouflare, no debe tener espacios de ningún tipo incluido el que hay entre el ';' y la 'p', ni comillas, asi que se debe copiar aparte y quitar todos estos caracteres y luego si pegarlo en Cloudflare.
- En Vesta nos devolvemos a la lista de registros y ahora repetimos el proceso pero con el registro '_dmarc' y luego con SPF en cual aparece con una sintáxis parecida a esta '  @   TXT " v=spf1 a mx ip4:51.45.79.226 ?all "'.
- Una vez añadido a Clouflare estos registros podemos hacer pruebas con mail-tester.com u otros servicios de verificacion de dkim y spf para verificar la calidad de nuestro servidor de correos.

6. Si necesitamos conectar nuestro gmail con el correo de nuestro server, el smtp es mail.tudominio.com y el user tu cuenta de correo y el puerto el 785 que corresponde a ssl.



AÑADIR DOMINIOS EN VESTA

Ya dentro del Vesta Panel, dar clic en 'domains->icono +', para añadir un nuevo dominio. Se rellenan los campos, ponemos nuestro dominio sin 'www', solo dominio.com por ejemplo, en 'ip' siempre dejar la que está que es la ip pública del server. Se pueden hacer pruebas con el dominio que viene añadido por defecto que tiene por nombre la ip del server, en caso de no tener nombre de dominio o solo querer hacer pruebas.
Una vez añadido el dominio se cargan los archivos de cada dominio mediante ssh.


     ARCHIVOS DE LA WEB

Los archivos de la página deben ir en la ruta '/home/admin/web/(nombre_de_dominio)/public_html/'
Si necesita importar algún backup se debe extraer en la nombrada ruta , 'admin' es el nombre del usuario por defecto.


          BASE DE DATOS



Si necesita crear alguna DB, en Vesta damos a 'DB' y añadimos la DB parecido que con el dominio, estas quedarán con prefijo admin_ o su nombre de usuario.
Si deseamos importar archivos sql en phpyadmin y estos mayores que 2Mb, debemos modificar en php.ini, para saber la ubicación del php.ini, lo ubicamos mediante phpinfo() creando un archivo php con esta función dentro y llamándolo mediante el navegador, una vez accedido a php.ini editamos las variables upload_max_filesize,memory_limit=512M, y post_max_size, según el tamaño de archivo que deseemos. Importante reiniciar apache luego de hacer los cambios mediante:
service apache2 restart


   DOMINIOS CON SSL EN VESTA

Podemos obtener certificados SSL con LetsEncrypt en Vesta fácilmente, para ello en el menú 'WEB' vamos al domino creado y clic en editar, luego marcamos el check 'SSL Support' y luego el check 'Lets Encrypt Support' y clic en 'Save'.
Para redirigir nuestra web de http a https automáticamente, editamos nuestro .htaccess el cual está en la carpeta /public_html de nuestro dominio y añadimos estas líneas al final:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://tudominio.com/$1 [R,L]

Para que aparezca el icono del candado verde en nuestra web debemos asegurarnos que todos los enlaces y recursos de nuestra web comiencen con https, para ver qué debemos corregir, en Chrome presionamos {CRTL}+{MAYUS}+J y vamos a la pestaña 'Security', allí nos dirá si nuestro certificado es válido y si recargamos la página nos mostrará qué debemos corregir para que la página sea completamente segura y nos muestre el ícono de web segura.


     PROBLEMAS COMUNES EN VESTA CP

  1. ::Al entrar a una de las webs, se  muestra otra de las que tenemos en Vesta: Mirar en Vesta si el dominio que presenta el fallo tiene un alias que normalmente es www.dominio.com, si no es esto, revisar .htaccess, wp-config, etc.
  2. ::Wordpress no permite añadir plugins, pide información de conexión ftp para conectarse: Esto sucede porque no se han dado permisos de usuario y grupo a nginx, para ello ejecutamos:
                   chown -R nginx /home/admin/web/tudominio.com/
                   chgrp -R nginx /home/admin/web/tudominio.com/
                   chmod 0755 -R /home/admin/web/tudominio.com/
                 
            Luego abrimos el archivo de configuración de Wordpress:

                   vi /home/admin/web/tudominio.com/public_html/wp-config.php

y añadimos la siguiente línea: define('FS_METHOD','direct'); antes del texto /* That's all, stop editing! Happy blogging. */  y guardamos.

Si aun no funciona, ejecutemos  chmod 0777 -R /home/admin/web/tudominio.com/public_html/wp-content/

3.  :: No puede iniciar sesión en Vesta, al hacer clic en "Log In" solo parpadea pero no muestra error ni algún otro mensaje: Pruebe iniciando sesión en otro navegador, puede ser un problema con la cookies, pruebe entonces borrar las cookies del navegador donde no quiso funcionar Vesta.

4. :: Al intentar ingresar al login de vesta la página está caída: Ingresa por ssh y reinicia el servicio de Vesta mediante el comando:

service vesta restart

5. :: No están llegando los correos a webmail (Roundcube), aunque sí puedo enviarlos: vaya a Vestacp ->MAIL ->editar cuenta problemática y mire si está marcado el check "Do not store forwarded mail" o en español "No almacenar el correo enviado" si es así, desmárquelo e inténtelo de nuevo.

6.  ::Cuando se hace un snapshot en scaleway hay que detener el servidor lo cual produce un cambio de la Ip privada del servidor esto hace que el servidor nginx que es el que usa Vesta CP no pueda iniciar correctamente y deba ser reconfigurado con la nueva ip para que nuestras webs puedan funcionar, para no tener la web caida se recomienda redireccionarla a otro servidor, si lo tenemos, mientras se hace la reconfiguración.
Para ver la nueva ip privada, estando en ssh ejecutamos el comando:  ifconfig y en la segunda linea de la salida donde dice 'inet addr:' esa nuestra ip privada.

Entonces para reconfigurar nginx seguimos los siguientes 7 pasos:

1.Ejecutar estos comandos en ssh, esto es para crear un script en el directorio de comandos de Vesta:

touch /usr/local/vesta/bin/v-change-server-ip
chmod 0755 /usr/local/vesta/bin/v-change-server-ip
vi /usr/local/vesta/bin/v-change-server-ip

2. Aqui hemos creado el archivo v-change-server-ip y lo hemos abierto, presionamos la tecla "i" para editar, ahora pegamos el texto del archivo adjunto en esta carpeta: script.txt (Aún no lo he subido, pero si alguien lo necesita puede solicitarlo en los comentarios )  y guardamos mediante {ESC}:wq {Enter}

3. Ahora ejecutamos el comando:

v-change-server-ip AntiguaIp NuevaIp

4. Buscamos en el servidor archivos donde esté guardada aún la antigua Ip mediante estos comandos (Normalmente solo unos 3 ), incluir las comillas:

grep -r "AntiguaIp" /etc/
grep -r "AntiguaIp" /home/

En cada archivo que contenga esta ip, abrirlo y reemplazarla por la nueva Ip.

5. Cambiamos el nombre de estos archivos por el de la nueva ip:

/etc/apache2/conf.d/AntiguaIp.conf  a NuevaIp.conf
/etc/nginx/conf.d/AntiguaIp.conf  a NuevaIp.conf

6. Reiniciamos nginx mediante el comando: service gninx restart
7. Probamos si ya funciona correctamente nuestra web, en caso de no ser así, reiniciar el servidor y probar nuevamente.

5 :: Al intentar hacer login, no permite ingresar y muestra el mensaje "NO LANGUAGE DEFINED". Esto ocurre porque el disco está lleno o casi lleno, muchas veces la causa de este llenado son los backups automáticos de Vesta, entonces por terminal vamos a /backup vamos a ver 3 archivos,  eliminamos los backups necesarios para liberar espacio hasta que nos deje ingresar al panel de Vesta, una vez en el panel podemos configurar Vesta para que solo haga backup de por ejemplo la db, esto se hace yendo al menú superior BACKUP ->backup exclusions.

Espero les haya servido esta guía, si te ha sido de utilidad o te ha ayudado a resolver alguna dificultad, escríbelo en los comentarios, así otros podrán acceder a este turorial, que tengas un bonito día.