Siempre que he intentado usar Screaming Frog para rastrear grandes sites me encuentro con los mismos inconvenientes:

  1. Ordenador prácticamente KO el tiempo que está corriendo Screaming Frog.
  2. El temido “you are running out of memory for this crawl“.
  3. Ese momento en que Screaming Frog se queda muerto y no permite ni exportar lo que ya tenías rastreado.

Intentando minimizar todos estos inconvenientes, me encontré con un interesante artículo sobre cómo ejecutar Screaming Frog en Google Cloud Servers y que ha resultado ser un EPIC WIN. Aunque, al ser un artículo de un año de antigüedad, utiliza algún comando de Google Cloud deprecated y versiones de software desactualizadas. Así que, actualizando el proceso de creación y configuración que cuenta el amigo Fili en su blog, te cuento cómo hacerlo hoy en día y así pruebas la free trial de 300$ que ofrecen :)

Bienvenido al maravilloso mundo de Google Cloud

Primero de todo, deberás configurar la cuenta de facturación para poder activar la free trial. Pese a pedir datos de tarjeta de crédito, no se empezaría a facturar ningún importe hasta finalizar el período de prueba y, muy importante,  tener tu consentimiento para seguir utilizando la plataforma.

google-cloud-billing

Con la cuenta ya activada, podrás acceder al servicio de Google Compute Engine y crear tu primer proyecto. Google Cloud - Create Project Google Cloud - New Project   Accede a la parte de APIs & auth del proyecto y activa las APIs para utilizar los servicios de Google Cloud:

  • Google Compute Engine
  • Google Cloud Storage
  • Google Cloud Storage JSON API

google-cloud-apis Y ya tienes tu proyecto creado y casi listo para crear una máquina virtual en la que instalar Screaming Frog pero primero…

Google Cloud SDK

Para poder seguir este tutorial, necesitarás descargarte e instalar el Google Cloud SDK. Para instalarlo:

  • Desde Windows
    • Descárgate el GoogleCloudSDKInstaller.exe y sigue los pasos de instalación
    • Al finalizar la instalación, abre Google Cloud SDK Shell
  • Desde Linux o Mac
    • En una consola:
    • curl https://sdk.cloud.google.com
    • Tras la instalación de paquetes y librerías, cierra y abre un nuevo terminal

Con Google Cloud SDK instalado, toca autenticarse en los servicios de Google Cloud:

gcloud auth login

Se abrirá una ventana del navegador para autorizar con una cuenta de Google. Acepta la autorización y vuelve a la consola. En caso de que no se abra la ventana, copia la URL que mostrará por consola, la abres en el navegador, acepta la autorización y copia el código que devuelve Google para pegarlo en la consola. Google Cloud SDK Auth Login

Crear y configurar una máquina virtual

Entre las opciones que ofrece la versión trial de Google Cloud, vamos a crear una máquina que llamaremos “screaming-frog-vm” con 2 vCPU y 13GB de memoria y con SO Debian 7:

gcloud compute instances create screaming-frog-vm --zone us-central1-a --image debian-7 --machine-type n1-highmem-2 --scopes storage-rw

Para conectarnos a la máquina virtual screaming-frog-vm:

gcloud compute ssh screaming-frog-vm --zone us-central1-a

Y vamos a hacerle una puesta a punto:

sudo -s
apt-get update
apt-get install tightvncserver xfce4 xfce4-goodies xdg-utils openjdk-7-jre

Durante esta instalación, te pedirá configurar el idioma de teclado. Para escoger el español, deberás entrar en Other.

google-cloud-configuring-keyboard

Las imágenes oficiales de Debian para Cloud Computing están configuradas en en_US.UTF-8 por lo que, para evitar errores al conectarnos por ssh desde una máquina remota configurada en español, vamos a cambiar el idioma por defecto de Debian:

vi /etc/environment

Si no has usado nunca vi como editor de texto, una pequeña chuleta:

  • i ⇒ para insertar texto antes del cursor
  • a ⇒ para insertar texto después del cursor
  • Esc ⇒ para dejar de editar el texto
  • :q ⇒ para guardar los cambios y salir del editor
  • :wq ⇒ para guardar el archivo y salir del editor

Sabiendo esto, ahora toca incluir lo siguiente en el archivo environment que estamos editando:

LANG="es_ES.UTF-8"
LC_ALL="es_ES.UTF-8"
LANGUAGE="es_ES"

Guardamos y salimos del editor con :q. Si tu máquina local desde la que te conectas por ssh está configurada en inglés (US), en vez de es_ES, usa en_US.

El siguiente archivo a editar es:

vi /etc/default/locale

Y repetimos la operación, añadimos:

LANG="es_ES.UTF-8"
LC_ALL="es_ES.UTF-8"
LANGUAGE="es_ES"

Guardamos y salimos del editor con :q y ya está todo preparado para seguir.

Vamos a crear un usuario vnc:

adduser vnc

Nos pedirá crear una contraseña de 8 caracteres y los datos de usuario (presiona enter para aceptar los datos de usuario por defecto). Nos conectamos como el usuario vnc:

su vnc

Y creamos una contraseña para el usuario vnc:

vncpasswd

Una vez creada la contraseña, salimos del usuario vnc:

exit

Genial, ya casi te puedes conectar por VNC a tu nueva máquina virtual, pero antes…

Agregar regla de firewall

Volvemos a la Google Developers Console en el navegador. Entra en tu proyecto y, dentro del apartado de Networks (en el sidebar), selecciona la red default: google-cloud-network   Vamos a crear una nueva regla en el firewall para abrir el puerto 5901 para poder conectarnos por vnc: google-cloud-new-firewall-rule   La regla a crear tendrá la siguiente configuración: google-cloud-firewall-rule-vnc

 Scripts para arrancar el VNC server

Para evitarnos la molestia de tener que iniciar el servicio VNC server cada vez que iniciemos la máquina virtual, instalaremos dos scripts de Fili Wiese para que arranque cada vez que iniciemos la instancia. Volvemos a la consola y:

wget http://filiwiese.com/files/vncserver -O /etc/init.d/vncserver
wget http://filiwiese.com/files/xstartup -O /home/vnc/.vnc/xstartup
chown -R vnc. /home/vnc/.vnc && chmod +x /home/vnc/.vnc/xstartup 
sed -i 's/allowed_users.*/allowed_users=anybody/g' /etc/X11/Xwrapper.config 
chmod +x /etc/init.d/vncserver

Reinicia la instancia para que los cambios tengan efecto:

reboot

Esto finalizará la conexión ssh, por lo que, una vez reiniciada la instancia, deberás volver a conectarte con:

gcloud compute ssh screaming-frog-vm --zone us-central1-a

Te conectas como root:

sudo -s

E inicias el servicio VNC con los siguientes comandos:

update-rc.d vncserver defaults 
service vncserver start

Instalación de Screaming Frog

¡Llegamos a la recta final de este tutorial! Ahora, instala Java con lo siguientes comandos :

echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu trusty main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
apt-get install oracle-java8-installer

Y establece Oracle Java como la librería Java por defecto:

apt-get install oracle-java8-set-default

Ya sólo nos hará falta instalar la librería ttf-mscorefonts-installer antes de poder instalar Screaming Frog pero (oh wait!) en Debian no tenemos la función add-apt-repository como en Ubuntu para añadir el repo que tiene la librería. No problem, vamos a habilitarlo con un script:

cd /usr/bin
vi add-apt-repository

Y dentro del editor de texto, pega lo siguiente:

#!/bin/bash 
if [ $# -eq 1 ] 
then 
ppa_name=`echo "$1" | cut -d":" -f2 -s` 
if [ -z "$ppa_name" ] 
then 
echo "PPA name not found" 
echo "Utility to add PPA repositories in your debian machine" 
echo "$0 ppa:user/ppa-name" 
else 
echo "$ppa_name" 
echo "deb http://ppa.launchpad.net/$ppa_name/ubuntu maverick main" >> /etc/apt/sources.list 
apt-get update >> /dev/null 2> /tmp/apt_add_key.txt 
key=`cat /tmp/apt_add_key.txt | cut -d":" -f6 | cut -d" " -f3` 
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $key 
rm -rf /tmp/apt_add_key.txt 
fi 
else 
echo "Utility to add PPA repositories in your debian machine" 
echo "$0 ppa:user/ppa-name" 
fi

Guardamos y salimos con :wq y le damos permisos de ejecución para el usuario root:

chmod o+x add-apt-repository
chown root:root add-apt-repository

Ahora ya puedes añadir el repositorio y la librería que nos falta:

add-apt-repository "deb http://http.debian.net/debian wheezy main contrib non-free" && apt-get update && apt-get install ttf-mscorefonts-installer

Descargamos e instalamos Screaming Frog 3.2:

wget http://www.screamingfrog.co.uk/products/seo-spider/screamingfrogseospider_3.2_all.deb
dpkg -i screamingfrogseospider_3.2_all.deb

Esto devolverá un error que solventamos con el siguiente comando:

apt-get -f install

¡Screaming Frog ya está instalado! Vamos a aumentar la memoria para evitar al máximo el famoso “you are running out of memory for this crawl”:

su vnc
vi /home/vnc/.screamingfrogseospider

Y vamos a escribir lo siguiente en el archivo:

-Xmx10g

Guardamos y salimos del editor con :wq y salimos del usuario vnc:

exit

Por último, vamos a instalar un navegador web, como por ejemplo Iceweasel, para poder enviar por mail o subir a Google Drive o Dropbox o Box los archivos que exportemos de Screaming Frog:

apt-get install iceweasel

Acceso a la máquina virtual via VNC

Ya podemos acceder a la máquina virtual que hemos creado. Para ello, necesitarás un visor VNC, como por ejemplo RealVNC. Para acceder a la máquina, deberemos conectarnos con la IP externa (la puedes ver en el panel de VM Instances de Google Cloud) seguido de dos puntos y el puerto vnc que abrimos en la regla del firewall: VNC Viewer Al conectar, te pedirá la contraseña que previamente creaste para el usuario vnc: VNC password Google Cloud

Configurando el escritorio de Debian

Y ya estás en el escritorio de tu nueva y flamante máquina virtual con Debian :) google-cloud-escritorio-debian Vamos a añadir un acceso directo a Screaming Frog en el escritorio. Con botón derecho, seleccionamos “Crear lanzador”: debian-create-launcher En Nombre, empieza a escribir Screaming Frog y te aparecerá el programa: gebian-launcher-screaming-frog Repetimos la operación con el navegador Iceweasel: debian-iceweaselY, ahora sí, ya puedes empezar a utilizar Screaming Frog 😉

google-cloud-debian-escritorio Apagar y encender la máquina virtual en Google Cloud

Recuerda que el consumo de la máquina virtual es por el tiempo que esté encendida, la utilices o no. Para evitar el consumo durante las horas que no la estés utilizando, debes apagar la máquina virtual desde el panel de instancias de Google Cloud. Dentro del proyecto, en Compute > Compute Engine > VM instances encontrarás la gráfica de consumo de CPU y el listado de máquinas virtuales creadas en el proyecto. Con los botones “Stop” y “Start” podrás parar o encender la máquina virtual seleccionada. Google Developers Console instances ¡A disfrutarlo! Y no olvides compartir tu experiencia, dudas y sugerencias sobre el uso de Screaming Frog en Google Cloud Engine en los comentarios 😉