Convertir un Droplet de DigitalOcean a una VM de VMware

SI deseas hacer un respaldo local funcional del Droplet o para migrarlo a otro servidor debes seguir estos pasos.

Requerimientos

  1. Acceso root con contraseña al droplet (si usas claves públicas para acceder al droplet debes crear una contraseña con el comando passwd root)
  2. Acceso al panel de control de la página de DigitalOcean
  3. Servidor accesible remotamente por SSH para guardar la imagen
  4. El mismo servidor anterior debe tener el paquete qemu-utils instalado
  5. VMware instalado, puede ser en el servidor anterior o en otro equipo.
  6. Espacio disponible en disco, se requiere por lo menos el tamaño total del disco del droplet + el espacio utilizado en el mismo.
  7. Archivo ISO de Ubuntu, se usará como live cd.

Este tutorial fue realizado para copiar un droplet con SO Debian 7 x64, con otra distribución pueden variar algunos comandos, como para detener los servicios.

Para hacer el respaldo debes ingresar por consola al droplet, para ello debes entrar por la página de DigitalOcean

image

Hacer clic en el droplet y luego en el botón grande “Console access”

image

Luego debes iniciar sesión como root y tu contraseña. Si sólo usas claves públicas para entrar por SSH debes asignar una contraseña previamente al usuario root.

  • Cambia el nivel de ejecución del sistema al nivel 1, correspondiente al single-user mode . Esto detendrá casi todos los servicios y el sistema entrará en “modo de mantenimiento”, debes ingresar la contraseña de root nuevamente.

image

  • Debes detener otros tres servicios más con los comandos

/etc/init.d/rsyslog stop
/etc/init,d/udev stop
/etc/init,d/dbus stop

  • Para hacer más liviana la imagen se rellenarán con ceros el espacio libre de la partición, para ello se usará el comando dd. Una vez finalizado se eliminará el archivo que genere este comando

dd if=/dev/zero of=zerofile bs=20M
rm zerofile

  • Ahora se generará una imagen del droplet, la que se transferirá comprimida por SSH a otro servidor (requerimiento 3).

dd if=/dev/vda | gzip –1 – | ssh usuario@direccionServidor dd of=/carpeta/imagen.gz

  • Una vez completado el comando anterior la imagen ya ha sido transferida fuera del droplet, por lo que ya éste se puede apagar con el comando shutdown o reboot si desea reiniciarse para ser puesto online.
  • En el servidor donde se guardó la imagen se debe ejecutar este comando para descomprimir la imagen, esto requerirá tener como espacio disponible la misma cantidad total del disco del droplet original. O sea que si el droplet incluía un disco de 20GB, esa cantidad será requerida para la descompresión.

gunzip /carpeta/imagen.gz

  • Ahora se convertirá la imagen a VMDK para que pueda utilizarse en VMware. En la imagen VMDK resultante sólo se ocupará el espacio utilizado. La imagen original puede eliminarse posteriormente, aunque ésta puede montarse en loopback para acceder a los archivos.

qemu-img convert –O vmdk /carpeta/imagen /carpeta/imagen.vmdk

  • Ya está lista la imagen para VMware (/dev/sda), pero sin embargo aún no se puede iniciar una VM desde ella, para ello se debe preparar cambiando el bootloader.
  • Tienes que crear una VM nueva con un disco que tenga por lo menos 2 GB más que los que estaban en uso en el droplet (/dev/sdb), asignar la ISO de Ubuntu a la unidad de CD de la VM.
  • Iniciar la VM desde el CD para iniciar Ubuntu
  • En Ubuntu con GParted crear tabla de particiones y una partición ext4 para el disco virtual recién creado que ocupe todo el espacio (/dev/sdb)
  • Transferir la imagen convertida a la partición nueva

dd if=/dev/sda of=/dev/sdb1 conv=notrunc,noerror

  • Una vez transferida la imagen hacer una revisión

fsck –t ext4 /dev/sdb1

  • Eliminar el bootloader de DigitalOcean

mount /dev/sdb1 /mnt
rm –rf /mnt/boot/grub
umount /mnt

  • Ahora se debe instalar GRUB para que la imagen pueda iniciarse, para eso se usará boot-repair

