Cómo tener tu propio hosting usando Vesta CP



Desde hace un tiempo que tengo que lidiar con dos opciones posibles, o un servidor compartido, típica opción de los hostings, o un VPS donde tengo que arremangarme y ponerme a configurar todo de cero. Pero hay una tercera opción que es la de utilizar un paquete que prepare tu VPS como un hosting completo.

Esto no reemplaza, para nada, los buenos servicios de hosting que hay ya que éstos te ofrecen backup y soporte técnico, así que para casos críticos donde uno instala el sitio de un cliente importante sigo recomendando una infraestructura mayor. Ahora bien, para todo lo demás, eso que uno puede manejar por cuenta propia (ej: sitios propios, experimentos, trabajos, etc.) esta es una excelente opción: volverte tu propio hosting.

En resumen aquí les voy a explicar cómo instalar Vesta CP que es una de las tantas opciones para armar tu propio servidor. Hay más variadas, más completas y más complejas también, pero esta es libre, gratuita y, por suerte, funciona a la perfección.



Para estas cosas estoy utilizando Digital Ocean, así que acá les dejo mi referral link por si les interesa aportarme con algo :D igual no hace falta, esto debería funcionar en cualquier otro VPS.

Suelo utilizar Ubuntu Server para este tipo de instalaciones, el último fue en el 16.04 pero es aplicable a 14.04 o cualquier otro, seguramente mejorará el soporte para futuros ubuntus, pero con estos se tiene una plataforma actualizada y estable (son versiones LTS de soporte largo).

Requisitos previos



Los requisitos básicos son un VPS con capacidades mínimas, podemos comenzar en 512MB de RAM y 10GB de disco que sobrará para un mini-hosting, el sistema operativo no ocupará más de 1GB. Recomendado 1GB de RAM y 30GB de disco si vamos a tener varios sitios porque entre espacio para cada uno, backup y margen extra es ideal que sobre y no que falte.

  • Ubuntu 16.04
  • Un dominio base para empezar (ej: ejemplo.com)
  • Configurar los DNS
  • Un registro A apuntando a ejemplo.com en el IP del servidor
  • Un registro A apuntando a ns1.ejemplo.com
  • Un registro A apuntando a ns2.ejemplo.com
  • Un registro A apuntando a panel.ejemplo.com
  • Un registro CNAME apuntando de wwww.ejemplo.com a ejemplo.com
  • Un terminal SSH (Putty.exe si estan en Windows, la consola si estan en Linux o MacOS)
  • Un cliente de FTP como Filezilla
  • Un usuario en el servidor que no sea root pero con permisos de sudo


Si no podés cumplir con estos requerimientos básicos es que este tutorial está por encima de tus posibilidades, podés seguir adelante pero mi consejo es que no comprometas ningún trabajo o cliente a nada que no sepas exactamente cómo solucionar, hacelo, en cambio, para experimentar y aprender.

Instalar Vesta CP



Vesta CP es un control panel que se encargará de administrar todo como los paneles que vemos en cualquier hosting. Lo interesante de este paquete es que se encarga de instalar todo, Apachem NGINX, MySQL, PHP, Dovecot, y todo lo que hace falta para un hosting completo. No es tan Pro como Cpanel y WHM pero esos son pagos, este es completamente libre.

Primero, desde terminal, lo descargamos:

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


Luego pasamos a root con sudo su y ejecutamos:

bash vst-install.sh


Obviamente te irá preguntando cosas, la primera si lo instala, le darás "Y" y seguirás. En un punto te va a pedir el dominio y aquí vamos a usar el que preparamos para el panel (el registro A) con panel.ejemplo.com.

Esto nos permitirá tener el dominio ejemplo.com disponible para un sitio y el subdominio panel para entrar al Vesta, la URL final quedará como https://panel.ejemplo.com:8083

Luego empieza la descarga e instalación de paquetes que, dependiendo del VPS, tarda entre 5 y 15 minutos. Si, es bien rapidito e instala lo siguiente:

  • Nginx Web Server
  • Apache Web Server (as backend)
  • Bind DNS Server
  • Exim mail server
  • Dovecot POP3/IMAP Server
  • MySQL Database Server
  • Vsftpd FTP Server
  • Iptables Firewall + Fail2Ban
  • Roundcube mail client


Y lo mejor de la última versión, soporte para SSL provisto por Let's Encrypt que te da certificados SSL completamente gratuitos, duran tres meses pero se renuevan constantemente y de forma automática. Con esto todos tus sitios estarán funcionando seguros.

