Files
2026-10-31 14:37:07 +01:00

113 lines
3.1 KiB
TOML

# RustBox 0.2.0 - packaged production configuration (DEB/RPM)
host = "0.0.0.0"
port = 3001
environment = "production"
data_dir = "/var/lib/rustbox"
log_dir = "/var/log/rustbox"
log_level = "warn"
database_backend = "sqlite"
session_backend = "database"
cluster_mode = false
session_timeout_hours = 72
remember_me_enabled = true
remember_me_days = 30
imap_host = "localhost"
imap_port = 993
smtp_host = "localhost"
smtp_port = 587
tls_enabled = true
tls_verify = false
max_attachment_size_mb = 50
max_message_size_mb = 100
sieve_port = 4190
sieve_tls_mode = "none"
sieve_allow_insecure_auth = true
sieve_timeout_secs = 10
default_junk_folder = "Spam"
default_theme = "system"
default_interface_skin = "apple-mail"
trusted_proxies = "127.0.0.1,::1"
outgoing_headers = []
pgp_enabled = true
pgp_wkd_enabled = true
pgp_hkp_enabled = false
pgp_hkp_url = "https://keys.openpgp.org"
pgp_network_timeout_secs = 10
pgp_max_key_bytes = 1048576
pgp_allow_private_export = true
# Blob storage is independent from database_backend. This default preserves the
# single-node package behavior. PostgreSQL/MySQL may use this local filesystem
# backend too when cluster_mode=false.
[storage]
backend = "filesystem"
path = "/var/lib/rustbox/blobs"
shared = false
request_timeout_secs = 30
connect_timeout_secs = 5
max_retries = 3
retry_timeout_secs = 60
# Local Tantivy is single-node only. Cluster deployments must use opensearch or disabled.
[search]
backend = "local_tantivy"
path = "/var/lib/rustbox/search"
index_prefix = "rustbox"
required = false
request_timeout_secs = 10
worker_interval_secs = 2
worker_batch_size = 100
worker_max_attempts = 12
# -----------------------------------------------------------------------------
# Cluster example: PostgreSQL + S3-compatible storage + OpenSearch
# -----------------------------------------------------------------------------
# database_backend = "pgsql"
# database_url = "postgres://rustbox:change-me@db.internal/rustbox"
# session_backend = "database" # or redis
# session_encryption_key = "BASE64_32_BYTE_KEY"
# cluster_mode = true
# pgp_enabled = false
#
# [storage]
# backend = "s3"
# bucket = "rustbox"
# region = "eu-central-1"
# endpoint = "https://s3.example.net" # optional for AWS S3
# path_style = false
# allow_http = false
# request_timeout_secs = 30
# connect_timeout_secs = 5
# max_retries = 3
# retry_timeout_secs = 60
#
# [search]
# backend = "opensearch"
# urls = ["https://opensearch.example.net:9200"]
# index_prefix = "rustbox"
# required = true
# username = "rustbox"
# password = "change-me"
# worker_interval_secs = 2
# worker_batch_size = 100
# worker_max_attempts = 12
#
# In this shape data_dir is not required as persistent node state.
# -----------------------------------------------------------------------------
# Cluster blob alternative: shared POSIX/NFS/CephFS/GlusterFS
# -----------------------------------------------------------------------------
# [storage]
# backend = "filesystem"
# path = "/mnt/rustbox-shared"
# shared = true
#
# `shared=true` is an operator assertion that every RustBox node sees the same
# filesystem. It is not suitable for local Tantivy; use OpenSearch/disabled search.