Connectivity Test Server

A simple HTTP server for connectivity testing. It can be run from the command line or in a container.

The Python version relies only on Python's standard library, so it should work in any environment with Python installed. The Node.js version also relies only on the standard library, so it should work in any environment with Node.js installed. The Go version also relies only on the standard library, so it should work in any environment with Go installed.

It displays a simple HTML or plain-text page with the client's IP address and any detected X-* headers.

Disclaimer

The ok-server scripts were generated using AI under human supervision. The owner of the repository is not responsible for any issues that may arise from using the AI-generated code.

Usage

Command Line

To run the server from the command line:

python3 ok-server.py
python3 ok-server.py --look basic
python3 ok-server.py --bind 127.0.0.1 --port 8080 --look tailwind
python3 ok-server.py --pem /path/to/bundle.pem
python3 ok-server.py --pem /path/to/bundle.pem --tls-port 9443

--look accepts basic, nice, bootstrap, or tailwind. You can override the look per request with the look query parameter, for example: http://localhost:8080/?look=tailwind

--pem accepts a path to a PEM file containing the certificate chain and private key. When provided, the server listens on both HTTP (--port, default 8080) and HTTPS (--tls-port, default 8443).

node ok-server.mjs
node ok-server.mjs --look basic
node ok-server.mjs --bind 127.0.0.1 --port 8080 --look tailwind
node ok-server.mjs --pem /path/to/bundle.pem
node ok-server.mjs --pem /path/to/bundle.pem --tls-port 9443
go run ok-server.go
go run ok-server.go --look basic
go run ok-server.go --bind 127.0.0.1 --port 8080 --look tailwind
go run ok-server.go --pem /path/to/bundle.pem
go run ok-server.go --pem /path/to/bundle.pem --tls-port 9443

Connect to the server using a web browser or a tool like curl:

curl -si "http://localhost:8080"

Building a Go binary

Cross-compile for any platform from any machine:

# Linux amd64
GOOS=linux   GOARCH=amd64  go build -o ok-server-linux-amd64   ok-server.go

# Linux arm64
GOOS=linux   GOARCH=arm64  go build -o ok-server-linux-arm64   ok-server.go

# macOS arm64 (Apple Silicon)
GOOS=darwin  GOARCH=arm64  go build -o ok-server-darwin-arm64  ok-server.go

# macOS amd64 (Intel)
GOOS=darwin  GOARCH=amd64  go build -o ok-server-darwin-amd64  ok-server.go

# Windows amd64
GOOS=windows GOARCH=amd64  go build -o ok-server-windows-amd64.exe ok-server.go

Docker

Use the included Dockerfile to build and run the server in a Docker container:

docker build -t ok-server .
docker run -d --restart unless-stopped --name ok-server --cpus=1 --memory=256m -p 8080:8080 ok-server

This will start the server and expose it on port 8080. The container will run until stopped. You can restart it with docker start ok-server, or remove it with docker rm ok-server.

Container CLI on a Mac

container builder stop
container builder start -c 4 -m 1G
container build -t ok-server .
container run --rm -d --name ok-server -c 1 -m 256m -p 8080:8080 ok-server

This will start the server and expose it on port 8080. The container will run until stopped, and will be removed when stopped. You can stop it with container stop ok-server.

License

This project is licensed under the MIT License. See the LICENSE file for details.

S
Description
A simple HTTP server designed for performing connectivity tests. May be run from command line or using a container.
Readme MIT 4.9 MiB
Languages
Python 35.1%
JavaScript 34.2%
Go 30.2%
Dockerfile 0.4%
Shell 0.1%