blob: 015959503b8370b0ddff7c47b05176885d0e4d5c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
[Unit]
Description=GPS + PPS chrony time server dashboard
After=network.target chrony.service gpsd.socket
Wants=gpsd.socket
[Service]
ExecStart=/usr/local/bin/gps-clock-dash -listen :8473
# Once nginx fronts this, bind to loopback only:
# ExecStart=/usr/local/bin/gps-clock-dash -listen 127.0.0.1:8473
Restart=on-failure
RestartSec=5
# Unprivileged, sandboxed. chronyc's monitoring commands (tracking, sources,
# sourcestats) work over chronyd's localhost UDP port without privileges.
DynamicUser=yes
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=yes
PrivateTmp=yes
PrivateDevices=yes
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectControlGroups=yes
RestrictAddressFamilies=AF_INET AF_INET6 AF_UNIX
RestrictNamespaces=yes
LockPersonality=yes
MemoryDenyWriteExecute=yes
SystemCallArchitectures=native
# Optional: to show the "NTP requests" (serverstats) row, chronyc needs
# chronyd's privileged socket in /run/chrony, which is owned by _chrony.
# Uncomment both lines below. Note this lets the process issue any chronyc
# command, including ones that change chronyd's behaviour.
#DynamicUser=no
#User=_chrony
[Install]
WantedBy=multi-user.target
|