mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-28 05:46:36 +08:00
0548a8a5d4
Default Redis maintenance notification negotiation to disabled and apply the startup-only setting to both platform and Asynq clients.
118 lines
5.2 KiB
YAML
118 lines
5.2 KiB
YAML
# openflare — Platform Config
|
||
# Copy this file to config.yaml and fill in your values.
|
||
# Fields marked with <...> are required; others have sensible defaults.
|
||
|
||
# ─── Application ────────────────────────────────────────────────────────────────
|
||
app:
|
||
app_name: "openflare"
|
||
env: "production" # development | testing | production
|
||
addr: ":3000"
|
||
node_id: 1 # Snowflake node ID (0-1023). Must be unique per instance.
|
||
graceful_shutdown_timeout: 30
|
||
session_cookie_name: "openflare_session_id" # Change to something unique before deploy
|
||
session_secret: "<uniq-random-string>" # Cannot be changed after first start
|
||
session_domain: "" # e.g. ".yourdomain.com"
|
||
session_age: 86400 # Session lifetime in seconds (default: 24h)
|
||
session_secure: false
|
||
session_http_only: false
|
||
api_prefix: "/api"
|
||
|
||
# ─── PostgreSQL ─────────────────────────────────────────────────────────────────
|
||
# Supports Standalone and Primary-Replica (read/write split) modes.
|
||
database:
|
||
enabled: true
|
||
sqlite_path: "openflare.db" # PostgreSQL 禁用时使用此 SQLite 文件路径
|
||
host: "127.0.0.1"
|
||
port: 5432
|
||
username: "openflare"
|
||
password: "replace-with-strong-password"
|
||
database: "openflare"
|
||
max_idle_conn: 16
|
||
max_open_conn: 128
|
||
conn_max_lifetime: 1800
|
||
conn_max_idle_time: 600
|
||
log_level: "info" # error | warn | info | debug | silent;SQL 语句仅在 log.level=debug 时输出
|
||
ssl_mode: "disable"
|
||
time_zone: "UTC"
|
||
application_name: "openflare-server"
|
||
prefer_simple_protocol: false
|
||
search_path: "public"
|
||
statement_cache_capacity: 256
|
||
default_query_exec_mode: "cache_statement"
|
||
slow_threshold: 200ms
|
||
# Optional read replicas:
|
||
# replicas:
|
||
# - host: "replica1.db.internal"
|
||
# port: 5432
|
||
# - host: "replica2.db.internal"
|
||
# port: 5432
|
||
|
||
# ─── Redis ──────────────────────────────────────────────────────────────────────
|
||
# Supports Standalone, Sentinel (HA), and Cluster modes.
|
||
redis:
|
||
enabled: true
|
||
addrs:
|
||
- "127.0.0.1:6379"
|
||
username: ""
|
||
password: ""
|
||
db: 0 # Ignored in Cluster mode
|
||
cluster_mode: false # Set true to enable Cluster mode
|
||
master_name: "" # Set non-empty to enable Sentinel mode
|
||
key_prefix: "openflare:"
|
||
pool_size: 100
|
||
min_idle_conn: 10
|
||
dial_timeout: 5
|
||
read_timeout: 3
|
||
write_timeout: 3
|
||
max_retries: 3
|
||
pool_timeout: 4
|
||
conn_max_idle_time: 300
|
||
maint_notifications: false # 启动时开关;启用 Redis maintenance notifications 自动协商,修改后需重启
|
||
|
||
# ─── Logging ────────────────────────────────────────────────────────────────────
|
||
log:
|
||
level: "info" # debug | info | warn | error | fatal | panic
|
||
format: "console" # console | json
|
||
output: "stdout" # stdout | file
|
||
file_path: "./logs/app.log"
|
||
max_size: 100 # MB per log file
|
||
max_age: 30 # Days to retain old log files
|
||
max_backups: 10
|
||
compress: true
|
||
|
||
|
||
# ─── Async Task Worker ──────────────────────────────────────────────────────────
|
||
worker:
|
||
concurrency: 20
|
||
strict_priority: false
|
||
queues:
|
||
- name: webhook
|
||
priority: 10
|
||
- name: whitelist_only
|
||
priority: 5
|
||
- name: default
|
||
priority: 3
|
||
|
||
# ─── OpenTelemetry Tracing ──────────────────────────────────────────────────────
|
||
otel:
|
||
sampling_rate: 0.0 # Trace sampling rate (0.0 – 1.0)
|
||
tracer_name: "github.com/Rain-kl/OpenFlare" # Global tracer instrumentation name
|
||
|
||
|
||
# ─── ClickHouse (required) ──────────────────────────────────────────────────────
|
||
# Analytics / observability OLAP store. Telemetry writes are best-effort (async batch).
|
||
clickhouse:
|
||
enabled: true
|
||
hosts:
|
||
- "127.0.0.1:9000" # compose 内应用可用 clickhouse:9000(经 CLICKHOUSE_HOST)
|
||
username: "default"
|
||
password: "replace-with-clickhouse-password" # 与 .env / compose CLICKHOUSE_PASSWORD 一致
|
||
database: "openflare"
|
||
max_idle_conn: 8 # keep warm sockets low to save client + server RAM
|
||
max_open_conn: 16 # cap concurrent native sessions on modest CH boxes
|
||
conn_max_lifetime: 3600
|
||
dial_timeout: 5
|
||
block_buffer_size: 32 # rows buffered per block; 32 is enough for our batch sizes
|
||
# Runtime client also enables async_insert (wait_for_async_insert=1, busy_timeout≈2s)
|
||
# in internal/db/clickhouse.go — not configured via YAML.
|