Instalar y configurar Ubuntu server 20.04 LTS en Raspberry Pi 3

Hace tiempo había leído acerca de Raspberry Pi y no fue sino hasta ahora que mi amigo @vokye me envió una, específicamente la Raspberr Pi 3b. También ya había pensado en adquirir una, básicamente he querido tener una "nube" propia para poder publicar algunas imágenes y enlaces que me van gustando, aparte del blog. Y es que suena maravilloso tener un servidor web en casa que consume menos que un foco de led ahorrador y que prácticamente le podrías instalar los discos duros que requieras (bueno no exageremos, pero trae 4 puertos USB).

Instalación

Lo primero fue aquirir una memoria microSD, en mi caso le puse una Samsung EVO de 32 GB que debe andar en unos 150 pesos mexicanos para poder ponerle el sistema operativo, la versión LTS de Ubuntu Server 20.04 (la última) para tener nginx como servidor web, PHP como scripting del lado del servidor y algunas otras herramientas como ImageMagick. Una vez que tuve la memoria SD, desde Windows le instalé la imagen apropiada (aquí enlace para instalador de Mac y Linux), el proceso debo decir que se tarda un rato, por lo menos unos 20 minutos.

Una vez que se tiene el sistema operativo en la microSD, ya se puede poner en la Raspberry Pi y entonces conectarla a la luz. Hay algunas instrucciones para poder conectarla a una red Wifi pero debo decir que no funcionó en mi caso así que contaré los pasos que hice (si se le conecta un cable ethernet se conectará automáticamente a la red). Una vez que le puse la memoria, conecté un monitor por HDMI y un teclado, ya iniciado el sistema operativo hay que entrar con el usuario ubuntu y contraseña ubuntu, solicita cambiarla de inmediato así que hay que ponerla y acordarse, tener en cuenta que por defecto inicia con teclado en idioma inglés, así que puede ser complicado poner símbolos conocidos en la nueva contraseña, para tenerlo en cuenta.

Ya que se cambió la contraseña inicia el sistema y nos deja en una terminal de toda la vida, lo primero fue conectarla a Wifi, para ello edité el archivo  /etc/netplan/50-cloud-init.yaml, hay que tener cuidado con este archivo, de ser necesario copialo antes.

sudo vim /etc/netplan/50-cloud-init.yaml

El archivo debe quedar algo similar a lo siguiente:

network:
    ethernets:
        eth0:
            dhcp4: true
            optional: true
    version: 2
    wifis:
        wlan0:
                optional: true
                access-points:
                        "INFINITUMalgo":
                                password: "clave"
                        "otra red":
                                password: "otra clave"
                dhcp4: true

La primera sección es para que cargue la configuración de la tarjeta de red (ethernet) y luego en la parte de wifis se añade la configuración de las redes que tengas... en mi caso puse dos, es necesario que estén los espacios (no tabuladores) y el nombre de la red así como la contraseña entre comillas. Eso debería bastar, para que tome los datos bastaría ejecutar sudo netplan apply, pero en caso de que no, hay que reiniciar con sudo restart. Pero antes, hay que crear un archivo para que no se sobre escriba la información que pusimos de nuestros wifis:

sudo echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg

Si por algún motivo tienes ethernet (conectado el cable a la tarjeta de red) podrías instalar primero algunas utilidades necesarias para buscar redes wifi cercanas en caso de no acordarnos exactamente como se llama nuestro access point.

sudo apt install wireless-tools net-tools
# buscamos las redes
iwlist wlan0 scan

Y con eso ponemos en el primer archivo modificado exactamente el nombre, recordar que debe ir entre comillas. Eso sería todo, después de reiniciar ya deberíamos tener red por wifi. 

Instalar nginx, PHP

Pues los comandos de toda la vida

sudo apt install php-fpm php-cli nginx

Lo siguiente sería configurar php-fpm pero eso es material de otro escrito. 

Conectar un disco duro externo

En mi caso le puse un disco SSD, previamente le di formato en Windows com exfat y luego simplemente lo conecté a la Raspberry. Hay que instalar otro paquete para que Ubuntu pueda leer el formato con  sudo apt install exfat-fuse  y luego probar montarlo manualmente:

 
sudo mkdir /mnt/data
# comprobar el disco instalado con ls /dev/sd*, en mi caso muestra /dev/sda y /dev/sda1 -- montamos sda1
sudo mount -t exfat /dev/sda1 /mnt/data
# si todo está bien así, añadimos para que se monte automáticamente al iniciar el sistema, asegurarnos del doble mayor que o arruinaremos todo
sudo echo "/dev/sda1 /mnt/data exfat defaults 0 2" >> /etc/fstab
sudo umount /mnt/data
sudo mount -a

Eso sería todo. Por último para entrar a nuestro servidor recién instalado, bastaría apuntar al ip del Raspberry, para ver el ip de nuestro servidor ejecutamos ifconfig y encontraremos el ip en una línea que empieza con "inet 192.168..." muy seguramente. Para entrar desde otra máquina simplemente usamos ssh ubuntu@ip y listo. Lo mismo si queremos entrar por web ya que previamente instalamos nginx.

Lo siguiente fue configurar mi router para dejarle una IP estática a la Raspberry y reenviar los puertos 22,80 y 443 el dispositivo, luego hice un script para obtener la ip pública y notificarle por API a Cloudflare para estar cambiando el host con mi IP, así siempre estará detrás de un web firewall, caché y CDN (CloudFlare). Lindo. Pero esto lo escribiré en un siguiente escrito.

Por último decir que conecté la Raspberry con un cargador de celular común, que indica 2V de salida y aún con el disco duro instalado (Kingston SSD externo) no me ha marcado que le falte voltaje. Ya veremos cuando haga ciertas tareas pesadas como convertir imágenes o ponerles marca de agua con ImageMagick.

Gracias a mi amigo Evaristo por el Raspberry PI.

+ fotos / videos

Almacenado en Raspberry Pi, Ubuntu

por Jorge Martínez Mauricio :)

blog / fotos / archivo

Instalar y configurar Ubuntu server 20.04 LTS en Raspberry Pi 3

tar.mx es un blog sobre fotografía, tecnología y otras chunches

modificado jueves 8 de julio de 2021, 11:20