time.orlinum.fr, Building your own Stratum 1 time server#


Documentation current as of July 25, 2026.

This site documents, step by step, how to build a Stratum 1 NTP/NTS server from a Raspberry Pi 5, a GNSS receiver, and a PPS pulse, without any hardware modification to the Pi. Target outcome: RMS offset around a microsecond, drift below 0.05 ppm, RFC 8915-compliant NTS encryption, and a reasonable security hardening level for a service exposed publicly on the Internet.

This documentation is the public version of the project that runs time.orlinum.fr. The goal of this document is that a motivated person, without being an expert in time metrology or Linux hardening, can understand why each building block exists, how to install it, which mistakes to avoid, and how to verify that it actually works.

The source of this documentation will soon be published on GitHub.

This documentation aims for neither exhaustiveness nor full academic rigor. It prioritizes accessibility above all: explaining clearly, not covering every edge case or every nuance of a given framework. Omissions, simplifying shortcuts, even occasional errors may be found here; any error is worth flagging, but this text should not be taken as a reference.

The proofreading and English translation of this documentation were carried out with the assistance of an LLM (Large Language Model). The technical content and design choices remain those of the project’s author.

How to read this documentation#

Every chapter follows the same structure:

  • Why, the problem this chapter solves, in the project’s context.
  • How, the commands and configuration files, annotated.
  • Pitfalls, mistakes encountered in real conditions, not in theory.
  • Verify, how to confirm the step succeeded before moving on.

📚 Going further boxes provide sourced academic background (RFCs, papers, official documentation) for readers who want to understand beyond “it works”.

About the domain name in the examples. This guide documents a real server, time.orlinum.fr. All example commands and configurations nonetheless use the generic name time.example.org, to be replaced everywhere with the real domain before reproducing the commands, including when the example shows output actually captured on this server.

Where to start#

Head to Chapter 0: Overview to understand the architecture choices before touching any hardware.