🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo cambiar la zona horaria y el reloj del servidor (Linux)

Actualizado el 25 de enero de 2026

Introducción: ¿Por qué es importante la hora en tu servidor?

Cuando administras un servidor Linux, la hora del sistema no es un simple dato decorativo. Un reloj desincronizado puede causar una cascada de problemas silenciosos pero graves: registros (logs) con marcas de tiempo incorrectas que dificultan la depuración de errores, certificados SSL que fallan al validarse, tareas programadas (cron) que se ejecutan en el momento equivocado, y problemas de autenticación en sistemas que dependen de Kerberos o LDAP.

Piénsalo de esta manera: si tu servidor cree que son las 3 de la tarde cuando en realidad son las 5, cualquier acción que dependa de la hora exacta (como renovar un certificado o generar un token de seguridad) fallará. Por eso, dominar la configuración de la hora del servidor es una habilidad fundamental para cualquier administrador de sistemas.

En esta guía extensa, te explicaré paso a paso, y desde cero, cómo cambiar la zona horaria Linux y sincronizar el reloj de tu servidor con los servidores de tiempo atómicos de Internet. No necesitas ser un experto; solo seguir las instrucciones y entender los conceptos básicos que te presentaré.


Conceptos básicos: Hora del sistema vs. Hora del hardware

Antes de meter las manos en la masa, es crucial entender que un sistema Linux maneja dos relojes diferentes:

  1. El Reloj del Hardware (RTC - Real Time Clock): Es un chip físico en la placa base del servidor que sigue funcionando incluso cuando el equipo está apagado. Se alimenta con una pequeña batería (como la de un reloj de pulsera).
  2. El Reloj del Sistema (System Clock): Es un reloj lógico gestionado por el kernel de Linux que se ejecuta en la memoria RAM. Este reloj se inicializa desde el reloj del hardware al arrancar el sistema y es el que realmente utilizan los procesos y aplicaciones.

La regla de oro: En la mayoría de los servidores, el reloj del hardware se configura para almacenar la hora en UTC (Tiempo Universal Coordinado), mientras que el reloj del sistema se ajusta a la zona horaria local (por ejemplo, Madrid, Bogotá, Buenos Aires). Esto evita confusiones, ya que UTC no tiene cambios por horario de verano ni invierno.


Herramientas modernas: El poder de timedatectl

Tradicionalmente, se usaban comandos como date, hwclock y enlaces simbólicos a archivos de zona horaria (/etc/localtime). Sin embargo, la forma moderna, limpia y recomendada de gestionar todo esto en distribuciones como Ubuntu, Debian, CentOS, Rocky Linux o AlmaLinux es mediante el comando timedatectl.

Este comando es parte del sistema systemd, que es el "director de orquesta" de la mayoría de las distros actuales. Con él, puedes ver y cambiar la zona horaria Linux, activar la sincronización automática de hora por red (NTP) y mucho más.

Ver el estado actual

Lo primero que debes hacer es conectarte a tu servidor por SSH y ejecutar:

timedatectl

