Un certificado SSL sirve para cifrar la comunicación entre el navegador y el servidor, garantizando privacidad y autenticidad del sitio web. Además, muchos certificados incluyen una garantía monetaria ofrecida por la Autoridad de Certificación (CA), que puede cubrir al usuario final en caso de que el certificado falle y cause pérdidas económicas.
🔐 ¿Qué es un certificado SSL?
Es un certificado digital que autentica la identidad de un sitio web y habilita una conexión segura mediante HTTPS.
El protocolo SSL/TLS cifra los datos transmitidos (contraseñas, tarjetas de crédito, información personal), evitando que terceros los intercepten o manipulen.
El candado en la barra de direcciones indica que la conexión está protegida.
¿Existe un seguro monetario?
Sí, pero con matices:
Los certificados SSL incluyen una garantía que varía según el tipo y el proveedor.
Esta garantía es un compromiso de la CA (Autoridad de Certificación) de indemnizar económicamente al usuario final si el certificado falla por negligencia de la CA y provoca pérdidas financieras (por ejemplo, fraude en transacciones online).
Los montos de cobertura pueden ir desde 10.000 USD hasta 1.5 millones USD, dependiendo del nivel del certificado (DV, OV, EV).
Importante: esta garantía no protege al dueño del sitio web, sino al cliente que confía en el certificado. Es decir, si un visitante sufre un daño económico porque el certificado fue emitido de forma incorrecta, puede reclamar la indemnización.
Puntos clave
Propósito principal: seguridad y confianza en las transacciones online.
Seguro monetario: sí existe, pero solo en casos de fallo atribuible a la CA.
No cubre: errores del administrador del sitio, hackeos por mala configuración, ni fraudes ajenos al certificado.
Valor añadido: además de cifrado, el SSL mejora el SEO y la reputación del sitio.
El certificado SSL protege la comunicación y aporta confianza. La garantía monetaria es un respaldo adicional, pero solo aplica si la Autoridad de Certificación comete un error que cause pérdidas financieras.
Detalles del certificado EV SSL
Proveedor: Sectigo (una de las principales Autoridades de Certificación).
Precio: 126,95 € / año.
Tipo: Validación extendida (EV).
Proceso de validación:
Verificación exhaustiva de la identidad de la empresa solicitante.
Revisión de datos legales y de contacto.
Garantiza que el sitio web pertenece realmente a la entidad indicada.
Cobertura:
Cifrado fuerte de las comunicaciones (HTTPS).
Mayor confianza para clientes en transacciones online.
Incluye garantía monetaria para usuarios finales en caso de fallo atribuible a la CA (el importe depende del certificado, en Sectigo EV SSL suele rondar hasta 1 millón USD).
Diferencias frente a otros certificados
DV (Domain Validation): solo valida el dominio, más barato (~10–30 €/año).
OV (Organization Validation): valida la empresa, precio intermedio (~50–100 €/año).
EV (Extended Validation): máxima validación y confianza, precio más alto (~126,95 € ).
✅ Conclusión: Si buscas máxima credibilidad para un sitio corporativo o de comercio electrónico, algún proveedor sí ofrece el EV SSL de Sectigo a 126,95 €/año, con validación extendida y garantía monetaria para clientes.
La diferencia principal entre un certificado EV SSL y uno gratuito como Let’s Encrypt está en el nivel de validación, la garantía monetaria y la confianza que transmiten. Let’s Encrypt ofrece cifrado básico, mientras que el EV SSL proporciona validación empresarial completa y respaldo económico.
🔐 Comparativa: EV SSL vs Let’s Encrypt
Característica
EV SSL (Extended Validation)
Let’s Encrypt (Gratuito)
Precio
100–300 USD/año (DonDominio: 126,95 €/año)
Gratis
Validación
Validación extendida de empresa (documental)
Validación de dominio (automática)
Confianza visual
Muestra nombre legal de la empresa en el certificado
Solo muestra el candado HTTPS
Garantía monetaria
Sí (hasta 1 millón USD para usuarios finales)
No incluye garantía económica
Soporte técnico
Profesional, con SLA y asistencia personalizada
Limitado o comunitario
Renovación automática
Manual o asistida por proveedor
Sí, cada 90 días
Uso recomendado
Comercio electrónico, banca, instituciones
Blogs, sitios personales, proyectos básicos
✅ ¿Cuál elegir?
Let’s Encrypt es ideal si necesitas cifrado básico, sin coste, y no manejas datos sensibles ni pagos.
EV SSL es imprescindible si tu sitio representa una empresa, gestiona transacciones, o necesita máxima confianza y respaldo legal.
Si tu web es corporativa o comercial, el EV SSL transmite profesionalismo y seguridad jurídica. Si es un blog o proyecto personal, Let’s Encrypt puede ser suficiente. ¿Quieres que te ayude a instalar uno u otro en tu hosting?
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:
Entra en tu panel de administración de WordPress.
Ve a Apariencia > Widgets.
Añade un widget de tipo HTML personalizado en la barra lateral.
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
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.
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.
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()).
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.
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.
Centro del reloj
Se dibuja un pequeño círculo en el centro para cubrir las uniones de las agujas.
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.
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)
Círculo exterior → esfera del reloj.
Rayas cortas → minutos.
Rayas largas + números → horas.
Agujas → hora, minuto y segundo.
Centro → círculo pequeño que une las agujas.
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.
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.
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.
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.
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
Accede a http://correo.tusitio.com/installer.
Configura conexión IMAP/SMTP con tu servidor Postfix/Dovecot.
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.
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');