Bienvenidos a la página personal de José Domingo Muñoz Rodríguez, aquí podrás encontrar…
Accede a las entradas de mi blog donde escribo de Informática y Educación.
Accede a los materiales de los cursos que he impartido.
Accede a los contenido de los módulos de FP que estoy impartiendo en la actualidad.
Microblog
Historia de Linux
Habilitar IP Forwarding en Debian 13
En Debian 13 (Trixie) el IP forwarding ya no se configura en /etc/sysctl.conf, sino en un archivo bajo /etc/sysctl.d/.
-
Crea
/etc/sysctl.d/99-forward.confcon:net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 -
Aplica y reinicia servicios:
sudo sysctl --system sudo systemctl restart systemd-sysctl
Con esto el reenvío queda habilitado de forma persistente.
DetallePublicado Debian 13 Trixie
Hoy, 9 de agosto, se ha publicado la última versión de mi distribución favorita: Debian 13 Trixie. Habrá que pensar en ir actualizando. Os dejo las Notas de publicación.

Blog
Cursos de virtualziación con KVM/libvirt

Este año también he tenido la oportunidad de desarrollar y publicar en OpenWebinars dos cursos centrados en la virtualización con KVM y libvirt, abordando tanto una introducción accesible para principiantes como una profundización orientada a un uso más avanzado y profesional.
Ambos cursos forman parte de un itinerario pensado para entender la virtualización en sistemas Linux desde una perspectiva práctica, progresiva y alineada con el uso real en servidores y entornos de producción.
¿Qué es la virtualización con KVM y libvirt?
KVM (Kernel-based Virtual Machine) es la tecnología de virtualización integrada en el kernel de Linux que permite convertirlo en un hipervisor de tipo 1. Gracias a KVM, un sistema Linux puede ejecutar máquinas virtuales con un rendimiento muy cercano al nativo, aprovechando las extensiones de virtualización por hardware (Intel VT-x / AMD-V).
Por su parte, libvirt es una capa de abstracción que facilita la gestión de máquinas virtuales y otros recursos de virtualización. Proporciona una API unificada y herramientas tanto gráficas como de línea de comandos para administrar hipervisores como KVM de forma coherente y segura.
En conjunto, KVM + libvirt constituyen una de las soluciones de virtualización más utilizadas en entornos Linux, tanto en laboratorios como en infraestructuras profesionales.
Cursos publicados
Para cubrir distintos niveles de experiencia, he preparado dos cursos complementarios, publicados en OpenWebinars y acompañados de material práctico en GitHub.
Curso 1: Introducción a la virtualización con KVM/libvirt usando virt-manager
- Repositorio del curso: https://github.com/josedom24/curso_kvm_ow/blob/main/curso1
Este primer curso está orientado a principiantes que desean iniciarse en la virtualización sobre Linux sin necesidad de conocimientos previos avanzados.
Características principales del curso:
- Introducción a los conceptos básicos de virtualización
- Instalación y configuración de KVM y libvirt
- Uso de virt-manager como herramienta gráfica
- Creación y gestión básica de máquinas virtuales
- Redes y almacenamiento a nivel introductorio
Es un curso ideal para romper la barrera de entrada y comenzar a trabajar con máquinas virtuales de forma visual e intuitiva.
Curso 2: Profundización en la virtualización con KVM/libvirt
- Repositorio del curso: https://github.com/josedom24/curso_kvm_ow/blob/main/curso2
El segundo curso está pensado para quienes ya conocen los fundamentos y desean profundizar en la virtualización usando herramientas de línea de comandos.
En este curso se trabaja, entre otros aspectos:
- Gestión avanzada de máquinas virtuales con
virsh - Definición y modificación de dominios mediante XML
- Redes virtuales avanzadas
- Gestión de almacenamiento con libvirt
- Automatización y administración más cercana a entornos de servidor
Este enfoque resulta especialmente útil para administradores de sistemas, laboratorios avanzados o escenarios donde no se dispone de entorno gráfico.
Seguir leyendo...Cursos de preparación para obtener las certificaciones Python PCEP y PCAP

