Guía para insertar un reloj analógico en WordPress

Guía para insertar un reloj analógico en WordPress

Mantén a la vista el Reloj Analógico en tu sitio de WordPress, fácil de insertar, y con un potente efecto visual. El Reloj Analógico se adapta a todos los dispositivos.

⏰ Añade un reloj analógico en tu WordPress

¿Quieres mostrar la hora en tu sitio web con un reloj analógico elegante? Aquí tienes un código completo que puedes insertar en el widget de barra lateral de tu WordPress.

RELOJ WEB

Pasos:

  1. Entra en tu panel de administración de WordPress.
  2. Ve a Apariencia > Widgets.
  3. Añade un widget de tipo HTML personalizado en la barra lateral.
  4. Copia y pega el siguiente código completo en el widget:

html

<html>
<head>
<title>RELOJ WEB</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
.reloj-container {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  max-width: 420px; /* tamaño máximo */
  margin: 0 auto;   /* centra horizontalmente */
  padding: 10px;
  box-sizing: border-box;
}
canvas {
  width: 100%;
  height: auto;
  display: block;
}
</style>
</head>

<body>
  <div class="reloj-container">
    <canvas id="my_canvas" width="420" height="420"></canvas>
  </div>

<script>
var angle_jump=6;
var dt= new Date();

sec = dt.getSeconds()*angle_jump;
var min=dt.getMinutes();
min=min*angle_jump; 
min=min + (sec/360)
var hour=dt.getHours();
hour=hour*30;   
hour=hour + (min/12);

var ang_second=90-sec;
var ang_minute=90-min;
var ang_hour=90-hour;

var r=100;
var my_canvas=document.getElementById("my_canvas");
var gctx = my_canvas.getContext("2d");

var x=my_canvas.width/2;
var y=my_canvas.height/2;
speed=1000;
arc_angle=10;

