Configuration
The .upptimerc.yml
file is used as the central configuration for Upptime, with this syntax:
Configuration options
Repository
A GitHub repository is used as the "source of truth" for your uptime logs, and the static site uses the GitHub API and fetches data from this repository.
After you've created a new repository using this template (see Creating a repository from a template), specify the username and repository name in the configuration:
Endpoints
You can track as many websites as you like. Add the names and URLs of your endpoints in the sites key:
HTTP verbs
To make POST requests (or any other HTTP verb), you can add the method key:
TCP Port Enpoints
To make a TCP ping to any port, you can add the check key "tcp-ping":
You can also use hostnames with "tcp-ping":
If you want to test only IPv6 for specific hostnames (e.g. use only the AAAA DNS records), then set the ipv6
flag to true
:
Secret URLs
If you don't want to show a URL publicly, you can use repository secrets (see Creating and storing encrypted secrets). Instead of the plain text URL, add the name of the secret prefixed with a $ character:
In the above example, a secret named SECRET_SITE
(without the $) is stored in the repository. You can add as many secrets as you like, and use them in URLs by adding the $
prefix. For example, if your environment variable is calledAPI_URL
, the site URL can be $API_URL
.
You can also use these secrets as part of the URL, for example using a secret called MY_API_KEY
:
Request headers
Similarly, you can set headers in a request like so:
Request body
If you want to send data alongside the headers, you can use the body
key:
You can add any string to the body
parameter, but make sure that you supply the relevant content-type header too.
Custom icons
Each API endpoint has an icon visible on the README.md file and the status website. By default, we use the GitHub Favicon Service to fetch the favicon for the domain of your endpoint (with a fallback to a generic globe icon), but you can also provide a custom icon URL, preferably a transparent square PNG:
Status codes
If you, for example, expect a 404
response (which is traditionally an error response), you can set it as expectedStatusCodes
to mark your site as up. By default, all 20x and 30x responses are as expectedStatusCodes
:
Maximum response time
Upptime endpoints can be up, down, or degraded. By default, if an endpoint takes more than 30 seconds to respond, its performance is tracked as "degraded". You can customize the maximum response time:
In the above example, this endpoint will be measured as degraded if it takes more than 5 seconds to respond.
Self-signed SSL certificates
If you're using a self-signed SSL certificate, you can set the __dangerous__disable_verify_peer
option to true
to skip verifying the certificate:
If you don't want to check for certificate name mismatches, you can set the __dangerous__disable_verify_host
option to true
to skip verifying the certificate:
Alternately, you can disable both of the above settings using __dangerous__insecure
:
Custom status detection
In some cases, your endpoint may return a 200 response but you show the user an error message. This is not a recommended approach, but you can add custom strings to check for.
In the above example, if the body HTML response includes the string "File not found", the site will be marked as "down". Similarly, you can use __dangerous__body_degraded
to mark the site as "degraded" instead.
In other cases your endpoint may return a 200 response with a success message in the body. You might want to check for a specific success message in the body:
In the above example, if the body HTML response does not include "status":"UP", the site will be marked as "down". Similarly, you can use __dangerous__body_degraded_if_text_missing
to mark the site as "degraded" instead.
Check Delay
You can specify an optional delay
(in milliseconds) that will occur between checking each configured endpoint. By default, there is no delay.
Notifications
You can add services to send downtime notifications to, such as SMS, Slack, or email. For more information about notifications, visit the Notifications docs page. You can directly configure the notifications in repository secrets (environment variables).
Assignees
You can add members of your team to be assigned to every downtime issue:
If you want particular users to be assigned per-site, you can add assignees under each entry in sites:
Skip delete issues
Issues are automatically closed once they are resolved, however if they are open for less than 15 minutes they are deleted instead.
You can disable this behaviour by setting the skipDeleteIssues
key to true
in your configuration file:
If issues are deleted, they won't show up in the incident history.
Status website
Theme
You can select one of many themes available to customize your status website:
Available themes are light
, dark
, night
or ocean
.
You can also write your own custom theme by creating a CSS file in the assets/
directory of your Upptime repository. For example, if you create a file assets/my-custom-theme.css
, you can use CSS variables to style your theme. To see a list of all available variables, see the dark.css
theme:
Then, this file will be available at https://example.com/my-custom-theme.css. All files from the assets
directory are served as-is, so you can use this URL to specify your new theme using themeUrl
:
Branding
A static website with PWA is also generated, and you can customize the logo and name in the navbar:
Custom domain
If you want to add a custom domain, you can add the cname key:
If you're not using a custom domain, you should add the base URL to support the default GitHub Pages URL.
Then, your status page may be hosted on https://user.github.io/repo/, where user
is your GitHub username and repo
is your repository name.
Navbar links
You can customize the navbar by adding or removing top-level navigation links.
Intro text
Optionally, you can add some introductory text to the website. You can use Markdown:
Custom favicons
You can add a custom favicon in both SVG and PNG formats:
Custom HTML
To add any custom HTML (unsanitized), you can use customHeadHtml
and customBodyHtml
:
Custom JavaScript
You can add custom scripts:
Or, directly add inline JS:
Custom CSS
You can add custom stylesheets:
Or, directly add inline CSS:
Custom meta tags
To add any custom meta tags, you can use a syntax similar to the links
:
Custom robots.txt files
You might want to have custom search engine indexing rules:
Custom API base URL
By default, Upptime uses the official GitHub API to fetch data for your status page website. If you have a proxy API (perhaps using a personal access token with readonly access to your private repository), you can set the apiBaseUrl
key under status-website
:
Custom raw content URL
By default, Upptime uses https://raw.githubusercontent.com to fetch raw content from GitHub repositories. If you are using a proxy or another content delivery URL, you can replace the default user content base URL.
Internationalization
Though our status page is in English, you can use any language with Upptime by supplying the required strings. The list of all required strings is available in upptime/status-page/i18n.yml
, and you can add them under the i18n key in the configuration file:
You can, for example, change the footer copyright text by changing the internationalization key for footer
. These i18n keys are also used for your README.md file.
Similarly, you can also localize the README.md
file by adding these to the same i18n.yml
file: List of README.md strings.
Repository metadata
If you've just set up your new repository and don't have repository metadata (like description, topics, and homepage), Upptime will update that for you. It will update the metadata as follows:
- Description: "π Uptime monitor and status page for $TITLE, powered by @upptime", where $TITLE is the name of your GitHub organization or user
- Topics: "uptime-monitor", "status-page", "upptime"
- Homepage: Link to your status website
You can add these configuration properties if you don't want these updates to occur:
Git commit options
Upptime commits to git history to keep a track of response times, and also commits graphs and README updates. You can change the commit messages for each of these actions:
By default, these commits are done by Upptime Bot, but you can overwrite these commits to use your bot instead.
CI schedule
You can customize the schedule when Uptime workflows run by adding the workflowSchedule
key in your configuration file. The syntax followed is that of cron
. The default values are like so:
Keep in mind that a scheduled GitHub Action cannot run faster than every 5 minutes.
Self-hosted runners
As of now, the workflows CANNOT run on windows runner.
You may want to use a self-hosted runner instead of the publicly available GitHub runners in your project for more accurate uptime monitoring (ensuring scheduled workflows run on time) or to save build minutes. You can specify your self-hosted runner like so:
User agent
Requests made to the GitHub API must include a valid User-Agent header (see User Agent required). It is recommended to use your GitHub username here: