---
title: "Cara Mengatur Zona Waktu dan Sinkron Jam Server Linux"
description: "Langkah mengganti zona waktu ke Asia/Jakarta dengan timedatectl, mengaktifkan sinkron NTP lewat systemd-timesyncd atau chrony, dan mengecek hasilnya."
url: "https://nivelva.com/insight/cara-mengatur-zona-waktu-sinkron-jam-server-linux"
category: "Server \u0026 Infrastruktur"
tags: ["zona waktu","ntp","chrony","timedatectl","linux"]
author: "Theresia Candiawan"
published: "2026-11-07T05:34:00+07:00"
updated: "2026-11-07T05:34:00+07:00"
language: "id"
publisher: "Nivelva (https://nivelva.com)"
---

# Cara Mengatur Zona Waktu dan Sinkron Jam Server Linux

> **Jawaban singkat:** Ganti zona waktu dengan sudo timedatectl set-timezone Asia/Jakarta, lalu pastikan sinkron NTP aktif dengan timedatectl set-ntp true. Ubuntu memakai systemd-timesyncd, AlmaLinux memakai chrony. Cek hasilnya lewat timedatectl status.

Pernah melihat jadwal backup jalan jam tiga sore padahal diatur jam sepuluh malam? Atau stempel waktu di log selisih tujuh jam dari jam di laptopmu? Hampir pasti penyebabnya zona waktu server masih UTC, bawaan banyak image VPS.

Jawabannya singkat: atur zona waktu dengan `timedatectl set-timezone`, lalu pastikan jam server tersinkron otomatis ke server NTP. Dua hal ini berbeda. Zona waktu menentukan cara jam ditampilkan, sedangkan NTP menjaga agar jamnya sendiri tepat.

## Kenapa jam server harus akurat?

Jam yang meleset beberapa menit saja bisa menimbulkan masalah yang membingungkan:

- Sertifikat SSL dan token login (misalnya kode 2FA berbasis waktu) bisa dianggap belum berlaku atau sudah kedaluwarsa.
- Urutan log dari beberapa server jadi tidak cocok saat kamu menelusuri insiden.
- Cron job berjalan di jam yang tidak kamu harapkan.
- Replikasi database dan sistem terdistribusi bisa bermasalah bila jam antar-server berbeda jauh.

## Langkah mengatur zona waktu dan sinkron jam

Langkah berikut berlaku untuk Ubuntu, Debian, dan AlmaLinux karena semuanya memakai systemd.

### Langkah 1: Cek kondisi sekarang

```bash
timedatectl
```

Perhatikan tiga baris: `Time zone`, `System clock synchronized`, dan `NTP service`. Bila tertulis `Time zone: Etc/UTC (UTC, +0000)` dan kamu ingin waktu Jakarta, lanjut ke langkah 2.

### Langkah 2: Cari nama zona waktu yang benar

```bash
timedatectl list-timezones | grep Asia/
```

Indonesia punya tiga zona waktu (WIB, WITA, WIT), dengan WIB terbagi ke dua nama zona di basis data tz:

| Wilayah | Nama zona | Selisih dari UTC |
|:--|:--|:--|
| WIB (Jawa, Sumatra) | Asia/Jakarta | +07:00 |
| WIB (Kalimantan Barat dan Tengah) | Asia/Pontianak | +07:00 |
| WITA (Bali, Sulawesi, NTB, NTT, Kalimantan Selatan, Timur, dan Utara) | Asia/Makassar | +08:00 |
| WIT (Maluku, Papua) | Asia/Jayapura | +09:00 |

Untuk server yang melayani pengguna di seluruh Indonesia, `Asia/Jakarta` paling umum dipakai. Sebagian tim memilih tetap memakai UTC di server dan baru mengonversi di aplikasi. Keduanya sah, yang penting konsisten di semua server.

### Langkah 3: Ganti zona waktu

```bash
sudo timedatectl set-timezone Asia/Jakarta
```

Perintah ini mengubah symlink `/etc/localtime`. Jalankan `date` untuk memastikan jam yang tampil sudah benar.

### Langkah 4: Aktifkan sinkron NTP

```bash
sudo timedatectl set-ntp true
```

Perintah ini menyalakan layanan sinkron waktu bawaan distro. Di Ubuntu 24.04 layanannya `systemd-timesyncd`. Di AlmaLinux 9 layanannya `chronyd` dari paket chrony. Bila muncul pesan bahwa NTP tidak didukung, artinya belum ada layanan sinkron yang terpasang (lihat langkah 5).

### Langkah 5: Atur server NTP (opsional)

Server bawaan distro biasanya sudah cukup. Bila ingin memakai pool Indonesia dari NTP Pool Project, atur sesuai layanannya.

Untuk systemd-timesyncd (Ubuntu), edit `/etc/systemd/timesyncd.conf`:

```ini
[Time]
NTP=0.id.pool.ntp.org 1.id.pool.ntp.org 2.id.pool.ntp.org
FallbackNTP=ntp.ubuntu.com
```

Lalu terapkan:

```bash
sudo systemctl restart systemd-timesyncd
```

Untuk chrony (AlmaLinux), edit `/etc/chrony.conf`. Ganti atau tambahkan baris `pool`:

```text
pool id.pool.ntp.org iburst
```

Lalu terapkan:

```bash
sudo systemctl enable --now chronyd
sudo systemctl restart chronyd
```

Bila server belum punya layanan sinkron sama sekali, pasang salah satunya: `sudo apt install systemd-timesyncd` di Ubuntu/Debian, atau `sudo dnf install chrony` di AlmaLinux. Jangan menjalankan dua layanan sinkron sekaligus, karena keduanya akan saling berebut mengatur jam.

### Langkah 6: Pastikan sinkron berhasil

Untuk systemd-timesyncd:

```bash
timedatectl timesync-status
```

Untuk chrony:

```bash
chronyc tracking
chronyc sources -v
```

Di `chronyc sources`, baris yang diawali `^*` adalah server yang sedang dipakai. Di `timedatectl`, baris `System clock synchronized: yes` berarti jam sudah tersinkron.

> **Firewall memblokir NTP?:**
>
> NTP memakai UDP port 123 ke arah keluar. Bila sinkron tidak pernah berhasil, periksa firewall server dan firewall penyedia jaringan. Daftar port lain bisa kamu cek di [port penting server](https://nivelva.com/insight/port-penting-server).

### Langkah 7: Restart layanan yang berjalan lama

Proses yang sudah berjalan sebelum zona waktu diganti kadang masih memakai zona lama. Restart layanan penting seperti cron, PHP-FPM, dan aplikasi milikmu, atau reboot server di jam sepi agar semuanya seragam.

## Zona waktu aplikasi bisa berbeda dari sistem

Mengganti zona waktu sistem tidak otomatis mengubah semua aplikasi. Beberapa yang sering terlewat:

- **PHP** punya setelan `date.timezone` di `php.ini`. Bila diisi `UTC`, fungsi tanggal PHP tetap memakai UTC.
- **MySQL dan MariaDB** memakai zona sistem bila variabel `time_zone` bernilai `SYSTEM`. Restart database setelah zona sistem diganti.
- **Container Docker** tidak ikut zona host. Atur lewat variabel `TZ=Asia/Jakarta` bila image mendukungnya, atau mount `/etc/localtime` sebagai read-only.
- **Cron** membaca jadwal sesuai zona sistem, jadi jadwal lama perlu dicek ulang setelah zona diganti. Panduan lengkapnya ada di [cara membuat cron job di Linux](https://nivelva.com/insight/cron-job-linux).

## Bagaimana dengan jam hardware (RTC)?

Server punya jam hardware selain jam sistem. Di Linux, jam hardware sebaiknya disimpan dalam UTC. Cek baris `RTC in local TZ` di keluaran `timedatectl`. Bila tertulis `yes`, kembalikan ke UTC:

```bash
sudo timedatectl set-local-rtc 0
```

Di VPS, jam hardware dikelola hypervisor, jadi biasanya kamu cukup memastikan NTP aktif.

## Pertanyaan yang sering diajukan

### Apakah mengganti zona waktu membutuhkan reboot?

Tidak wajib. Perubahan langsung berlaku untuk proses baru. Proses yang sudah berjalan sebaiknya direstart agar ikut memakai zona baru.

### Lebih baik server memakai UTC atau Asia/Jakarta?

Tergantung kebiasaan tim. UTC memudahkan bila server tersebar di banyak negara. Asia/Jakarta memudahkan membaca log dan jadwal untuk bisnis yang seluruhnya di Indonesia. Yang penting semua server memakai pilihan yang sama.

### Jam server selisih beberapa menit, apakah langsung dikoreksi?

Chrony dan systemd-timesyncd mengoreksi jam secara bertahap atau melompat sesuai besar selisih dan konfigurasinya. Di chrony, opsi makestep di chrony.conf mengizinkan lompatan langsung saat awal sinkron.

### Bagaimana mengatur zona waktu di container Docker?

Tambahkan environment TZ=Asia/Jakarta bila image mendukung tzdata, atau mount /etc/localtime dari host secara read-only.

## Checklist sebelum selesai

Sebelum menutup terminal, pastikan semua poin ini terpenuhi:

- `timedatectl` menampilkan zona waktu yang benar.
- `System clock synchronized: yes`.
- Hanya satu layanan sinkron waktu yang aktif.
- UDP 123 keluar tidak diblokir.
- Zona waktu PHP, database, dan container sudah dicek.

## Sumber

- <https://www.freedesktop.org/software/systemd/man/latest/timedatectl.html>
- <https://chrony-project.org/documentation.html>
- <https://www.ntppool.org/zone/id>

---

Diterbitkan oleh Nivelva Insight (https://nivelva.com/insight/). Artikel ini: https://nivelva.com/insight/cara-mengatur-zona-waktu-sinkron-jam-server-linux
Kontak Nivelva: WhatsApp https://wa.me/6285111245007, email hello@nivelva.com
