mirror of
https://github.com/apidoorman/doorman.git
synced 2025-12-16 15:16:53 -06:00
main
remove live tests from github runner
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 (use./.env.exampleas template)
Run with Docker Compose (Recommended)
# Prepare env (first time)
cp .env.example .env
# Edit .env and set at least: DOORMAN_ADMIN_EMAIL, DOORMAN_ADMIN_PASSWORD, JWT_SECRET_KEY
# Start services (builds automatically)
docker compose up
Access Points:
- Backend API:
http://localhost:3001(or your configuredPORT) - Web Client:
http://localhost:3000(or your configuredWEB_PORT)
Production Checklist
Harden your deployment with these defaults and environment settings:
ENV=production(enables stricter startup validations)HTTPS_ONLY=true(serve behind TLS; forces Secure cookies)JWT_SECRET_KEY(required; 32+ random bytes)TOKEN_ENCRYPTION_KEY(32+ random bytes to encrypt API keys at rest)MEM_ENCRYPTION_KEY(32+ random bytes; required for MEM mode dumps)COOKIE_SAMESITE=Strictand setCOOKIE_DOMAINto your base domainLOCAL_HOST_IP_BYPASS=false- CORS: avoid wildcard origins with credentials, or set
CORS_STRICT=true - Store secrets outside git (vault/CI); rotate regularly
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: Admin user emailDOORMAN_ADMIN_PASSWORD: Admin passwordJWT_SECRET_KEY: Secret key for JWT tokens (32+ chars)
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
Testing
Testing Against Docker
When testing from your host machine against Doorman running in Docker:
# Verbose output
make live-docker
# Quiet output
make liveq-docker
# Manual environment variable
DOORMAN_IN_DOCKER=1 make live
This configures test servers to use host.docker.internal (Mac/Windows) or 172.17.0.1 (Linux).
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
67.9%
TypeScript
26.1%
CSS
4.4%
JavaScript
0.6%
Shell
0.5%
Other
0.4%

