mirror of
https://github.com/apidoorman/doorman.git
synced 2026-02-07 17:48:53 -06:00
v0.1.0
Doorman API Gateway
A lightweight, Python-based API gateway for managing REST, SOAP, GraphQL, gRPC, and AI APIs. No low-level language expertise required.
Key Features
- Multi-Protocol Support: REST, SOAP, GraphQL, gRPC, and AI APIs
- Security: User management, authentication, authorization, roles & groups
- Traffic Control: Rate limiting, throttling, dynamic routing, credits
- Caching & Storage: Redis caching, MongoDB integration, or in memory
- Validation: Request payload validation and logging
Quick Start
Prerequisites
- Docker installed
- Environment file (
.env) at repo root (start from./.env.example)
Run with Docker Compose
# 1) Prepare env (first time)
cp .env.example .env
# Edit .env and set: DOORMAN_ADMIN_EMAIL, DOORMAN_ADMIN_PASSWORD, JWT_SECRET_KEY
# 2) Start (builds automatically)
docker compose up
When ready:
- Web UI:
http://localhost:3000 - Gateway API:
http://localhost:3001
Frontend Gateway Configuration
The web client needs to know the backend gateway URL. Set NEXT_PUBLIC_GATEWAY_URL in the root .env file:
# For Docker Compose (default - both services in same container)
NEXT_PUBLIC_GATEWAY_URL=http://localhost:3001
# For production reverse proxy (frontend and API on same domain)
# Leave unset - frontend will use same origin
Behavior:
- If
NEXT_PUBLIC_GATEWAY_URLis set → uses that URL for API calls - If not set → uses same origin (for reverse proxy deployments where frontend and API share the same domain)
Run in Background
# Start detached
docker compose up -d
# View logs
docker compose logs -f
# Stop services
docker compose down
Configuration
Required Environment Variables
DOORMAN_ADMIN_EMAIL— initial admin user emailDOORMAN_ADMIN_PASSWORD— initial admin passwordJWT_SECRET_KEY— secret key for JWT tokens (32+ chars)
Optional (recommended in some setups):
NEXT_PUBLIC_GATEWAY_URL— frontend → gateway base URL (see “Frontend Gateway Configuration”)
High Availability Setup
For production/HA environments with Redis and MongoDB:
# Set in .env:
MEM_OR_EXTERNAL=REDIS
# Start with production profile (includes Redis + MongoDB)
docker compose --profile production up -d
Alternative: Manual Docker Commands
If you prefer not to use Docker Compose:
# Build the image
docker build -t doorman:latest .
# Run the container
docker run --rm --name doorman \
-p 3001:3001 -p 3000:3000 \
--env-file .env \
doorman:latest
Documentation
- User docs live in
user-docs/with:01-getting-started.mdfor setup and first API02-configuration.mdfor environment variables03-security.mdfor hardening04-api-workflows.mdfor end-to-end examples05-operations.mdfor production ops and runbooks06-tools.mdfor diagnostics and the CORS checker
Repository Structure
doorman/
├── backend-services/ # Python gateway core, routes, services, tests
├── web-client/ # Next.js frontend
├── docker/ # Container entrypoint and scripts
├── user-docs/ # Documentation and guides
├── scripts/ # Helper scripts (preflight, coverage, maintenance)
└── generated/ # Local development artifacts
Security Notes
- Frontend only exposes
NEXT_PUBLIC_*variables to the browser - Never pass secrets to frontend build args
- Backend loads environment at runtime from
--env-fileor/env/*.env - Platform/injected env variables take precedence over repo files
License
Copyright Doorman Dev, LLC
Licensed under the Apache License 2.0 - see LICENSE
Disclaimer
Use at your own risk. By using this software, you agree to the Apache 2.0 License and any annotations in the source code.
We welcome contributors and testers!
Description
Languages
Python
70.2%
TypeScript
24.3%
CSS
4%
Shell
0.6%
JavaScript
0.5%
Other
0.3%

