6status: IPv4/v6 dual stack status board

airhangerf151 pts0 comments

djsumdog/6status: Status Board for IPv4/IPv6 Services - BattlePenguin Code: Meh. Whatever.

This website requires JavaScript.

djsumdog/6status

Watch

Star

Fork

You've already forked 6status

Code

Issues

Pull requests

Projects

Releases

Packages

Wiki

Activity

Actions

Status Board for IPv4/IPv6 Services

22 commits

4 branches

0 tags

917 KiB

Kotlin

88.2%

JavaScript

5.6%

CSS

4.5%

Dockerfile

1%

Just

0.7%

master

Find a file

HTTPS

Download ZIP<br>Download TAR.GZ<br>Download BUNDLE

Open with VS Code

Open with VSCodium

Open with Intellij IDEA

Exact

Exact

Union

RegExp

Sumit Khanna

4f2c59de00

Cogger warning

2026-07-13 23:42:12 -04:00

assets

Screenshot and logo typesetting

2026-07-13 23:34:38 -04:00

gradle

Added healthcheck support

2026-07-13 22:42:27 -04:00

specs

Favicon, branding

2026-07-13 23:19:04 -04:00

src

Favicon, branding

2026-07-13 23:19:04 -04:00

.dockerignore

Independent Docker build process

2026-07-05 13:26:22 -04:00

.gitattributes

initial skeleton

2026-07-04 00:42:25 -04:00

.gitignore

Add gradle lockfile

2026-07-05 13:34:10 -04:00

6status.yml.example

Added healthcheck support

2026-07-13 22:42:27 -04:00

build.gradle.kts

Added healthcheck support

2026-07-13 22:42:27 -04:00

docker-compose.yml

Added IPv6 support to docker environment

2026-07-04 12:28:04 -04:00

Dockerfile

Independent Docker build process

2026-07-05 13:26:22 -04:00

justfile

Independent Docker build process

2026-07-05 13:26:22 -04:00

LICENSE

Added Documentation README (#2)

2026-07-05 23:50:53 -04:00

README.md

Cogger warning

2026-07-13 23:42:12 -04:00

settings.gradle.kts

GLM-5.2 - Opencode - First attempt

2026-07-04 02:52:20 -04:00

README.md

6status

I wanted a status board that handles dual-stack protocol configurations for IPv4 and IPv6, to ensure both endpoints were up when checking for availability. 6status always writes and serves up static status pages, that can be displayed without Javascript (although Javascript is required for dynamic updates). The Javascript can also show an alert if the stats page server itself cannot be reached.

Getting Started with Docker Compose

You can use docker compose up to get 6status up with a Postgres backing container. You will need to copy 6status.yml.example to 6stats.yml and configure it to yor needs.

git clone https://forge.sumit.im/djsumdog/6status<br>cd 6status<br>cp 6status.yml.example 6stats.yml<br>vim 6stats.yml # or whatever your editor is

# if you have just installed<br>just run

# if not, jst run docker compose directly<br>docker compose up<br>Configuration

Each bar on the status chart covers one status_interval (general section; minutes/hours/days, e.g. 30m, 2h, 1d, default 1h). All checks that ran within an interval are aggregated: the interval is only green if every check passed, a single failed check marks the whole interval red (partially-up checks mark it yellow), and intervals with no data at all stay gray.

general:<br>check_interval: "*/5 * * * *"<br>status_interval: 1h<br>Prometheus

A /metrics endpoint exposes a service_availability gauge (1 = up, 0 = down) for every individual check, labelled with service=, title=, type= and check=. The overall status of each service is reported as check="all", and is only 1 when the service is fully up:

service_availability{service="main-web",title="Example Website",type="https",check="all"} 1<br>service_availability{service="main-web",title="Example Website",type="https",check="HTTPS"} 1<br>6status has several checks that can be configured in the checks section of the configuration YAML. The names (keys) can be whatever you want. They're be displayed in the order defined.

HTTP checks

The most basic check is for web connectivity

main-web:<br>title: Example<br>type: https<br>host: example.com<br>redirects: www.example.com<br>enable_ipv6: true # default. Can be omitted<br>It supports checking redirects (e.g for subdomains like www). enable_ipv6 is a setting on all checks, is enabled by default and can be omitted.

Healthchecks

https services can have one application-level healthcheck. It is intentionally opaque: visitors (and the sample API) only ever see a check called "Health Check" that passed or failed — the endpoint and match rules are never sent to the browser, and failure details only appear in the server logs. A json healthcheck requires the response to be valid JSON and the jq expression to evaluate truthy; a text healthcheck takes either search (case-insensitive substring) or regex (raw regex or /pattern/flags with i, m, s flags), but not both. Invalid healthchecks (wrong service type, bad regex, both search and regex, ...) are logged and skipped without affecting the service's other checks.

main-web:<br>title: Example Website<br>type: https<br>host: example.com<br>healthcheck:<br>endpoint: /api/pleroma/healthcheck<br>type: json<br>jq: '.healthy == true'<br>XMPP

The XMPP status checks for service connectivity (client to server and server to server), valid TLS certificates and can optionally check for legacy TLS...

6status check example docker status https

Related Articles