Home
Technical documentation for the Spooky HTTP/3 to HTTP/2 reverse proxy and load balancer.
Quick Navigation
Getting Started
- Overview - Project introduction and capabilities
- Installation - System requirements and installation procedures
- Quick Start Tutorial - Step-by-step guide to get running
Configuration
- Configuration Reference - Complete configuration documentation
- TLS Setup - Certificate generation and management
User Guides
- Basic Usage - Core concepts and usage patterns
- Load Balancing - Load balancing algorithms and health checks
Architecture
- Architecture Overview - System design and component interaction
- Component Details - High-level architectural principles
- Component Breakdown - Detailed crate documentation
Deployment
- Production Deployment - Production deployment guide
- Troubleshooting - Common issues and solutions
Development
- Contributing Guide - Development setup and guidelines
Protocol Reference
- HTTP/3 Protocol - HTTP/3 overview and implementation
- QUIC Protocol - QUIC fundamentals and usage
API and Observability
- API Overview - Metrics, logging, and future admin API
Planning
- Roadmap - Feature roadmap and priorities
Documentation Structure
README.md: Documentation index (this page)architecture.md: Main architecture documentroadmap.md: Project roadmapgetting-started/: Overview and installation guidesconfiguration/: Configuration reference and TLS setupuser-guide/: Basic usage and load balancing guidearchitecture/: High-level design and component detailsdeployment/: Production deployment guidancetroubleshooting/: Common issues and fixesdevelopment/: Development and contribution guidancetutorials/: Quickstart walkthroughsprotocols/: HTTP/3 and QUIC protocol notesapi/: API and observability overviewinternal/: Internal architecture notes
Quick References
Common Configuration Tasks
Basic upstream pool:
upstream:
backend:
route:
path_prefix: "/"
backends:
- id: "backend-1"
address: "127.0.0.1:8080"
weight: 100
health_check:
path: "/health"
interval: 5000
Note: Load balancing strategy is configured globally, not per upstream.
Path-based routing:
upstream:
api:
route:
path_prefix: "/api"
# ... backends
web:
route:
path_prefix: "/"
# ... backends
Load balancing algorithms:
- random - Random selection
- round-robin - Sequential rotation
- consistent-hash - Hash-based affinity
Common Commands
Start Spooky:
spooky --config /etc/spooky/config.yaml
Test HTTP/3 connection:
curl --http3-only -k \
--resolve proxy.example.com:9889:127.0.0.1 \
https://proxy.example.com:9889/health
Check configuration:
spooky --config config.yaml # Starts serving after validation
View logs:
# All logs
RUST_LOG=info spooky --config config.yaml
# Debug QUIC only
RUST_LOG=spooky_edge=debug spooky --config config.yaml
# Trace everything
RUST_LOG=trace spooky --config config.yaml
Documentation Guidelines
This documentation follows these principles:
- Technical Accuracy: All examples are based on the actual codebase
- Honest Status: Capabilities and limitations are documented as-is
- Direct Communication: Clear, concise technical writing
- Complete Coverage: All configuration options documented
- Practical Examples: Working code and configuration samples
Contributing to Documentation
To improve documentation:
- Check accuracy against source code
- Test all examples and commands
- Use clear, technical language
- Include practical examples
- Update this index when adding new docs
See Contributing Guide for more details.
External Resources
Getting Help
- Review troubleshooting guide: docs/troubleshooting/common-issues.md
- Check GitHub issues for community discussions
- Read protocol documentation for HTTP/3 and QUIC specifics
License
Elastic License 2.0 (ELv2) - see LICENSE for details.