my_function=function my_function(){
gctx.clearRect(0, 0, my_canvas.width,my_canvas.height);

// círculo exterior con sombra
gctx.beginPath();
gctx.strokeStyle= '#0B033B';
gctx.lineWidth=10;
gctx.shadowColor = 'rgba(0,0,0,0.5)';
gctx.shadowBlur = 15;
gctx.shadowOffsetX = 5;
gctx.shadowOffsetY = 5;
gctx.arc(x,y,r*1.4,0,2*Math.PI);
gctx.stroke();

// reset sombra
gctx.shadowColor = 'transparent';
gctx.shadowBlur = 0;
gctx.shadowOffsetX = 0;
gctx.shadowOffsetY = 0;

gctx.lineWidth=1;

// números y marcas
var h=2;
gctx.textAlign = "center";
gctx.textBaseline = "middle";
gctx.font = '36px serif';

for(j=0;j<360;j += angle_jump){
  j_radian=j*(Math.PI/180);
  gctx.beginPath();
  gctx.strokeStyle= '#464623';

  if((j % (5*angle_jump))==0){
    var y1_text=y+ 0.85*r*Math.sin(j_radian);
    var x1_text=x+ 0.85*r*Math.cos(j_radian);
    if(h<12){ h=h+1; } else { h=1; }

    // sombra en números
    gctx.shadowColor = 'rgba(0,0,0,0.4)';
    gctx.shadowBlur = 6;
    gctx.shadowOffsetX = 2;
    gctx.shadowOffsetY = 2;
    gctx.fillText(h,x1_text,y1_text);

    // reset sombra
    gctx.shadowColor = 'transparent';
    gctx.shadowBlur = 0;
    gctx.shadowOffsetX = 0;
    gctx.shadowOffsetY = 0;

    // rayas largas en todos los números
    var y1_out = y + 1.05*r*Math.sin(j_radian);
    var x1_out = x + 1.05*r*Math.cos(j_radian);
    var y2_out = y + 1.3*r*Math.sin(j_radian);
    var x2_out = x + 1.3*r*Math.cos(j_radian);
    gctx.moveTo(x1_out,y1_out);
    gctx.lineTo(x2_out,y2_out);
    gctx.stroke();

  } else {
    // rayas normales
    var y1_out = y + 1.1*r*Math.sin(j_radian);
    var x1_out = x + 1.1*r*Math.cos(j_radian);
    var y2_out = y + 1.2*r*Math.sin(j_radian);
    var x2_out = x + 1.2*r*Math.cos(j_radian);
    gctx.moveTo(x1_out,y1_out);
    gctx.lineTo(x2_out,y2_out);
    gctx.stroke();
  }
}

// segundero
gctx.beginPath();
gctx.strokeStyle= '#7CC0F5';
var startAngle=(1/180) * (360-ang_second);
var a_end_ang=(1/180) * (360-(ang_second + 180 -arc_angle));
var a_start_ang=(1/180) *(360-(ang_second + 180 + arc_angle));
var y1=y+ r*Math.sin(startAngle*Math.PI);
var x1=x+ r*Math.cos(startAngle*Math.PI);
gctx.moveTo(x1,y1);
gctx.arc(x,y,0.3*r,a_start_ang*Math.PI,a_end_ang*Math.PI);
gctx.lineTo(x1,y1);
gctx.fillStyle = '#7CC0F5';
gctx.fill();
gctx.stroke();

// minutero
gctx.beginPath();
gctx.strokeStyle= '#181500';
var startAngle=(1/180) * (360-ang_minute);
var a_end_ang=(1/180) * (360-(ang_minute + 180 -arc_angle));
var a_start_ang=(1/180) *(360-(ang_minute + 180 + arc_angle));
var y1=y+ 0.9*r*Math.sin(startAngle*Math.PI);
var x1=x+ 0.9*r*Math.cos(startAngle*Math.PI);
gctx.moveTo(x1,y1);
gctx.arc(x,y,0.3*r,a_start_ang*Math.PI,a_end_ang*Math.PI);
gctx.lineTo(x1,y1);
gctx.fillStyle = '#181500';
gctx.fill();
gctx.stroke();

// horario
gctx.beginPath();
gctx.strokeStyle= '#181500';
var startAngle=(1/180) * (360-ang_hour);
var a_end_ang=(1/180) * (360-(ang_hour + 180 -(arc_angle*2)));
var a_start_ang=(1/180) *(360-(ang_hour + 180 + (arc_angle*2)));
var y1=y+ 0.8*r*Math.sin(startAngle*Math.PI);
var x1=x+ 0.8*r*Math.cos(startAngle*Math.PI);
gctx.moveTo(x1,y1);
gctx.arc(x,y,0.15*r,a_start_ang*Math.PI,a_end_ang*Math.PI);
gctx.lineTo(x1,y1);
gctx.fillStyle = '#181500';
gctx.fill();
gctx.stroke();

// círculo central
gctx.beginPath();
gctx.strokeStyle= '#000000';
gctx.arc(x,y,3,0,2*Math.PI); 
gctx.fillStyle = '#282746';
gctx.fill();
gctx.stroke();

my_function2();
}

my_function2=function my_function2(){
if(ang_second > -264){  
  ang_second=ang_second-angle_jump;
  setTimeout('my_function()',speed);
}else{
  ang_second=90;
  if(ang_minute > -264){
    ang_minute=ang_minute - angle_jump;
  }else{
    ang_minute=90;
    ang_hour=ang_hour-angle_jump;
  } 
  setTimeout('my_function()',speed);
}
}

my_function();
</script>
</body>
</html>

3. Guardar y comprobar

  • Guarda el widget.
  • Ve a tu sitio y verás el reloj analógico funcionando en la barra lateral.

