Skip to content

Status pages

A status page shows your users whether your servers and services work, and what you’re doing about a problem. Each service on the page is one of your tunnels or checks, under a public name you choose. Incidents and updates you post appear on the page at once.

  1. In the sidebar, go to Status pages and click New status page.

  2. Give the page a Name. Its Address comes from the name, and you can change it. Click Next.

  3. In Choose services, tick what the page shows. Tunnels and website checks that aren’t paused start ticked. Heartbeats, keyword, ping, port and DNS checks, and paused ones, start unticked. Groups start folded: open one with its arrow, or tick it to take all of it. Search finds names, addresses, and tags.

  4. Click Create status page. The page is a draft, and nothing is public yet.

  5. Click Publish.

A page lives at its own address, <address>.tunnelhq.net, for example larkspur-vpn.tunnelhq.net, and on your own domain if you add one. Links to the older address, status.tunnelhq.com/larkspur-vpn, forward to the new one.

A page needs at least one service that isn’t hidden before it can be published. Once it’s published, your changes wait until you click Publish changes. Beside it, View page opens the public page, and the copy button (Copy address) copies its address. Both work once the page is published.

A page has its own Services, Updates, and Settings tabs.

The Services tab shows the page’s sections, with a count such as “103 of 400 services” above them. Choose services opens the same list as when you created the page: tick what should be on it, untick what shouldn’t, and click Save.

  • A page shows up to 400 services, counted the way visitors see them. A server’s tunnels on one address count once, because the page shows them as one row. A group counts its members.
  • A page has 1 to 20 sections. Add section adds one at the end.
  • Every service needs a public name, and each tunnel or check can be on a page only once. A server’s address is left out of the names it starts with.
  • A hidden service stays in the page’s setup, with its name and place, but isn’t shown on the public page.
  • Drag a row by its handle to move it. Tick rows, or a whole section, to hide, show, move, or remove many at once.

A section’s menu can remove the section in two ways. Remove section, keep its services moves its services into the section above it (or, for the first section, the one below). Remove section and its 12 services, with the section’s own count, takes them off the page too. A page’s only section stays, but its menu can take all its services off. Either way, the tunnels and checks themselves stay as they are.

Changes save by themselves as you make them.

On the Updates tab, click New update. Give it a title, choose how bad it is and which services it affects, write a message, then click Post update. It’s public at once.

Status Means
Investigating You know about the problem and are looking into it.
Identified You know the cause.
Monitoring A fix is in place and you’re watching it.
Resolved It’s over. Choose Resolved and click Resolve to post the last update.

The impact is Degraded, Partial outage, or Full outage. Messages are plain text, and web addresses in them become links on the page.

With automatic incidents on, an incident opens by itself as Investigating when a service on the page goes down, written in the page’s language from its prefilled text. It closes by itself when the service recovers. Once someone posts an update to it, it’s theirs: it closes only when they post Resolved.

You can choose to show the services of a Monitoring incident with the state their checks report, instead of the incident’s impact. The incident itself stays on the page. This takes effect at once, without Publish changes.

The Settings tab has General, Appearance, Domain, Page access, Search and sharing, Language, Updates, and Notifications.

  • General: the name, the address, your website, and a contact link. Changing the address of a published page moves it: the old address stops answering.
  • Appearance: the theme, brand colour, logo, favicon, header, and how services are shown. See Logo and pictures.
  • Page access: a password makes the page private. It must be 8 to 72 characters. The page’s feeds then need the password too, and search engines never list it.
  • Search and sharing: whether search engines may list the page, the browser tab’s title, and the share image shown when someone shares the link. When listing is off, the page asks search engines not to list it. That isn’t privacy: anyone with the address can still open it.
  • Language: the page comes in 13 languages: English, French, German, Spanish, Brazilian Portuguese, Dutch, Polish, Swedish, Russian, Turkish, Persian, Arabic, and Simplified Chinese. Offer more than one, and visitors can switch with the language menu in the page header.
  • Updates: automatic incidents, how services look while an incident is Monitoring, and the prefilled text each kind of update starts with.
  • Notifications: the addresses of the page’s RSS and Atom feeds. There are no email subscriptions.

Showing in search results, the password, and the Updates settings take effect at once. The rest wait for Publish changes on a published page.

Under Appearance, Get from your website reads the website you set under General and shows what it found: the logo (the mark in your site’s header), the favicon, and the share image. If your logo is an SVG drawn in the text colour, you get a light and a dark logo from it. Nothing is saved until you click Use beside one, or Use all.

To set a picture yourself, drop a file on its box, or click it to choose one:

Picture Files Size
Logo, and the logo for dark mode PNG, JPEG, WebP, or SVG Up to 300 KB
Favicon PNG, SVG, ICO, GIF, or JPEG Up to 50 KB
Share image PNG or JPEG, best at 1200 by 630 Up to 500 KB

Without a dark logo, the page uses the light one in dark mode. The logo’s height is 24, 32, 40, or 48 pixels.

Show the name beside the logo follows the logo’s shape until you choose: a square mark gets the page’s name beside it, and a wide logo that spells the name doesn’t. A new logo hands the choice back to its shape.

A page can use your own domain, such as status.example.com, under Settings, Domain. Enter the domain and click Save, and the panel shows the record to add at your DNS provider:

Your domain Record to add
A subdomain, such as status.example.com A CNAME record named status, pointing to cname.tunnelhq.net.
A bare domain, such as example.com A CNAME record named @, pointing to cname.tunnelhq.net, added as your DNS provider’s CNAME flattening, ALIAS or ANAME record. A domain without a subdomain can’t hold an ordinary CNAME, so if your provider offers none of these, use a subdomain such as status.example.com.

On Cloudflare, set the record to DNS only (grey cloud). With the proxy on, the check fails and says so: “Cloudflare’s proxy answers for this name.” An older record that points to tunnelhq.net or status.tunnelhq.com keeps working.

Then click Check. Once the record points to TunnelHQ, HTTPS comes on by itself, usually within a few minutes. If HTTPS fails 4 times in an hour, the check stops trying for that hour, because Let’s Encrypt refuses a domain for a while after 5 failures: fix the record, then try again later. The domain goes through these states:

State Means
Waiting for the record The domain is saved, but its record doesn’t point to TunnelHQ yet. The line under it says what the check found.
Connected. HTTPS is being set up The record points here, and the certificate is on its way.
Connected. HTTPS on The page answers on your domain.
Connected, but HTTPS failed The certificate failed. The line under it says why.

Under the state, the panel shows the page’s address on your domain, such as https://status.example.com, marked not live yet. Once HTTPS is on, it becomes a link, with Copy beside it.

Once the domain is on, the published page uses it. Its own address keeps working too.

A maintenance window that covers a service on the page shows on it, up to 7 days before it starts and while it runs. A page with tabs in its header lists them under Maintenance.

Every page has an RSS feed and an Atom feed, so people can follow its updates in a feed reader: /feed.rss and /feed.atom at the page’s address, for example larkspur-vpn.tunnelhq.net/feed.rss, or on its own domain.

The feeds carry the page’s incidents, with a new entry for each update, and the maintenance it shows. A window’s entry is titled “Maintenance: “ and its name, links to the page’s maintenance list, and says “Scheduled” or “In progress”, when it runs, and its note, in the page’s language. When the window starts, it comes as a new entry, so readers see the start too.

Anyone in the project can see its status pages. Creating, editing, publishing, or deleting a page needs a role that can edit the project. Posting incidents and updates needs a role that can edit monitors. Owner, Admin, and Manager can do both by default; Viewer can only look (see Roles).

  • The REST API can do everything on this page, including the custom domain, and pictures from your website or from a link (logo_url and the like).
  • An AI assistant can create pages with the services you name, add, remove, hide, or show many services at once, edit settings and the password, take pictures from your website or a link, set up your own domain, publish, and post incidents and updates. Deleting a page needs the dashboard or an API key.
  • The CLI can create a page, change many services at once, set up your own domain, take pictures from your website, and post incidents and updates. These commands come with the CLI’s next release.