Files
lt-auth-proxy/README.md
Max P. 427cee1884
All checks were successful
Auto Changelog & Release / detect-version-change (push) Successful in 5s
Auto Changelog & Release / release (push) Has been skipped
Auto Changelog & Release / changelog-only (push) Successful in 9s
Build and upload Docker nightly image / build-and-push (push) Successful in 1m20s
docs(readme): update service configuration and license link
- Switch language tool server image and add restart policy
- Update user, network, and API key configurations
- Adjust port for language tool server
- Add note about SSL encryption requirement
- Update license section with link to LICENSE file
- Add a horizontal rule for improved visual separation
- Include project link at the end for easier navigation
2025-05-11 16:08:57 +02:00

2.6 KiB

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=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: 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