Este año he tenido la oportunidad de preparar y publicar dos cursos orientados a la obtención de certificaciones oficiales de Python, pensados tanto para personas que se inician en el lenguaje como para quienes desean consolidar sus conocimientos y dar un paso más en su formación.
Siguiendo la misma filosofía que en otros cursos que he desarrollado, el objetivo principal ha sido ofrecer un itinerario claro, progresivo y muy práctico, alineado con los contenidos oficiales de los exámenes y acompañado de abundantes ejemplos y ejercicios.
Certificaciones PCEP y PCAP
Las certificaciones PCEP y PCAP forman parte del itinerario oficial de certificación en Python y están ampliamente reconocidas como una forma sólida de validar conocimientos en este lenguaje.
PCEP – Certified Entry-Level Python Programmer
La certificación PCEP está orientada a personas que comienzan a programar en Python. Evalúa los fundamentos del lenguaje, tales como:
- Sintaxis básica y semántica
- Tipos de datos fundamentales
- Variables y operadores
- Control de flujo (
if, bucles) - Funciones básicas
- Manejo elemental de errores
Es una excelente puerta de entrada para quien quiere demostrar que domina los conceptos esenciales de Python y que está preparado para seguir avanzando.
PCAP – Certified Associate Python Programmer
La certificación PCAP da un paso más y está dirigida a programadores con cierta experiencia previa en Python. En este nivel se profundiza en aspectos como:
- Programación estructurada y modular
- Colecciones y estructuras de datos avanzadas
- Manejo de excepciones
- Programación orientada a objetos
- Uso más avanzado de funciones y módulos
- Buenas prácticas en Python
Superar esta certificación demuestra una comprensión sólida y práctica del lenguaje, adecuada para entornos profesionales o académicos más exigentes.
Cursos publicados
Para cubrir ambos niveles he desarrollado dos cursos completos de preparación, con contenidos teóricos, ejemplos explicados paso a paso y ejercicios específicos orientados al examen.
Curso de preparación para el examen PCEP
- Repositorio del curso: https://github.com/josedom24/python_pcep_pcap/tree/main/PCEP
- Repositorio de ejercicios: https://github.com/josedom24/ejercicios_python_pcep
- Curso en OpenWebinars: https://openwebinars.net/cursos/certificacion-python-pcep/
Este curso está pensado para quienes se inician en Python y quieren una preparación guiada, clara y práctica para afrontar el examen PCEP con garantías.
Curso de preparación para el examen PCAP
- Repositorio del curso: https://github.com/josedom24/python_pcep_pcap/tree/main/PCAP
- Repositorio de ejercicios: https://github.com/josedom24/ejercicios_python_pcap
- Curso en OpenWebinars: https://openwebinars.net/cursos/certificacion-python-pcap/
En este segundo curso se profundiza en Python, con un enfoque más cercano al uso real del lenguaje y a los requisitos del examen PCAP.
Seguir leyendo...Contenedores Docker para la creación de páginas web estáticas usando Jekyll

Como ya saben, mis páginas web son páginas estáticas que genero utilizando Jekyll, una herramienta muy popular en el ecosistema de Ruby. Para quienes no estén familiarizados, Jekyll es un generador de sitios estáticos que toma contenido escrito en Markdown o HTML y lo convierte en un sitio web completo, listo para ser servido en cualquier servidor web. Entre sus principales ventajas se encuentran la simplicidad, la velocidad de carga de las páginas generadas, la facilidad para trabajar con plantillas y layouts, y la posibilidad de mantener el contenido separado del diseño.
Hasta ahora, en mi servidor tenía instalado Ruby y Jekyll directamente, lo que me permitía generar mis sitios sin problemas. Sin embargo, al manejar distintos proyectos Jekyll, este enfoque puede traer ciertos inconvenientes: diferentes proyectos pueden requerir versiones distintas de gemas, que son librerías o paquetes de Ruby que Jekyll y sus extensiones utilizan para funcionar correctamente. Además, las actualizaciones de Ruby, Jekyll o de las gemas siempre pueden complicarse, generando conflictos o problemas de compatibilidad.
En este artículo vamos a presentar una alternativa más flexible y ordenada: la construcción de una imagen Docker con Jekyll ya instalado, que nos permitirá crear distintos contenedores para generar cada uno de nuestros proyectos de manera aislada.
Este enfoque tiene varias ventajas: garantiza que cada proyecto use la versión exacta de Jekyll y de sus gemas, evita conflictos entre proyectos, simplifica el proceso de actualización y facilita la portabilidad del entorno de desarrollo o generación de sitios, ya que basta con tener Docker instalado para ponerlo en marcha.
Seguir leyendo...Más posts en el Blog...
- Creación de un box para vagrant (20-09-2025)
- El problema del enrutamiento asimétrico (11-06-2025)
- Despliegue automatizado de máquinas virtuales en KVM/libvirt usando cloud-init (21-05-2025)
- Docker Routing: Práctica routing y nating con docker (07-05-2025)
- Configuración de red en sistemas Linux - Netplan (03-04-2025)
- Configuración de red en sistemas Linux - systemd-networkd (05-03-2025)
Más post en el Microblog...
- Mi última camiseta... (01-06-2025)
- Me ha encantado... muchas gracias (25-05-2025)
- Eloquente JavaScript (09-03-2025)
- Correos de notificación de Lets Encrypt (04-02-2025)
- Listar imágenes Docker que no tienen contenedor asociado (29-01-2025)
- Hoja de trucos sobre Git (15-01-2025)
Licencia
Licencia: Puedes copiar y modificar todos los contenidos, pero siempre respetando los términos de la licencia CC-BY-SA.
