Files

56 lines
1.9 KiB
Markdown

# Caddy Server Configuration
This project uses Caddy as a reverse proxy to handle SSL termination with Let's Encrypt and WebSocket support for the domain `markov.elpatron.me`.
## Configuration
The Caddy configuration is defined in the [Caddyfile](Caddyfile) and includes:
1. Automatic SSL certificate management with Let's Encrypt
2. Reverse proxy to the Flask application
3. Proper WebSocket support for real-time updates
4. Simplified configuration with automatic header forwarding
## Setup Instructions
1. Update the email address in the [Caddyfile](Caddyfile) to your actual email for Let's Encrypt notifications:
```
markov.elpatron.me {
tls your-email@example.com
# ... rest of configuration
}
```
2. Ensure your DNS is properly configured to point `markov.elpatron.me` to your server's IP address.
3. Start the services with Docker Compose:
```bash
docker-compose up -d
```
## How It Works
- Caddy automatically obtains and renews SSL certificates from Let's Encrypt
- All HTTP traffic is automatically redirected to HTTPS
- WebSocket connections are properly handled and forwarded to the Flask-SocketIO application
- Caddy automatically forwards standard proxy headers to preserve client IP and protocol information
## WebSocket Support
The configuration includes specific handling for WebSocket upgrade requests to ensure real-time features work correctly:
```
@websockets {
header Connection *Upgrade*
header Upgrade websocket
}
```
This ensures that SocketIO connections can be established and maintained properly through the proxy.
## Configuration Optimization
The Caddyfile has been optimized to:
- Remove unnecessary header forwarding directives (Caddy automatically forwards standard headers)
- Maintain clear separation between general reverse proxy rules and WebSocket-specific rules
- Keep the configuration simple and maintainable