123 lines
3.9 KiB
Plaintext
123 lines
3.9 KiB
Plaintext
# HMAC File Server - Podman Production Configuration
|
|
# This file is auto-generated by deploy-podman.sh
|
|
# Edit as needed for your specific deployment requirements
|
|
|
|
[server]
|
|
listen_address = "8888"
|
|
storage_path = "/data"
|
|
metrics_enabled = true
|
|
metrics_port = "9090"
|
|
max_upload_size = "10GB"
|
|
max_header_bytes = 1048576
|
|
cleanup_interval = "24h"
|
|
max_file_age = "720h"
|
|
enable_dynamic_workers = true
|
|
worker_scale_up_thresh = 40
|
|
worker_scale_down_thresh = 10
|
|
deduplication_enabled = true
|
|
min_free_bytes = "1GB"
|
|
file_naming = "original"
|
|
networkevents = true # Enable network change detection
|
|
|
|
# Network resilience settings
|
|
graceful_shutdown_timeout = "300s"
|
|
connection_drain_timeout = "120s"
|
|
max_idle_conns_per_host = 5
|
|
idle_conn_timeout = "90s"
|
|
disable_keep_alives = false
|
|
client_timeout = "300s"
|
|
restart_grace_period = "60s"
|
|
|
|
[uploads]
|
|
# XMPP-compatible file extensions for maximum client support
|
|
allowed_extensions = [".zip", ".rar", ".7z", ".tar.gz", ".tgz", ".gpg", ".enc", ".pgp", ".txt", ".pdf", ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".svg", ".webp", ".wav", ".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv", ".webm", ".mpeg", ".mpg", ".m4v", ".3gp", ".3g2", ".mp3", ".ogg", ".doc", ".docx"]
|
|
chunked_uploads_enabled = true
|
|
chunk_size = "32MB"
|
|
resumable_uploads_enabled = true
|
|
max_resumable_age = "48h"
|
|
sessiontimeout = "60m"
|
|
maxretries = 3
|
|
|
|
# Upload resilience settings
|
|
session_persistence = true
|
|
session_recovery_timeout = "300s"
|
|
client_reconnect_window = "120s"
|
|
upload_slot_ttl = "3600s"
|
|
retry_failed_uploads = true
|
|
max_upload_retries = 3
|
|
|
|
# Enhanced Network Resilience (NEW)
|
|
[network_resilience]
|
|
enabled = true
|
|
fast_detection = true # 1-second network change detection
|
|
quality_monitoring = true # Monitor RTT and packet loss
|
|
predictive_switching = true # Proactive network switching
|
|
mobile_optimizations = true # Mobile-friendly thresholds
|
|
upload_resilience = true # Resume uploads across network changes
|
|
detection_interval = "1s"
|
|
quality_check_interval = "5s"
|
|
network_change_threshold = 3 # Switches required to trigger network change
|
|
interface_stability_time = "10s" # Mobile-appropriate stability time
|
|
upload_pause_timeout = "10m" # Mobile-friendly upload pause timeout
|
|
upload_retry_timeout = "20m" # Extended retry for mobile scenarios
|
|
rtt_warning_threshold = "500ms" # Cellular network warning threshold
|
|
rtt_critical_threshold = "2000ms" # Cellular network critical threshold
|
|
packet_loss_warning_threshold = 5.0 # 5% packet loss warning
|
|
packet_loss_critical_threshold = 15.0 # 15% packet loss critical
|
|
|
|
[downloads]
|
|
resumable_downloads_enabled = true
|
|
chunked_downloads_enabled = true
|
|
chunk_size = "32MB"
|
|
# Same extensions as uploads for consistency
|
|
allowed_extensions = [".zip", ".rar", ".7z", ".tar.gz", ".tgz", ".gpg", ".enc", ".pgp", ".txt", ".pdf", ".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".svg", ".webp", ".wav", ".mp4", ".avi", ".mkv", ".mov", ".wmv", ".flv", ".webm", ".mpeg", ".mpg", ".m4v", ".3gp", ".3g2", ".mp3", ".ogg", ".doc", ".docx"]
|
|
|
|
[security]
|
|
# IMPORTANT: Change these secrets in production!
|
|
secret = "CHANGE-THIS-PRODUCTION-SECRET-HMAC-KEY"
|
|
enablejwt = true
|
|
jwtsecret = "CHANGE-THIS-JWT-SECRET-KEY"
|
|
jwtalgorithm = "HS256"
|
|
jwtexpiration = "24h"
|
|
|
|
[logging]
|
|
level = "info"
|
|
file = "/logs/hmac-file-server.log"
|
|
max_size = 100
|
|
max_backups = 7
|
|
max_age = 30
|
|
compress = true
|
|
|
|
[deduplication]
|
|
enabled = true
|
|
directory = "/deduplication"
|
|
|
|
[workers]
|
|
numworkers = 4
|
|
uploadqueuesize = 100
|
|
|
|
[timeouts]
|
|
readtimeout = "3600s"
|
|
writetimeout = "3600s"
|
|
idletimeout = "3600s"
|
|
shutdown = "30s"
|
|
|
|
[versioning]
|
|
enableversioning = false
|
|
backend = "simple"
|
|
maxversions = 1
|
|
|
|
[redis]
|
|
redisenabled = false
|
|
redisdbindex = 0
|
|
redisaddr = "localhost:6379"
|
|
redispassword = ""
|
|
redishealthcheckinterval = "120s"
|
|
|
|
[clamav]
|
|
clamavenabled = false
|
|
clamavsocket = "/var/run/clamav/clamd.ctl"
|
|
numscanworkers = 2
|
|
scanfileextensions = [".exe", ".dll", ".bin", ".com", ".bat", ".sh", ".php", ".js"]
|
|
maxscansize = "200MB"
|