

And it's trivial to setup a local environment to preview changes: It is nice to have the content hosted in a git repository: sysadmins can just edit Markdown in the git repository and push to deploy changes, no web browser required. So, for now, the source is hosted and built in our legacy git and Jenkins services. Even though we do have GitLab pages set up now, it's not (yet) integrated with our mirroring infrastructure.

DeploymentĪt first, I wanted to deploy the site through GitLab CI, but at that time we didn't have GitLab pages set up. And being based on Hugo means that the site is generated from a set of Markdown files and the result is just plain HTML that can be hosted on any web server on the planet. It's basically a theme for the Hugo static site generator, which means that it's a set of HTML, CSS, and a sprinkle of Javascript. So when I found cstate, I was pretty excited. It generally requires more maintenance than what we'd like, needing silly things like a SQL database and PHP web server. But Cachet is a complex Laravel app, which also requires a web browser to update.

That was already a great improvement over the previous solutions, which were to use first a wiki and then a blog to post updates. In another life, I had setup a status page using a tool called Cachet. It wasn't my first foray in status page design. In the end, a manually curated dashboard provides important usability benefits over an automated system, and all major organisations have one. Worse, they also tend to generate false positives, and don't clearly show users which issues are critical. But those are hard to understand for users. We already have two monitoring tools in the sysadmin team: Icinga (a fork of Nagios) and Prometheus, with Grafana dashboards. The latter is still on the sysadmin roadmap, but a status page seemed like a good solution for the former. I surveyed internal users at the end of 2020 to see what could be improved, and one of the suggestions that came up was to "document downtimes of one hour or longer" and generally improve communications around monitoring. The first step in setting up a service page was to realize we needed one in the first place. This post documents why we launched, how the service was built, and how it works. The status page also displays outages related to Tor internal services, like our GitLab instance. You can check status.torproject for news about major outages in Tor services, including v3 and v2 onion services, directory authorities, our website ( ), and the tool. The Tor Project now has a status page which shows the state of our major services.
