<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dante C. Lobato</title>
    <description>The latest articles on DEV Community by Dante C. Lobato (@hopsersmerk).</description>
    <link>https://dev.to/hopsersmerk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2815652%2Ff79dc446-af48-4834-a72a-0c72faeea046.jpeg</url>
      <title>DEV Community: Dante C. Lobato</title>
      <link>https://dev.to/hopsersmerk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hopsersmerk"/>
    <language>en</language>
    <item>
      <title>Estamos construyendo el internet del pasado (y no lo sabemos)</title>
      <dc:creator>Dante C. Lobato</dc:creator>
      <pubDate>Fri, 20 Mar 2026 22:51:24 +0000</pubDate>
      <link>https://dev.to/hopsersmerk/estamos-construyendo-el-internet-del-pasado-y-no-lo-sabemos-2p6j</link>
      <guid>https://dev.to/hopsersmerk/estamos-construyendo-el-internet-del-pasado-y-no-lo-sabemos-2p6j</guid>
      <description>&lt;p&gt;El otro día estaba platicando con un amigo - esos ratos en la oficina, cuando todo urge pero nada avanza - y nos pusimos a divagar sobre cómo se vería internet dentro de cinco, diez años. Y de repente, me di cuenta de algo que suena a herejía pero que cada vez veo más cerca: &lt;strong&gt;estamos construyendo el internet del pasado, y ni siquiera lo sabemos&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Hablemos claro. ¿Cuándo fue la última vez que entraste a la pagina web de tu abogado o tu barbero por gusto? ¿Que abriste una tienda de Shopify, un WooCommerce o una Tiendanube &lt;em&gt;porque sí&lt;/em&gt;, sin que Google te obligara a pasar por ahí para encontrar una respuesta? A mí me está pasando cada vez menos. Y no soy el único.&lt;/p&gt;

&lt;p&gt;Veo el tráfico cayendo en sitios que antes eran inamovibles. StackOverflow ya lo vivió: la gente prefiere preguntarle a ChatGPT antes que navegar por threads de 2012 con screenshots borrosos. Y eso - &lt;strong&gt;&lt;em&gt;eso&lt;/em&gt;&lt;/strong&gt; - es solo el principio. Perplexity ya navega por ti. Los navegadores de OpenAI integran la IA directamente. Grok, Gemini, Claude... todos quieren ser la puerta de entrada, no el pasillo por donde caminas.&lt;/p&gt;

&lt;p&gt;El hábito está cambiando, y cuando el hábito cambia, la arquitectura debe cambiar con él.&lt;/p&gt;

&lt;p&gt;Pensé en mi propio blog. En mi trabajo. En ese ecommerce que alguien está construyendo ahora mismo con PrestaShop, pensando en breakpoints mobile y en que el botón de compra sea del color exacto que convierte. Y me dio escalofríos pensar: &lt;em&gt;¿Y si estamos optimizando para el usuario equivocado?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Porque mira, yo creo - y aquí me pongo un poco conspiranoico pero espero que conmigo - que la siguiente evolución no es hacer webs más bonitas, más rápidas, más &lt;em&gt;adaptadas a móvil&lt;/em&gt;. Eso ya es el pasado. &lt;strong&gt;La próxima generación de internet será para inteligencias artificiales, no para humanos.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suena raro, ¿no? Pero piénsalo. Si mañana la gente prefiere decirle a su asistente "comprame unos tenis para correr, talla 9, que cuesten menos de mil pesos y sean buenos para asfalto" en lugar de abrir Amazon o Mercado Libre y filtrar 47 opciones... ¿para quién estamos haciendo la interfaz gráfica? ¿Para quién escribimos el &lt;em&gt;copy&lt;/em&gt; persuasivo de la página de inicio?&lt;/p&gt;

&lt;p&gt;Yo creo que ya no hay vuelta atrás. Y no digo que vayamos a desaparecer - Amazon no va a cerrar mañana, ni tu blog favorito se evaporará. Pero el tráfico, esa atención escurridiza que tanto nos cuesta captar, se va a mover. De los buscadores a los LLMs. De las pantallas a los prompts.&lt;/p&gt;

&lt;p&gt;Entonces, ¿qué hacemos? ¿Nos cruzamos de brazos?&lt;/p&gt;

&lt;p&gt;No. &lt;strong&gt;Preparamos el terreno.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yo veo el futuro así: dejaremos de hablar de "experiencia de usuario" (UX) para empezar a hablar de "experiencia de máquina" (MX, si quieres ponerle nombre cool). Ya no será tanto sobre cómo se ve tu sitio, sino sobre cómo tu &lt;strong&gt;contenido&lt;/strong&gt; se consume. APIs limpias, datos estructurados que las IAs puedan entender sin tener que scrapear tu HTML como si fuera 1999, estándares nuevos que alguien más inteligente que yo inventará pronto para que los agentes de IA puedan "comprar" en tu tienda, "leer" tu artículo, "citar" tu investigación, sin que un humano pase siquiera por tu URL.&lt;/p&gt;

&lt;p&gt;Es como cuando pasamos de tener carpetas físicas a tener bases de datos. O de las páginas estáticas a las dinámicas. Es otro salto.&lt;/p&gt;

&lt;p&gt;Amazon tendrá que adaptarse. Mercado Libre. Tu blog de cocina. Mi sitio. Los diarios. Todos. Porque el negocio ya no será "traer gente a mi terreno", sino "estar presente donde la gente ya está conversando con su IA de confianza".&lt;/p&gt;

&lt;p&gt;Y mira, no quiero sonar apocalíptico. No hay que tener miedo. Pero sí hay que dejar de pintar paredes en un edificio que se está mudando de dirección.&lt;/p&gt;

&lt;p&gt;Así que estoy pensando en empezar a construir diferente. No sé exactamente cómo se ve aún - estoy explorando, como todos - pero sé que implica dejarnos de obsesiones con el pixel perfect y empezar a pensar en estándares, en accesibilidad máquina-máquina, en ser relevantes no solo cuando alguien hace clic, sino cuando alguien &lt;em&gt;pregunta&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;El internet no se acaba. Solo crece una piel nueva. Y yo quiero estar ahí cuando la IA sea quien navegue por nosotros, no al revés.&lt;/p&gt;

&lt;p&gt;¿Tú qué piensas? ¿Ya te está pasando que prefieres preguntarle a Claude o a ChatGPT antes que googlear? Me leo en los comentarios.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openai</category>
      <category>uxdesign</category>
    </item>
    <item>
      <title>HPSR Proxy Stack: Tu Propio Servidor Proxy HTTPS con Docker, Squid y Certificados SSL Válidos</title>
      <dc:creator>Dante C. Lobato</dc:creator>
      <pubDate>Mon, 10 Nov 2025 00:37:21 +0000</pubDate>
      <link>https://dev.to/hopsersmerk/hpsr-proxy-stack-tu-propio-servidor-proxy-https-con-docker-squid-y-certificados-ssl-validos-47a8</link>
      <guid>https://dev.to/hopsersmerk/hpsr-proxy-stack-tu-propio-servidor-proxy-https-con-docker-squid-y-certificados-ssl-validos-47a8</guid>
      <description>&lt;p&gt;HPSR Proxy Stack es una solución open-source que convierte cualquier VPS en un servidor proxy HTTPS profesional con certificados SSL válidos de Let's Encrypt, autenticación HTTP Basic y cifrado TLS 1.2+. Todo automatizado con Docker y listo en menos de 10 minutos.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Qué es HPSR Proxy Stack?
&lt;/h2&gt;

