Instalace ntp serveru
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
sudo chown -R 1000:1000 /opt/ntp
Tento adresář bude obsahovat konfigurační soubor NTP, který kontejner bude používat.
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:
# ==========================================================
# KONFIGURACE NTP SERVERU (ntp.zelina.eu / ntp.mersl.eu)
# ==========================================================
# 1. NADŘAZENÉ ČESKÉ SERVERY (Zdroje času)
# Používáme iburst pro bleskovou synchronizaci po startu.
server cz.pool.ntp.org iburst
server ntp.nic.cz iburst
server ntp.cesnet.cz iburst
server time.mff.cuni.cz iburst
# 2. LOKÁLNÍ ZÁLOŽNÍ HODINY
# Pokud vypadne internet, server bude brát čas z hostitelského systému.
# Fudge stratum 10 zajistí, že se lokální čas použije jen jako poslední záchrana.
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# 3. SOUBORY PRO STABILITU
# Driftfile si ukládá odchylky v taktu procesoru pro vyšší přesnost.
driftfile /var/lib/ntp/ntp.drift
# 4. BEZPEČNOST A PŘÍSTUPOVÁ PRÁVA
# Výchozí nastavení: zakázat vše kromě odpovídání na dotazy.
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
# Povolit plný přístup pro lokální smyčku (localhost).
restrict 127.0.0.1
restrict ::1
# KLÍČOVÝ BOD: Povolení pro vaše Windows v lokální síti.
# Bez tohoto řádku uvidí Windows "Stratum 0" nebo "Access Denied".
# Rozsah 192.168.0.0/16 pokrývá celou vaši domácí síť.
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:
# Oficiální a lehký obraz NTP serveru
image: cturra/ntp # Používáme obraz pro NTP server.ntp:latest
container_name: ntp-server
# PojmenováníZajišťuje, kontejneruže jakose 'ntp-server'.server spustí po pádu nebo restartu celého stroje
restart: unless-stopped
# KontejnerKLÍČOVÉ seNASTAVENÍ automatickyPRO restartuje,FUNKČNOST:
pokud# sePrivileged zastaví.dává kontejneru právo měnit systémový čas hostitele.
# Bez tohoto by server hlásil "Could not step system clock".
privileged: true
# Přidává specifickou schopnost pro správu času (pojistka k privileged)
cap_add:
- SYS_TIME
# NTP komunikuje výhradně přes UDP port 123
ports:
- "123:123/udp"
# OtevřeníNastavení UDP portu 123 pro NTP komunikaci.prostředí
environment:
- TZ=Europe/Prague # NastavujeNastaví časovouvnitřní zónučas kontejneru na Evropu/Prahu.český
# Propojení souborů mezi Linuxem a kontejnerem
volumes:
# Synchronizace časové zóny s hostitelským systémem
- /etc/localtime:/etc/localtime:ro
# MountujeVÁŠ časovouHLAVNÍ konfiguraciKONFIGURAČNÍ z hostiteleSOUBOR (jenpodle vašeho umístění v /opt/ntp)
# :ro znamená "read-only" (pouze pro čtení)., aby kontejner soubor nechtěně nezměnil
- /opt/ntp/ntp.conf:/etc/ntp.conf:ro
# MountujeDOPORUČENÉ: vlastníUkládání NTPdrift konfiguračnísouboru soubor(stability zčasu) na disk hostitele
(jen# proPokud čtení).tento cap_add:adresář neexistuje, Docker ho vytvoří automaticky
- SYS_TIME # Přidává oprávnění pro nastavení systémového času uvnitř kontejneru.
networks:
- ntp_network # Použití uživatelsky definované sítě.
networks:
ntp_network:
driver: bridge # Definice vlastní sítě pomocí bridge driveru./opt/ntp/data:/var/lib/ntp
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
- Otevřete Ovládací panely → Hodiny a oblast → Datum a čas → Internetový čas.
- 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í:
-
Spusť CMD jako správce
-
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.