En esta entrada se definen los pasos a seguir para instalar y configurar una Raspberry Pi para desplegar una serie de servicios.
1. Instalación del SO
Usando el programa Raspberry Pi Imager se puede quemar la imagen de Ubuntu, RaspberryPiOS, LibreElec o que prefieras, en cualquier tarjeta micro SD o USB . Por ejemplo elegiremos la imagen de Raspbian OS con escritorio y la quemaremos en un USB de 64GB.
Otra forma de quemar una imagen en una tarjeta SD o un USB sería usando los siguientes comandos:
1
2
3
4
5
6
7
8
9
10
11
| # See the partitions
lsblk
# Umount the USB partition
umount /dev/sdc1
# Format in vFAT
mkfs.vfat -F 32 /dev/sdc -I
# Flash the ISO into USB
dd status=progress if=NAME.iso of=/dev/sdc
|
2. Configuración Básica
Una vez esté instalado el sistema operativo, existen varias opciones para configurar la raspi. Se puede configurar sin necesidad de una pantalla, teclado y ratón extra como se explicó en un post anterior o usando estos tres periféricos externos. En este caso, usaremos una pantalla, un teclado y un ratón externo para simplificar la publicación. Por lo tanto, una vez encendida la raspi con el USB o la tarjeta SD conectada, aparecerá un dialogo para configurar el idioma, el wifi y una contraseña (por ejemplo: 1234567890).
1
2
| # Update and upgrade packages system
sudo apt-get update -y && sudo apt-get upgrade -y
|
Añadimos un alias par el hostname en el archivo /etc/hosts del oredenador que estemos utilizando para la configuración.
1
| <ip de la raspberry> node-1
|
En el siguiente paso es necesario copiar la clave pública al archivo ~/.ssh/authorized_keys de la RaspberryPi. Para ello se utilizará el siguiente comando:
1
| ssh-copy-id -i pi@<ip de la raspberry o node-1>
|
Ahora nos pedirá la contraseña de nuestra clave SSH y nos conectaremos a la RaspberryPi mediante:
3. Instalación de Programas
Paquetes básicos
1
| sudo apt install -y software-properties-common git wget
|
Docker y docker compose
Instalación
Instalamos docker con el script de instalación:
1
2
| curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
|
Mientras que la instación de docker-compose lo realizamos a través de pithon3:
1
2
3
4
| sudo apt-get install libffi-dev libssl-dev
sudo apt install python3-dev
sudo apt-get install -y python3 python3-pip
sudo pip3 install docker-compose
|
Añadir usuario al grupo docker
1
| sudo usermod -aG docker ${USER}
|
Ansible
1
| sudo apt install -y ansible
|
Instalar zsh y Oh my zsh
1
2
| sudo apt install zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
Instalar Powerlevel10k
Descargar y pegar las 4 fuentes .ttf Meslo Nerd en /usr/local/share/fonts. Deben tener los permisos 644 (-rw-r–r–).
Creamos la carpeta /usr/local/share/fonts:
1
2
| sudo mkdir /usr/local/share/fonts
cd /usr/local/share/fonts
|
Descargamos las fuentes:
1
| sudo wget https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Regular.ttf https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold.ttf https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Italic.ttf https://github.com/romkatv/powerlevel10k-media/raw/master/MesloLGS%20NF%20Bold%20Italic.ttf
|
Clonar el proyecto de powerlevel10k:
1
| git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
|
Sustituir el siguiente valor en ~/.zshrc:
1
| ZSH_THEME="powerlevel10k/powerlevel10k"
|
Configurar al gusto y actualizar los cambios del fichero ~/.zshrc:
Snapd
Instalación
Se instala los paquetes snapd y core:
1
| sudo apt install -y snapd core
|
Añadir ruta de ejecutables al PATH de bash y Zhs
Se añade la ruta de ejecutables snap al PATH:
1
2
3
4
| echo "export PATH=$PATH:/snap/bin" >> ~/.bashrc
source ~/.bashrc
echo "export PATH=$PATH:/snap/bin" >> ~/.zshrc
source ~/.zshrc
|
Se comprueba que se ha añadido correctamente la ruta:
Añadir lanzadores al menú de aplicaciones
Se crea un enlace simbólico desde el directorio que almacena los lanzadores de snaps (/var/lib/snapd/desktop/applications) al directorio de aplicaciones del sistema (usr/share/applications/)
1
| sudo ln -s /var/lib/snapd/desktop/applications /usr/share/applications/snapd
|
Flatpak
Instalación
De la documentación oficial de Flatpak, se siguen los siguientes pasos:
- Instalar Flatpak
1
| sudo apt install flatpak -y
|
- Se instala el repositorio de Flatpak
1
| flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
- Se reinicia el sistema para aplicar los cambios.
Añadir lanzadores al menú
Se crea un enlace simbólico desde el directorio que almacena los lanzadores de flatpak (/var/lib/flatpak/exports/share/applications/) al directorio de aplicaciones del sistema (usr/share/applications/)
1
| sudo ln -s /var/lib/flatpak/exports/share/applications/ /usr/share/applications/flatpak
|
KeePassXC
Nota: se instala a través de Snap porque los repositorios oficiales tienen una versión desactualizada.
- Se instala a través de snap:
1
| sudo snap install keepassxc
|
Se descarga la extensión para el navegador.
Se configura la extensión del navegador a través de un script oficial de KeePassXC. Guardar script y ejecutar:
1
2
| wget https://raw.githubusercontent.com/keepassxreboot/keepassxc/master/utils/keepassxc-snap-helper.sh
zsh keepassxc-snap-helper.sh
|
En caso de obtener el error Could not find keepassxc.proxy! Ensure the keepassxc snap is installed properly., esto se debe a que falta añadir la ruta de ejecutables snap al PATH mediante:
1
2
3
4
| echo "export PATH=$PATH:/snap/bin" >> ~/.zshrc
source ~/.zshrc
echo "export PATH=$PATH:/snap/bin" >> ~/.bashrc
source ~/.bashrc
|
Volver a ejecutar el script:
1
| bash keepassxc-snap-helper.sh
|
VSCodium [^4]
- Añade la clave GPG del repositorio:
1
| wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg | gpg --dearmor | sudo dd of=/etc/apt/trusted.gpg.d/vscodium.gpg
|
- Añade el repositorio:
1
2
3
4
| echo 'deb
[ signed-by=/usr/share/keyrings/vscodium-archive-keyring.gpg ]
https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs vscodium main'
| sudo tee /etc/apt/sources.list.d/vscodium.list
|
- Actualización de repositorios e instalación de VSCodium:
1
| sudo apt update && sudo apt install codium
|
Configuración usando Ansibles
Usando una colección
1
2
| ansible-galaxy install dev-sec.os-hardening
ansible-galaxy install dev-sec.ssh-hardening
|
1
2
| ansible-playbook ansible-os-hardening.yaml --ask-become-pass
ansible-playbook ansible-ssh-hardening.yaml --ask-become-pass
|
Usando un playbook básico
- Añade tu clave ssh en un ssh-agent usando zsh (o bash):
1
2
| ssh-agent zsh
ssh-add ~/.ssh/id_ed25519
|
- Ejecutar el playbook de ansible con la contraseña sudo requerida para los comandos:
1
| ansible-playbook playbook.yaml --ask-become-pass
|