Introducción
Este documento describe los pasos necesarios para preparar un sistema Ubuntu Server 24.04 LTS para desplegar servicios usando Docker y Docker Compose. Incluye configuraciones básicas de seguridad (hardening), la creación de un archivo de swap de 4 GB (el tamaño del swap en esta guía considera 4 GB, pero se debe adecuar a la necesidad específica de cada caso), y la instalación del entorno base necesario.
El objetivo es contar con una base robusta, segura y lista para levantar contenedores con Docker sin pasos innecesarios ni configuraciones inseguras.
1. Actualización del sistema
Descripción: Se actualizarán los paquetes existentes para asegurar que el sistema esté al día con los parches de seguridad y mejoras disponibles.
Comandos:
sudo apt update && sudo apt upgrade -y
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release software-properties-common
2. Hardening básico del sistema
2.1 Crear un nuevo usuario sin privilegios de root
Descripción: Por razones de seguridad, se recomienda no trabajar directamente con el usuario root. En esta guía se menciona el usuario “deployer”, pero por seguridad es conveniente adoptar un usuario distinto, debido a la naturaleza de esta guía este no debe ser el usuario que se use, y debe ser determinado por el administrador.
Comandos:
sudo adduser deployer
sudo usermod -aG sudo deployer
2.2 Configurar el firewall con UFW
Descripción: Se habilitará el firewall UFW y se abrirá únicamente el puerto necesario para SSH. Nota: es necesario usar la directiva allow para exponer los protocolos necesarios en cada caso, por ejemplo HTTP, HTTPs, etc. En esta guía se indica como ejemplo únicamente el protocolo SSH pero es necesario adecuar cada caso de acuerdo a su aplicación y necesidad.
Comandos:
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status
3. Crear y configurar un archivo de swap de 4 GB
Descripción: Un archivo de swap permite mejorar el rendimiento en sistemas con poca RAM al ofrecer espacio temporal de intercambio. En este ejemplo en el primero comando se usa el valor 4G para indicar un tamaño de 4 GB, se debe adecuar de acuerdo a la necesidad de cada caso específico.
Comandos:
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
echo 'vm.swappiness=10' | sudo tee /etc/sysctl.d/99-swappiness.conf
echo 'vm.vfs_cache_pressure=50' | sudo tee /etc/sysctl.d/99-vfs_cache_pressure.conf
sudo sysctl --system
mount -a
4. Instalar Docker (incluye Docker Compose)
Descripción: Se instalará Docker y su CLI moderno que ya incluye Docker Compose como plugin
4.1 Agregar repositorio oficial de Docker
Comandos:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
4.2 Instalar Docker y sus componentes
Comandos:
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
4.3 Comprobar instalación de Docker Compose
Comandos:
docker compose version
5. Verificación final
Descripción: Se comprobará que Docker está funcionando correctamente.
Comandos:
docker run hello-world