&lt;p&gt;Es un stack completo basado en Docker que combina las mejores herramientas open-source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Squid Proxy&lt;/strong&gt;: El servidor proxy HTTP/HTTPS más robusto y confiable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stunnel&lt;/strong&gt;: Túnel SSL/TLS para cifrado end-to-end con certificados válidos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Let's Encrypt&lt;/strong&gt;: Certificados SSL gratuitos reconocidos por todos los navegadores&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dante SOCKS5&lt;/strong&gt;: Servidor SOCKS5 opcional para casos de uso avanzados&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docker Compose&lt;/strong&gt;: Orquestación simple de todos los servicios&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Todo preconfigurado con scripts de instalación automatizados y listo para producción.&lt;/p&gt;

&lt;h2&gt;
  
  
  ¿Por Qué Necesitas tu Propio Proxy?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Privacidad y Control Total
&lt;/h3&gt;

&lt;p&gt;Los proxies comerciales registran y venden tu información. Con tu propio servidor, tú controlas 100% de tus datos, logs y políticas de acceso.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Evitar Restricciones y Censura
&lt;/h3&gt;

&lt;p&gt;Redes corporativas, universidades y algunos países bloquean sitios web. Un proxy HTTPS en puerto 443 con certificado SSL válido es prácticamente imposible de bloquear porque parece tráfico HTTPS normal.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Seguridad en Redes Públicas
&lt;/h3&gt;

&lt;p&gt;En cafeterías, aeropuertos y hoteles, tu tráfico viaja cifrado con TLS desde tu dispositivo hasta tu VPS, protegiéndote completamente de ataques man-in-the-middle.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. IP Estable para Desarrollo
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Web scraping sin límites de rate limiting&lt;/li&gt;
&lt;li&gt;Testing de APIs desde IP confiable&lt;/li&gt;
&lt;li&gt;Automatización sin bloqueos&lt;/li&gt;
&lt;li&gt;IP fija para whitelisting en servicios&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5. Costo-Beneficio Superior
&lt;/h3&gt;

&lt;p&gt;Por $100-200/mes tienes ancho de banda ilimitado, mientras que servicios comerciales cobran $1000-10000/mes con límites restrictivos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por Qué el Puerto 443 es Clave
&lt;/h2&gt;

&lt;p&gt;El puerto 443 es el &lt;strong&gt;estándar mundial para HTTPS&lt;/strong&gt;. Bloquearlo significaría:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ Sin acceso a banca online&lt;/li&gt;
&lt;li&gt;❌ Sin compras en Amazon&lt;/li&gt;
&lt;li&gt;❌ Sin Gmail o Office 365&lt;/li&gt;
&lt;li&gt;❌ Sin WhatsApp Web&lt;/li&gt;
&lt;li&gt;❌ Sin redes sociales&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Por eso tu proxy es &lt;strong&gt;imposible de detectar o bloquear&lt;/strong&gt; - aparece como tráfico HTTPS legítimo con certificado válido.&lt;/p&gt;

&lt;h2&gt;
  
  
  Casos de Uso Reales
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Para Desarrolladores
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Testing de APIs con IP estable&lt;/span&gt;
curl &lt;span class="nt"&gt;--proxy&lt;/span&gt; https://user:pass@proxy.tudominio.com:443 &lt;span class="se"&gt;\&lt;/span&gt;
     https://api.ejemplo.com/v1/endpoint

&lt;span class="c"&gt;# Web scraping con Python&lt;/span&gt;
import requests
proxies &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s1"&gt;'http'&lt;/span&gt;: &lt;span class="s1"&gt;'https://user:pass@proxy.tudominio.com:443'&lt;/span&gt;,
    &lt;span class="s1"&gt;'https'&lt;/span&gt;: &lt;span class="s1"&gt;'https://user:pass@proxy.tudominio.com:443'&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
response &lt;span class="o"&gt;=&lt;/span&gt; requests.get&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'https://ejemplo.com'&lt;/span&gt;, &lt;span class="nv"&gt;proxies&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;proxies&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Para Equipos Remotos
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Control centralizado del tráfico corporativo&lt;/li&gt;
&lt;li&gt;IP fija para servicios que requieren whitelist&lt;/li&gt;
&lt;li&gt;Auditoría de accesos (opcional)&lt;/li&gt;
&lt;li&gt;Sin licencias por usuario&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Para Freelancers y Nómadas Digitales
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Trabajar seguro desde cualquier WiFi público&lt;/li&gt;
&lt;li&gt;Acceder a recursos geo-restringidos&lt;/li&gt;
&lt;li&gt;Mantener la misma IP sin importar ubicación&lt;/li&gt;
&lt;li&gt;Protección contra espionaje en redes comprometidas&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Arquitectura Técnica
&lt;/h2&gt;

