lt-auth-proxy

Project Time

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 (~166 MB)
  • 🧱 Statically compiled Deno binary
  • 🧪 Unit tested middleware and proxy logic
  • 🛠️ Compatible with regular 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=8081 \
  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 8081 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: meyay/languagetool:latest
    restart: unless-stopped
    user: "783:783"
    networks:
      - default

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

Please note that this setup does not include SSL encryption. A reverse proxy such as Traefik should be used for this.


📖 License

MIT © 0xMax42


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

Description
Language Tool authentication proxy
Readme MIT 110 KiB
2025-05-11 16:10:39 +02:00
Languages
TypeScript 77.8%
Shell 13.2%
Dockerfile 9%