Verás una salida similar a esta:

               Local time: Mié 2024-05-15 10:30:45 CEST
           Universal time: Mié 2024-05-15 08:30:45 UTC
                 RTC time: Mié 2024-05-15 08:30:45
                Time zone: Europe/Madrid (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Interpretemos los campos clave:

  • Local time: La hora actual en la zona horaria que tienes configurada.
  • Universal time (UTC): La hora actual en UTC, que es la hora estándar de referencia.
  • RTC time: La hora que tiene el reloj del hardware.
  • Time zone: La zona horaria Linux que está activa. Aquí puedes ver la ruta completa (ej. Europe/Madrid).
  • NTP service: Indica si la sincronización automática de hora por red está activa (active) o inactiva (inactive). Si está activa, el servidor ajusta su reloj automáticamente.

[INFO] Si el campo NTP service dice inactive, tu servidor depende únicamente de su reloj interno, que puede desviarse con el tiempo. Es muy recomendable activarlo.


Paso 1: Listar las zonas horarias disponibles

Antes de cambiar la zona horaria, necesitas saber cuál es la correcta para tu ubicación. Ejecuta el siguiente comando para listar todas las zonas horarias disponibles en el sistema:

timedatectl list-timezones

La salida será una lista larguísima con nombres como America/New_York, Europe/London, Asia/Tokyo, etc.

Para filtrar y encontrar la tuya fácilmente, puedes usar el comando grep. Por ejemplo, si buscas la zona horaria de México, podrías usar:

timedatectl list-timezones | grep -i mexico

O si buscas una ciudad específica, como Buenos Aires:

timedatectl list-timezones | grep -i buenos

La opción -i hace que la búsqueda no distinga entre mayúsculas y minúsculas.

[TIP] Si tu ciudad no aparece, busca la zona de tu país o la ciudad más grande de tu región. Por ejemplo, para Argentina, America/Argentina/Buenos_Aires es la correcta.


Paso 2: Cambiar la zona horaria Linux

Una vez que tengas el nombre exacto de la zona horaria, el cambio es trivial. Solo tienes que usar el subcomando set-timezone.

Imagina que quieres cambiar la zona horaria a Madrid (España):

sudo timedatectl set-timezone Europe/Madrid

Otro ejemplo, para Bogotá (Colombia):

sudo timedatectl set-timezone America/Bogota

¿Y para Santiago de Chile?

sudo timedatectl set-timezone America/Santiago

¿Por qué usar sudo? Porque modificar la configuración del sistema requiere permisos de superusuario. Si tu usuario no tiene permisos sudo, el comando fallará con un error de "Permission denied".

[WARNING] No intentes crear manualmente enlaces simbólicos a /etc/localtime a menos que sepas exactamente lo que haces. Usar timedatectl es mucho más seguro y evita errores.

Verificar el cambio

Después de ejecutar el comando, verifica que el cambio se haya aplicado correctamente:

timedatectl

Ahora deberías ver que el campo Time zone ha cambiado a la nueva zona y que la Local time se ha ajustado en consecuencia.


Paso 3: Configurar la hora del servidor con sincronización automática (NTP)

Cambiar la zona horaria no ajusta la hora en sí; solo cambia la "lente" con la que ves el tiempo. Para asegurar que la hora del servidor sea precisa, necesitas sincronizarla con una fuente externa confiable. Esto se hace mediante el protocolo NTP (Network Time Protocol).

Activar la sincronización NTP

Si en la salida de timedatectl viste que NTP service estaba en inactive, puedes activarlo fácilmente:

sudo timedatectl set-ntp true

Este comando activará el servicio systemd-timesyncd, que es el cliente NTP integrado en systemd. Es suficiente para la mayoría de los casos.

[INFO] Si el comando falla, puede que tengas instalado ntpd (el demonio NTP clásico) o chrony. En ese caso, deberás gestionar la sincronización con esas herramientas. Sin embargo, systemd-timesyncd es el estándar de fábrica en la mayoría de las distros modernas.

Verificar la sincronización

Vuelve a ejecutar timedatectl. Ahora deberías ver:

System clock synchronized: yes
              NTP service: active

El campo System clock synchronized: yes indica que el sistema ya ha realizado al menos una sincronización exitosa con un servidor de tiempo.

¿Qué servidores NTP usa?

Por defecto, systemd-timesyncd usa los servidores NTP que vienen configurados en el archivo /etc/systemd/timesyncd.conf. Normalmente, estos son los servidores de la distribución (por ejemplo, ntp.ubuntu.com).

Si necesitas usar servidores específicos de tu país o de tu red local, puedes editar este archivo:

sudo nano /etc/systemd/timesyncd.conf

Busca la línea que empieza por #NTP= y descoméntala (quita el #) y añade los servidores separados por espacios.

[Time]
NTP=pool.ntp.org es.pool.ntp.org

Luego, reinicia el servicio para aplicar los cambios:

sudo systemctl restart systemd-timesyncd

Paso 4: Método manual (si no quieres usar NTP)

Aunque es muy poco recomendable, a veces necesitas configurar la hora manualmente, por ejemplo, en un entorno aislado sin acceso a Internet. En ese caso, puedes usar el comando date.

Cambiar la hora y la fecha manualmente

El formato para el comando date es date [MMDDhhmm[[CC]YY][.ss]].

  • MM: Mes (01-12)
  • DD: Día (01-31)
  • hh: Hora (00-23)
  • mm: Minuto (00-59)
  • CC: Los dos primeros dígitos del año (opcional)
  • YY: Los dos últimos dígitos del año (opcional)
  • .ss: Segundos (opcional)

Ejemplo: Quiero poner la fecha al 15 de mayo de 2024 a las 10:30:00.

sudo date 051510302024.00

Desglose: 05 (mes de mayo), 15 (día 15), 10 (hora 10), 30 (minutos 30), 2024 (año 2024), .00 (segundos 00).

[WARNING] Este método es propenso a errores y no se ajusta automáticamente a los cambios de horario de verano. Además, la hora se desviará con el tiempo. Úsalo solo como último recurso.

Sincronizar el reloj del hardware

Después de cambiar la hora manualmente, es una buena práctica sincronizar el reloj del hardware con la hora del sistema para que el cambio persista tras un reinicio.

sudo hwclock --systohc

Este comando le dice al sistema: "Toma la hora del reloj del sistema y escríbela en el reloj del hardware".


Paso 5: Configuración avanzada con chrony (para servidores críticos)

Si tu servidor maneja aplicaciones críticas que requieren una precisión milimétrica (como bases de datos distribuidas o trading de alta frecuencia), systemd-timesyncd puede quedarse corto. En ese caso, la mejor opción es instalar chrony, una implementación de NTP más moderna y precisa.

Instalación

En Debian/Ubuntu:

sudo apt update
sudo apt install chrony

En CentOS/Rocky Linux/AlmaLinux:

sudo dnf install chrony

Configuración básica

El archivo de configuración es /etc/chrony/chrony.conf. La configuración por defecto suele ser suficiente. Puedes ver el estado de la sincronización con:

chronyc tracking

Este comando te mostrará información detallada sobre la desviación de tu reloj, el servidor con el que está sincronizado, etc.


Solución de problemas comunes (FAQ)

Aquí tienes una lista de preguntas frecuentes y sus soluciones:

P: He cambiado la zona horaria, pero la hora no se actualiza en mis aplicaciones.

  • R: Esto es normal. El cambio de zona horaria afecta a los nuevos procesos que se inicien. Las aplicaciones que ya estaban corriendo pueden haber cacheado la zona horaria antigua. Reinicia la aplicación o, en casos extremos, el servidor, para que todos los servicios tomen la nueva configuración.

P: Mi servidor muestra la hora correcta, pero se desvía unos segundos cada día.

  • R: Esto indica que la sincronización NTP no está funcionando correctamente o no está activa. Verifica que NTP service esté en active con timedatectl. Si está activo, revisa los logs del sistema (journalctl -u systemd-timesyncd) para ver si hay errores de conexión con los servidores NTP.

P: Recibo un error "Failed to set time zone: Access denied" al usar timedatectl.

  • R: Olvidaste usar sudo. Este comando requiere privilegios de administrador.

P: ¿Cuál es la diferencia entre UTC y GMT?

  • R: A menudo se usan indistintamente, pero técnicamente, GMT (Greenwich Mean Time) es una zona horaria, mientras que UTC es un estándar de tiempo. En la práctica, para la mayoría de los propósitos, son iguales.

P: Estoy usando el panel de control Syspanel (HestiaCP) en el puerto 2106 y la hora de los logs de los sitios web es incorrecta.

  • R: Syspanel gestiona sus propios entornos, pero la hora del sistema es la base. Asegúrate de que la zona horaria Linux del servidor sea la correcta usando timedatectl. Después de cambiarla, es posible que necesites reiniciar los servicios web (Apache/Nginx) desde el panel o desde la terminal para que los logs se generen con la hora correcta.

P: ¿Cómo puedo ver la hora en formato Unix (epoch)?

  • R: Ejecuta date +%s. Esto te mostrará el número de segundos transcurridos desde el 1 de enero de 1970. Es útil para scripts y programación.

Conclusión y buenas prácticas

Dominar la gestión del tiempo en tu servidor Linux es una señal de un buen administrador de sistemas. No es un tema complejo, pero requiere entender los conceptos y usar las herramientas adecuadas.

Resumen de buenas prácticas:

  1. Siempre usa timedatectl para cambiar la zona horaria Linux. Es la forma estándar y a prueba de errores.
  2. Mantén la sincronización NTP activa. Es la única manera de garantizar que la hora de tu servidor sea precisa y confiable.
  3. Configura el reloj del hardware (RTC) en UTC. Esto evita problemas con el cambio de horario de verano y es la convención estándar en servidores.
  4. Verifica los cambios después de cada modificación con timedatectl.
  5. Para entornos críticos, considera chrony en lugar del cliente NTP básico de systemd.

Con esta guía, ya tienes todo lo necesario para configurar la hora de tu servidor como un profesional. Recuerda que una hora correcta es sinónimo de un servidor sano y fiable. Si tienes más dudas, no dudes en consultar la documentación oficial de tu distribución o preguntar en foros especializados.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel