Systemd Timers
Some backend components like the API and Fastpath run as daemons. Many other run as Systemd timers at various intervals.
The latter approach ensures that a component will start again at the next time interval even if the previous run crashed out. This provides a moderate reliability benefit at the expense of having to perform initialization and shutdown at every run.
To show the existing timers and their next start time run:
Summary of timers
Here is a summary of the most important timers used in the backend:
Ooni-developed timers have a matching unit file with .service extension.
To show the existing timers and their next start time run:
This can be useful for debugging.
Dehydrated timer
Runs the Dehydrated ACME tool, see Dehydrated ⚙
is a simple script that provides ACME support for Letsencrypt. It’s integrated with Nginx or HaProxy with custom configuration or a small script as “glue”.
Detector timer
Runs the social media blocking event detector ⚙. It is installed by the detector package 📦.
ooni-api-uploader timer
Runs the Measurement uploader ⚙. It is installed by the
analysis package 📦. Runs /usr/bin/ooni_api_uploader.py
ooni-db-backup timer
Runs the Database backup tool ⚙ as
/usr/bin/ooni-db-backup
Also installed by the
analysis package 📦.
ooni-download-geoip timer
Fetches GeoIP databases, installed by the ooni-api ⚙. Runs
/usr/bin/ooni_download_geoip.py
Monitored with the GeoIP dashboard 📊
See GeoIP downloader ⚙
ooni-rotation timer
Runs the test helper rotation script, installed by the
analysis package 📦. Runs /usr/bin/rotation
ooni-update-asn-metadata timer
Fetches ASN 💡 metadata, installed by the
analysis package 📦. Runs /usr/bin/analysis --update-asnmeta
ooni-update-citizenlab
Fetches CitizenLab data from GitHub, installed by the
analysis package 📦. Runs /usr/bin/analysis --update-citizenlab
ooni-update-fingerprints
Fetches fingerprints from GitHub, installed by the
analysis package 📦. Runs /usr/bin/analysis --update-fingerprints