Introduction

If you have a couple of websites or services, I can imagine that you want to monitor them to see if they are still up and running with possible response times. If a website takes too long to launch or goes offline, you’d like to be notified so you can take action.

With this solution, you can monitor as many websites as you want every 5 minutes.

There are so many status websites these days, what’s so special about this one?

  • It’s free and customisable, even the footer and header (menu) can be changed.
  • It runs separately from the websites or services you want to monitor.
  • It works with Github Actions so you don’t need your own hosting.
  • Notifications are logged with Github issues and can even be sent with SMTP, Telegram, Slack etc.
  • What is limited is that it polls every 5 minutes, but in most cases there is no need to check even faster.

Prerequisites

  • a Github account.

Action plan

Go to https://github.com/upptime/upptime and click Use this template. As the image below shows, enter a repository name, leave Public as it is and check the ‘include all branches’ option.

github-template

github-template

Enable publishing

To get a static status website, you have to enable GitHub Pages on your new repository.

  • Go to your repository settings page
  • Go to the “Pages” sub-section on the left
  • Under “Source”, change “None” to gh-pages
  • In the folder dropdown, select /(root)
  • Skip the “Theme Chooser” option
  • Click on “Save”

Personal Access Tokens

To make commits and publish your website, Upptime requires a personal access token (PAT) with the repo and workflow scope, stored as a repository secret GH_PAT. You can create a personal access token by following these steps:

  • Click on your profile picture on the top-right corner and select “Settings”
  • In the left sidebar, select “Developer settings”
  • In the left sidebar, click “Personal access tokens”
  • Click “Generate new token”
  • Select the “repo” and “workflow” scopes
  • Click “Generate token”
  • After generating your token, copy it (you will not see it again). Then, add it as a repository secret:

In your Upptime repository, select “Settings” In the left sidebar, click “Secrets”

  • Press the button “New repository secret”
  • Enter the name of the secret as GH_PAT Paste your personal access token into the Value field Be sure there are no spaces before or after the token and/or linebreaks after your token Save your PAT by selecting “Add secret” For more information on PATs, read article on the GitHub website: Creating a personal access token.

Update configuration

The .upptimerc.yml file is used as the central configuration store. In that file, you can specify which endpoints you want to monitor and configure your status website. For more information about this part and to find out what’s possible, go to the Configuration of website: https://upptime.js.org/docs/configuration.

To give a simple example of what the configuration might look like. Change some values to your preference.

# Change these first
owner: [your github username] # Your GitHub organization or username, where this repository lives
repo: [the name of the repository] # The name of this repository

sites:
  - name: Google
    url: https://google.com
    maxResponseTime: 15000

status-website:
  # Add your custom domain name, or remove the `cname` line if you don't have a domain
  # Uncomment the `baseUrl` line if you don't have a custom domain and add your repo name there
  cname: [sub.yourdomain.com]
  # baseUrl: /upptime
  logoUrl: https://raw.githubusercontent.com/upptime/upptime.js.org/master/static/img/icon.svg
  name: Status Website
  introTitle: "**Status**"
 # introMessage: This is a sample status page which uses **real-time** data from our [GitHub repository](https://github.com/upptime/upptime). No server required — just GitHub Actions, Issues, and Pages. [**Get your own for free**]
  navbar:
 #   - title: Status
 #     href: /
    - title: GitHub
      href: https://github.com/$OWNER/$REPO

Your own domain

You can land the status website on your own (sub) domain. To do this go to the repository settings.

github-own-domain-statuspage

github-own-domain-statuspage

Click Pages on the left. At Custom Domain you can enter your own (sub) domain. Now go to your hosting website or Cloudflare if you are using this. At Cloudflare you will find these options at DNS, Add record and choose CNAME. Now type as name status and as Content your username.github.io.

Secret websites to monitor

If you have a secret website that you want to monitor, but not visible for anyone else. Add it like this, give it a name and change the URL to $[name], so something like $secret.

sites:
  - name: G
    url: $secret

Go to the repository settings, at the left Secrets. and add a new secret. Name: G and as Value: secret, so without the $. now save and build the workflow again by going to Actions. Click on Setup CI and start workflow. Give it 5 minutes and visit the status website. the real URL should not be visible but still monitored.

More information about the project can be found here: https://upptime.js.org/