Resumen de la creación del reloj analógico

  1. Canvas de HTML5
    • El reloj se dibuja dentro de un elemento <canvas> de HTML.
    • Este canvas es un área gráfica donde se pueden trazar líneas, círculos y texto con JavaScript.
  2. Contexto gráfico (getContext("2d"))
    • Se obtiene el contexto 2D del canvas, que permite dibujar formas y aplicar estilos.
    • Con este contexto (gctx) se trazan los círculos, rayas y números.
  3. Cálculo de ángulos
    • Cada segundo equivale a 6° (360° / 60).
    • Cada minuto también equivale a 6°.
    • Cada hora equivale a 30° (360° / 12).
    • Se calculan los ángulos de las agujas en función de la hora actual (Date()).
  4. Dibujo de la esfera
    • Se dibuja un círculo exterior con borde azul oscuro y sombra para dar volumen.
    • Se añaden las rayas de los minutos y las rayas más largas en las posiciones de las horas.
    • Los números (1–12) se colocan alrededor del círculo, centrados y con sombra.
  5. Agujas del reloj
    • Segundero: delgado y de color azul claro.
    • Minutero: más grueso y oscuro.
    • Horario: más corto y ancho.
    • Cada aguja se dibuja como una línea con un pequeño arco en la base para dar efecto.
  6. Centro del reloj
    • Se dibuja un pequeño círculo en el centro para cubrir las uniones de las agujas.
  7. Animación
    • Una función (my_function) redibuja el reloj cada segundo.
    • Se usa setTimeout para actualizar los ángulos y mover las agujas en tiempo real.
  8. Estilos y centrado
    • El reloj se coloca dentro de un contenedor .reloj-container con CSS flexbox para que quede centrado en ordenador y móvil.
    • El canvas es responsivo (width:100%) para adaptarse al ancho del widget.

En resumen

El reloj se construye con:

  • HTML → para definir el canvas.
  • CSS → para centrarlo y hacerlo responsivo.
  • JavaScript → para calcular la hora, dibujar la esfera, los números, las rayas y las agujas, y actualizarlo cada segundo.

Esquema visual (imaginado)

  1. Círculo exterior → esfera del reloj.
  2. Rayas cortas → minutos.
  3. Rayas largas + números → horas.
  4. Agujas → hora, minuto y segundo.
  5. Centro → círculo pequeño que une las agujas.
  6. Animación → función que actualiza cada segundo.

En conclusión: el reloj se construye combinando HTML (canvas)CSS (centrado y responsivo) y JavaScript (cálculo de ángulos y animación).

Esquema visual del reloj analógico

1. Esfera del reloj

  • Un círculo exterior con borde azul oscuro y sombra.
  • Representa la base del reloj.

Código

   ●───────────────●
  /                 \
 ●                   ●
  \                 /
   ●───────────────●

2. Marcas de minutos y horas

  • 60 rayas alrededor de la esfera.
  • Las rayas de las horas (1–12) son más largas.
  • Sirven de guía para colocar los números.

Código

|   |   |   |   |   |   |   |   |   |

3. Números (1–12)

  • Colocados en posiciones radiales usando trigonometría.
  • Separados del borde para que no se peguen a las rayas.
  • Con sombra para dar volumen.

Código

       12
   11      1
10            2
   9        3
       6

4. Agujas

  • Segundero: delgado y azul claro.
  • Minutero: más largo y oscuro.
  • Horario: más corto y ancho.
  • Cada aguja se dibuja según el ángulo calculado con la hora actual.

Código

       |
       |
   ----●----
       |

5. Centro del reloj

  • Un pequeño círculo que cubre la unión de las agujas.
  • Da un acabado limpio y elegante.

6. Animación

  • Una función en JavaScript (my_function) redibuja el reloj cada segundo.
  • Se actualizan los ángulos de las agujas con la hora real (Date()).
  • Se usa setTimeout para que el reloj se mueva en tiempo real.

Resumen gráfico

  1. Esfera → círculo exterior con sombra.
  2. Marcas → rayas cortas y largas.
  3. Números → colocados alrededor con sombra.
  4. Agujas → hora, minuto y segundo.
  5. Centro → círculo pequeño.
  6. Animación → actualización cada segundo.

Ver otro ejemplo de Reloj Analógico.

Plugin Gráfico de Visitas Simple

Plugin Gráfico de Visitas Simple

Gráfico de Visitas (antes Visitas Tracker Simple) es un plugin ligero para WordPress que permite registrar y visualizar las visitas que recibe tu sitio día a día. Su objetivo es ofrecer una referencia clara y sencilla del tráfico sin necesidad de herramientas externas complejas.

