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.
- a Github account.
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.
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.
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.
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/