&lt;p&gt;HPSR Proxy Stack usa una arquitectura en capas para máxima seguridad:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────┐    HTTPS:443    ┌──────────┐    HTTP:3128    ┌───────┐
│  Navegador  │ ───────────────► │ Stunnel  │ ──────────────► │ Squid │ ──► Internet
│   Cliente   │  Certificado SSL  │   TLS    │    Internal    │ Proxy │
└─────────────┘    Let's Encrypt └──────────┘                 └───────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Flujo de conexión:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Cliente se conecta al puerto 443 (HTTPS estándar)&lt;/li&gt;
&lt;li&gt;Stunnel presenta certificado SSL válido de Let's Encrypt&lt;/li&gt;
&lt;li&gt;Stunnel descifra TLS y reenvía a Squid (interno)&lt;/li&gt;
&lt;li&gt;Squid valida credenciales HTTP Basic&lt;/li&gt;
&lt;li&gt;Squid procesa la petición y la envía a Internet&lt;/li&gt;
&lt;li&gt;Respuesta regresa cifrada al cliente&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Ventajas de esta arquitectura:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✅ Certificados SSL reconocidos universalmente&lt;/li&gt;
&lt;li&gt;✅ Puerto 443 estándar (imposible de bloquear)&lt;/li&gt;
&lt;li&gt;✅ Compatible con todos los navegadores nativamente&lt;/li&gt;
&lt;li&gt;✅ Sin necesidad de software cliente especial&lt;/li&gt;
&lt;li&gt;✅ Renovación automática de certificados cada 90 días&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Requisitos del Sistema
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Opción 1: VPS en la Nube (Recomendado)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Especificaciones mínimas:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CPU&lt;/strong&gt;: 1 vCore&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;RAM&lt;/strong&gt;: 512 MB (1 GB recomendado para mejor rendimiento)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Almacenamiento&lt;/strong&gt;: 10 GB SSD&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ancho de banda&lt;/strong&gt;: Idealmente ilimitado (mínimo 1TB/mes)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sistema operativo&lt;/strong&gt;: Ubuntu 22.04/24.04 LTS o Debian 11/12&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Puertos necesarios&lt;/strong&gt;: 80 (Let's Encrypt), 443 (proxy)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  IONOS.mx - Recomendación Especial
&lt;/h3&gt;

&lt;p&gt;Si estás en México o Latinoamérica, &lt;strong&gt;IONOS.mx&lt;/strong&gt; ofrece:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Servidores en México (menor latencia)&lt;/li&gt;
&lt;li&gt;Soporte técnico en español 24/7&lt;/li&gt;
&lt;li&gt;Facturación en pesos mexicanos con RFC&lt;/li&gt;
&lt;li&gt;Tráfico generoso incluido&lt;/li&gt;
&lt;li&gt;Panel de control en español&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://acn.ionos.mx/SHXz" rel="noopener noreferrer"&gt;Obtén tu VPS en IONOS.mx →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proveedores recomendados:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hetzner Cloud&lt;/strong&gt; - Desde €4.51/mes - 20TB tráfico incluido&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DigitalOcean&lt;/strong&gt; - Desde $6/mes - Interface simple&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vultr&lt;/strong&gt; - Desde $5/mes - 25+ ubicaciones globales&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Oracle Cloud&lt;/strong&gt; - Tier gratuito perpetuo disponible&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Opción 2: Homelab (Avanzado)
&lt;/h3&gt;

&lt;p&gt;Requisitos para servidor casero:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IP pública estática&lt;/strong&gt; o DDNS configurado&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Puertos 80 y 443&lt;/strong&gt; abiertos en router/firewall&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conexión estable&lt;/strong&gt; con UPS recomendado&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upload mínimo&lt;/strong&gt; 10 Mbps (50+ ideal)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uptime 99%+&lt;/strong&gt; para uso confiable&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Software Prerequisito
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Obligatorio antes de instalar:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Docker y Docker Compose&lt;/strong&gt; - &lt;a href="https://hopsersmerk.com/guia-completa-para-instalar-y-configurar-docker-en-ubuntu-24-04/" rel="noopener noreferrer"&gt;Sigue mi guía completa de Docker en Ubuntu&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dominio propio&lt;/strong&gt; - Desde $1/año (Namecheap, Cloudflare, Porkbun)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acceso root/sudo&lt;/strong&gt; al servidor vía SSH&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Instalación Completa Paso a Paso
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Paso 1: Preparar el Servidor
&lt;/h3&gt;

&lt;p&gt;Si no tienes Docker instalado, &lt;strong&gt;primero sigue mi &lt;a href="https://hopsersmerk.com/guia-completa-para-instalar-y-configurar-docker-en-ubuntu-24-04/" rel="noopener noreferrer"&gt;guía de Docker en Ubuntu 24.04&lt;/a&gt;&lt;/strong&gt;. Es prerequisito obligatorio.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paso 2: Configurar DNS
&lt;/h3&gt;

&lt;p&gt;En tu proveedor de dominios, crea un registro A:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tipo: A
Nombre: proxy (o cualquier subdominio)
Valor: IP_DE_TU_VPS
TTL: 300 (5 minutos para cambios rápidos)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Ejemplos de dominios válidos:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;proxy.tuempresa.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;secure.tudominio.net&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gateway.ejemplo.dev&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;vpn.tunombre.io&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Verifica que resuelve correctamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dig +short proxy.tudominio.com
&lt;span class="c"&gt;# Debe mostrar la IP de tu VPS&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Paso 3: Instalar HPSR Proxy Stack
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Clonar el repositorio&lt;/span&gt;
git clone https://github.com/hopsersmerk/hpsr-proxy-stack.git
&lt;span class="nb"&gt;cd &lt;/span&gt;hpsr-proxy-stack

&lt;span class="c"&gt;# Ejecutar script de configuración SSL&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;bash setup-ssl.sh

&lt;span class="c"&gt;# El script te pedirá:&lt;/span&gt;
&lt;span class="c"&gt;# 1. Tu dominio completo (ej: proxy.tudominio.com)&lt;/span&gt;
&lt;span class="c"&gt;# 2. Automáticamente:&lt;/span&gt;
&lt;span class="c"&gt;#    - Verificará DNS&lt;/span&gt;
&lt;span class="c"&gt;#    - Obtendrá certificado SSL de Let's Encrypt&lt;/span&gt;
&lt;span class="c"&gt;#    - Configurará stunnel con TLS 1.2+&lt;/span&gt;
&lt;span class="c"&gt;#    - Creará credenciales por defecto&lt;/span&gt;
&lt;span class="c"&gt;#    - Configurará renovación automática&lt;/span&gt;

&lt;span class="c"&gt;# Iniciar todos los servicios&lt;/span&gt;
docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;

&lt;span class="c"&gt;# Verificar que todo está corriendo&lt;/span&gt;
docker ps
&lt;span class="c"&gt;# Debes ver 4 contenedores: stunnel-https, squid-proxy, socks5-proxy, stunnel-socks&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Paso 4: Verificar Funcionamiento
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Test desde el servidor&lt;/span&gt;
curl &lt;span class="nt"&gt;--proxy&lt;/span&gt; https://proxyuser:changeme123@proxy.tudominio.com:443 &lt;span class="se"&gt;\&lt;/span&gt;
     https://ifconfig.me

&lt;span class="c"&gt;# Respuesta esperada: la IP de tu VPS&lt;/span&gt;

&lt;span class="c"&gt;# Test con headers HTTP&lt;/span&gt;
curl &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="nt"&gt;--proxy&lt;/span&gt; https://proxyuser:changeme123@proxy.tudominio.com:443 &lt;span class="se"&gt;\&lt;/span&gt;
     https://httpbin.org/headers
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Paso 5: Cambiar Credenciales (IMPORTANTE)
&lt;/h3&gt;

&lt;p&gt;Las credenciales por defecto son &lt;code&gt;proxyuser:changeme123&lt;/code&gt;. &lt;strong&gt;Cámbialas inmediatamente:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Método automatizado (recomendado)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;bash setup-squid-auth.sh
&lt;span class="c"&gt;# Te pedirá nuevo usuario y contraseña&lt;/span&gt;

&lt;span class="c"&gt;# Reiniciar servicios con nuevas credenciales&lt;/span&gt;
docker compose restart squid-proxy stunnel-https
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Configuración en Navegadores y Aplicaciones
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Chrome/Edge con Proxy SwitchyOmega (Recomendado)
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Instalar &lt;a href="https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif" rel="noopener noreferrer"&gt;Proxy SwitchyOmega&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click en el ícono → &lt;strong&gt;Options&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New profile&lt;/strong&gt; → Nombre: &lt;code&gt;Mi Proxy&lt;/code&gt; → &lt;strong&gt;Proxy Profile&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Configuración del proxy:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protocol&lt;/strong&gt;: &lt;code&gt;HTTPS&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Server&lt;/strong&gt;: &lt;code&gt;proxy.tudominio.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Port&lt;/strong&gt;: &lt;code&gt;443&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;En la sección &lt;strong&gt;Authentication&lt;/strong&gt;:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Username&lt;/strong&gt;: &lt;code&gt;tuusuario&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Password&lt;/strong&gt;: &lt;code&gt;tucontraseña&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Apply changes&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Activar desde el ícono de la extensión&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Firefox con FoxyProxy
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Instalar &lt;a href="https://addons.mozilla.org/firefox/addon/foxyproxy-standard/" rel="noopener noreferrer"&gt;FoxyProxy Standard&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click en el ícono → &lt;strong&gt;Options&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Add&lt;/strong&gt; → Manual Proxy Configuration:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Title&lt;/strong&gt;: &lt;code&gt;Mi Proxy Seguro&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: &lt;code&gt;HTTP&lt;/code&gt; (Firefox maneja HTTPS como HTTP)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hostname&lt;/strong&gt;: &lt;code&gt;proxy.tudominio.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Port&lt;/strong&gt;: &lt;code&gt;443&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Username&lt;/strong&gt;: &lt;code&gt;tuusuario&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Password&lt;/strong&gt;: &lt;code&gt;tucontraseña&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save&lt;/strong&gt; y activar el perfil&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Configuración para Terminal/CLI
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Variables de entorno (Linux/Mac):
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Agregar a ~/.bashrc o ~/.zshrc&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;HTTP_PROXY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://usuario:contraseña@proxy.tudominio.com:443"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;HTTPS_PROXY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://usuario:contraseña@proxy.tudominio.com:443"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;NO_PROXY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"localhost,127.0.0.1"&lt;/span&gt;

&lt;span class="c"&gt;# Aplicar cambios&lt;/span&gt;
&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Para Git:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; http.proxy https://usuario:contraseña@proxy.tudominio.com:443
git config &lt;span class="nt"&gt;--global&lt;/span&gt; https.proxy https://usuario:contraseña@proxy.tudominio.com:443

&lt;span class="c"&gt;# Para desactivar&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; &lt;span class="nt"&gt;--unset&lt;/span&gt; http.proxy
git config &lt;span class="nt"&gt;--global&lt;/span&gt; &lt;span class="nt"&gt;--unset&lt;/span&gt; https.proxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Para Docker:
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Crear/editar ~/.docker/config.json&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"proxies"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="s2"&gt;"default"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="s2"&gt;"httpProxy"&lt;/span&gt;: &lt;span class="s2"&gt;"https://usuario:contraseña@proxy.tudominio.com:443"&lt;/span&gt;,
      &lt;span class="s2"&gt;"httpsProxy"&lt;/span&gt;: &lt;span class="s2"&gt;"https://usuario:contraseña@proxy.tudominio.com:443"&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Uso de SOCKS5 (Opcional)
&lt;/h3&gt;

&lt;p&gt;HPSR Proxy Stack también incluye un servidor SOCKS5 (Dante). Para usarlo con túnel SSH:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Crear túnel SSH (dejar terminal abierta)&lt;/span&gt;
ssh &lt;span class="nt"&gt;-N&lt;/span&gt; &lt;span class="nt"&gt;-L&lt;/span&gt; 1080:localhost:1080 usuario@proxy.tudominio.com

&lt;span class="c"&gt;# En otra terminal, probar SOCKS5&lt;/span&gt;
curl &lt;span class="nt"&gt;--proxy&lt;/span&gt; socks5h://proxyuser:changeme123@localhost:1080 https://ifconfig.me
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Configurar en navegador:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tipo&lt;/strong&gt;: SOCKS5&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Host&lt;/strong&gt;: localhost&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Puerto&lt;/strong&gt;: 1080&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Usuario&lt;/strong&gt;: proxyuser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contraseña&lt;/strong&gt;: changeme123&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Solución de Problemas Comunes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Error 407 - Proxy Authentication Required
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Credenciales incorrectas. Solución:&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;bash setup-squid-auth.sh  &lt;span class="c"&gt;# Recrear credenciales&lt;/span&gt;
docker compose restart squid-proxy stunnel-https
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  El proxy no responde
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Verificar firewall&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw status
&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw allow 443/tcp
&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw allow 80/tcp  &lt;span class="c"&gt;# Necesario para Let's Encrypt&lt;/span&gt;

&lt;span class="c"&gt;# 2. Verificar que el dominio resuelve&lt;/span&gt;
dig +short proxy.tudominio.com

&lt;span class="c"&gt;# 3. Reiniciar servicios&lt;/span&gt;
docker compose down
docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;

&lt;span class="c"&gt;# 4. Ver logs para diagnóstico&lt;/span&gt;
docker compose logs &lt;span class="nt"&gt;-f&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Error de certificado SSL
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Verificar certificado&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;certbot certificates

&lt;span class="c"&gt;# Si expiró, renovar manualmente&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;certbot renew
docker compose restart stunnel-https stunnel-socks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Verificar logs específicos
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Logs de Stunnel (maneja SSL)&lt;/span&gt;
docker logs stunnel-https

&lt;span class="c"&gt;# Logs de Squid (proxy HTTP)&lt;/span&gt;
docker logs squid-proxy

&lt;span class="c"&gt;# Logs en tiempo real&lt;/span&gt;
docker compose logs &lt;span class="nt"&gt;-f&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Preguntas Frecuentes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ¿Es legal tener mi propio proxy?
&lt;/h3&gt;

&lt;p&gt;Absolutamente sí. Es tu servidor, tu conexión. Úsalo responsablemente y respeta las leyes locales y términos de servicio de los sitios web.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Cuántos usuarios simultáneos soporta?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;VPS básico ($5/mes): 5-10 usuarios navegación normal&lt;/li&gt;
&lt;li&gt;VPS 2GB RAM: 20-30 usuarios&lt;/li&gt;
&lt;li&gt;VPS 4GB+ RAM: 50+ usuarios&lt;/li&gt;
&lt;li&gt;El límite real es el ancho de banda&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ¿Es más rápido que VPN?
&lt;/h3&gt;

&lt;p&gt;Sí, porque:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No hay overhead de cifrado VPN (solo TLS estándar)&lt;/li&gt;
&lt;li&gt;IP dedicada sin compartir recursos&lt;/li&gt;
&lt;li&gt;Puedes elegir VPS cerca de tu ubicación&lt;/li&gt;
&lt;li&gt;Sin throttling artificial&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ¿Funciona en móviles?
&lt;/h3&gt;

&lt;p&gt;Sí, compatible con:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;iOS&lt;/strong&gt;: Apps como Shadowrocket, Surge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Android&lt;/strong&gt;: ProxyDroid, Drony, configuración nativa&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Windows/Mac/Linux&lt;/strong&gt;: Configuración de sistema&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ¿Qué pasa si bloquean el puerto 443?
&lt;/h3&gt;

&lt;p&gt;Prácticamente imposible. Bloquear 443 = no más Internet seguro. Si sucede (muy raro), puedes cambiar el puerto en &lt;code&gt;docker-compose.yml&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Se renueva solo el certificado SSL?
&lt;/h3&gt;

&lt;p&gt;Sí, el script configura un cron job que renueva automáticamente cada 60 días y reinicia los servicios.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;HPSR Proxy Stack te da control total sobre tu tráfico web con seguridad empresarial por una fracción del costo de servicios comerciales. Con certificados SSL válidos, cifrado TLS 1.2+, y configuración automatizada, es la solución perfecta para quien valora su privacidad y necesita un proxy confiable.&lt;/p&gt;

&lt;p&gt;Lo mejor: es &lt;strong&gt;100% open-source&lt;/strong&gt;, sin telemetría, sin límites artificiales, y completamente bajo tu control.&lt;/p&gt;

&lt;h3&gt;
  
  
  ¿Necesitas Ayuda Profesional?
&lt;/h3&gt;

&lt;p&gt;Si requieres asistencia &lt;strong&gt;&lt;a href="https://hopsersmerk.com/agenda-tiempo-conmigo/" rel="noopener noreferrer"&gt;Agenda una consultoría conmigo →&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Recursos
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;📦 &lt;strong&gt;&lt;a href="https://github.com/hopsersmerk/hpsr-proxy-stack" rel="noopener noreferrer"&gt;Repositorio en GitHub&lt;/a&gt;&lt;/strong&gt; - Código fuente y actualizaciones&lt;/li&gt;
&lt;li&gt;🐳 &lt;strong&gt;&lt;a href="https://hopsersmerk.com/guia-completa-para-instalar-y-configurar-docker-en-ubuntu-24-04/" rel="noopener noreferrer"&gt;Guía de Docker&lt;/a&gt;&lt;/strong&gt; - Prerequisito necesario&lt;/li&gt;
&lt;li&gt;🐛 &lt;strong&gt;&lt;a href="https://github.com/hopsersmerk/hpsr-proxy-stack/issues" rel="noopener noreferrer"&gt;Reportar Issues&lt;/a&gt;&lt;/strong&gt; - Bugs y mejoras&lt;/li&gt;
&lt;li&gt;⭐ &lt;strong&gt;&lt;a href="https://github.com/hopsersmerk/hpsr-proxy-stack" rel="noopener noreferrer"&gt;Dale estrella en GitHub&lt;/a&gt;&lt;/strong&gt; - Apoya el proyecto&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si esta guía te fue útil, compártela con la comunidad. Tu apoyo mantiene el proyecto activo y mejorado.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cybersecurity</category>
      <category>proxy</category>
      <category>docker</category>
    </item>
    <item>
      <title>.NET: La Plataforma Ideal para Microservicios en 2025</title>
      <dc:creator>Dante C. Lobato</dc:creator>
      <pubDate>Thu, 07 Aug 2025 22:25:36 +0000</pubDate>
      <link>https://dev.to/hopsersmerk/net-la-plataforma-ideal-para-microservicios-en-2025-115n</link>
      <guid>https://dev.to/hopsersmerk/net-la-plataforma-ideal-para-microservicios-en-2025-115n</guid>
      <description>&lt;h2&gt;
  
  
  El Renacimiento de .NET
&lt;/h2&gt;

&lt;p&gt;Si todavía piensas que .NET es pesado, lento y exclusivo de Windows, es hora de actualizar tu perspectiva. La transformación que ha experimentado .NET en los últimos años no solo lo ha convertido en una opción viable para microservicios, sino en una de las mejores alternativas disponibles en el mercado actual.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adiós al Pasado: .NET Core y el Nuevo Paradigma de Rendimiento
&lt;/h2&gt;

&lt;h3&gt;
  
  
  La Evolución que Cambió Todo
&lt;/h3&gt;

&lt;p&gt;El punto de inflexión llegó con .NET Core en 2016, y se consolidó con .NET 5+ (ahora simplemente ".NET"). Microsoft reescribió completamente la plataforma desde cero con tres objetivos claros:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Multiplataforma real&lt;/strong&gt;: Corre nativamente en Linux, macOS y Windows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimización extrema&lt;/strong&gt;: Diseñado para contenedores y la nube&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open Source&lt;/strong&gt;: Desarrollo transparente con contribuciones de la comunidad&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Los Números No Mienten
&lt;/h3&gt;

&lt;p&gt;Los benchmarks de &lt;a href="https://www.techempower.com/benchmarks/" rel="noopener noreferrer"&gt;TechEmpower&lt;/a&gt; (una de las pruebas de rendimiento más respetadas en la industria) consistentemente posicionan a ASP.NET Core en el &lt;strong&gt;top 10 de frameworks más rápidos del mundo&lt;/strong&gt;, superando a la mayoría de sus competidores directos:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Requests por segundo&lt;/strong&gt;: ASP.NET Core maneja hasta 7+ millones de requests/segundo en pruebas de plaintext&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Latencia&lt;/strong&gt;: Consistentemente menor que Java Spring Boot y órdenes de magnitud mejor que Node.js&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uso de memoria&lt;/strong&gt;: Optimizaciones en .NET 8 reducen el consumo hasta un 40% comparado con versiones anteriores&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  .NET vs Todos los demas
&lt;/h2&gt;

&lt;h3&gt;
  
  
  .NET vs Java
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Ventajas de .NET sobre Java:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Menor ceremonia&lt;/strong&gt;: Menos boilerplate code. Con minimal APIs en .NET 8, puedes crear un microservicio completo en menos de 10 líneas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mejor gestión de memoria&lt;/strong&gt;: El Garbage Collector de .NET está más optimizado para cargas de trabajo modernas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Async/Await nativo&lt;/strong&gt;: Programación asíncrona más elegante y eficiente que el modelo de Java&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tiempo de inicio más rápido&lt;/strong&gt;: Con Native AOT, .NET puede compilar a código nativo con tiempos de inicio de ~10ms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Ejemplo práctico:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Microservicio completo en .NET 8&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;WebApplication&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;CreateBuilder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Build&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapGet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/api/products"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ProductDb&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; 
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Products&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ToListAsync&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Intenta hacer algo equivalente en Spring Boot con la misma simplicidad.&lt;/p&gt;

&lt;h3&gt;
  
  
  .NET vs Node.js (JavaScript/TypeScript)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Donde .NET supera a Node.js:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rendimiento crudo&lt;/strong&gt;: .NET es 2-3x más rápido en operaciones CPU-intensivas&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type Safety real&lt;/strong&gt;: C# ofrece un sistema de tipos robusto desde el día uno&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multithreading verdadero&lt;/strong&gt;: .NET maneja threads reales, no solo el event loop de Node&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ecosistema empresarial maduro&lt;/strong&gt;: Herramientas de debugging, profiling y monitoring superiores&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Menor consumo de memoria&lt;/strong&gt;: Un microservicio .NET típico usa 50-70% menos RAM que su equivalente en Node&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  .NET vs Go
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Áreas donde .NET compite fuertemente con Go:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Productividad del desarrollador&lt;/strong&gt;: C# es más expresivo y tiene mejor tooling&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ecosistema más rico&lt;/strong&gt;: NuGet tiene librerías maduras para prácticamente todo&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LINQ&lt;/strong&gt;: Manipulación de datos que Go simplemente no puede igualar&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integración con servicios cloud&lt;/strong&gt;: Azure SDK es excepcional, y AWS/GCP SDKs son de primera clase&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Con Native AOT, .NET ahora ofrece:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Binarios self-contained de ~10-30MB&lt;/li&gt;
&lt;li&gt;Tiempos de inicio sub-segundo&lt;/li&gt;
&lt;li&gt;Sin dependencia del runtime (similar a Go)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  .NET vs Python
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Superioridad clara de .NET:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rendimiento&lt;/strong&gt;: .NET es 10-50x más rápido que Python en la mayoría de escenarios&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Concurrencia real&lt;/strong&gt;: Threading y async/await verdaderos vs el GIL de Python&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type Safety&lt;/strong&gt;: Detección de errores en tiempo de compilación&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Escalabilidad&lt;/strong&gt;: Python simplemente no puede manejar la carga que .NET soporta&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Python es excelente para prototipos y data science, pero para microservicios en producción, .NET es objetivamente superior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Características Killer de .NET para Microservicios
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. gRPC de Primera Clase
&lt;/h3&gt;

&lt;p&gt;.NET tiene el mejor soporte para gRPC de cualquier plataforma mainstream:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Servicio gRPC en 3 líneas&lt;/span&gt;
&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;MapGrpcService&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;GreeterService&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapGet&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"gRPC service running"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Minimal APIs
&lt;/h3&gt;

&lt;p&gt;Crea APIs RESTful con mínimo código y máximo rendimiento:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapPost&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/orders"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Order&lt;/span&gt; &lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;OrderService&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;CreateAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Results&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Created&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;$"/orders/&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Native AOT (Ahead-of-Time Compilation)
&lt;/h3&gt;

&lt;p&gt;Compila tu microservicio a código nativo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Binarios de 10-30MB&lt;/li&gt;
&lt;li&gt;Inicio en &amp;lt;50ms&lt;/li&gt;
&lt;li&gt;Sin JIT, sin runtime&lt;/li&gt;
&lt;li&gt;Perfecto para funciones serverless y contenedores&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Contenedores Optimizados
&lt;/h3&gt;

&lt;p&gt;Imágenes Docker minúsculas con .NET 8:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; mcr.microsoft.com/dotnet/nightly/runtime-deps:8.0-alpine&lt;/span&gt;
&lt;span class="k"&gt;COPY&lt;/span&gt;&lt;span class="s"&gt; app /app&lt;/span&gt;
&lt;span class="k"&gt;ENTRYPOINT&lt;/span&gt;&lt;span class="s"&gt; ["/app/myservice"]&lt;/span&gt;
&lt;span class="c"&gt;# Imagen final: ~15MB&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5. Observabilidad Integrada
&lt;/h3&gt;

&lt;p&gt;OpenTelemetry, métricas, logs estructurados y health checks vienen incluidos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddHealthChecks&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddCheck&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;DatabaseHealthCheck&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;&lt;span class="s"&gt;"database"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;MapHealthChecks&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/health"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  El Ecosistema Cloud-Native de .NET
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Kubernetes y .NET: Una Combinación Perfecta
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;KEDA&lt;/strong&gt;: Auto-scaling basado en eventos funciona perfectamente con .NET&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dapr&lt;/strong&gt;: Runtime para microservicios diseñado con .NET en mente&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Service Mesh&lt;/strong&gt;: Integración seamless con Istio, Linkerd&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Helm Charts&lt;/strong&gt;: Templates optimizados para aplicaciones .NET&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Herramientas Específicas para Microservicios
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MassTransit/NServiceBus&lt;/strong&gt;: Message brokers empresariales&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Polly&lt;/strong&gt;: Resiliencia y manejo de fallos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ocelot&lt;/strong&gt;: API Gateway nativo de .NET&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orleans&lt;/strong&gt;: Framework de actores para sistemas distribuidos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YARP&lt;/strong&gt;: Reverse proxy de alto rendimiento&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Casos de Éxito Reales
&lt;/h2&gt;

&lt;p&gt;Empresas que han migrado a microservicios .NET con resultados espectaculares:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Stack Overflow&lt;/strong&gt;: Maneja 5.9 mil millones de page views al año con solo 9 servidores web&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alibaba&lt;/strong&gt;: Procesa millones de transacciones con .NET Core&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UPS&lt;/strong&gt;: Modernizó su infraestructura crítica con microservicios .NET&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Siemens&lt;/strong&gt;: Redujo costos de infraestructura en 40% migrando a .NET Core&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Desarrollo Productivo: La Ventaja Oculta
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Hot Reload
&lt;/h3&gt;

&lt;p&gt;Modifica tu código mientras el servicio está corriendo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet watch run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Herramientas de Primera Clase
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Visual Studio/VS Code&lt;/strong&gt;: IDEs gratuitos y poderosos&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rider&lt;/strong&gt;: Para los fans de JetBrains&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CLI potente&lt;/strong&gt;: Todo desde la terminal si lo prefieres&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Testing Integrado
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Fact&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="n"&gt;Task&lt;/span&gt; &lt;span class="nf"&gt;GetProducts_ReturnsOkResult&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;using&lt;/span&gt; &lt;span class="nn"&gt;var&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="n"&gt;WebApplicationFactory&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;Program&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;CreateClient&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;GetAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/api/products"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StatusCode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Should&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;Be&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;HttpStatusCode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;OK&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Por Qué .NET en 2025
&lt;/h2&gt;

&lt;h3&gt;
  
  
  La Realidad Actual
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;.NET es más rápido&lt;/strong&gt; que Java Spring, Node.js y Python para microservicios&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Consume menos memoria&lt;/strong&gt; que prácticamente todas las alternativas mainstream&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inicia más rápido&lt;/strong&gt; con Native AOT que incluso aplicaciones Go&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Es verdaderamente multiplataforma&lt;/strong&gt; y cloud-native&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tiene mejor tooling&lt;/strong&gt; y experiencia de desarrollo&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  El Único "Pero"
&lt;/h3&gt;

&lt;p&gt;Si tu equipo ya domina Go y necesitas lo último en simplicidad minimalista, Go sigue siendo una opción válida. Pero si valoras productividad, ecosistema maduro y rendimiento de clase mundial, .NET es superior.&lt;/p&gt;

&lt;h2&gt;
  
  
  El Momento es Ahora
&lt;/h2&gt;

&lt;p&gt;Los días de .NET Framework pesado y exclusivo de Windows quedaron en el pasado. El .NET moderno es:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ligero&lt;/strong&gt;: Contenedores de 15MB, microservicios que usan 20MB de RAM&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Rápido&lt;/strong&gt;: Top 10 en benchmarks globales de rendimiento&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Moderno&lt;/strong&gt;: Cloud-native, contenedores, Kubernetes, serverless&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Productivo&lt;/strong&gt;: Menos código, mejor tooling, desarrollo más rápido&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gratuito y Open Source&lt;/strong&gt;: Sin costos de licencia, desarrollo transparente&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si estás evaluando tecnologías para tu próxima arquitectura de microservicios, debes a tu equipo y a tu empresa considerar seriamente .NET. Los números, las características y los casos de éxito hablan por sí mismos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La pregunta no es "¿Por qué .NET?"&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;La pregunta es "¿Por qué NO .NET?"&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;¿Listo para comenzar? Descarga .NET 8 hoy mismo y construye tu primer microservicio en minutos. Tu infraestructura (y tu billetera) te lo agradecerán.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>docker</category>
      <category>programming</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Guía Completa para Instalar y Configurar Docker en Ubuntu 24.04</title>
      <dc:creator>Dante C. Lobato</dc:creator>
      <pubDate>Sun, 23 Feb 2025 17:14:51 +0000</pubDate>
      <link>https://dev.to/hopsersmerk/guia-completa-para-instalar-y-configurar-docker-en-ubuntu-2404-5fm7</link>
      <guid>https://dev.to/hopsersmerk/guia-completa-para-instalar-y-configurar-docker-en-ubuntu-2404-5fm7</guid>
      <description>&lt;p&gt;Docker es una plataforma de contenedorización que permite empaquetar y distribuir aplicaciones junto con sus dependencias en entornos aislados. Este enfoque garantiza la portabilidad y escalabilidad de los servicios, facilitando el despliegue en distintos sistemas operativos y arquitecturas sin incurrir en problemas de compatibilidad.&lt;/p&gt;

&lt;p&gt;Este documento detalla un proceso meticuloso de instalación de Docker en Ubuntu 24.04, optimizado para entornos de desarrollo y producción.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 1: Actualización del Sistema y Dependencias Necesarias
&lt;/h2&gt;

&lt;p&gt;Antes de proceder con la instalación de Docker, es fundamental asegurarse de que el sistema operativo está completamente actualizado. Además, se requieren ciertos paquetes esenciales que facilitarán la autenticación y la gestión de paquetes durante la instalación.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade -y

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install -y ca-certificates curl gnupg

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Estos paquetes incluyen herramientas críticas para descargar e instalar software de fuentes seguras y verificadas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 2: Configuración del Almacén de Claves GPG
&lt;/h2&gt;

&lt;p&gt;Docker emplea una firma digital para garantizar la integridad y autenticidad de sus paquetes. Para ello, es necesario configurar un directorio específico donde almacenar la clave GPG.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo install -m 0755 -d /etc/apt/keyrings

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este paso protege las claves contra accesos no autorizados y asegura su correcta utilización.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 3: Descarga y Configuración de la Clave GPG
&lt;/h2&gt;

&lt;p&gt;El siguiente comando descarga la clave de firma digital de Docker, la convierte al formato adecuado y la almacena en el directorio configurado previamente.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -fsSL &amp;lt;https://download.docker.com/linux/ubuntu/gpg&amp;gt; | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Paso 4: Ajuste de Permisos para la Clave
&lt;/h2&gt;

&lt;p&gt;Para permitir el acceso a la clave durante la instalación y futuras actualizaciones, es necesario otorgarle permisos de lectura.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo chmod a+r /etc/apt/keyrings/docker.gpg

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este ajuste garantiza que cualquier proceso del sistema pueda acceder a la clave cuando sea necesario.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 5: Configuración del Repositorio Oficial de Docker
&lt;/h2&gt;

&lt;p&gt;Para obtener las versiones más recientes y estables de Docker, se debe añadir su repositorio oficial a la lista de fuentes de paquetes de Ubuntu.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] &amp;lt;https://download.docker.com/linux/ubuntu&amp;gt; $(. /etc/os-release &amp;amp;&amp;amp; echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Paso 6: Actualización del Índice de Paquetes
&lt;/h2&gt;

