Author: Alexander

  • El Pulso del Código: La IA que Cabe en tu Móvil y el Espejismo del Programador Artificial

    El Pulso del Código: La IA que Cabe en tu Móvil y el Espejismo del Programador Artificial

    El Doble Filo de la IA: Potencia de Bolsillo vs. Hype Desmedido

    Bienvenidos a nuestro resumen semanal. Esta semana, el mundo de la tecnología nos ha ofrecido dos caras de la misma moneda de la inteligencia artificial: por un lado, un avance increíblemente práctico que pone la IA en manos de todos; por otro, un necesario baño de realidad sobre las promesas de una automatización total en el desarrollo de software. ¡Vamos a desglosarlo!

    Tendencia 1: Microsoft Phi-3 y la Revolución de los Modelos Pequeños (SLM)

    La noticia que ha sacudido los cimientos del desarrollo es el lanzamiento de Phi-3-mini por parte de Microsoft. Este no es otro gigante de la IA que vive en la nube; es un Small Language Model (SLM) tan eficiente que puede ejecutarse directamente en tu teléfono móvil, incluso sin conexión a internet. ¿Qué significa esto para los desarrolladores? Un mundo de posibilidades: desde asistentes inteligentes integrados en apps que respetan la privacidad del usuario, hasta la capacidad de crear herramientas personalizadas que no dependen de costosas llamadas a APIs. La era de la IA local, rápida y accesible ha comenzado oficialmente, democratizando el acceso a una tecnología que hasta ahora parecía reservada para las grandes corporaciones.

    [IMAGEN SUGERIDA: Un smartphone moderno sobre una mesa de madera, mostrando en su pantalla un chatbot amigable con el logo de un cerebro. Alrededor del teléfono flotan iconos de privacidad (un candado) y velocidad (un rayo).]

    Tendencia 2: Devin AI, el “Ingeniero de Software IA”, Bajo la Lupa

    En el otro extremo del espectro del hype, tenemos a Devin, el promocionado “primer ingeniero de software de IA”. Tras su espectacular anuncio, la comunidad ha empezado a ponerlo a prueba, y los resultados son… mixtos. Varios vídeos y análisis técnicos han demostrado que, si bien es una herramienta impresionante, muchas de sus hazañas iniciales eran exageradas o requerían una considerable intervención humana. Devin se parece más a un copiloto con esteroides que a un reemplazo autónomo para un desarrollador. La lección aquí es crucial: la IA es una herramienta de productividad sin precedentes, pero la capacidad de resolver problemas complejos, entender el contexto de un negocio y la arquitectura de un sistema sigue siendo un terreno firmemente humano. La colaboración hombre-máquina es el futuro, no la sustitución.

    [IMAGEN SUGERIDA: Un programador con cara de escepticismo, mirando una pantalla con código complejo y un error resaltado. A un lado, una pequeña ventana de un asistente de IA ofrece una solución genérica que no resuelve el problema real.]

    Conclusión: Entre la Herramienta y el Espejismo

    Esta semana nos enseña a ser optimistas pero realistas. Debemos celebrar y experimentar con avances como Phi-3, que nos dan un poder increíble a nivel local. Al mismo tiempo, debemos mantener un ojo crítico ante las promesas que suenan demasiado buenas para ser verdad. El futuro no es que la IA programe por nosotros, sino que nos dé las herramientas para programar mejor, más rápido y de formas que antes eran impensables.

  • La Navaja de Doble Filo: Cómo la IA está Acelerando el Desarrollo y Multiplicando los Riesgos de Seguridad

    La Navaja de Doble Filo: Cómo la IA está Acelerando el Desarrollo y Multiplicando los Riesgos de Seguridad

    El Amanecer de la Codificación Asistida

    El murmullo se ha convertido en un estruendo. Lo que comenzó como una curiosidad con autocompletado inteligente se ha transformado en una revolución silenciosa en el corazón del desarrollo de software. Herramientas como GitHub Copilot, Amazon CodeWhisperer y Tabnine ya no son una novedad; son parte del arsenal diario de millones de programadores. Su promesa es irresistible: escribir código más rápido, reducir la carga cognitiva y acelerar el ciclo de vida del desarrollo. Y, en gran medida, cumplen. Estos copilotos de IA, entrenados con miles de millones de líneas de código de repositorios públicos, pueden generar funciones enteras, escribir pruebas unitarias y traducir lenguajes con una fluidez asombrosa. La productividad, sin duda, ha recibido un impulso sin precedentes.

    De Copiloto a Ingeniero Autónomo: La Próxima Frontera

    La evolución no se detiene en la simple asistencia. La conversación ha escalado hacia conceptos más ambiciosos, como los “Ingenieros de Software de IA”. Proyectos como Devin de Cognition Labs prometen ir un paso más allá, no solo sugiriendo fragmentos de código, sino abordando tareas de ingeniería completas a partir de una simple instrucción en lenguaje natural. La visión es la de un agente autónomo capaz de planificar, escribir, depurar e implementar aplicaciones complejas. Para las empresas, esto representa la posibilidad de crear prototipos a una velocidad vertiginosa y de automatizar tareas de mantenimiento tediosas, liberando a los desarrolladores humanos para que se concentren en la arquitectura de alto nivel y la innovación estratégica. Sin embargo, esta aceleración vertiginosa esconde una complejidad que no podemos ignorar.

    La Deuda Técnica y de Seguridad Generada por IA

    Aquí es donde la navaja muestra su segundo filo. La velocidad y la conveniencia tienen un coste, y a menudo se paga en la moneda de la seguridad y la calidad. Los modelos de IA aprenden de un vasto corpus de datos que, por naturaleza, incluye código con vulnerabilidades, malas prácticas y errores sutiles. Un copiloto de IA, al no comprender el contexto completo de una aplicación, puede sugerir alegremente un fragmento de código que introduce una vulnerabilidad de inyección SQL, un desbordamiento de búfer o una lógica de control de acceso defectuosa. El código generado puede ser funcional en la superficie, pero frágil y opaco por debajo. Esto no solo crea agujeros de seguridad directos, sino que también introduce una nueva forma de deuda técnica: código que funciona pero que nadie en el equipo entiende completamente, lo que lo hace casi imposible de mantener o depurar a largo plazo.

    El Rol Ineludible del Desarrollador: De Creador a Curador y Guardián

    Lejos de volver obsoleto al desarrollador humano, esta nueva era redefine su rol hacia uno de mayor responsabilidad. La habilidad principal ya no es solo escribir código, sino revisarlo, validarlo y auditarlo con un escepticismo saludable. El desarrollador del futuro es un curador experto, capaz de discernir el código de alta calidad del código funcional pero peligroso. Se convierte en el guardián de la seguridad y la arquitectura, utilizando las herramientas de IA como un poderoso multiplicador de fuerza, pero nunca cediendo el juicio crítico final. Las habilidades en ciberseguridad, pruebas exhaustivas y pensamiento sistémico se vuelven más cruciales que nunca. El desafío ya no es construir desde cero, sino ensamblar, verificar y fortalecer los componentes que la IA nos proporciona. En esta simbiosis, la supervisión humana no es un cuello de botella, es el control de calidad indispensable.

  • La Doble Cara de la IA en el Código: Entre la Productividad y las Nuevas Amenazas de Seguridad

    La Doble Cara de la IA en el Código: Entre la Productividad y las Nuevas Amenazas de Seguridad

    El Amanecer del Desarrollo Asistido por IA

    La inteligencia artificial ha dejado de ser una promesa futurista para convertirse en una herramienta tangible y omnipresente en el arsenal del desarrollador de software. Plataformas como GitHub Copilot, Amazon CodeWhisperer o Tabnine ya no son simples experimentos, sino copilotos integrados en los entornos de desarrollo de miles de programadores. Su propuesta de valor es innegable: acelerar la creación de código, reducir la carga cognitiva al automatizar tareas repetitivas y democratizar el acceso a patrones de programación complejos. Estamos viviendo una revolución silenciosa donde la IA no solo autocompleta una línea, sino que genera funciones enteras, escribe pruebas unitarias y hasta traduce algoritmos entre lenguajes con una fluidez asombrosa. Esta simbiosis entre humano y máquina promete ciclos de desarrollo más cortos y una innovación más rápida, pero como toda tecnología disruptiva, trae consigo una sombra que no podemos ignorar.

    La Caja de Pandora: Vulnerabilidades Ocultas y Riesgos Latentes

    El principal desafío de estas herramientas reside en su propio origen. Los modelos de lenguaje masivo (LLM) que las impulsan han sido entrenados con miles de millones de líneas de código extraídas de repositorios públicos como GitHub. Si bien esta vasta base de conocimiento es su mayor fortaleza, también es su talón de Aquiles. El código fuente público a menudo contiene vulnerabilidades, malas prácticas de seguridad o simplemente errores sutiles. Una IA, al no comprender el contexto de seguridad de una aplicación específica, puede sugerir fragmentos de código que introducen fallos críticos, como inyecciones SQL, Cross-Site Scripting (XSS) o configuraciones de seguridad deficientes. Un desarrollador, presionado por los plazos, podría aceptar una sugerencia funcional sin auditar a fondo sus implicaciones de seguridad, abriendo sin saberlo una puerta trasera en el sistema.

    Más allá de las vulnerabilidades directas, existe el riesgo de la complacencia y la erosión de habilidades. La dependencia excesiva de estas herramientas podría llevar a que las nuevas generaciones de desarrolladores no profundicen en los fundamentos de la programación segura. Si la IA siempre ‘resuelve’ el problema, se pierde la oportunidad de aprender por qué una solución es más segura que otra. Es la paradoja del copiloto: nos hace más rápidos en el corto plazo, pero podría hacernos conductores menos atentos en el largo plazo si no mantenemos una postura crítica y vigilante.

    Hacia una Colaboración Inteligente: Mitigación y Buenas Prácticas

    Rechazar la IA no es una opción viable; la eficiencia que aporta es demasiado grande como para ignorarla. La clave está en adoptar un enfoque de ‘confiar pero verificar’. Los equipos de desarrollo deben tratar el código generado por IA con el mismo escepticismo que aplicarían al código de una biblioteca de terceros o de un programador junior. Esto significa que los procesos de revisión de código (Code Reviews) se vuelven más cruciales que nunca. No se trata solo de revisar la lógica, sino de analizar activamente las posibles implicaciones de seguridad de cada sugerencia aceptada.

    Además, la automatización debe ser combatida con más automatización. Integrar herramientas de Análisis Estático de Seguridad de Aplicaciones (SAST) y Análisis Dinámico (DAST) en los pipelines de CI/CD es fundamental. Estos sistemas pueden actuar como una red de seguridad, detectando patrones de vulnerabilidad conocidos en el código, independientemente de si fue escrito por un humano o una IA. La formación continua de los desarrolladores sobre las debilidades comunes y los patrones de ataque sigue siendo la defensa más robusta. Al final, la IA es una herramienta de potencia sin precedentes. El reto para la industria del software no es frenar su avance, sino aprender a manejarla con la sabiduría y la responsabilidad que exige, convirtiendo al desarrollador en un supervisor experto que guía a su copiloto de IA hacia la creación de software no solo más rápido, sino también más seguro.

  • Cómo instalar n8n en Linux (Guía Completa)

    Cómo instalar n8n en Linux (Guía Completa)

    n8n es una poderosa herramienta de automatización de flujos (workflows) de código abierto que puedes instalar fácilmente en cualquier servidor Linux. En este post aprenderás a instalarlo paso a paso, de forma segura y lista para producción.


    ✅ Requisitos previos

    Antes de comenzar, asegúrate de tener:

    • Un servidor con Linux (Ubuntu 20.04/22.04 recomendado)
    • Acceso SSH
    • Docker y Docker Compose instalados
    • Un dominio o subdominio (opcional, pero recomendado)
    • Puertos 80 y 443 disponibles

    📌 1. Actualizar el sistema

    sudo apt update && sudo apt upgrade -y
    

    📌 2. Instalar Docker y Docker Compose

    Instalar Docker

    curl -fsSL https://get.docker.com | sudo bash
    

    Instalar Docker Compose

    sudo apt install docker-compose -y
    

    Verifica que todo esté funcionando:

    docker --version
    docker-compose --version
    

    📌 3. Crear el directorio de n8n

    mkdir -p ~/n8n
    cd ~/n8n
    

    📌 4. Crear el archivo docker-compose.yml

    Crea el archivo:

    nano docker-compose.yml
    

    Pega lo siguiente:

    services:
      n8n:
        image: n8nio/n8n:latest
        container_name: n8n
        environment:
          - GENERIC_TIMEZONE=Europe/Amsterdam
          - NODE_ENV=production
          - N8N_SECURE_COOKIE=false
        ports:
          - "5678:5678"
        volumes:
          - n8n_data:/home/node/.n8n
        restart: unless-stopped
    
    volumes:
      n8n_data:
        name: n8n_data
    

    Guarda con CTRL + O, luego CTRL + X.


    📌 5. Levantar n8n

    docker-compose up -d
    

    Revisa que el contenedor esté activo:

    docker ps
    

    📌 6. Acceder a n8n

    Abre en tu navegador:

    http://TU_IP_PUBLICA:5678
    

    Si configuraste usuario y contraseña, n8n te las pedirá.


    📌 7. (Opcional pero recomendado) Instalar n8n con dominio y SSL

    Si usas un dominio y quieres HTTPS automático con Let’s Encrypt, puedes:

    • Instalar un proxy como NGINX Proxy Manager
    • O configurar Traefik para certificados automáticos
    • O usar Cloudflare Tunnel

    Puedo ayudarte a configurarlo si lo necesitas.


    🎉 ¡Listo!

    Ya tienes n8n funcionando en tu servidor Linux. Desde aquí puedes:

    • Crear automatizaciones complejas
    • Conectar APIs y servicios externos
    • Orquestar procesos para tu negocio o proyectos personales
    • Construir backends sin código
  • Cómo configurar el Mail Server en aaPanel paso a paso

    Cómo configurar el Mail Server en aaPanel paso a paso

    aaPanel cuenta con un módulo llamado Mail Server que permite crear tu propio servidor de correo para enviar y recibir emails usando tus propios dominios (por ejemplo: [email protected]).
    En este post te explico cómo instalarlo, configurarlo y ponerlo a funcionar correctamente.


    📌 1. ¿Qué es el Mail Server de aaPanel?

    El módulo Mail Server convierte tu VPS o servidor en un servidor de correo completo.
    Incluye:

    • SMTP (envío)
    • IMAP/POP3 (recepción)
    • Webmail (por Roundcube)
    • Gestión de buzones
    • Filtros Anti-Spam
    • DKIM automático

    Es ideal cuando quieres tener correos corporativos propios sin usar Google Workspace o Zoho Mail.


    📌 2. Requisitos antes de instalar

    Antes de comenzar, asegúrate de tener:

    ✔ Un dominio (ej: midominio.com)
    ✔ Un VPS con aaPanel
    ✔ Los puertos abiertos: 25, 465, 587, 993, 995
    ✔ DNS configurados

    ⚠️ OJO: Algunos proveedores VPS bloquean el puerto 25.
    Si tu proveedor es Contabo, por lo general sí lo permite, pero conviene verificar enviando un correo de prueba.


    📌 3. Instalar Mail Server en aaPanel

    Paso 1: Entra al panel

    1. Entra al panel
    2. Ve a Mail Server
    3. Instálalo (tarda unos minutos)

    Tras la instalación, verás el panel de correo.


    📌 4. Configurar el dominio para el servidor de correo

    Aunque WordPress puede usar la función php_mail(), lo más rePaso 1: Agregar dominio en Mail Server

    1. Entra en:
      Mail Server → Mail Domain→ Add Domain
    2. Agrega tu dominio: midominio.com

    El panel te mostrará los registros DNS que debes agregar.

    📌 5. Configurar los DNS (muy importante)

    Debes agregar los siguientes registros en tu proveedor DNS (Cloudflare, Contabo DNS, Godaddy, etc.):

    1. Registro MX

    Host: @
    Tipo: MX
    Valor: mail.midominio.com
    Prioridad: 10

    2. Registro A para mail

    Host: mail
    Tipo: A
    IP: (la IP de tu servidor)

    3. SPF

    Host: @
    Tipo: TXT
    Valor: v=spf1 a mx ~all

    4. DKIM

    aaPanel te lo genera automáticamente:

    1. En el panel: Mail Server → Mail Domain→ DKIM
    2. Copia los valores TXT
    3. Créalo en tu DNS

    Los valores para cada uno de los pasos anteriores, los veras disponibles cuando agregue su domonio y en el listado haga click en: Mail Server → Mail Domain→ MiDomio DNS Record

    📌 6. Instalar Webmail

    1. Ve a:
      Mail Server → Mail Domain
    2. Selecciona el dominio donde quieres activar Webmail.
      Ej: midominio.com
    3. Dentro del dominio, busca la opción:
      Webmail
    4. Haz clic en Install
      (aaPanel descargará e instalará Roundcube automáticamente)
    5. Espera a que finalice la instalación (1–2 minutos).
    6. Asegúrate de tener creado el subdominio mail.midominio.com apuntando a tu servidor (registro A).
    7. Cuando termine, aparecerá la URL del Webmail, normalmente:
    https://mail.midominio.com

    Una vez finalizada la instalación, aaPanel creará automáticamente un Website con el subdominio.

    Ve a Website → mail.midominio.com

    Configurar SSL para el dominio y el subdominio usando el mismo certificado

    El Webmail depende internamente del mismo servicio que usa el dominio principal, por lo que ambos deben estar cubiertos por el mismo certificado SSL.
    Esto evita conflictos de seguridad, errores de conexión y problemas de IMAP/SMTP que pueden aparecer cuando los navegadores o clientes de correo detectan certificados diferentes.

    🧠 ¿Por qué es obligatorio usar el mismo certificado?

    Porque los servicios de correo utilizan:

    • El dominio principal (midominio.com)
    • El subdominio del servidor de correo (mail.midominio.com)

    Ambos forman parte del mismo ecosistema de autenticación.
    Si cada uno tiene un certificado distinto:

    • Los navegadores detectan inconsistencia entre dominios.
    • Los clientes IMAP/SMTP pueden marcar el servidor como inseguro.
    • El Webmail puede fallar al cargar, mostrar advertencias o bloquear conexiones.

    Por eso el certificado debe cubrir ambos nombres de dominio al mismo tiempo.

    QUÉ DEBE INCLUIR EL CERTIFICADO SSL

    El certificado que debes emitir debe contener:

    ✔ midominio.com

    ✔ mail.midominio.com

    Puedes lograr esto de dos maneras:

    Opción 1 — Un certificado con ambos dominios seleccionados (SAN Certificate)

    Let’s Encrypt te permite seleccionar varios “Alternate Names”.

    Opción 2 — Un certificado wildcard

    Cubre automáticamente todos los subdominios:

    *.midominio.com
    midominio.com
    

    El wildcard es útil si planeas tener más subdominios en el futuro (api.midominio.com, panel.midominio.com, etc.).

    🛠 PASOS PARA CONFIGURAR EL SSL CORRECTAMENTE

    A continuación los pasos claros para asegurarte de hacerlo de forma correcta.

    1️⃣ Asegurar que ambos dominios resolvan al servidor

    Antes del SSL, confirma que funcionan los DNS:

    RegistroTipoValor
    midominio.comAIP del servidor
    mail.midominio.comAIP del servidor

    🔍 Puedes comprobarlo con:

    ping midominio.com
    ping mail.midominio.com
    

    Ambos deben responder desde la misma IP.

    2️⃣ Generar el certificado SSL compartido

    Let’s Encrypt

    1. En la sección SSL, elige Emitir SSL Let’s Encrypt.
    2. Selecciona midominio.com.
    3. Activa la opción SAN / Alias / Add Domains.
    4. Añade:
      • midominio.com
      • mail.midominio.com
    5. Asegúrate de que ambos estén seleccionados.
    6. Pulsa Emitir certificado.

    Let’s Encrypt generará un certificado válido para ambos.

    3️⃣ Instalar el certificado en el dominio principal

    La mayoría de paneles lo hacen automáticamente.
    Pero asegúrate de que el archivo fullchain.pem y privkey.pem corresponden al certificado SAN/wildcard recién creado.

    Dependiendo del stack:

    4️⃣ Instalar el mismo certificado en el servicio de correo

    Postfix (SMTP)

    Configurar el certificado en:

    /etc/postfix/main.cf
    
    smtpd_tls_cert_file=/etc/letsencrypt/live/midominio.com/fullchain.pem
    smtpd_tls_key_file=/etc/letsencrypt/live/midominio.com/privkey.pem
    

    Dovecot (IMAP/POP3)

    En /etc/dovecot/conf.d/10-ssl.conf:

    ssl_cert = </etc/letsencrypt/live/midominio.com/fullchain.pem
    ssl_key = </etc/letsencrypt/live/midominio.com/privkey.pem
    

    5️⃣ Reiniciar los servicios de correo

    systemctl restart postfix
    systemctl restart dovecot
    

    Esto hace que ambos servicios comiencen a usar el nuevo certificado.

    6️⃣ Verificar el certificado

    Prueba desde navegador:

    Ambos deben mostrar un certificado válido y el mismo emisor/huella.

    7️⃣ Probar Webmail y clientes IMAP/SMTP

    Conexiones IMAP

    Puerto: 993
    Servidor: mail.midominio.com
    SSL: Requerido ✔

    Conexiones SMTP

    Puerto: 465 o 587
    SSL/TLS: Requerido ✔

    Si todo está bien, los clientes no mostrarán errores.

    🎯 Resumen corto

    • El Webmail necesita el mismo certificado SSL para el dominio principal y el subdominio.
    • El certificado debe incluir:
      ✔ midominio.com
      ✔ mail.midominio.com
    • Puedes usar Let’s Encrypt con SAN o un wildcard.
    • Debes instalar ese mismo certificado en Postfix y Dovecot.
    • Si usas certificados diferentes → Webmail muestra errores.

    ✔ Ya con esto configurado…

    Una vez que el dominio y el subdominio mail.midominio.com comparten el mismo certificado SSL, todos los servicios de correo quedarán protegidos y funcionando correctamente.
    Esto significa que ya puedes agregar tus cuentas de correo en cualquier cliente (Outlook, Apple Mail, Thunderbird, Gmail App, etc.) usando IMAP o POP3 sin problemas de seguridad o advertencias de certificado.

    Podrás configurarlos así:

    IMAP (recomendado)

    • Servidor entrante: mail.midominio.com
    • Puerto: 993
    • Seguridad: SSL/TLS

    POP3

    • Servidor entrante: mail.midominio.com
    • Puerto: 995
    • Seguridad: SSL/TLS

    SMTP (envío)

    • Servidor saliente: mail.midominio.com
    • Puerto: 465 (SSL/TLS)
      o 587 (STARTTLS)
    • Seguridad: Requerida

    Con esto, todos los dispositivos sincronizarán correctamente tus correos, sin errores de certificado ni bloqueos.

    Una vez que tu Mail Server y Webmail estén configurados correctamente, es importante asegurarse de que tu servidor pueda enviar correos sin problemas y que los emails no terminen en la carpeta de spam.

    Verificar la salida de correos con Mail Tester

    Para esto, te recomendamos usar Mail Tester, una herramienta externa gratuita que permite analizar la entrega de tus correos.

    Pasos para usar Mail Tester

    1. Entra a https://www.mail-tester.com.
    2. Copia la dirección de correo temporal que te proporciona la página.
    3. Desde tu servidor o Webmail, envía un correo de prueba a esa dirección.
    4. Vuelve a Mail Tester y haz clic en “Check your score”.

    La herramienta te mostrará:

    • Si el correo fue recibido correctamente
    • Si tu servidor está correctamente configurado con SPF, DKIM y DMARC
    • Recomendaciones para mejorar la entregabilidad

    ✅ Con esto podrás asegurarte de que tu servidor de correo funciona correctamente y que los emails enviados desde tu dominio llegan de forma segura a tus destinatarios.

  • Cómo instalar Docker paso a paso en Linux (Ubuntu)

    Docker es una de las herramientas más utilizadas en el desarrollo moderno para crear, desplegar y ejecutar aplicaciones dentro de contenedores. En este artículo aprenderás cómo instalar Docker en Linux Ubuntu paso a paso. 🐳

    Logo de Docker en Ubuntu
    Docker funcionando sobre Ubuntu Linux.

    🔧 Requisitos previos

    • Una máquina con Ubuntu 22.04 o superior.
    • Acceso a un usuario con permisos sudo.
    • Conexión a Internet.

    🐧 Instalación de Docker en Ubuntu

    Estos son los pasos oficiales recomendados por Docker para instalar el servicio en tu sistema:

    1️⃣ Actualizar el índice de paquetes

    sudo apt-get update
    sudo apt-get install ca-certificates curl gnupg

    2️⃣ Agregar la clave GPG oficial de Docker

    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null
    sudo chmod a+r /etc/apt/keyrings/docker.asc

    3️⃣ Configurar el repositorio de Docker

    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
      https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update

    4️⃣ Instalar Docker Engine

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

    5️⃣ Verificar la instalación

    sudo docker --version

    Si ves algo como Docker version 27.0.3, build abc1234, ¡felicidades! 🎉 Docker está correctamente instalado en tu sistema.

    Docker CLI verificando la versión
    Verificación de la instalación de Docker desde la terminal.

    💡 Consejos adicionales

    • Ejecuta sudo systemctl enable docker para iniciar Docker automáticamente al encender el sistema.
    • Si deseas usar Docker sin sudo, agrega tu usuario al grupo Docker con:
      sudo usermod -aG docker $USER
    • Consulta la documentación oficial de Docker para Ubuntu para más detalles.

    “Los contenedores no son el futuro del desarrollo, son el presente.”

    Equipo de Apolanco DevOps

    ✅ Conclusión

    Ahora tienes Docker instalado y funcionando en tu entorno Linux. A partir de aquí, puedes crear contenedores, configurar docker-compose o desplegar tus propias aplicaciones.

    Contenedores Docker ejecutándose
    Ejemplo de contenedores Docker ejecutándose correctamente.
  • Cómo integré WordPress con React en Apolanco.com

    Cómo integré WordPress con React en Apolanco.com

    📝 OPCIÓN 1: Crear el post desde el panel de WordPress

    1. Entra a tu panel:
      👉 https://blog.apolanco.com/wp-admin
    2. Ve al menú Entradas → Añadir nueva
    3. Escribe algo como: Título: “Cómo integré WordPress con React en Apolanco.com” Contenido: En este artículo explico cómo usamos WordPress como un CMS sin cabeza (headless) para alimentar el blog de nuestra página React.
      Configuramos el acceso a la API REST y lo consumimos con fetch desde el frontend, logrando una integración rápida y moderna. Imagen destacada:
      Sube una que represente el tema (por ejemplo, una imagen de código o integración).
    4. Pulsa Publicar.

    Luego puedes acceder al JSON en:

    https://blog.apolanco.com/wp-json/wp/v2/posts
    

    Verás algo como esto:

    [
      {
        "id": 123,
        "date": "2025-11-02T17:45:00",
        "slug": "integrar-wordpress-con-react",
        "status": "publish",
        "title": {
          "rendered": "Cómo integré WordPress con React en Apolanco.com"
        },
        "content": {
          "rendered": "<p>En este artículo explico cómo usamos WordPress...</p>"
        },
        "excerpt": {
          "rendered": "<p>Usamos WordPress como CMS sin cabeza...</p>"
        },
        "featured_media": 45,
        "link": "https://blog.apolanco.com/como-integre-wordpress-con-react-en-apolanco-com/"
      }
    ]
    

    ⚙️ OPCIÓN 2: Crear el post por API REST (POST request)

    Si quieres hacerlo desde código (por ejemplo, para automatizar publicaciones), puedes usar la API REST de WordPress.

    Requisitos:

    • Un usuario con permisos de editor o administrador.
    • Un token de autenticación (o cookie de sesión).

    🔐 1. Obtener token JWT

    Primero, instala el plugin:

    JWT Authentication for WP REST API

    Luego, genera un token enviando un POST a:

    POST https://blog.apolanco.com/wp-json/jwt-auth/v1/token
    

    Con cuerpo:

    {
      "username": "tu_usuario",
      "password": "tu_contraseña"
    }
    

    Recibirás algo como:

    {
      "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
      "user_email": "[email protected]",
      "user_nicename": "admin",
      "user_display_name": "Administrador"
    }
    

    ✍️ 2. Crear un post con el token

    Luego haces un POST a:

    POST https://blog.apolanco.com/wp-json/wp/v2/posts
    

    Con headers:

    Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
    Content-Type: application/json
    

    Y cuerpo:

    {
      "title": "Ejemplo de publicación creada por API",
      "content": "<p>Este post fue creado desde la API REST de WordPress usando React.</p>",
      "status": "publish"
    }
    

    Si todo está correcto, WordPress responderá con un JSON del post recién creado 🎉


    ⚛️ BONUS: Ejemplo desde React (fetch)

    fetch("https://blog.apolanco.com/wp-json/wp/v2/posts", {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        Authorization: `Bearer ${token}`,
      },
      body: JSON.stringify({
        title: "Publicación automática desde React",
        content: "<p>Este post fue creado desde la app React.</p>",
        status: "publish",
      }),
    })
      .then((res) => res.json())
      .then((data) => console.log("✅ Post creado:", data))
      .catch((err) => console.error("❌ Error:", err));
    

    ¿Quieres que te deje también el ejemplo para editar o eliminar publicaciones vía API (con React o con curl)?
    Así tendrías un CRUD completo para tu blog.

  • You E-Market

    You E-Market

    📝 Introducción

    En el panorama digital actual, la necesidad de una plataforma de comercio que conecte de manera directa y eficiente a vendedores y compradores es fundamental. You E-Market es una solución de e-commerce simplificada, diseñada específicamente para la publicación y visualización efectiva de productos. Su objetivo principal es optimizar el proceso de compra-venta, haciendo la comunicación entre el comprador y el propietario del producto más rápida y directa.

    🎯 Objetivos del Proyecto:

    You E-Market no solo es un catálogo de productos, sino un ecosistema centrado en la interacción. Sus objetivos clave incluyen:

    • Facilitar la exposición: Proveer una plataforma intuitiva para que los usuarios puedan publicar y mostrar un amplio catálogo de productos.
    • Agilizar la comunicación: Otorgar a los compradores acceso directo a la información de contacto del propietario para simplificar el proceso de consulta y compra.
    • Mejorar la experiencia de usuario: Ofrecer un sistema robusto de registro e inicio de sesión para una navegación personalizada y segura.
    • Optimizar la compra-venta: Reducir la fricción en la transacción al eliminar intermediarios complejos.

    🛠️ Responsabilidades Clave:

    La realización de You E-Market implicó una gestión integral del ciclo de desarrollo de software:

    • Diseño completo del sistema: Desde la arquitectura de la base de datos hasta el diseño de la interfaz de usuario.
    • Desarrollo: Implementación completa de las funcionalidades de backend y frontend.
    • Pruebas e Integraciones: Asegurar la funcionalidad, seguridad y rendimiento del sistema a través de pruebas rigurosas.

    🧩 Módulos Principales:

    • Gestión de Usuarios: Módulos de registro, inicio de sesión y perfiles para compradores y vendedores.
    • Publicación de Productos: Interfaz para que los vendedores carguen imágenes, descripciones y precios de sus artículos.
    • Exploración y Búsqueda: Funcionalidades avanzadas para que los compradores naveguen y encuentren productos fácilmente.
    • Acceso a Contacto: Provisión clara y directa de la información de contacto del propietario del producto en su publicación.
    • Interfaz web responsiva: Diseño moderno y adaptable que asegura una experiencia consistente en cualquier dispositivo.

    💻Tecnologías Utilizadas:

    Para garantizar una solución robusta, segura y de alto rendimiento, se emplearon las siguientes herramientas:

    1. Lenguajes de programación / Herramientas: C# con ASP.NET Core (para el backend), JavaScript.
    2. Front-end / Presentación: HTML, CSS3, y Bootstrap, asegurando una interfaz limpia y responsiva.
    3. Bases de datos: SQL Server, elegido por su fiabilidad y gestión de datos transaccionales.
    4. IDE y herramientas de desarrollo: Visual Studio 2022.

    🌟Conclusión:

    You E-Market es una prueba de que el comercio electrónico puede ser sencillo y directo. Al centrarse en la conexión humana y la transparencia, esta plataforma logra sus objetivos de crear un mercado eficiente, eliminando las complejidades y facilitando la interacción directa entre las partes.