add-apt-repository ppa:yannubuntu/boot-repair
sed ‘s/trusty/saucy/g’ -i /etc/apt/sources.list.d/yannubuntu-boot-repair-trusty.list
apt-get update
apt-get install -y boot-repair
boot-repair &

Seleccionar “Recommended repair”

Durante el proceso boot-repair solicitará ejecutar algunos comandos en una terminal nueva, para eso se debe copiar y pegar en una terminal nueva. Una vez ejecutado presionar siguiente.

  • Ahora puedes reiniciar la máquina virtual e iniciar el SO original desde ella.
  • Finalmente deben desactivar ciertos módulos, para ello edita el archivo /etc/modprobe/fbdev-blacklist.conf (o blacklist.conf si existe) y agregar al final las siguientes líneas

blacklist vt8623fb
blacklist floppy

image

Puedes eliminar la imagen original copiada, la imagen convertida a VMDK, sólo se usará el disco nuevo que se creó para la VM.

Recomendado

  • El droplet tiene configurada la red con IP estática, para cambiarlo a IP dinámica por DHCP se debe editar el archivo /etc/network/interfaces de

auto eth1 eth0
iface eth0 inet static
        address <IP publica>
        netmask 255.255.192.0
        gateway <GW DO>
iface eth1 inet static
        address <IP privada>
        netmask 255.255.0.0

a

auto eth0
iface eth0 inet dhcp

Desde donde dice “Primary network interface”

 

Fuente: http://scriptthe.net/ConvertDigitalOceanDroplettoVMwareVM.pdf

Obtener US $10 de créditos en DigitalOcean

Si te registras en DigitalOcean usando el enlace situado más abajo podrás obtener US $10 de créditos iniciales, los que equivalen a 2 meses de funcionamiento del droplet más económico (512 MB RAM, 20 GB almacenamiento, 1 TB transferencia) o 1 mes del tamaño siguiente (1 GB RAM, 30 GB almacenamiento, 2 TB transferencia).

Registrarse en DigitalOcean

Importante: Para crear el primer Droplet es necesario hacer un pago, aunque se tenga crédito positivo, el mínimo es US $5 por PayPal.

Evitar que Windows 8 se reinicie automaticamente despues de instalar actualizaciones

Windows 8 y superiores luego de instalar actualizaciones pide reiniciar, pero a diferencia de versiones anteriores donde se puede aplazar el reinicio indefinidamente, en esta versión no da esa posibilidad y luego de un tiempo el sistema se reiniciará, Esto puede ser un problema ya que el reinicio implica cerrar todos los programas y servicios, y si es un servidor de producción mientras se esté reiniciando no estará disponible.

Este comportamiento se puede desactivar modificando el registro de Windows, para eso debes abrir regedit e ir a:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU

image

Puede que no existan las claves WindowsUpdate y AU, por lo que debes crearlas primero. Una vez dentro de AU debes crear un nuevo registro tipo DWORD de 32 bit con nombre NoAutoRebootWithLoggedOnUsers, posteriormente debes darle valor 1 hexadecimal.

image

Luego reiniciar para aplicar los cambios, ahora a futuro se seguirán instalando las actualizaciones, pero el sistema no forzará reiniciar el equipo.

Fuente: http://www.daniel-mitchell.com/blog/prevent-windows-8-restarting-after-installing-updates/ (aquí se muestra la forma de hacer esto por directivas de grupo, sólo posible en W8 Pro)

Instalar rtorrent + rutorrent en Debian

Rtorrent es un cliente bittorrent por terminal disponible en los repositorios de varias distribuciones de linux, mientras que rutorrent es una aplicación web que se conecta a rtorrent para que se puedan manejar vía navegador los torrents.

image

La versión de los repositorios no cuenta con soporte para ser controlado remotamente, por lo que es necesario descargar el código fuente de rtorrent, libtorrent y xmlrpc-c para compilarlos manualmente y luego instalarlos.

Antes de comenzar debes instalar los programas requeridos para compilar

apt-get install gcc pkg-config libssl-dev g++ make libncurses5-dev libsigc++-2.0-dev libcurl4-openssl-dev subversion screen nano