&lt;p&gt;Tras agregar el repositorio de Docker, es necesario actualizar el índice de paquetes del sistema para que los cambios surtan efecto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get update

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Paso 7: Instalación de Docker y Componentes Relacionados
&lt;/h2&gt;

&lt;p&gt;La instalación de Docker implica descargar e instalar múltiples paquetes esenciales para su funcionamiento. Esto incluye el motor de Docker, herramientas de gestión de contenedores y soporte para Docker Compose.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Paso 8: Inicialización y Configuración del Servicio Docker
&lt;/h2&gt;

&lt;p&gt;Una vez instalado, Docker no se inicia automáticamente. Es necesario activarlo y configurar su ejecución automática en cada arranque del sistema.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl start docker

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para verificar que el servicio está corriendo correctamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl status docker

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para garantizar que Docker se inicie en cada reinicio del sistema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl enable docker

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Paso 9: Validación de la Instalación de Docker
&lt;/h2&gt;

&lt;p&gt;Para comprobar que Docker está correctamente instalado y operativo, se recomienda ejecutar un contenedor de prueba. Este comando descargará una imagen básica y mostrará un mensaje de confirmación si todo está en orden.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker run hello-world

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Adicionalmente, para verificar qué contenedores están en ejecución en el sistema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo docker ps

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si la instalación se ha realizado correctamente, el mensaje de confirmación indicará que Docker está listo para ser utilizado.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paso 10: Configuración de Permisos para Uso sin &lt;code&gt;sudo&lt;/code&gt; (Recomendado)
&lt;/h2&gt;

&lt;p&gt;Por defecto, los comandos de Docker requieren permisos administrativos. Para permitir su uso sin necesidad de &lt;code&gt;sudo&lt;/code&gt;, es posible añadir el usuario actual al grupo de Docker.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo usermod -aG docker $USER

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tras realizar este cambio, se recomienda cerrar sesión y volver a iniciarla para aplicar la nueva configuración. Como alternativa, se puede ejecutar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;newgrp docker

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esta configuración facilita el uso de Docker en entornos de desarrollo sin necesidad de conceder permisos de superusuario de manera constante.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Siguiendo estos pasos, Docker quedará completamente configurado y operativo en Ubuntu 24.04. Gracias a su capacidad de aislamiento y despliegue eficiente, se convierte en una herramienta fundamental para desarrolladores y administradores de sistemas que buscan optimizar el proceso de implementación y gestión de aplicaciones en entornos escalables. ¡Empieza a construir tu infraestructura con Docker hoy mismo!&lt;/p&gt;

</description>
      <category>docker</category>
      <category>ubuntu</category>
    </item>
    <item>
      <title>Guía Completa: Instalación y Configuración de NGINX en Ubuntu 24.04</title>
      <dc:creator>Dante C. Lobato</dc:creator>
      <pubDate>Thu, 13 Feb 2025 21:39:17 +0000</pubDate>
      <link>https://dev.to/hopsersmerk/guia-completa-instalacion-y-configuracion-de-nginx-en-ubuntu-2404-3i9k</link>
      <guid>https://dev.to/hopsersmerk/guia-completa-instalacion-y-configuracion-de-nginx-en-ubuntu-2404-3i9k</guid>
      <description>&lt;p&gt;NGINX es un servidor web y proxy inverso ampliamente utilizado debido a su arquitectura eficiente y su capacidad para gestionar múltiples conexiones simultáneamente con un bajo consumo de recursos. Es una alternativa sólida a servidores tradicionales como Apache, especialmente en entornos que requieren alto rendimiento y escalabilidad.&lt;/p&gt;