🔧 Qué hace

  • Registra automáticamente cada visita al cargar una página del sitio.
  • Almacena los datos por fecha en una tabla propia dentro de la base de datos de WordPress.
  • Muestra métricas agregadas: total general, últimos 7 días y últimos 30 días.
  • Despliega una tabla diaria con el número de visitas por fecha.
  • Incluye un gráfico de barras en el área de administración para visualizar la evolución de las visitas de forma clara y rápida.

Para qué sirve

Este plugin es ideal si quieres:

  • Tener un control básico del tráfico sin depender de servicios externos como Google Analytics.
  • Visualizar de manera sencilla la tendencia de visitas en tu sitio.
  • Consultar estadísticas directamente desde el panel de administración de WordPress.
  • Obtener una referencia general del comportamiento de tus usuarios en periodos cortos (semanales o mensuales).

En resumen: es una herramienta práctica, ligera y fácil de usar para medir y visualizar las visitas de tu webdirectamente en WordPress.

Descargar Plugin Gráfico de Visitas Simple

GRÁFICO DE VISITAS SIMPLE
Instalar Servidor de Correo en VPS

Instalar Servidor de Correo en VPS

Como instalar un servidor de correo en VPS, sin romper los sitios de WordPress.

Sí, puedes instalar un servidor de correo en tu VPS sin afectar tus sitios WordPress si mantienes cada servicio bien aislado y configuras correctamente los puertos, dominios y recursos. Aquí tienes una guía paso a paso para hacerlo de forma segura.

Instalación de servidor de correo en VPS (Postfix + Dovecot)

1. Verifica tu entorno

  • Tu VPS debe tener Ubuntu/Debian actualizado.
  • Tus sitios WordPress deben estar funcionando en rutas como /var/www/tusitio.com.
  • Asegúrate de tener acceso root o sudo.

bash

sudo apt update && sudo apt upgrade -y

2. Instala Postfix (SMTP)

Postfix se encarga de enviar correos.

bash

sudo apt install postfix -y
  • Elige la opción «Internet Site» durante la instalación.
  • Introduce tu dominio principal (ej. tusitio.com) cuando lo pida.

3. Instala Dovecot (IMAP/POP3)

Dovecot permite recibir y consultar correos.

bash

sudo apt install dovecot-core dovecot-imapd dovecot-pop3d -y
  • Configura /etc/dovecot/dovecot.conf y /etc/dovecot/conf.d/10-mail.conf para usar Maildir:

bash

mail_location = maildir:~/Maildir

4. Crea usuarios de correo

Puedes usar usuarios del sistema o virtuales. Ejemplo básico:

bash

sudo adduser correo1

Esto crea una cuenta con buzón en /home/correo1/Maildir.

5. Configura DNS del dominio

En tu panel de dominio (ej. IONOS, Cloudflare):

  • MX record → mail.tusitio.com
  • A record → IP del VPS
  • SPF record → v=spf1 mx ~all
  • DKIM y DMARC → opcionales pero recomendados

6. Instala certificados SSL (Let’s Encrypt)

Protege el acceso IMAP/SMTP con TLS:

bash

sudo apt install certbot
sudo certbot certonly --standalone -d mail.tusitio.com

Configura Postfix y Dovecot para usar los certificados en /etc/letsencrypt/live/mail.tusitio.com/.

7. Verifica puertos abiertos

  • Postfix: 25, 587 (SMTP)
  • Dovecot: 143 (IMAP), 993 (IMAPS)
  • Usa ufw para permitirlos:

bash

sudo ufw allow 25,587,143,993/tcp

8. No romper WordPress

  • No toques configuraciones de Apache/Nginx que afecten /var/www.
  • No uses la misma base de datos ni usuarios que WordPress.
  • Mantén el servidor de correo en su propio subdominio (mail.tusitio.com) y rutas separadas.

En conclusión

  • Postfix + Dovecot son seguros y compatibles con WordPress si se instalan en rutas y puertos separados.
  • No afectan tus sitios WordPress si mantienes aislamiento de servicios.
  • Puedes añadir Roundcube como webmail más adelante si lo deseas.

¡Perfecto, Francisco! Aquí tienes un script automatizado para instalar un servidor de correo básico (Postfix + Dovecot) en tu VPS sin interferir con tus sitios WordPress. Este script está pensado para Ubuntu/Debian y configura todo en rutas separadas, sin tocar /var/www.

🛠️ Script de instalación de servidor de correo

bash

#!/bin/bash

# Actualizar sistema
sudo apt update && sudo apt upgrade -y

# Instalar Postfix (SMTP)
sudo debconf-set-selections <<< "postfix postfix/mailname string mail.tusitio.com"
sudo debconf-set-selections <<< "postfix postfix/main_mailer_type string 'Internet Site'"
sudo apt install postfix -y

# Instalar Dovecot (IMAP/POP3)
sudo apt install dovecot-core dovecot-imapd dovecot-pop3d -y

# Configurar Maildir
sudo sed -i 's|#mail_location =|mail_location = maildir:~/Maildir|' /etc/dovecot/conf.d/10-mail.conf

# Crear usuario de prueba
sudo adduser correo1
sudo mkdir -p /home/correo1/Maildir
sudo maildirmake.dovecot /home/correo1/Maildir
sudo chown -R correo1:correo1 /home/correo1/Maildir

# Abrir puertos necesarios
sudo ufw allow 25,587,143,993/tcp

# Reiniciar servicios
sudo systemctl restart postfix
sudo systemctl restart dovecot

echo "✅ Servidor de correo instalado. Puedes probar con Thunderbird o Roundcube."

¿Qué hace este script?

  • Instala Postfix para enviar correos y Dovecot para recibirlos.
  • Crea un usuario local (correo1) con buzón Maildir.
  • Configura puertos sin tocar Apache/Nginx ni tus sitios WordPress.
  • No modifica /var/www ni las bases de datos de WordPress.

script automatizado para instalar Roundcube en tu VPS y conectarlo al servidor de correo que ya configuramos con Postfix + Dovecot, sin tocar tus sitios WordPress.

🛠️ Script de instalación de Roundcube

bash

#!/bin/bash

# Variables
DOMINIO="correo.tusitio.com"
RUTA="/var/www/roundcube"

# Actualizar sistema
sudo apt update && sudo apt upgrade -y

# Instalar dependencias
sudo apt install apache2 php php-mysql php-intl php-mbstring php-xml composer unzip -y

# Descargar Roundcube
cd /var/www
wget https://github.com/roundcube/roundcubemail/releases/download/1.6.5/roundcubemail-1.6.5-complete.tar.gz
tar -xvzf roundcubemail-1.6.5-complete.tar.gz
mv roundcubemail-1.6.5 roundcube

# Crear base de datos
mysql -u root -p <<EOF
CREATE DATABASE roundcube;
GRANT ALL PRIVILEGES ON roundcube.* TO 'roundcubeuser'@'localhost' IDENTIFIED BY 'tu_clave_segura';
FLUSH PRIVILEGES;
EOF

# Configurar Apache VirtualHost
cat <<EOL | sudo tee /etc/apache2/sites-available/roundcube.conf
<VirtualHost *:80>
  ServerName $DOMINIO
  DocumentRoot $RUTA

  <Directory $RUTA>
    AllowOverride All
    Require all granted
  </Directory>

  ErrorLog \${APACHE_LOG_DIR}/roundcube_error.log
  CustomLog \${APACHE_LOG_DIR}/roundcube_access.log combined
</VirtualHost>
EOL

# Activar sitio y reiniciar Apache
sudo a2ensite roundcube.conf
sudo systemctl reload apache2

# Configuración inicial de Roundcube
cd $RUTA
composer install --no-dev

echo "✅ Roundcube instalado en http://$DOMINIO"
echo "Accede al instalador en http://$DOMINIO/installer"
echo "Recuerda eliminar la carpeta 'installer' después de la configuración:"
echo "rm -rf $RUTA/installer"

Qué hace este script

  • Instala Roundcube en /var/www/roundcube.
  • Crea un VirtualHost en Apache para correo.tusitio.com.
  • Configura una base de datos independiente para Roundcube.
  • No toca tus sitios WordPress (que siguen en sus propios VirtualHosts).
  • Te deja listo el instalador web de Roundcube.

