Files
docker-compose/radicale/docker-compose.yml
T

47 lines
1.4 KiB
YAML
Raw Normal View History

2025-07-14 12:48:15 +05:30
# Radicale CalDAV/CardDAV Server Configuration
2025-06-19 19:05:23 +05:30
services:
radicale:
2025-07-14 12:48:15 +05:30
# Basic container configuration
2025-06-19 19:05:23 +05:30
container_name: radicale
2025-07-13 18:35:45 +05:30
image: docker.io/tomsquest/docker-radicale:3.5.4.0
restart: unless-stopped
2025-07-14 12:48:15 +05:30
# Security hardening
init: true # Use init process for proper signal handling
read_only: true # Read-only filesystem for security
# Minimal required capabilities
2025-06-19 19:05:23 +05:30
cap_add:
2025-07-14 12:48:15 +05:30
- CHOWN # Required for file ownership changes
- KILL # Required for process management
- SETGID # Required for group permissions
- SETUID # Required for user permissions
# Security restrictions
2025-07-13 18:35:45 +05:30
cap_drop:
2025-07-14 12:48:15 +05:30
- ALL # Drop all capabilities by default
2025-07-13 18:35:45 +05:30
security_opt:
2025-07-14 12:48:15 +05:30
- no-new-privileges:true # Prevent privilege escalation
# Resource limits
2025-06-19 19:05:23 +05:30
deploy:
resources:
limits:
2025-07-14 12:48:15 +05:30
memory: 256M # Memory limit
pids: 50 # Maximum number of processes
# Persistent storage configuration
2025-06-19 19:05:23 +05:30
volumes:
2025-07-14 12:48:15 +05:30
- ${APPDATA_PATH}/radicale/data:/data # Calendar and contact data
- ${APPDATA_PATH}/radicale/config:/config:ro # Read-only configuration
# Network configuration
2025-06-19 19:05:23 +05:30
ports:
2025-07-14 12:48:15 +05:30
- ${PORT}:5232 # DAV service port
# Health monitoring
healthcheck:
2025-07-14 12:48:15 +05:30
test: curl -f http://127.0.0.1:5232 || exit 1 # Simple HTTP check
interval: 30s # Check every 30 seconds
retries: 3 # Allow 3 failures before marking unhealthy