&lt;p&gt;Para desarrolladores que trabajan con &lt;strong&gt;C# y .NET&lt;/strong&gt;, NGINX es una solución ideal para la implementación de aplicaciones ASP.NET Core en Linux. Su capacidad para manejar solicitudes HTTP, realizar balanceo de carga y optimizar caché, además de su compatibilidad con TLS/SSL, lo convierten en una opción robusta para entornos de producción.&lt;/p&gt;




&lt;h2&gt;
  
  
  Comparación entre NGINX y Apache
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Característica&lt;/th&gt;
&lt;th&gt;NGINX&lt;/th&gt;
&lt;th&gt;Apache&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Modelo de Procesamiento&lt;/td&gt;
&lt;td&gt;Basado en eventos (asíncrono)&lt;/td&gt;
&lt;td&gt;Basado en procesos (hilos)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rendimiento&lt;/td&gt;
&lt;td&gt;Óptimo para múltiples conexiones concurrentes&lt;/td&gt;
&lt;td&gt;Menor rendimiento en tráfico alto&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uso de memoria&lt;/td&gt;
&lt;td&gt;Bajo&lt;/td&gt;
&lt;td&gt;Alto&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Soporte para .NET&lt;/td&gt;
&lt;td&gt;Excelente como proxy inverso para ASP.NET Core&lt;/td&gt;
&lt;td&gt;Requiere configuración adicional&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuración&lt;/td&gt;
&lt;td&gt;Modular y flexible&lt;/td&gt;
&lt;td&gt;Más convencional, basada en archivos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Balanceo de carga&lt;/td&gt;
&lt;td&gt;Integrado&lt;/td&gt;
&lt;td&gt;Requiere módulos externos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Seguridad&lt;/td&gt;
&lt;td&gt;Mayor robustez contra ataques DDoS&lt;/td&gt;
&lt;td&gt;Menos eficiente en mitigación&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Soporte HTTP/3&lt;/td&gt;
&lt;td&gt;Nativo&lt;/td&gt;
&lt;td&gt;Requiere módulos adicionales&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;NGINX es la opción ideal para entornos de alto tráfico y despliegues de aplicaciones modernas en Linux. En esta guía, exploraremos su instalación y configuración en &lt;strong&gt;Ubuntu 24.04&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Requisitos Previos
&lt;/h2&gt;