Primero debes compilar XMLRPC-C

svn co http://svn.code.sf.net/p/xmlrpc-c/code/advanced xmlrpc-c
cd xmlrpc-c
./configure
make
make install

Luego libtorrent

wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.13.3.tar.gz
tar zxvf libtorrent-0.13.3.tar.gz
cd libtorrent-0.13.3
./configure
make
make install

Posteriormente rtorrent, el que se instalará con soporte de xmlrpc-c compilado anteriormente

wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.9.3.tar.gz
tar zxvf rtorrent-0.9.3.tar.gz
cd rtorrent-0.9.3
./configure –with-xmlrpc-c
make
make install
ldconfig

Ahora se debe configurar rtorrent, crearemos un usuario y las carpetas requeridas

useradd torrent
mkdir –p /home/torrent/rtorrent/{.session,download}
cp rtorrent-0.9.3/doc/rtorrent.rc /home/torrent/.rtorrent.rc
chown –R torrent:torrent /home/torrent/rtorrent

Luego debes editar la configuración

nano /home/torrent/.rtorrent.rc

Y cambiar

directory = /home/torrent/rtorrent/download
session = /home/torrent/rtorrent/.session
scgi_port = localhost:5000

Como servidor web usaré nginx en lugar de apache, por ocupar menos recursos, lo que es más apropiado para el Raspberry PI.

apt-get install nginx php5-fpm apache2-utils

(apache2-utils es para el comando htpasswd mencionado más adelante, no incluye el servidor web)

mkdir /var/www
cd
wget http://dl.bintray.com/novik65/generic/rutorrent-3.6.tar.gz
wget http://dl.bintray.com/novik65/generic/plugins-3.6.tar.gz
tar xvf rutorrent-3.6.tar.gz -C /var/www
tar xvf plugins-3.6.tar.gz -C /var/www/rutorrent
chown www-data:www-data -R /var/www/rutorrent
tar xvf rutorrent-3.6.tar.gz -C /var/www
tar xvf plugins-3.6.tar.gz -C /var/www/rutorrent
htpasswd -c /var/www/rutorrent/.htpasswd (nombreusuario)
chown www-data:www-data -R /var/www
nano /etc/nginx/sites-available/default

Donde dice nombreusuario reemplaza por el nombre de usuario deseado para ingresar a rutorrent, luego introduce dos veces una contraseña.

En el archivo default edita lo siguiente

root /var/www;
index index.php index.html index.htm;

Descomenta las líneas para activar PHP

location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        # NOTE: You should have “cgi.fix_pathinfo = 0;” in php.ini

        # With php5-cgi alone:
#       fastcgi_pass 127.0.0.1:9000;
#       # With php5-fpm:
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
}

Luego de estas líneas agregar

location /RPC2 {
        include scgi_params;
        scgi_pass 127.0.0.1:5000;
}

location /rutorrent {
        auth_basic “Restricted”;
        auth_basic_user_file /var/www/rutorrent/.htpasswd;
}

Si deseas activar HTTPS repite los pasos anteriores en la sección “server { listen 443; …”

Reinicia los servicios

service nginx restart
service php5-fpm restart

Finalmente debes ajustar unos parámetros de la configuración de rutorrent

nano /var/www/rutorrent/conf/config.php

Edita las siguientes líneas para especificar las rutas de curl y stat

“curl” ==> ‘/usr/bin/curl’, // Something like /usr/bin/curl. If empty, will be found in PATH.
“stat” ==> ‘/usr/bin/stat’, // Something like /usr/bin/stat. If empty, will be found in PATH.

Si ingresas a rutorrent aparecerá que no se pudo conectar a rtorrent, porque aún no se ha iniciado. Para iniciarlo inicia sesión como torrent, corre el comando screen y luego rtorrent. El comando screen permitirá cerrar la terminal y dejar rtorrent ejecutándose en segundo plano.

Fuentes:

rtorrent + rutorrent con nginx: http://vassie.me/rtorrent-and-rutorrent-on-ubuntu-server-with-nginx/

rtorrent + rutorrent con apache: http://www.adminsehow.com/2013/11/installing-rtorrentrutorrent-on-debian-7-wheezy/