Próximo paso

  1. Accede a http://correo.tusitio.com/installer.
  2. Configura conexión IMAP/SMTP con tu servidor Postfix/Dovecot.
  3. Elimina la carpeta installer por seguridad.
El RSS

El RSS

El RSS es un formato basado en XML que permite suscribirse a sitios web para recibir automáticamente sus actualizaciones sin necesidad de visitarlos manualmente.

Definición

  • RSS significa Really Simple Syndication (Sindicación Realmente Simple).
  • Es un formato abierto de redifusión web que organiza y distribuye contenido actualizado de manera automática.
  • También se conoce como Rich Site Summary en algunos contextos.

⚙️ Cómo funciona

  • Los sitios web generan un feed RSS (archivo .xml) que contiene sus últimas publicaciones.
  • Los usuarios se suscriben a ese feed mediante un lector o agregador RSS.
  • Cada vez que el sitio publica algo nuevo, el lector lo muestra automáticamente en la lista de actualizaciones.

Ventajas principales

  • Centralización de información: puedes seguir varios blogs, periódicos o podcasts desde un único lugar.
  • Ahorro de tiempo: no necesitas entrar en cada página para comprobar si hay novedades.
  • Personalización: eliges exactamente qué fuentes seguir, evitando algoritmos de redes sociales.
  • Compatibilidad: funciona con noticias, blogs, podcasts y más.

📖 Ejemplo práctico

Imagina que sigues 10 blogs de tecnología. En lugar de abrirlos uno por uno, te suscribes a sus feeds RSS. Tu lector RSS te mostrará en una sola pantalla todas las nuevas publicaciones, ordenadas cronológicamente.

Contexto actual

  • El RSS fue muy popular en los años 2000 como herramienta para organizar el “caos” de información en internet.
  • Aunque perdió protagonismo frente a redes sociales y notificaciones push, sigue siendo usado por periodistas, investigadores y usuarios que quieren controlar su flujo de información sin depender de algoritmos.

👉 En resumen: el RSS es como un canal directo entre un sitio web y tu lector de noticias, que te mantiene informado de manera automática y organizada.

Crear un plugin RSS en WordPress

1. Crear la carpeta del plugin

En tu servidor, dentro de la instalación de WordPress:

bash

cd /var/www/tusitio.com/wordpress/wp-content/plugins/
sudo mkdir rss-tusitio
cd rss-tusitio

2. Crear el archivo principal

bash

sudo nano rss-tusitio.php

3. Pegar el código del plugin

php

<?php
/*
Plugin Name: RSS Tusitio
Description: Muestra el feed RSS de tusitio.com en tu web mediante shortcode.
Version: 1.0
Author: Francisco
*/

function rss_tusitio_shortcode() {
    include_once(ABSPATH . WPINC . '/feed.php');

    $rss = fetch_feed('https://tusitio.com/feed');

    if (is_wp_error($rss)) {
        $msg = esc_html($rss->get_error_message());
        return '<p>No se pudo cargar el feed: ' . $msg . '</p>';
    }

    $maxitems = $rss->get_item_quantity(5);
    $rss_items = $rss->get_items(0, $maxitems);

    if ($maxitems === 0) {
        return '<p>No hay elementos en el feed.</p>';
    }

    $output = '<ul class="rss-tusitio-list">';
    foreach ($rss_items as $item) {
        $title = esc_html($item->get_title());
        $link  = esc_url($item->get_permalink());
        $date  = $item->get_date('d/m/Y');

        $output .= '<li class="rss-tusitio-item">';
        $output .= '<a href="' . $link . '" target="_blank" rel="noopener">' . $title . '</a>';
        if ($date) {
            $output .= ' <span class="rss-tusitio-date">(' . esc_html($date) . ')</span>';
        }
        $output .= '</li>';
    }
    $output .= '</ul>';

    return $output;
}

add_shortcode('rss_tusitio', 'rss_tusitio_shortcode');

4. Ajustar permisos

bash