&lt;p&gt;Antes de proceder, verifica lo siguiente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ubuntu 24.04&lt;/strong&gt; instalado.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Privilegios de sudo&lt;/strong&gt; para ejecutar comandos administrativos.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conexión a Internet&lt;/strong&gt; para descargar los paquetes requeridos.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Paso 1: Actualización del Sistema
&lt;/h2&gt;

&lt;p&gt;Antes de instalar cualquier software, es recomendable actualizar el sistema. Ejecuta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para eliminar paquetes obsoletos y liberar espacio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt autoremove &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Paso 2: Instalación de NGINX
&lt;/h2&gt;

&lt;p&gt;NGINX está disponible en los repositorios oficiales de Ubuntu. Para instalarlo, usa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;nginx &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para verificar la versión instalada:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nginx &lt;span class="nt"&gt;-v&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Paso 3: Iniciar y Habilitar NGINX
&lt;/h2&gt;

&lt;p&gt;Para iniciar el servicio:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start nginx

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para que se ejecute automáticamente al iniciar el sistema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;nginx

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verifica su estado con:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status nginx

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Paso 4: Configuración del Firewall
&lt;/h2&gt;

&lt;p&gt;Si &lt;strong&gt;UFW&lt;/strong&gt; está habilitado, permite el tráfico web con:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw allow &lt;span class="s1"&gt;'Nginx Full'&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para verificar que se aplicó correctamente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;ufw status

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Paso 5: Validación de la Instalación
&lt;/h2&gt;

&lt;p&gt;Para confirmar que NGINX está funcionando, abre un navegador y accede a:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://tu_direccion_ip

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si estás trabajando en una PC local o en un entorno de desarrollo, usa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://localhost

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Si todo está configurado correctamente, verás la página de bienvenida de NGINX.&lt;/p&gt;

&lt;p&gt;Para conocer la dirección IP del servidor, usa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ip a | &lt;span class="nb"&gt;grep &lt;/span&gt;inet

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para verificar logs y detectar posibles errores:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;journalctl &lt;span class="nt"&gt;-u&lt;/span&gt; nginx &lt;span class="nt"&gt;--since&lt;/span&gt; &lt;span class="s2"&gt;"1 hour ago"&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Paso 6: Administración de NGINX
&lt;/h2&gt;

&lt;p&gt;Algunos comandos útiles:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reiniciar NGINX:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart nginx

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Recargar configuración sin interrumpir conexiones:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl reload nginx

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Detener el servicio:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl stop nginx

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Ver logs de errores:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo tail&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; /var/log/nginx/error.log

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Configuración Avanzada
&lt;/h2&gt;

