No description
  • JavaScript 85.7%
  • CSS 10.8%
  • Dockerfile 1.8%
  • HTML 1.7%
Find a file
2026-01-20 02:13:06 +01:00
public dockerized 2026-01-20 02:13:06 +01:00
.dockerignore dockerized 2026-01-20 02:13:06 +01:00
Dockerfile dockerized 2026-01-20 02:13:06 +01:00
LICENSE dockerized 2026-01-20 02:13:06 +01:00
package.json initial commit 2026-01-19 00:04:32 +01:00
README.md dockerized 2026-01-20 02:13:06 +01:00
server.js dockerized 2026-01-20 02:13:06 +01:00

knet-homepage

Run locally (with proxy)

Start the local server:

node server.js

Open http://localhost:8000

Docker

Build the image:

docker build -t knet-homepage .

Run the container:

docker run --rm -p 8000:8000 -e PORT=8000 knet-homepage

Open http://localhost:8000

Coolify

  • Create a new application and connect this Git repo.
  • Build pack: Dockerfile.
  • Exposed port: 8000.
  • Optional environment variables:
    • PORT (default 8000)
    • DEBUG_PINGS=true to log ping diagnostics

Status data

Service and resource checks are configured only through JSON files in data/.

ICMP checks for resources

Add pingHost to any resource in data/resources.json:

{
    "id": "r1",
    "name": "Osiris",
    "type": "compute",
    "location": "helsinki",
    "notes": "Primary Compute",
    "pingHost": "10.0.0.10",
    "pingTimeoutMs": 1000
}

The server uses system ping (ICMP) and marks resources up or down. If pingHost is missing, it falls back to the resource status field or pending.

Per-service health checks

Edit data/services.json and set pingUrl per service. The server will call each pingUrl and compare the response body to pingExpect (default OK). Example:

{
    "id": "s1",
    "name": "Jellyfin",
    "host": "Aegis",
    "status": "up",
    "description": "Media streaming",
    "pingUrl": "https://jellyfin.karmacoma.dev/health",
    "pingExpect": "OK",
    "pingTimeoutMs": 5000
}

The frontend uses /api/service-status to fetch health checks and will fall back to data/status.json if a service does not have pingUrl set.