Skip to main content

Instalace a konfigurace NTP serveru v Dockeru (2025 Update)


Tento návod slouží k nastavení vlastního časového serveru, který bude synchronizovat čas z autoritativních českých zdrojů a poskytovat jej klientům v lokální síti (např. Windows 11).

 

Krok 1: Vytvoření adresářů a nastavení práv

 

Začněte tím, že vytvoříte adresář pro konfigurační soubor NTP serveru na vašem hostitelském systému:

sudo mkdir -p /opt/ntp/data
sudo chown -R 1000:1000 /opt/ntp

Popis: Vytvoříme složku /opt/ntp pro konfigurační soubor a podadresář /data pro soubor ntp.drift, který uchovává informace o stabilitě hodin.

 

Krok 2: Vytvoření konfiguračního souboru ntp.conf

Vytvořte vlastní konfigurační soubor NTP. Otevřete soubor pro úpravy pomocí editoru:

sudo nano /opt/ntp/ntp.conf

Do souboru vložte následující konfiguraci, která nastaví české NTP servery:

# --- ZDROJE ČASU ---
# iburst zajistí, že se server synchronizuje ihned po startu
server cz.pool.ntp.org iburst
server ntp.nic.cz iburst
server ntp.cesnet.cz iburst
server time.mff.cuni.cz iburst

# --- LOKÁLNÍ ZÁLOHA ---
# Pokud vypadne internet, server použije vnitřní hodiny hostitele.
# Stratum 10 zajistí, že tato záloha má nejnižší prioritu.
server 127.127.1.0
fudge 127.127.1.0 stratum 10

# --- SOUBOR PRO STABILITU ---
# Zde se ukládá drift (odchylka) krystalových hodin pro vyšší přesnost.
driftfile /var/lib/ntp/ntp.drift

# --- ZABEZPEČENÍ A PŘÍSTUP ---
# Výchozí pravidlo: zakázat vše kromě odpovědí na dotazy.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery

# Povolit plnou komunikaci pro localhost (vnitřní potřeby kontejneru).
restrict 127.0.0.1
restrict ::1

# POVOLENÍ PRO KLIENTY: Zde musíte povolit svou lokální síť.
# Bez tohoto řádku uvidí Windows 11 chybu nebo "Stratum 0".
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap

Tento soubor specifikuje 4 české NTP servery a obsahuje základní bezpečnostní omezení.

 

Krok 3: Vytvoření docker-compose.yml souboru

Vytvořte docker-compose.yml soubor v adresáři, kde chcete spravovat NTP stack. Například v /opt/ntp/.

Obsah souboru:

version: '3.8'

services:
  ntp:
    image: cturra/ntp:latest
    container_name: ntp-server
    restart: unless-stopped

    # --- ZÁSADNÍ OPRAVY PRO SYNCHRONIZACI ---
    # privileged: true dává kontejneru právo měnit čas hostitele.
    # Bez toho by v logu byla chyba "Could not step system clock".
    privileged: true
    cap_add:
      - SYS_TIME

    # NTP běží výhradně na UDP portu 123.
    ports:
      - "123:123/udp"

    environment:
      - TZ=Europe/Prague # Nastavení časové zóny pro správné logování.

    volumes:
      # Synchronizace času s Linux hostitelem.
      - /etc/localtime:/etc/localtime:ro
      # Mapování vašeho ntp.conf (pouze pro čtení).
      - /opt/ntp/ntp.conf:/etc/ntp.conf:ro
      # Mapování datové složky pro uchování ntp.drift souboru.
      - /opt/ntp/data:/var/lib/ntp

    # Doporučujeme nepoužívat složité sítě, pokud to není nutné.
    # Výchozí bridge síť je pro NTP nejstabilnější.

 

Krok 4: Spuštění kontejneru

Update the stack

Krok 5: Ověření funkčnosti NTP serveru

 

Po spuštění kontejneru můžete ověřit funkčnost NTP serveru pomocí následujících kroků:

Použijte příkaz chronyc tracking: Tento příkaz vám poskytne informace o aktuálním zdroji synchronizace a odchylkách:

chronyc tracking

Připojte se do kontejneru:

docker exec -it ntp-server /bin/sh

Zkontrolujte stav NTP synchronizace:

chronyc sources

Tento příkaz zobrazí seznam NTP serverů, ke kterým je váš NTP server připojen, a ukáže odchylky v čase.

exit

 

Krok 6: Testování přesnosti NTP serveru

 

Testování přesnosti můžete provést příkazem:

sudo ntpdate -q ntp.zelina.eu

Tento příkaz zobrazí odchylky a stav připojení k NTP serveru.

Krok 7: Nastavení NTP serveru na Windows 11

 

  1. Otevřete Ovládací panelyHodiny a oblastDatum a časInternetový čas.
  2. Klikněte na Změnit nastavení a zadejte svůj NTP server:

    ntp.zelina.eu

Klikněte na Aktualizovat nyní pro okamžitou synchronizaci času.

Krok 8: Ověření synchronizace na Windows 11

 

Na Windows 11 můžete ověřit stav synchronizace času příkazem v příkazovém řádku:

w32tm /query /status

🛠️ 1. Spusť CMD jako správce

 

Stiskni Start → napiš cmd → pravým klikem → Spustit jako správce.

net stop w32time

⚙️ 3. Nastav tvůj vlastní NTP server

w32tm /config /manualpeerlist:"ntp.zelina.eu" /syncfromflags:manual /reliable:YES /update

▶️ 4. Spusť časovou službu

net start w32time

🔁 5. Proveď okamžitou synchronizaci

w32tm /resync

6. Ověř stav a zdroj

 

w32tm /query /status
w32tm /query /source


6. Časový script pro windows

🔁 Použití:

  1. Spusť CMD jako správce

  2. Vlož celý blok výše a stiskni Enter

@echo off
echo === Zastavuji casovou sluzbu...
net stop w32time

echo === Nastavuji vlastni NTP server: ntp.zelina.eu
w32tm /config /manualpeerlist:"ntp.zelina.eu" /syncfromflags:manual /reliable:YES /update

echo === Spoustim casovou sluzbu...
net start w32time

echo === Provadim okamzitou synchronizaci...
w32tm /resync

echo === Overuji stav sluzby...
w32tm /query /status
w32tm /query /source

echo === Hotovo.

Tento příkaz ukáže aktuální stav synchronizace, včetně odchylky času a serveru, se kterým je systém synchronizován.

Tímto máte plně funkční NTP server, konfigurovaný pro co nejpřesnější české servery, a nastavený k použití na Windows 11.