Table of contents
Root configuration
Sections
Field notation
Configuration tables use a compact notation:
Notation Meaning propertyRequired property property?Optional property (may be omitted)
Default values are shown in the Description column when applicable.
Root properties
These are the top-level configuration options in your config.json.
Property Type Description $schema? string Optional reference to this JSON Schema for tooling support. alerts? alerts System alerting configuration. app_public? app_public Public client-side configuration exposed to the frontend. Default: {} attachment_decay_enabled? boolean Whether to automatically delete old attachments. Default: true auth auth Authentication and security settings. cookie? cookie HTTP cookie settings. Default: {} csam? csam CSAM (Child Sexual Abuse Material) detection and reporting policies. Default: {} database database Primary database configuration. Selects the backend (Cassandra vs SQLite) and provides connection details. deletion_grace_period_hours? number Grace period in hours before soft-deleted items are permanently removed. Default: 72 dev? dev Development-only overrides and flags. These should generally be disabled in production. Default: {} discovery? discovery Guild discovery listing configuration. Default: {} domain domain Global domain and port configuration used to derive public endpoints for all services. endpoint_overrides? endpoint_overrides Manual overrides for specific public endpoints. If set, these take precedence over automatically derived URLs. env enum<development, production, test> Runtime environment for the application. Controls behavior such as logging verbosity, error details, and optimization levels. federation? federation Federation configuration for connecting with other Fluxer instances. Default: {} geoip? geoip GeoIP database configuration. Default: {} inactivity_deletion_threshold_days? number Days of inactivity after which data may be subject to deletion. Default: 365 instance? instance Instance-specific settings and policies. Default: {} integrations? integrations Third-party service integrations. Default: {} internal? internal Internal network endpoints for service-to-service communication. Only required for microservices mode. Default: {} proxy? proxy Reverse proxy and IP resolution settings. Default: {} s3? s3 S3-compatible object storage configuration. sentry? sentry Sentry error reporting configuration. Default: {} services services Configuration for individual Fluxer services. telemetry? telemetry OpenTelemetry configuration. Default: {}
When instance.deployment_mode = microservices, the following properties are required: internal, services.app_proxy
alerts
JSON path: alerts
Alerting settings.
Property Type Description webhook_url? string Webhook URL for system alerts. Default: ""
app_public
JSON path: app_public
Public configuration exposed to the frontend application.
Property Type Description api_version? number API Version. Default: 1 bootstrap_api_endpoint? string Bootstrap API endpoint. Default: "" bootstrap_api_public_endpoint? string Public Bootstrap API endpoint. Default: "" sentry_dsn? string Frontend Sentry DSN. Default: ""
{
"api_version" : 1 ,
"bootstrap_api_endpoint" : "" ,
"bootstrap_api_public_endpoint" : "" ,
"sentry_dsn" : ""
}
auth
JSON path: auth
Global authentication configuration.
Property Type Description bluesky? bluesky Bluesky OAuth client configuration. Default: {"enabled":true,"client_name":"Fluxer","client_uri":"","logo_uri":"https://fluxerstatic.com/web/apple-touch-icon.png","tos_uri":"https://fluxer.app/terms","policy_uri":"https://fluxer.app/privacy","keys":[]} connection_initiation_secret string Secret key for signing connection initiation tokens. passkeys? passkeys Passkey configuration. Default: {} sudo_mode_secret string Secret key for verifying sudo mode tokens. vapid vapid Web Push VAPID configuration.
{
"connection_initiation_secret" : "your_connection_initiation_secret" ,
"sudo_mode_secret" : "your_sudo_mode_secret"
}
passkeys
JSON path: auth.passkeys
WebAuthn/Passkeys relying party settings.
Property Type Description additional_allowed_origins? array<string> List of allowed origins for WebAuthn registration/authentication. Default: ["https://web.fluxer.app","https://web.canary.fluxer.app"] rp_id? string Relying Party ID (domain) for WebAuthn credentials. Default: fluxer.app rp_name? string Relying Party name displayed to users. Default: Fluxer
{
"additional_allowed_origins" : [
"https://web.fluxer.app" ,
"https://web.canary.fluxer.app"
],
"rp_id" : "fluxer.app" ,
"rp_name" : "Fluxer"
}
vapid
JSON path: auth.vapid
VAPID keys for Web Push notifications.
Property Type Description email? string Contact email included in push service requests. Default: "" private_key string VAPID Private Key. public_key string VAPID Public Key.
{
"private_key" : "your_private_key" ,
"public_key" : "your_public_key" ,
"email" : ""
}
bluesky
JSON path: auth.bluesky
Bluesky OAuth client configuration.
Property Type Description client_name? string Human-readable client name exposed to Bluesky. Default: Fluxer client_uri? string URI describing the client application. Default: "" enabled? boolean Whether Bluesky OAuth connections are enabled. Default: true keys? array<bluesky_key > Key definitions used to sign private key JWT assertions. Default: [] logo_uri? string Optional logo presented during authorization. Default: https://fluxerstatic.com/web/apple-touch-icon.png policy_uri? string Privacy policy URI exposed to Bluesky. Default: https://fluxer.app/privacy tos_uri? string Terms of service URI exposed to Bluesky. Default: https://fluxer.app/terms
{
"client_name" : "Fluxer" ,
"client_uri" : "" ,
"enabled" : true ,
"keys" : [],
"logo_uri" : "https://fluxerstatic.com/web/apple-touch-icon.png" ,
"policy_uri" : "https://fluxer.app/privacy" ,
"tos_uri" : "https://fluxer.app/terms"
}
cookie
JSON path: cookie
Session cookie configuration.
Property Type Description domain? string Domain attribute for cookies. Leave empty for host-only. Default: "" secure? boolean If true, sets the Secure flag on cookies. Default: false
{
"domain" : "" ,
"secure" : false
}
csam
JSON path: csam
CSAM compliance configuration.
Property Type Description cleanup_batch_size? number Batch size for cleanup operations. Default: 100 evidence_retention_days? number Days to retain evidence. Default: 730 job_retention_days? number Days to retain reporting jobs. Default: 365 queue? object CSAM scan queue configuration.
{
"cleanup_batch_size" : 100 ,
"evidence_retention_days" : 730 ,
"job_retention_days" : 365
}
queue
CSAM scan queue configuration.
Property Type Description consumer_lock_ttl_seconds? number TTL for consumer lock (seconds). Default: 5 max_entries_per_batch? number Maximum queue entries to process per consumer run. Default: 5 timeout_ms? number Maximum time to wait for a scan result (ms). Default: 30000
database
JSON path: database
Database backend selection and configuration.
Property Type Description backend enum<cassandra, sqlite> Selected database backend. ‘sqlite’ is for dev/single-node, ‘cassandra’ for production. cassandra? cassandra Configuration settings for Cassandra backend. sqlite_path? string Filesystem path to the SQLite database file. Default: ./data/fluxer.db
{
"backend" : "cassandra" ,
"sqlite_path" : "./data/fluxer.db"
}
cassandra
JSON path: database.cassandra
Cassandra connection details.
Property Type Description hosts array<string> Array of Cassandra contact points (hostnames or IPs). keyspace string Cassandra keyspace name. local_dc string Local Data Center name for topology awareness. password string Cassandra authentication password. username string Cassandra authentication username.
{
"hosts" : [],
"keyspace" : "your_keyspace" ,
"local_dc" : "your_local_dc" ,
"password" : "your_password" ,
"username" : "your_username"
}
dev
JSON path: dev
Development environment flags.
Property Type Description disable_rate_limits? boolean Disable all rate limits. Default: false relax_registration_rate_limits? boolean Relax rate limits for registration. Default: false test_harness_token? string Token for the test harness. Default: "" test_mode_enabled? boolean Enable test mode behaviors. Default: false
{
"disable_rate_limits" : false ,
"relax_registration_rate_limits" : false ,
"test_harness_token" : "" ,
"test_mode_enabled" : false
}
discovery
JSON path: discovery
Guild discovery listing configuration.
Property Type Description enabled? boolean Whether guild discovery is enabled on this instance. Default: true min_member_count? number Minimum number of members a guild needs before it can apply for discovery listing. Default: 1
{
"enabled" : true ,
"min_member_count" : 1
}
domain
JSON path: domain
Configuration for domains and ports used to construct public URLs.
Property Type Description base_domain string The primary domain name (e.g., example.com, localhost). gift_domain? string Domain for gift links (optional). Default: "" internal_port? number The internal port number. Default: 8088 internal_scheme? enum<http, https> The URL scheme for internal endpoints. Default: http invite_domain? string Domain for short invite links (optional). Default: "" public_port? number The public-facing port number. Default: 8088 public_scheme? enum<http, https> The URL scheme for public endpoints. Default: http static_cdn_domain? string Separate domain for static CDN assets (optional). Default: fluxerstatic.com
{
"base_domain" : "your_base_domain" ,
"gift_domain" : "" ,
"internal_port" : 8088 ,
"internal_scheme" : "http" ,
"invite_domain" : "" ,
"public_port" : 8088 ,
"public_scheme" : "http" ,
"static_cdn_domain" : "fluxerstatic.com"
}
endpoint_overrides
JSON path: endpoint_overrides
Explicit overrides for service endpoints. Use these if derived URLs are incorrect.
Property Type Description admin? string Full URL override for the Admin Panel endpoint. api? string Full URL override for the API endpoint. api_client? string Full URL override for the client-facing API endpoint. app? string Full URL override for the Web App endpoint. gateway? string Full URL override for the Gateway (WebSocket) endpoint. gift? string Full URL override for Gift links. invite? string Full URL override for Invite links. marketing? string Full URL override for the Marketing Site endpoint. media? string Full URL override for the Media endpoint. static_cdn? string Full URL override for the Static CDN endpoint.
{
"admin" : "" ,
"api" : "" ,
"api_client" : "" ,
"app" : "" ,
"gateway" : "" ,
"gift" : "" ,
"invite" : "" ,
"marketing" : "" ,
"media" : "" ,
"static_cdn" : ""
}
federation
JSON path: federation
Federation configuration for connecting with other Fluxer instances.
Property Type Description enabled? boolean Enable federation with other Fluxer instances. Default: false
geoip
JSON path: geoip
GeoIP database settings.
Property Type Description maxmind_db_path? string Path to MaxMind GeoIP database. Default: ""
{
"maxmind_db_path" : ""
}
instance
JSON path: instance
Specific settings for this Fluxer instance.
Property Type Description auto_join_invite_code? string Invite code to auto-join users to a guild upon registration. Default: "" deployment_mode? enum<monolith, microservices> Deployment mode. ‘monolith’ runs all services in one process (fluxer_server). ‘microservices’ requires separate processes/ports. Default: monolith operators_guild_id? string Guild ID for Operators. Default: "" private_key_path? string Path to the x25519 private key for E2E encryption (generated on first startup if missing). Default: "" self_hosted? boolean Indicates if this is a self-hosted instance. Default: true visionaries_guild_id? string Guild ID for Visionary members. Default: ""
{
"auto_join_invite_code" : "" ,
"deployment_mode" : "monolith" ,
"operators_guild_id" : "" ,
"private_key_path" : "" ,
"self_hosted" : true ,
"visionaries_guild_id" : ""
}
integrations
JSON path: integrations
Collection of all external service integrations.
Property Type Description captcha? captcha_integration Default: {} clamav? clamav_integration Default: {} cloudflare? cloudflare Default: {} email? email_integration Default: {} gif? gif Default: {} klipy? klipy Default: {} ncmec? ncmec_integration Default: {} photo_dna? photo_dna_integration Default: {} search? search_integration Default: {} sms? sms_integration Default: {} stripe? stripe_integration Default: {} tenor? tenor Default: {} voice? voice_integration Default: {} youtube? youtube Default: {}
email_integration
JSON path: integrations.email
Email delivery service integration.
When enabled = true and provider = smtp, the following properties are required: smtp
Property Type Description enabled? boolean Enable email sending. Default: false from_email? string Default sender email address. Default: "" from_name? string Default sender name. Default: Fluxer provider? enum<smtp, none> Email provider selection. Default: none smtp? smtp_email webhook_secret? string Sweego webhook signing secret (base64-encoded).
{
"enabled" : false ,
"from_email" : "" ,
"from_name" : "Fluxer" ,
"provider" : "none" ,
"webhook_secret" : ""
}
smtp_email
JSON path: integrations.email.smtp
SMTP transport configuration for email delivery.
Property Type Description host string SMTP server hostname. password string SMTP authentication password. port number SMTP port number. Default: 587 secure? boolean Use TLS when connecting to the SMTP server. Default: true username string SMTP authentication username.
{
"host" : "your_host" ,
"password" : "your_password" ,
"port" : 587 ,
"username" : "your_username" ,
"secure" : true
}
sms_integration
JSON path: integrations.sms
SMS service integration.
When enabled = true, the following properties are required: account_sid, auth_token, verify_service_sid
Property Type Description account_sid? string Twilio account SID. auth_token? string Twilio auth token. enabled? boolean Enable SMS sending. Default: false verify_service_sid? string Twilio Verify service SID.
{
"account_sid" : "" ,
"auth_token" : "" ,
"enabled" : false ,
"verify_service_sid" : ""
}
captcha_integration
JSON path: integrations.captcha
CAPTCHA service integration.
Property Type Description enabled? boolean Enable CAPTCHA verification. Default: false hcaptcha? captcha_provider hCaptcha settings. Default: {} provider? enum<hcaptcha, turnstile, none> Selected CAPTCHA provider. Default: none turnstile? captcha_provider Cloudflare Turnstile settings. Default: {}
{
"enabled" : false ,
"provider" : "none"
}
captcha_provider
JSON path: integrations.captcha.hcaptcha
Configuration for a specific CAPTCHA provider.
Property Type Description secret_key? string Secret key for server-side verification. Default: "" site_key? string Public site key. Default: ""
{
"secret_key" : "" ,
"site_key" : ""
}
voice_integration
JSON path: integrations.voice
Real-time voice/video integration (LiveKit).
When enabled = true and default_region is present, the following properties are required: api_key, api_secret
Property Type Description api_key? string LiveKit API Key used for config-driven default_region bootstrap. Optional when voice topology is managed in the admin panel. api_secret? string LiveKit API Secret used for config-driven default_region bootstrap. Optional when voice topology is managed in the admin panel. default_region? object Default voice region to create on startup if none exist. When provided, automatically creates this region and a server pointing to the configured LiveKit URL. enabled? boolean Enable voice/video features. Default: false url? string LiveKit Server URL (client signal endpoint for WebSocket connections). Default: "" webhook_url? string URL for LiveKit webhooks. Default: ""
{
"api_key" : "" ,
"api_secret" : "" ,
"enabled" : false ,
"url" : "" ,
"webhook_url" : ""
}
default_region
Default voice region to create on startup if none exist. When provided, automatically creates this region and a server pointing to the configured LiveKit URL.
Property Type Description emoji string Emoji icon for the region (e.g. ’🌐’, ’🇪🇺‘). id string Unique identifier for the region (e.g. ‘default’, ‘eu-west’). latitude number Latitude coordinate for the region. longitude number Longitude coordinate for the region. name string Display name for the region.
search_integration
JSON path: integrations.search
Search engine integration (Meilisearch). Fluxer always uses Meilisearch for indexing and querying.
Property Type Description api_key string Meilisearch API key used by the API for index management and writes. Use a key with access to documents and settings. url string Meilisearch HTTP API URL. Default: http://127.0.0.1:7700
{
"api_key" : "your_api_key" ,
"url" : "http://127.0.0.1:7700"
}
stripe_integration
JSON path: integrations.stripe
Stripe payments integration.
When enabled = true, the following properties are required: secret_key, webhook_secret
Property Type Description enabled? boolean Enable Stripe payments. Default: false prices? stripe_prices Stripe Price ID configuration. secret_key? string Stripe Secret Key. webhook_secret? string Stripe Webhook Signing Secret.
{
"enabled" : false ,
"secret_key" : "" ,
"webhook_secret" : ""
}
stripe_prices
JSON path: integrations.stripe.prices
Stripe Price IDs for subscription products.
Property Type Description gift_1_month_eur? string Gift 1 Month EUR price ID. Default: "" gift_1_month_usd? string Gift 1 Month USD price ID. Default: "" gift_1_year_eur? string Gift 1 Year EUR price ID. Default: "" gift_1_year_usd? string Gift 1 Year USD price ID. Default: "" gift_visionary_eur? string Gift Visionary EUR price ID. Default: "" gift_visionary_usd? string Gift Visionary USD price ID. Default: "" monthly_eur? string Monthly subscription EUR price ID. Default: "" monthly_usd? string Monthly subscription USD price ID. Default: "" visionary_eur? string Visionary tier EUR price ID. Default: "" visionary_usd? string Visionary tier USD price ID. Default: "" yearly_eur? string Yearly subscription EUR price ID. Default: "" yearly_usd? string Yearly subscription USD price ID. Default: ""
{
"gift_1_month_eur" : "" ,
"gift_1_month_usd" : "" ,
"gift_1_year_eur" : "" ,
"gift_1_year_usd" : "" ,
"gift_visionary_eur" : "" ,
"gift_visionary_usd" : "" ,
"monthly_eur" : "" ,
"monthly_usd" : "" ,
"visionary_eur" : "" ,
"visionary_usd" : "" ,
"yearly_eur" : "" ,
"yearly_usd" : ""
}
photo_dna_integration
JSON path: integrations.photo_dna
PhotoDNA integration for hash matching.
Property Type Description enabled? boolean Enable PhotoDNA. Default: false hash_service_timeout_ms? number Timeout for hash generation. Default: 15000 hash_service_url? string URL for the hash generation service. Default: "" match_endpoint? string URL for the match service. Default: "" match_enhance? boolean Enable enhanced matching. Default: false rate_limit_rps? number Rate limit requests per second. Default: 5 subscription_key? string Subscription key for the match service. Default: ""
{
"enabled" : false ,
"hash_service_timeout_ms" : 15000 ,
"hash_service_url" : "" ,
"match_endpoint" : "" ,
"match_enhance" : false ,
"rate_limit_rps" : 5 ,
"subscription_key" : ""
}
ncmec_integration
JSON path: integrations.ncmec
NCMEC CyberTipline integration.
Property Type Description base_url? string Base URL for the CyberTipline Reporting API (e.g., https://report.cybertip.org/ispws ). Default: "" enabled? boolean Enable NCMEC reporting. Default: false password? string Password for CyberTipline basic authentication. Default: "" username? string Username for CyberTipline basic authentication. Default: ""
{
"base_url" : "" ,
"enabled" : false ,
"password" : "" ,
"username" : ""
}
clamav_integration
JSON path: integrations.clamav
ClamAV antivirus integration.
Property Type Description enabled? boolean Enable ClamAV scanning. Default: false fail_open? boolean If true, allow files if scanning fails. Default: true host? string ClamAV host. Default: clamav port? number ClamAV port. Default: 3310
{
"enabled" : false ,
"fail_open" : true ,
"host" : "clamav" ,
"port" : 3310
}
gif
JSON path: integrations.gif
GIF provider selection for the client-facing GIF picker.
Property Type Description provider? enum<klipy, tenor> GIF provider to use for GIF search and sharing. Default: klipy
klipy
JSON path: integrations.klipy
KLIPY GIF API integration.
Property Type Description api_key? string KLIPY API Key. Default: ""
tenor
JSON path: integrations.tenor
Tenor GIF API integration.
Property Type Description api_key? string Tenor API key. Default: ""
youtube
JSON path: integrations.youtube
YouTube API integration.
Property Type Description api_key? string YouTube API Key. Default: ""
cloudflare
JSON path: integrations.cloudflare
Cloudflare integration.
Property Type Description api_token? string Cloudflare API token for cache purge. Default: "" purge_enabled? boolean Enable automatic cache purging. Default: false zone_id? string Cloudflare Zone ID. Default: ""
{
"api_token" : "" ,
"purge_enabled" : false ,
"zone_id" : ""
}
internal
JSON path: internal
Direct internal endpoints for backend services. In monolith mode these are served via paths on the main server.
Property Type Description kv? string Internal Valkey/Redis URL for key-value operations. Default: redis://localhost:6379/0 media_proxy? string Internal URL for the Media Proxy service. Default: http://localhost:8088/media queue? string Internal URL for the Queue service. Default: http://localhost:8088/queue
{
"kv" : "redis://localhost:6379/0" ,
"media_proxy" : "http://localhost:8088/media" ,
"queue" : "http://localhost:8088/queue"
}
proxy
JSON path: proxy
Proxy configuration.
Property Type Description trust_cf_connecting_ip? boolean Trust Cloudflare’s CF-Connecting-IP header. Default: false
{
"trust_cf_connecting_ip" : false
}
JSON path: s3
S3 connection configuration.
Property Type Description access_key_id string S3 Access Key ID. buckets? s3_buckets Mapping of logical buckets to actual S3 bucket names. Default: {} endpoint? string S3 service endpoint URL. Default: http://localhost:3900 presigned_url_base? string Base URL for presigned download URLs. If not set, defaults to the endpoint value. Set this to a public URL when the endpoint is internal. region? string S3 region. Default: local secret_access_key string S3 Secret Access Key.
{
"access_key_id" : "your_access_key_id" ,
"secret_access_key" : "your_secret_access_key" ,
"endpoint" : "http://localhost:3900" ,
"presigned_url_base" : "" ,
"region" : "local"
}
s3_buckets
JSON path: s3.buckets
Configuration of specific S3 bucket names.
Property Type Description cdn? string Bucket for CDN assets. Default: fluxer downloads? string Bucket for downloads. Default: fluxer-downloads harvests? string Bucket for data harvests. Default: fluxer-harvests reports? string Bucket for report data. Default: fluxer-reports static? string Bucket for static site assets. Default: fluxer-static uploads? string Bucket for user uploads. Default: fluxer-uploads
{
"cdn" : "fluxer" ,
"downloads" : "fluxer-downloads" ,
"harvests" : "fluxer-harvests" ,
"reports" : "fluxer-reports" ,
"static" : "fluxer-static" ,
"uploads" : "fluxer-uploads"
}
sentry
JSON path: sentry
Sentry configuration.
Property Type Description dsn? string Sentry DSN. Default: "" enabled? boolean Enable Sentry reporting. Default: false
{
"dsn" : "" ,
"enabled" : false
}
services
JSON path: services
Container for all service-specific configurations.
Property Type Description admin admin_service api? api_service Default: {} app_proxy? app_proxy_service gateway gateway_service marketing? marketing_service media_proxy media_proxy_service nats? nats_services Default: {} queue? queue_service Default: {} s3? s3_service Default: {} server? server_service Default: {}
s3_service
JSON path: services.s3
Configuration for the S3-compatible storage service.
Property Type Description data_dir? string Filesystem path to store S3 data objects. Default: ./data/s3 export_timeout? number Timeout in milliseconds for data export operations. Default: 30000 host? string Network interface to bind to. Default: 0.0.0.0 port? number Port to listen on. Default: 3900 rate_limit? rate_limit Rate limiting configuration for the S3 service.
{
"data_dir" : "./data/s3" ,
"export_timeout" : 30000 ,
"host" : "0.0.0.0" ,
"port" : 3900
}
rate_limit
JSON path: services.s3.rate_limit
Rate limiting parameters.
Property Type Description limit? number Maximum number of requests allowed within the window. window_ms? number Time window in milliseconds.
{
"limit" : 0 ,
"window_ms" : 0
}
nats_services
JSON path: services.nats
Configuration for NATS messaging.
Property Type Description auth_token? string Authentication token for NATS connections. Default: "" core_url? string NATS Core server URL for RPC. Default: nats://127.0.0.1:4222 jetstream_url? string NATS JetStream server URL for job queues. Default: nats://127.0.0.1:4223
{
"auth_token" : "" ,
"core_url" : "nats://127.0.0.1:4222" ,
"jetstream_url" : "nats://127.0.0.1:4223"
}
queue_service
JSON path: services.queue
Configuration for the Job Queue service.
Property Type Description concurrency? number Number of concurrent worker threads. Default: 1 data_dir? string Filesystem path to store queue data. Default: ./data/queue default_visibility_timeout_ms? number Default time in milliseconds a message remains invisible after being received. Default: 30000 port? number Port to listen on. Default: 8088 secret? string Secret for queue API authentication. Default: "" snapshot_after_ops? number Number of operations after which to take a queue snapshot. Default: 10000 snapshot_every_ms? number Interval in milliseconds to take queue snapshots. Default: 60000 snapshot_zstd_level? number Zstd compression level for snapshots (1-22). Default: 3
{
"concurrency" : 1 ,
"data_dir" : "./data/queue" ,
"default_visibility_timeout_ms" : 30000 ,
"port" : 8088 ,
"secret" : "" ,
"snapshot_after_ops" : 10000 ,
"snapshot_every_ms" : 60000 ,
"snapshot_zstd_level" : 3
}
JSON path: services.media_proxy
Configuration for the Media Proxy service.
Property Type Description host? string Network interface to bind to. Default: 0.0.0.0 port? number Port to listen on. Default: 8080 rate_limit? rate_limit Rate limiting configuration for the Media Proxy. require_cloudflare_edge? boolean If true, strictly requires requests to originate from Cloudflare edge IPs. Default: false secret_key string Secret key used to sign and verify media URLs. static_mode? boolean If true, enables serving static files directly. Default: false
{
"secret_key" : "your_secret_key" ,
"host" : "0.0.0.0" ,
"port" : 8080 ,
"require_cloudflare_edge" : false ,
"static_mode" : false
}
admin_service
JSON path: services.admin
Configuration for the Admin Panel service.
Property Type Description base_path? string URL base path for the admin interface. Default: /admin oauth_client_secret string OAuth Client Secret for admin authentication. port? number Port to listen on. Default: 3001 rate_limit? rate_limit Rate limiting configuration for the Admin service. secret_key_base string Base secret key for signing admin session tokens.
{
"oauth_client_secret" : "your_oauth_client_secret" ,
"secret_key_base" : "your_secret_key_base" ,
"base_path" : "/admin" ,
"port" : 3001
}
marketing_service
JSON path: services.marketing
Configuration for the Marketing site service.
Property Type Description base_path? string URL base path for the marketing site. Default: /marketing enabled? boolean Whether to enable the Marketing service within fluxer_server. Default: false host? string Network interface to bind to. Default: 0.0.0.0 port? number Port to listen on. Default: 8774 secret_key_base string Base secret key for marketing site sessions/tokens.
{
"secret_key_base" : "your_secret_key_base" ,
"base_path" : "/marketing" ,
"enabled" : false ,
"host" : "0.0.0.0" ,
"port" : 8774
}
api_service
JSON path: services.api
Configuration for the main API service.
Property Type Description host? string Network interface to bind to. Default: 0.0.0.0 port? number Port to listen on. Default: 8080 unfurl_ignored_hosts? array<string> List of hostnames or IPs to ignore when unfurling URLs. Default: ["localhost","127.0.0.1"]
{
"host" : "0.0.0.0" ,
"port" : 8080 ,
"unfurl_ignored_hosts" : [
"localhost" ,
"127.0.0.1"
]
}
app_proxy_service
JSON path: services.app_proxy
Configuration for the App Proxy service (frontend server).
Property Type Description assets_dir? string Filesystem directory containing static assets. Default: ./assets port? number Port to listen on. Default: 8773 static_cdn_endpoint? string URL endpoint for serving static assets via CDN. Default: ""
{
"assets_dir" : "./assets" ,
"port" : 8773 ,
"static_cdn_endpoint" : ""
}
gateway_service
JSON path: services.gateway
Configuration for the Gateway service (WebSocket).
Property Type Description admin_reload_secret string Secret used to trigger code hot-swapping/reloads. gateway_metrics_enabled? boolean Enable collection of gateway metrics. Default: false gateway_metrics_report_interval_ms? number Interval in milliseconds to report gateway metrics. Default: 30000 guild_shards? number Number of shards for guild handling. Default: 1 identify_rate_limit_enabled? boolean Enable rate limiting for Gateway IDENTIFY opcodes. Default: false logger_level? string Logging level (e.g., debug, info, warn, error). Default: info media_proxy_endpoint string Endpoint URL of the Media Proxy service. port? number Port to listen on. Default: 8771 presence_bus_shards? number Number of shards for presence message bus. Default: 1 presence_cache_shards? number Number of shards for presence cache. Default: 1 presence_shards? number Number of shards for presence handling. Default: 1 push_badge_counts_cache_mb? number Memory cache size (MB) for badge counts. Default: 256 push_badge_counts_cache_ttl_seconds? number TTL in seconds for badge counts cache. Default: 60 push_blocked_ids_cache_mb? number Memory cache size (MB) for blocked user IDs. Default: 1024 push_enabled? boolean Enable push notification delivery. Default: true push_subscriptions_cache_mb? number Memory cache size (MB) for push subscriptions. Default: 1024 push_user_guild_settings_cache_mb? number Memory cache size (MB) for user guild settings. Default: 1024 release_node? string Erlang node name for the release. Default: fluxer_gateway@gateway
{
"admin_reload_secret" : "your_admin_reload_secret" ,
"media_proxy_endpoint" : "your_media_proxy_endpoint" ,
"gateway_metrics_enabled" : false ,
"gateway_metrics_report_interval_ms" : 30000 ,
"guild_shards" : 1 ,
"identify_rate_limit_enabled" : false ,
"logger_level" : "info" ,
"port" : 8771 ,
"presence_bus_shards" : 1 ,
"presence_cache_shards" : 1 ,
"presence_shards" : 1 ,
"push_badge_counts_cache_mb" : 256 ,
"push_badge_counts_cache_ttl_seconds" : 60 ,
"push_blocked_ids_cache_mb" : 1024 ,
"push_enabled" : true ,
"push_subscriptions_cache_mb" : 1024 ,
"push_user_guild_settings_cache_mb" : 1024 ,
"release_node" : "fluxer_gateway@gateway"
}
server_service
JSON path: services.server
Configuration for the main Fluxer Server.
Property Type Description host? string Network interface to bind to. Default: 0.0.0.0 port? number Port to listen on. Default: 8772 static_dir? string Path to static assets directory for the web app. Required in production.
{
"host" : "0.0.0.0" ,
"port" : 8772 ,
"static_dir" : ""
}
telemetry
JSON path: telemetry
OpenTelemetry observability settings.
Property Type Description api_key? string API Key for telemetry service. Default: "" enabled? boolean Enable OpenTelemetry. Default: false environment? string Environment name (dev, prod, etc). Default: development export_timeout? number Timeout in milliseconds for exporting telemetry data. Default: 30000 ignore_incoming_paths? array<string> HTTP paths to exclude from tracing. Default: ["/_health"] metric_export_interval_ms? number Interval in milliseconds between metric exports. Default: 60000 otlp_endpoint? string OTLP collector endpoint. Default: "" service_name? string Service name reported to telemetry. Default: fluxer trace_sampling_ratio? number Sampling ratio for traces (0.0 to 1.0). Default: 1
{
"api_key" : "" ,
"enabled" : false ,
"environment" : "development" ,
"export_timeout" : 30000 ,
"ignore_incoming_paths" : [
"/_health"
],
"metric_export_interval_ms" : 60000 ,
"otlp_endpoint" : "" ,
"service_name" : "fluxer" ,
"trace_sampling_ratio" : 1
}