Una vez terminado mostrará una pantalla como la siguiente:

=======================================================

 _|      _|  _|_|_|_|    _|_|_|  _|_|_|_|_|    _|_|   
 _|      _|  _|        _|            _|      _|    _| 
 _|      _|  _|_|_|      _|_|        _|      _|_|_|_| 
   _|  _|    _|              _|      _|      _|    _| 
     _|      _|_|_|_|  _|_|_|        _|      _|    _| 


Congratulations, you have just successfully installed Vesta Control Panel

    https://panel.ejemplo.com:8083
    username: admin
    password: blablabla


Desde ya que deben guardar ese dato de admin como tesoro :D porque será la entrada al panel de control.

Vesta



Una vez instalado ya pueden entrar desde el panel https://panel.ejemplo.com:8083 en donde notarán que el browser les dirá que el certificado es inseguro y que no es un sitio seguro. Esto sucede porque la firma digital utilizada es local, no es un certificado validado por nadie.

Esto es completamente normal porque, efectivamente, es un certificado creado por cuenta propia, le pueden indicar al browser que quieren seguir adelante, es completamente seguro.

En el panel que verán primero se encuentra el usuario (se pueden crear más usuarios si queremos "revender") y desde aquí podemos controlar todos los servidores.



Tengan en cuenta que en muchos VPS los dominios hay que configurarlos primero en el servidor de DNS del hosting antes que aquí, por ejemplo en Digital Ocean, lo que no es un problema pero hay que acordarse o no siempre funcionará. También se pueden configurar los DNS que ya definimos antes y que se encargue nuestro servidor de todo. Prefiero configurarlos en Digital Ocean y, si tengo que mover de droplet en droplet, es instantáneo.

Podemos crear fácilmente una cuenta web, asignarle el espacio, sistemas de estadísticas, certificados seguros de Lets Encrypt, proxys, lo que sea.



Una genialidad es que ya viene preconfigurado el sistema de correo electrónico y hasta un webmail (Roundcube) por lo que tenemos resuelto algo que usualmente configurar a mano es un quilombo. En este sentido es muy sencillo.

También tenemos phpmyadmin y podemos controlar fácilmente las bases de datos.

Tengan en cuenta que el sistema de backup te va dejando archivos en el mismo servidor, para que tenga sentido deberíamos tener un segundo VPS sólo para almacenar archivos de backup y no perder todo en caso de catástrofe, si lo dejamos en el mismo VPS hasta podemos quedarnos sin espacio rápidamente (3 backups por semana implica 3 veces el espacio que ocupan tus sitios web disponible como libre).



Podemos configurar el Firewall, el cron, la lista de Fail2Ban, actualizar el servidor, hasta ver qué procesos hay en ejecución, espacio en disco, uso de red, etc.

También provee de gráficos para ver cómo está funcionando en cada momento.

Conclusión



La velocidad de un servidor armado así es MUY superior a cualquier hosting, nunca fallará un Wordpress o algo semejante, tira y tira y no afloja, es maravilloso para un sitio productivo, si esto se combina con varias instancias más, una de backup, otra de un vagrant, percona, master-slave, o algo así, siempre se puede mejorar y todo por un costo que no llega ni a 10 USD por mes por instancia (droplets en Digital Ocean).

Pero al mismo tiempo suma una obligación más, la de darse mantenimiento uno mismo a un nivel que no es sencillo para todos. Una cosa es darse maña y otra rescatar un servidor uno mismo, por eso, como decía al principio, que todo esto lo haga una empresa dedicada al hosting tiene todo el sentido del mundo, ese extra que pagás es el soporte y el backup que así solo no tendrías.

No es un sistema perfecto, a veces falla, por ejemplo si uno usa la config default de Ubuntu Server puede encontrarse con el disco lleno ya que el ciclo de compresión de los archivos de Log lo hace cuando se le canta, tuve que tocar eso en la config (ni me acuerdo dónde) para que fuese más seguido y no masacrarme el espacio con absurdos logs de un mes atrás en un servidor de tamaño limitado (si sobra almacenamiento no sería un problema).

Pero las ventajas para aquellos que tenemos proyectos independientes y necesitamos alta disponiblidad a un bajo coste son geniales, te obliga a aprender, no serás un sysadmin pero al menos vas a poder entenderlos a ellos cuando te digan que lo que estás pidiendo es una pelotudez :D y no los vas a volver tan locos con pedidos ridículos, al mismo tiempo te das cuenta que la mayoría de los servicios de hosting que te venden son una porquería que sólo quieren servir páginas que nadie va a ver.