&lt;p&gt;Opciones adicionales para mejorar el rendimiento y seguridad de NGINX:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Servidores virtuales:&lt;/strong&gt; Para alojar múltiples aplicaciones en un solo servidor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Habilitar HTTPS con Let's Encrypt:&lt;/strong&gt; Protección con cifrado SSL/TLS.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimización del rendimiento:&lt;/strong&gt; Ajustes en &lt;code&gt;/etc/nginx/nginx.conf&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implementación de proxy inverso:&lt;/strong&gt; Distribución de tráfico a backend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Limitación de tráfico:&lt;/strong&gt; Medidas contra ataques DDoS y fuerza bruta.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para configuraciones más avanzadas, consulta la &lt;a href="https://nginx.org/en/docs/" rel="noopener noreferrer"&gt;documentación oficial de NGINX&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Has instalado y configurado &lt;strong&gt;NGINX en Ubuntu 24.04&lt;/strong&gt; con éxito. Ahora puedes utilizarlo como servidor web, proxy inverso o balanceador de carga según tus necesidades.&lt;/p&gt;

&lt;p&gt;NGINX es una herramienta versátil con una comunidad activa de soporte, ideal para entornos de producción exigentes. Con una configuración adecuada, puedes maximizar su rendimiento y seguridad.&lt;/p&gt;

</description>
      <category>nginx</category>
      <category>ubuntu</category>
      <category>linux</category>
    </item>
    <item>
      <title>Integración de Tailwind CSS 4.0 en .NET 9: Guía práctica para proyectos MVC</title>
      <dc:creator>Dante C. Lobato</dc:creator>
      <pubDate>Mon, 10 Feb 2025 03:38:06 +0000</pubDate>
      <link>https://dev.to/hopsersmerk/integracion-de-tailwind-css-40-en-net-9-guia-practica-para-proyectos-mvc-2gaf</link>
      <guid>https://dev.to/hopsersmerk/integracion-de-tailwind-css-40-en-net-9-guia-practica-para-proyectos-mvc-2gaf</guid>
      <description>&lt;h2&gt;
  
  
  Introducción
&lt;/h2&gt;

&lt;p&gt;Tailwind CSS es un framework de CSS basado en utilidades diseñado para construir interfaces de usuario modernas con rapidez y eficiencia. La versión 4.0 introduce optimizaciones significativas en rendimiento y nuevas funcionalidades que simplifican el desarrollo front-end.&lt;/p&gt;

&lt;p&gt;En esta guía, exploraremos cómo integrar &lt;strong&gt;Tailwind CSS 4.0&lt;/strong&gt; en un proyecto MVC de .NET 9, utilizando &lt;strong&gt;Tailwind CLI&lt;/strong&gt; para gestionar los estilos de manera eficiente.&lt;/p&gt;

&lt;p&gt;Puedes acceder al código fuente completo en GitHub: &lt;a href="https://github.com/hopsersmerk/TailwindCSS-NET9-MVC" rel="noopener noreferrer"&gt;https://github.com/hopsersmerk/TailwindCSS-NET9-MVC&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requisitos previos
&lt;/h2&gt;

&lt;p&gt;Antes de comenzar, asegúrate de tener instaladas las siguientes herramientas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;.NET SDK 9&lt;/strong&gt; (&lt;a href="https://dotnet.microsoft.com/en-us/download" rel="noopener noreferrer"&gt;Descargar .NET SDK&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Node.js y npm&lt;/strong&gt; (&lt;a href="https://nodejs.org/es/download/" rel="noopener noreferrer"&gt;Descargar Node.js&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Paso 1: Creación de un proyecto MVC en .NET 9
&lt;/h2&gt;

&lt;p&gt;Ejecuta los siguientes comandos en la terminal para generar un nuevo proyecto MVC:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;tailwindcss40
&lt;span class="nb"&gt;cd &lt;/span&gt;tailwindcss40
dotnet new mvc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esto creará una estructura de proyecto basada en MVC dentro de la carpeta &lt;code&gt;tailwindcss40&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Paso 2: Inicialización de npm en el proyecto
&lt;/h2&gt;

&lt;p&gt;Tailwind CSS requiere &lt;strong&gt;Node.js&lt;/strong&gt; y &lt;strong&gt;npm&lt;/strong&gt; para la gestión de dependencias. Dentro del directorio del proyecto, ejecuta:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esto generará un archivo &lt;code&gt;package.json&lt;/code&gt; con la configuración predeterminada de npm.&lt;/p&gt;




&lt;h2&gt;
  
  
  Paso 3: Instalación de Tailwind CSS
&lt;/h2&gt;

&lt;p&gt;Instala Tailwind CSS y Tailwind CLI ejecutando el siguiente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; tailwindcss @tailwindcss/cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Paso 4: Creación del archivo de estilos de Tailwind CSS
&lt;/h2&gt;

&lt;p&gt;Crea la carpeta &lt;code&gt;css&lt;/code&gt; dentro de &lt;code&gt;wwwroot&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;wwwroot/css
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dentro de &lt;code&gt;wwwroot/css&lt;/code&gt;, crea un archivo llamado &lt;code&gt;tailwind.css&lt;/code&gt; e incluye la siguiente línea:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="k"&gt;@import&lt;/span&gt; &lt;span class="s1"&gt;"tailwindcss"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Paso 5: Compilación de Tailwind CSS
&lt;/h2&gt;

&lt;p&gt;Para generar los estilos CSS compilados, ejecuta el siguiente comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @tailwindcss/cli &lt;span class="nt"&gt;-i&lt;/span&gt; ./wwwroot/css/tailwind.css &lt;span class="nt"&gt;-o&lt;/span&gt; ./wwwroot/css/hopsersmerk.css
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Este comando procesa el archivo fuente de Tailwind y genera &lt;code&gt;hopsersmerk.css&lt;/code&gt; en &lt;code&gt;wwwroot/css/&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuración en &lt;code&gt;package.json&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Para facilitar futuras ejecuciones, agrega estos scripts en &lt;code&gt;package.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"build:css"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx @tailwindcss/cli -i ./wwwroot/css/tailwind.css -o ./wwwroot/css/hopsersmerk.css"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"watch:css"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx @tailwindcss/cli -i ./wwwroot/css/tailwind.css -o ./wwwroot/css/hopsersmerk.css --watch"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para compilar manualmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run build:css
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para compilar en modo observador y actualizar automáticamente los cambios:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run watch:css
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Paso 6: Integración de Tailwind CSS en la plantilla de la aplicación
&lt;/h2&gt;

&lt;p&gt;Abre &lt;code&gt;Views/Shared/_Layout.cshtml&lt;/code&gt; y agrega la referencia al CSS compilado dentro del &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"~/css/hopsersmerk.css"&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esto garantiza que los estilos de Tailwind CSS se apliquen en toda la aplicación.&lt;/p&gt;




&lt;h2&gt;
  
  
  Paso 7: Verificación de la integración
&lt;/h2&gt;

&lt;p&gt;Modifica &lt;code&gt;Views/Home/Index.cshtml&lt;/code&gt; y agrega un encabezado con clases de Tailwind para comprobar que está funcionando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-3xl font-bold text-center text-blue-600"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;¡Tailwind CSS está funcionando!&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ejecuta el proyecto con:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Luego, abre &lt;code&gt;https://localhost:5001&lt;/code&gt; (o el puerto indicado en la terminal) y verifica que los estilos de Tailwind CSS se apliquen correctamente.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Siguiendo estos pasos, has configurado exitosamente &lt;strong&gt;Tailwind CSS 4.0&lt;/strong&gt; con &lt;strong&gt;Tailwind CLI&lt;/strong&gt; en un proyecto MVC de &lt;strong&gt;.NET 9&lt;/strong&gt;. Esta configuración optimiza la gestión de estilos y facilita el mantenimiento del código.&lt;/p&gt;

&lt;p&gt;Para más información y personalización avanzada, consulta la &lt;a href="https://tailwindcss.com/docs/installation/tailwind-cli" rel="noopener noreferrer"&gt;documentación oficial de Tailwind CSS&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>dotnet</category>
      <category>frontend</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
