- Replaced `easymapping` configuration with `containers` for better maintainability and clarity. - Introduced `DockerComposeFixture` class in `utils.py` to manage Docker Compose lifecycle and smart build strategy. - Enhanced YAML-to-environment variable conversion in `ContainerEnv` for dynamic configuration support. - Updated HAProxy configurations and test fixtures to reflect the new format. - Improved test coverage for YAML parsing, environment variable handling, and HAProxy config generation.
82 lines
2.1 KiB
YAML
82 lines
2.1 KiB
YAML
# Certbot/Let's Encrypt Configuration Example
|
|
#
|
|
# Demonstrates:
|
|
# - Automatic SSL certificate generation with Let's Encrypt
|
|
# - HTTP to HTTPS redirect
|
|
# - Certificate renewal
|
|
#
|
|
# Prerequisites:
|
|
# 1. Public IP address with ports 80 and 443 accessible
|
|
# 2. DNS records pointing to your server:
|
|
# example.com -> your-server-ip
|
|
# www.example.com -> your-server-ip
|
|
#
|
|
# 3. Set environment variable:
|
|
# EASYHAPROXY_CERTBOT_EMAIL=your-email@example.com
|
|
#
|
|
# 4. Mount this config:
|
|
# -v ./conf/config-certbot.yml:/etc/haproxy/static/config.yml
|
|
#
|
|
# 5. Persist certificates:
|
|
# -v ./certs/certbot:/certs/certbot
|
|
#
|
|
# How it works:
|
|
# - EasyHAProxy requests certificates from Let's Encrypt via HTTP-01 challenge
|
|
# - Certificates are stored in /certs/certbot/
|
|
# - Certificates auto-renew when needed
|
|
#
|
|
# Note: Let's Encrypt has rate limits. Use staging environment for testing:
|
|
# EASYHAPROXY_CERTBOT_AUTOCONFIG=staging
|
|
|
|
stats:
|
|
username: admin
|
|
password: password
|
|
port: 1936
|
|
|
|
customerrors: true
|
|
|
|
containers:
|
|
# HTTP Port 80
|
|
# Required for ACME HTTP-01 challenge and redirect
|
|
|
|
# Domain with certbot enabled
|
|
"example.com:80":
|
|
ip: ["webapp:8080"]
|
|
# Enable certbot for this domain
|
|
certbot: true
|
|
# Redirect HTTP to HTTPS after cert is issued
|
|
redirect_ssl: true
|
|
|
|
# Additional domain with certbot
|
|
"app.example.com:80":
|
|
ip: ["app:3000"]
|
|
certbot: true
|
|
redirect_ssl: true
|
|
|
|
# Domain without certbot (uses custom certificate)
|
|
"custom.example.com:80":
|
|
ip: ["custom-app:8080"]
|
|
# No certbot - expects certificate at /certs/haproxy/custom.example.com.pem
|
|
|
|
# HTTPS Port 443
|
|
# Serves HTTPS traffic with auto-generated certificates
|
|
|
|
"example.com:443":
|
|
ip: ["webapp:8080"]
|
|
ssl: true
|
|
# Certificate path (auto-generated by certbot)
|
|
# /certs/certbot/example.com/fullchain.pem
|
|
|
|
"app.example.com:443":
|
|
ip: ["app:3000"]
|
|
ssl: true
|
|
|
|
# Custom certificate example
|
|
"custom.example.com:443":
|
|
ip: ["custom-app:8080"]
|
|
ssl: true
|
|
# Place your certificate at:
|
|
# /certs/haproxy/custom.example.com.pem
|
|
|
|
# Multiple domains with different backends
|
|
# Certbot will request separate certificates for each domain
|