sudo chown www-data:www-data rss-tusitio.php
sudo chmod 644 rss-tusitio.php

5. Activar el plugin

  • Ve al panel de WordPress → Plugins.
  • Activa “RSS Tusitio”.

6. Usar el shortcode

En cualquier página o entrada (por ejemplo, en Divi dentro de un módulo de texto):

Código

[rss_tusitio]

Esto mostrará los últimos 5 enlaces del feed de https://tusitio.com/feed.

Cloudflare errores internos

Cloudflare errores internos

Ayer, 18 de noviembre de 2025, Cloudflare sufrió una caída global provocada por un error interno en su sistema de gestión de bots, lo que dejó sin servicio a plataformas como X (Twitter), ChatGPT, League of Legends, AWS y hasta servicios bancarios y de telecomunicaciones.

Detalles del incidente

  • Hora del fallo: Comenzó alrededor de las 11:20 UTC (12:20 hora peninsular española).
  • Causa técnica:
    • Un cambio en los permisos de una base de datos generó múltiples entradas duplicadas en un archivo de configuración usado por el sistema de gestión de bots.
    • Ese archivo se duplicó en tamaño y fue propagado a todos los servidores de Cloudflare.
    • El software encargado de enrutar tráfico no pudo manejar el archivo sobredimensionado, provocando errores masivos en la red.
  • No fue un ciberataque: Cloudflare confirmó que no se trató de un ataque ni actividad maliciosa, sino de un fallo interno de configuración.

Plataformas afectadas

  • Redes sociales: X (Twitter), con tiempos de carga lentos y errores.
  • IA y servicios digitales: ChatGPT, Claude, DeepSeek, Canva, Perplexity, Gemini, Grok.
  • Videojuegos: League of Legends.
  • Infraestructura crítica: Amazon Web Services (AWS), bancos como CaixaBank y operadores como Movistar y Vodafone.
  • Impacto global: Millones de usuarios en todo el mundo reportaron errores 500, páginas que no cargaban y servicios interrumpidos.

Recuperación

  • Cloudflare informó que hacia las 12:21 hora canaria (13:21 peninsular) los servicios empezaban a restablecerse, aunque con errores intermitentes.
  • La compañía trabajó durante la tarde para estabilizar la red y normalizar el tráfico.

Contexto

Cloudflare es uno de los mayores proveedores de infraestructura de Internet:

  • Maneja cerca de un quinto del tráfico mundial.
  • Funciona como CDN (red de distribución de contenido) y como sistema de seguridad contra ciberataques.
  • Por eso, una caída en su red tiene un efecto dominó que afecta a miles de servicios en todo el planeta.

En resumen: la caída de Cloudflare fue causada por un error interno en la propagación de archivos de configuración, no por un ataque externo, y afectó a gran parte de Internet durante varias horas.

¿Cuál fue el Error Interno?

El error interno de Cloudflare que provocó la caída global ayer se debió a un problema en su sistema de gestión de bots:

⚙️ Detalle técnico del fallo

  • Cambio en permisos de base de datos: Se aplicó una modificación en los permisos de una base de datos interna.
  • Archivo de configuración duplicado: Ese cambio generó múltiples entradas duplicadas en un archivo de configuración crítico que usa el sistema de gestión de bots.
  • Propagación a toda la red: El archivo duplicado se volvió mucho más grande de lo normal y fue distribuido a todos los servidores de Cloudflare.
  • Sobrecarga del software: El software encargado de enrutar y filtrar tráfico no pudo manejar el archivo sobredimensionado, lo que provocó errores masivos en la red.
  • Resultado: Millones de peticiones se tradujeron en errores 500 y desconexiones en servicios que dependen de Cloudflare.

Importante

  • No fue un ataque: Cloudflare confirmó que no se trató de un ciberataque ni actividad maliciosa.
  • Error humano/técnico: Fue un fallo interno de configuración que se propagó de forma automática.
  • Recuperación: Una vez identificado el problema, se corrigió el archivo y se restablecieron los servicios progresivamente.

En resumen: el error fue causado por entradas duplicadas en un archivo de configuración del sistema de bots, que al propagarse saturó el software de Cloudflare y tumbó gran parte de Internet durante horas.