Si tenés un sitio con un buen tráfico pero todavía lo querés manejar todo, esta es una excelente opción.

Sitio oficial del paquete: VestaCP.com, ellos te venden el soporte, me parece un poco caro a USD 60 la hora para nuestros presupuestos sudacas :D además tienen varios plugins comerciales para un File Manager y uno de SFTP limitado. También se puede instalar con otros soportes como PostreSQL, phpfpm, sobre RedHat o Debian, etc.

Si te gustó esta nota podés...
Invitame un café en cafecito.app


Otros posts que podrían llegar a gustarte...

Comentarios

  • Gustavo V     17/04/2017 - 12:19:53

    genial, agendado por si algun dia lo necesito

  • Ezequiel     17/04/2017 - 12:45:47

    Yo lo uso así en varios proyectos y tal cual como dice Fabio, simple, rápido y potente.
    Una masa también lo de lets encrypt que anda bárbaro.

  • Lucas     17/04/2017 - 23:29:16

    Fabio, usas wiroos para Fabio.com.ar???
    Es malísimo ese hosting..

  • Fabio Baccaglioni     18/04/2017 - 00:48:08

    Lucas dijo:

    Fabio, usas wiroos para Fabio.com.ar???
    Es malísimo ese hosting..


    eeeh, no, no es malísmo y el blog lo tengo en uno de sus VPS, por ahí los planes chicos son medio limitados para sitios con uso de base de datos (como en todos los hostings) ahí recomiendo usar VPS o vas a andar jugado siempre si llegás a tener tráfico en serio.


    Ezequiel dijo:
    Yo lo uso así en varios proyectos y tal cual como dice Fabio, simple, rápido y potente.
    Una masa también lo de lets encrypt que anda bárbaro.


    que incluya Lets encrypt soluciona muchas de las necesidades actuales

  • Hernan     18/04/2017 - 01:21:41

    Muy bueno el articulo!
    Yo necesitaba un vps con windows server, no todos tienen y ademas, al menos en Argentina los precios son terribles. Hace poco contrate un VPS con Windows Server 2016 muy bueno en Strato.com y ademas me dieron una licencia para instalar el panel Plesk, les comento por si alguno tiene esa necesidad.

    Saludos

  • McNifico     18/04/2017 - 18:51:06

    El tuto, perfecto! Le voy a dar una probada, sin dudas.

    Lo único que me faltaría, es que me recomiendes algún DNS... o instalarlo pero me parece al pedo.

    Yo tengo un par de VPS, pero nada público, entonces sigo usando IPs.

    Saludos!!

  • Fabio Baccaglioni     18/04/2017 - 21:28:45

    McNifico dijo:

    El tuto, perfecto! Le voy a dar una probada, sin dudas.

    Lo único que me faltaría, es que me recomiendes algún DNS... o instalarlo pero me parece al pedo.

    Yo tengo un par de VPS, pero nada público, entonces sigo usando IPs.

    Saludos!!


    ya tiene servidor de DNS sólo que, por seguridad, prefiero utilizar los de Digital Ocean ya que si llegás a cambiar de Droplet a otro lado tenés que arreglar todos los DNS (si van por IP, claro), pero creo que se puede usar directo el dominio original ya que le configurás los ns1 y ns2 de éste.

  • Adrian     19/04/2017 - 00:05:39

    Interesante el articulo y la alternativa.
    Ahora bien, entiendo que no hace falta el DNS de manera local en el VPS, por que el mismo VPS seguramente ya tiene los DNS del proveedor y hasta se los podrias cambiar por los de google, a manos que haga alguna cosa de menera interna.
    Tampoco hace falta el FTP, ya que existe SSH a menos que revendas y este paquete no tenga para la parte de crear un usuario de shell por dominio.
    Para el tema logs, primero restriccion de tamaños y frecuencias en /etc/logrotate.d y algun ajuste en /etc/logrotate, esa es la configuracion, luego hay que mirar en /etc/cron.d/ o /etc/cron.daily/ o /etc/cron.hourly/, en cuales se corre logrotate, en general es en daily, se lo puede cambiar a .d y ponerlo en un periodo mas corto.
    A menos que se tenga monitoreo, los logs no sirven de mucho, una buena opcion para los logs es http://pimpmylog.com/ para ver los logs sin tener que entrar al shell, facil de ver y grafico.
    Tema BKP, no tiene por que ser un triplicado de espacio, una opcion barata y facil es usar git, ya sea localmetne y uno remoto, git solo va a guardar una primera copia y luego solo los cambios, si lo instalas en el server, con un script bash y un cron se puede dejar automatico
    Alternativa a usar FTP, es usar ansible para hacer los deploys, corre sobre ssh.
    Por cualquier cosa que creas que te podemos hacer perder tiempo, sin ayudarte, aca estamos. Guiño

  • Fabio Baccaglioni     19/04/2017 - 00:40:25

    Adrian dijo:

    Interesante el articulo y la alternativa.
    Ahora bien, entiendo que no hace falta el DNS de manera local en el VPS, por que el mismo VPS seguramente ya tiene los DNS del proveedor y hasta se los podrias cambiar por los de google, a manos que haga alguna cosa de menera interna.
    Tampoco hace falta el FTP, ya que existe SSH a menos que revendas y este paquete no tenga para la parte de crear un usuario de shell por dominio.
    Para el tema logs, primero restriccion de tamaños y frecuencias en /etc/logrotate.d y algun ajuste en /etc/logrotate, esa es la configuracion, luego hay que mirar en /etc/cron.d/ o /etc/cron.daily/ o /etc/cron.hourly/, en cuales se corre logrotate, en general es en daily, se lo puede cambiar a .d y ponerlo en un periodo mas corto.
    A menos que se tenga monitoreo, los logs no sirven de mucho, una buena opcion para los logs es http://pimpmylog.com/ para ver los logs sin tener que entrar al shell, facil de ver y grafico.
    Tema BKP, no tiene por que ser un triplicado de espacio, una opcion barata y facil es usar git, ya sea localmetne y uno remoto, git solo va a guardar una primera copia y luego solo los cambios, si lo instalas en el server, con un script bash y un cron se puede dejar automatico
    Alternativa a usar FTP, es usar ansible para hacer los deploys, corre sobre ssh.
    Por cualquier cosa que creas que te podemos hacer perder tiempo, sin ayudarte, aca estamos. Guiño


    Interesante la del backup por GIT, ya que encima pago la versión premium debería poder hacerlo, tenés algún tuto con eso?

    El DNS prefiero usar el del proveedor, aun así ya te trae el BIND instalado y configurado. Lo mismo para todo lo demás, son opcionales pensando en un hosting pero no es obligatorio, es más , no lo uso para reventa, son todos sitios míos

  • McNifico     19/04/2017 - 12:23:02

    Fabio Baccaglioni dijo:

    McNifico dijo:
    El tuto, perfecto! Le voy a dar una probada, sin dudas.

    Lo único que me faltaría, es que me recomiendes algún DNS... o instalarlo pero me parece al pedo.

    Yo tengo un par de VPS, pero nada público, entonces sigo usando IPs.

    Saludos!!


    ya tiene servidor de DNS sólo que, por seguridad, prefiero utilizar los de Digital Ocean ya que si llegás a cambiar de Droplet a otro lado tenés que arreglar todos los DNS (si van por IP, claro), pero creo que se puede usar directo el dominio original ya que le configurás los ns1 y ns2 de éste.


    Voy a preguntar a soporte entonces, no encontré en ningún lado que se puedan usar los ns del proveedor y configurar entradas al DNS.
    Btw, estoy usando VPS de AlphaRacks, agarré una oferta de un VPS Linux 2vcpu, 1gb ram, 1gb swap, 15gb disco, 1gbps uplink, 4TB bandwitch, por 14dls anuales.

  • Fabio Baccaglioni     19/04/2017 - 14:35:32

    McNifico dijo:

    Fabio Baccaglioni dijo:
    McNifico dijo:
    El tuto, perfecto! Le voy a dar una probada, sin dudas.

    Lo único que me faltaría, es que me recomiendes algún DNS... o instalarlo pero me parece al pedo.

    Yo tengo un par de VPS, pero nada público, entonces sigo usando IPs.

    Saludos!!


    ya tiene servidor de DNS sólo que, por seguridad, prefiero utilizar los de Digital Ocean ya que si llegás a cambiar de Droplet a otro lado tenés que arreglar todos los DNS (si van por IP, claro), pero creo que se puede usar directo el dominio original ya que le configurás los ns1 y ns2 de éste.


    Voy a preguntar a soporte entonces, no encontré en ningún lado que se puedan usar los ns del proveedor y configurar entradas al DNS.
    Btw, estoy usando VPS de AlphaRacks, agarré una oferta de un VPS Linux 2vcpu, 1gb ram, 1gb swap, 15gb disco, 1gbps uplink, 4TB bandwitch, por 14dls anuales.


    igual este ya tiene el BIND DNS configurado, podés usarlo tranquilamente (a tu riesgo, claro :D )

  • Adrian     19/04/2017 - 16:15:29

    Fabio Baccaglioni dijo:

    Adrian dijo:
    Interesante el articulo y la alternativa.
    Ahora bien, entiendo que no hace falta el DNS de manera local en el VPS, por que el mismo VPS seguramente ya tiene los DNS del proveedor y hasta se los podrias cambiar por los de google, a manos que haga alguna cosa de menera interna.
    Tampoco hace falta el FTP, ya que existe SSH a menos que revendas y este paquete no tenga para la parte de crear un usuario de shell por dominio.
    Para el tema logs, primero restriccion de tamaños y frecuencias en /etc/logrotate.d y algun ajuste en /etc/logrotate, esa es la configuracion, luego hay que mirar en /etc/cron.d/ o /etc/cron.daily/ o /etc/cron.hourly/, en cuales se corre logrotate, en general es en daily, se lo puede cambiar a .d y ponerlo en un periodo mas corto.
    A menos que se tenga monitoreo, los logs no sirven de mucho, una buena opcion para los logs es http://pimpmylog.com/ para ver los logs sin tener que entrar al shell, facil de ver y grafico.
    Tema BKP, no tiene por que ser un triplicado de espacio, una opcion barata y facil es usar git, ya sea localmetne y uno remoto, git solo va a guardar una primera copia y luego solo los cambios, si lo instalas en el server, con un script bash y un cron se puede dejar automatico
    Alternativa a usar FTP, es usar ansible para hacer los deploys, corre sobre ssh.
    Por cualquier cosa que creas que te podemos hacer perder tiempo, sin ayudarte, aca estamos. Guiño


    Interesante la del backup por GIT, ya que encima pago la versión premium debería poder hacerlo, tenés algún tuto con eso?

    El DNS prefiero usar el del proveedor, aun así ya te trae el BIND instalado y configurado. Lo mismo para todo lo demás, son opcionales pensando en un hosting pero no es obligatorio, es más , no lo uso para reventa, son todos sitios míos


    No se si usas git, pero aca tenes un ejemplo, en general se debe dejar el bkp fuera del mismo server, pero en este caso como es algo experimental o de test, y para no agregar costos, queda en el mismo lugar.
    En bkp queda dentro del folder .git tal como esta en el tuto, otra posibilidad es configurar un remoto para sacarlo afuera, en esta caso podes usar github o bitbucket.
    https://www.digitalocean.com/community/tutorials/how-to-use-git-to-manage-your-user-configuration-files-on-a-linux-vps
    Para panerlo en un cron, deberias crear un script de shell con los comandos dentro y ponerlo dentro del cron.d, saria algo asi.

    #ir a la folder del sitio
    cd /www/misitio/
    #agregar al repo los archivos modificados y nuevos
    git add -A
    # comitear los archivos
    git commit -m ´Comentario´

    Chequelo, lo escribi a las apuradas, cualquier cosa manda un mail. Guiño

  • Alex     12/06/2018 - 16:01:43

    El servidor de correo también utiliza los Letsencrypt o lo tienes que configurar manualmente?

    Ezequiel dijo:

    Yo lo uso así en varios proyectos y tal cual como dice Fabio, simple, rápido y potente.
    Una masa también lo de lets encrypt que anda bárbaro.



    -----------------------

    Quería saber el tema de los backups, se hacen individuales no? no hay una forma de hacerlos en 1 solo archivo para que los puedas migrar a otro servidor en caso de que falle el principal? ni que se tenga que pagar?
    En el caso de que falle es facil coger los archivos del backup, copiarlos en una nueva maquina y resutaurarlos?

Deje su comentario:

Tranquilo, su email nunca será revelado.
La gente de bien tiene URL, no se olvide del http/https

Negrita Cursiva Imagen Enlace


Comentarios ofensivos o que no hagan al enriquecimiento del post serán borrados/editados por el administrador. Los comentarios son filtrados por ReCaptcha V3.