Files
lt-auth-proxy/README.md
Max P. 573fcf0e65
All checks were successful
Auto Changelog & Release / detect-version-change (push) Successful in 5s
Auto Changelog & Release / changelog-only (push) Successful in 8s
Auto Changelog & Release / release (push) Has been skipped
Build and upload Docker nightly image / build-and-push (push) Successful in 45s
docs(readme): enhance documentation with usage and features
- Add detailed description of the proxy's purpose and features
- Include usage instructions for Docker and Docker Compose
- Document environment variables and file structure
- Provide licensing information and relevant links
2025-05-11 01:34:24 +02:00

2.4 KiB

lt-auth-proxy

A lightweight, production-ready reverse proxy for LanguageTool with API key authentication.

This service acts as a transparent gateway that verifies an apiKey before forwarding requests to a running LanguageTool server instance. It is fully self-contained, built in Deno, and distributed as a minimal multi-architecture Docker image.


Features

  • 🔐 API key authentication via query or form body
  • 📡 Transparent proxying to any LanguageTool backend
  • 🐳 Minimal Docker image (~93 MB)
  • 🧱 Statically compiled Deno binary
  • 🧪 Unit tested middleware and proxy logic
  • 🛠️ Compatible with VSCode, Nextcloud, and other LT clients

🚀 Usage

You can run the proxy via Docker:

docker run -p 8011:8011 \
  -e API_KEYS="demo-key,another-key" \
  -e LT_SERVER_HOST=lt-server \
  -e LT_SERVER_PORT=8010 \
  git.0xmax42.io/simdev/lt-auth-proxy:latest

🧪 Supported Environment Variables

Variable Required Default Description
API_KEYS yes Comma-separated list of valid API tokens
PROXY_HOST no 0.0.0.0 Host/IP address to bind the proxy to
PROXY_PORT no 8011 Port the proxy listens on
LT_SERVER_HOST no localhost Hostname of the LanguageTool backend
LT_SERVER_PORT no 8010 Port of the LanguageTool backend

📁 File Structure

src/
├── main.ts          # Entry point, sets up the HTTP kernel
├── env.ts           # Lazy-loaded environment access
├── ltProxyAuth.ts   # Middleware to check the apiKey
├── ltProxyHandler.ts# Handler to forward the request to LT

🐳 Docker Compose Example

services:
  lt-server:
    image: languagetool/languagetool:latest
    ports:
      - "8010:8010"

  proxy:
    image: git.0xmax42.io/simdev/lt-auth-proxy:latest
    ports:
      - "8011:8011"
    environment:
      - API_KEYS=demo-key
      - LT_SERVER_HOST=lt-server
      - LT_SERVER_PORT=8010

📖 License

MIT © 0xMax42 https://git.0xmax42.io/maxp/lt-auth-proxy