Flujo del fallo de Cloudflare

  1. Cambio en permisos de base de datos ⬇️
  2. Archivo de configuración duplicado
    • Se generaron entradas repetidas.
    • El archivo se volvió mucho más grande de lo normal. ⬇️
  3. Propagación global
    • El archivo duplicado se distribuyó automáticamente a todos los servidores de Cloudflare. ⬇️
  4. Sobrecarga del software de bots
    • El sistema que gestiona tráfico y seguridad no pudo manejar el archivo sobredimensionado. ⬇️
  5. Errores masivos (500, desconexiones)
    • Plataformas como X, ChatGPT, AWS, League of Legends, bancos y operadores quedaron afectados.

🌍 Impacto visual (resumen)

Código

[Base de datos] → [Archivo duplicado] → [Propagación global] → [Sobrecarga] → [Caída de servicios]

En resumen: un archivo de configuración duplicado y sobredimensionado se propagó por toda la red de Cloudflare, saturando el sistema y provocando la caída global.

🌍 Impacto Global de la Caída de Cloudflare (18 noviembre 2025)

🔵 Redes Sociales

  • X (Twitter) → errores de carga y desconexiones.
  • Reddit, Discord → problemas intermitentes.

🤖 Inteligencia Artificial y servicios digitales

  • ChatGPT, Claude, Gemini, Perplexity, Grok, DeepSeek → interrupciones en acceso y respuestas.
  • Canva → fallos en edición y carga de proyectos.

🎮 Videojuegos

  • League of Legends → servidores caídos en varias regiones.
  • Otros juegos online → desconexiones masivas.

☁️ Infraestructura tecnológica

  • Amazon Web Services (AWS) → afectación en servicios alojados.
  • Microsoft Azure y Google Cloud → incidencias menores por dependencia indirecta.

💳 Bancos y servicios críticos

  • CaixaBank, BBVA, Santander → problemas en banca online y apps móviles.
  • Movistar, Vodafone → interrupciones en servicios de telecomunicaciones.

Esquema visual simplificado

Código

[Cloudflare Error Interno]
        ↓
 Propagación global
        ↓
 ┌───────────────┬───────────────┬───────────────┐
 │ Redes sociales│ IA y servicios│ Infraestructura│
 │ (X, Reddit)   │ (ChatGPT, etc)│ (AWS, Azure)   │
 └───────────────┴───────────────┴───────────────┘
        ↓
   Bancos y Telcos
   (CaixaBank, Movistar)

En resumen: el fallo de Cloudflare tuvo un efecto dominó que impactó desde redes sociales y videojuegos hasta banca y telecomunicaciones, demostrando lo crítica que es su infraestructura para Internet.

Impacto en BBVA durante la caída de Cloudflare

  • Funcionamiento de la plataforma:
    • Lo que se vio afectado fueron principalmente los servicios digitales: la banca online, la app móvil y algunas operaciones en cajeros o webs corporativas.
    • Los usuarios reportaron errores al intentar iniciar sesión, consultar cuentas o realizar transferencias.
  • Seguridad bancaria:
    • La caída no comprometió la seguridad de las cuentas ni los sistemas internos del banco.
    • Cloudflare actúa como intermediario de tráfico y protección contra ataques DDoS, pero no gestiona directamente las bases de datos ni la información financiera de los clientes.
  • Cuentas personales:
    • Los saldos, movimientos y datos de clientes no se vieron alterados.
    • El problema fue de accesibilidad temporal: los usuarios no podían entrar o las páginas devolvían errores 500.
  • Duración del impacto:
    • Fue un fallo intermitente de unas horas.
    • Una vez Cloudflare corrigió el error de configuración, los servicios bancarios volvieron a la normalidad.

✅ En resumen

En BBVA (y otros bancos como CaixaBank o Santander), la caída de Cloudflare no afectó la seguridad ni las cuentas personales, sino únicamente el funcionamiento de las plataformas digitales. Los clientes no podían acceder a sus servicios online durante el fallo, pero sus datos y dinero estuvieron siempre seguros.