Creando un servidor con Debian 11 en Oracle Cloud

La versión gratuita del servicio Oracle Cloud se puede considerar como aceptable para pruebas, pero la variedad de sistemas operativos es inferior a la ofrecida por proveedores como Scaleway o Digital Ocean. Algunos usuarios han encontrado formas de instalar otras distribuciones, como en el caso de Debian

Para seguir este tutorial se necesita lo siguiente

  • Cuenta en Oracle Cloud
  • Recursos libres para crear un servidor (puede ser X86 o ARM)
  • Cliente SSH
  • Tener abierto un puerto TCP adicional al 22 dentro del firewall de Oracle Cloud (en mi caso usaré el puerto 8080)

Primero necesitamos crear un servidor virtual con Ubuntu 20.04 (el cual reemplazaremos por Debian más adelante). En caso de requerir uno con procesador X86 seleccionar la versión minimal de este debido a que esta es más conveniente por la reducida memoria RAM que hay disponible para este tipo de instancias desde la versión gratuita del servicio. Una vez que el servidor esté en marcha eliminamos algunos paquetes que no necesitamos

sudo apt purge --autoremove snapd

actualizamos los paquetes y reiniciamos

sudo apt update && sudo apt dist-upgrade -y && sudo apt install lsof && sudo reboot

Liberamos espacio

sudo apt purge -y $(dpkg-query -Wf '${Package}\n' | grep header)  $(apt list --installed | grep -oP "^linux.*\d\d\d\d-oracle" | grep -v "$(uname -r)") linux-modules-extra-$(uname -r) lxc* lxd* vim* && sudo apt -y autoremove && sudo apt -y autoclean && sudo apt -y clean  
sudo rm -rf /var/log/* /var/lib/apt/lists/*

Revisamos el uso de disco (La unidad raíz debería tener utilizados menos de 1.3GB en Ubuntu Standard y menos de 600MB en Ubuntu Minimal)

df -h

Obtenemos privilegios de superusuario

sudo su

Nos movemos al directorio raíz

cd /

Creamos el sistema de archivos temporal de la siguiente manera en Ubuntu Standard

mount -t tmpfs -o size=1700m tmpfs mnt

En Ubuntu Minimal el espacio requerido es menor

mount -t tmpfs -o size=600m tmpfs mnt

Copiamos el sistema raíz a la memoria RAM

tar --one-file-system -c . | tar -C /mnt -x

Cambiamos el sistema raíz del disco duro a la memoria RAM

mount --make-private -o remount,rw /
mount --move dev mnt/dev
mount --move proc mnt/proc
mount --move run mnt/run
mount --move sys mnt/sys
sed -i '/^[^#]/d;' mnt/etc/fstab
echo 'tmpfs / tmpfs defaults 0 0' >> mnt/etc/fstab
cd mnt
mkdir old_root
mount --make-private /
unshare -m
pivot_root . old_root

Iniciamos el servidor SSH desde el sistema de transición utilizando un segundo puerto (yo utilicé el 8080)

/usr/sbin/sshd -D -p 8080 &

Iniciamos sesión en el servidor SSH recién creado (podemos salirnos de la sesión actual o abrir otra terminal)

ssh -p 8080 ubuntu@hostname

Volvemos a elevar privilegios

sudo su

Cerramos los procesos asociados al sistema anterior

pkill agetty
pkill dbus-daemon
pkill atd
pkill iscsid
pkill rpcbind
pkill unattended-upgrades
kill 1 

Desmontamos la unidad raíz

umount -l /dev/sda1

Revisamos que el disco duro no tenga particiones montadas

df -h

Descargamos una imagen de Debian para la nube y la escribimos en el disco duro. En el caso de utilizar un procesador X86 sería de esta forma

curl -L https://cloud.debian.org/cdimage/cloud/bullseye/latest/debian-11-generic-amd64.tar.xz | tar -OJxvf - disk.raw | dd of=/dev/sda bs=1M

En caso de utilizar un procesador ARM sería con otra imagen

curl -L https://cloud.debian.org/cdimage/cloud/bullseye/latest/debian-11-generic-arm64.tar.xz | tar -OJxvf - disk.raw | dd of=/dev/sda bs=1M

Una vez que termine sincronizamos la cache

sync

Cerramos la sesión SSH y reiniciamos desde la consola de Oracle Cloud (debemos marcar la casilla de reinicio forzado para que funcione). Una vez reiniciado el servidor limpiamos la lista de hosts conocidos del cliente SSH e iniciamos sesión mediante el usuario debian con la misma clave privada utilizada para iniciar sesión durante el proceso de migración

Referencias

https://gist.github.com/4abhinavjain/893ec13c651bee08088c8f4661998952

Dejar un comentario