CB01-deb12 - Contenedor Base Debian 12

1. Instalación y Primer Acceso

Para crear el contenedor:

sudo lxc-create -n BM01-deb12 -t download -- -d debian -r bookworm -a arm64
sudo lxc-start -n BM01-deb12
sudo lxc-attach -n BM01-deb12

2. Herramientas Esenciales

Lo primero es mejorar el uso de la terminal. Instalaremos actualizaciones de seguridad automáticas, herramientas básicas y autocompletado.

apt update && apt upgrade -y
apt install -y sudo curl wget vim nano htop net-tools dnsutils \
bash-completion git ufw unattended-upgrades apt-listchanges

Activar Autocompletado

Edita el archivo /etc/bash.bashrc para asegurar que el autocompletado funcione para todos los usuarios:

# Descomenta estas líneas si no lo están
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

3. Firewall

Como en el host utilicé nftables, en los contenedores utilizaré UFW, permitiendo únicamente lo necesario y bloqueando todo lo demás por defecto.

Nota: Si permites una regla, pero aún así se bloquea, revisa que no la bloquee el host (nftables).

# Establecer políticas por defecto
ufw default deny incoming
ufw default allow outgoing

# OPCIONAL: Permitir SSH para acceder a los contenedores en remoto.
ufw allow ssh

# Habilitar el firewall
ufw enable
En cada clon, solo añadir el puerto específico, por ejemplo: ufw allow 80/tcp para Nginx (HTTP).


4. Actualizaciones Automáticas

Ahora que el contenedor se mantenga seguro instalando automáticamente los parches de seguridad.

Configura el paquete:

dpkg-reconfigure -plow unattended-upgrades
# (Selecciona "Sí" en la pantalla azul).

Verifica que esté activo:

systemctl status unattended-upgrades

5. Monitorización (Prometheus + Grafana)

Para que Prometheus recoja los datos, necesitamos exportar las métricas del contenedor.

Node Exporter es el estándar para métricas de hardware (CPU, RAM, etc).

apt install -y prometheus-node-exporter
systemctl enable prometheus-node-exporter

# Abrimos el puerto para que el contenedor de stats pueda leer los datos
ufw allow 9100/tcp

6. Configuración de Usuario

Nunca es una buena práctica hacer todo como root. Crea un usuario estándar para las demos:

adduser davidalvarezp
usermod -aG sudo davidalvarezp
su - davidalvarezp

7. Configuración de red

Deshabilitar DHCP, así cuando se defina la IP estática el contenedor, no tendrá 2 IPs (Estática+DHCP).

Editamos en el archivo de configuración /etc/systemd/network/eth0.network:

[Match]
Name=eth0
#
[Network]
DHCP=no
Reiniciamos y limpiamos:

systemctl restart systemd-networkd
ip addr flush dev eth0

8. Limpieza Pre-Clonación

Para que los clones no hereden basura o IDs de red idénticos:

# Limpiar caché de paquetes
apt clean
apt autoremove

# Limpiar el historial de comandos
history -c && exit

9. Crear plantilla

Sal del contenedor, detener y clonar:

sudo lxc-stop -n BM01-deb12

# Comando para clonar el contenedor:
sudo lxc-copy -n BM01-deb12 -N Contenedor-Nuevo

10. Configuración del clon

Para establecer una IP estática y limitar los recursos:

  1. En el host, localiza el archivo de configuración (/var/lib/lxc/$NOMBRE/config)
  2. Copia los bloques a utilizar partiendo del archivo config.
  3. Cambia los valores adaptándolos a los recursos de tu sistema.

Resumen

Característica Herramienta Resultado
Firewall UFW Seguridad robusta y sencilla
Updates Unattended-upgrades No necesita mantenimiento
Terminal Bash-completion Ayuda al escribir comandos
Red IP estática Configurada /var/lib/lxc/*/config
Métricas Node-Exporter Envía datos al contenedor Stats