DOCKER.md 2.3 KB

bmallenxs/status

Container image for a small live status page built with Go and Gin.

The app reads config.yaml, serves a web UI, exposes /api/status, and pushes live service updates over WebSockets.

Quick Start

Pull the image:

docker pull bmallenxs/status:latest

Run with the bundled config:

docker run --rm -p 8080:8080 bmallenxs/status:latest

Open:

http://localhost:8080

Use Your Own config.yaml

Mount a config file into the container:

docker run --rm \
  -p 8080:8080 \
  -v "$(pwd)/config.yaml:/app/config.yaml:ro" \
  bmallenxs/status:latest

HTTPS / TLS

If you provide a certificate and key, the container can serve HTTPS directly.

docker run --rm \
  -p 8443:8443 \
  -e ADDR=:8443 \
  -e TLS_CERT_FILE=/certs/server.crt \
  -e TLS_KEY_FILE=/certs/server.key \
  -v "$(pwd)/config.yaml:/app/config.yaml:ro" \
  -v "$(pwd)/certs:/certs:ro" \
  bmallenxs/status:latest

Open:

https://localhost:8443

Environment Variables

ADDR : Full listen address inside the container. Default: :8080

PORT : Port-only fallback if ADDR is not set

CONFIG_PATH : Config file path. Default: /app/config.yaml

THEME : UI theme. Supported values: dark or light. Default: dark

TLS_CERT_FILE : Optional PEM certificate file path for HTTPS

TLS_KEY_FILE : Optional PEM private key file path for HTTPS

Notes:

  • Set both TLS_CERT_FILE and TLS_KEY_FILE to enable HTTPS.
  • If only one is set, the container exits with an error.

Example config.yaml

monitors:
  - name: GitHub
    url: https://github.com
    category: Developer Tools

  - name: Cloudflare DNS
    url: dns://cloudflare.com
    category: DNS

  - name: Google TLS
    url: tls://www.google.com:443
    category: TLS

  - name: Google Ping
    url: ping://8.8.8.8
    category: Network

Supported Monitor Schemes

https:// and http:// : HTTP GET check, healthy on 2xx and 3xx

dns:// : DNS resolution check

tls:// : TLS handshake plus certificate validation and expiry reporting

ping:// : TCP reachability check. This is not ICMP ping.

Exposed Port

The image exposes:

8080/tcp

If you change ADDR, publish the matching container port.

Endpoints

/ : Browser UI

/api/status : JSON snapshot

/ws : WebSocket stream of live service_update messages