Files
fx-test/fluxer/packages/config/src/schema/root.json
Vish 3b9d759b4b feat: add fluxer upstream source and self-hosting documentation
- Clone of github.com/fluxerapp/fluxer (official upstream)
- SELF_HOSTING.md: full VM rebuild procedure, architecture overview,
  service reference, step-by-step setup, troubleshooting, seattle reference
- dev/.env.example: all env vars with secrets redacted and generation instructions
- dev/livekit.yaml: LiveKit config template with placeholder keys
- fluxer-seattle/: existing seattle deployment setup scripts
2026-03-13 00:55:14 -07:00

177 lines
4.6 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Fluxer Config",
"type": "object",
"additionalProperties": false,
"required": ["env", "domain", "database", "services", "auth"],
"if": {
"required": ["instance"],
"properties": {
"instance": {
"required": ["deployment_mode"],
"properties": {
"deployment_mode": {
"const": "microservices"
}
}
}
}
},
"then": {
"required": ["internal"],
"properties": {
"services": {
"required": ["app_proxy"],
"properties": {
"s3": {
"required": ["port"]
},
"queue": {
"required": ["port"]
},
"media_proxy": {
"required": ["port"]
},
"admin": {
"required": ["port"]
},
"marketing": {
"required": ["port"]
},
"api": {
"required": ["port"]
},
"app_proxy": {
"required": ["port"]
},
"gateway": {
"required": ["port"]
},
"server": {
"required": ["port"]
}
}
}
}
},
"properties": {
"$schema": {
"type": "string",
"description": "Optional reference to this JSON Schema for tooling support."
},
"env": {
"type": "string",
"description": "Runtime environment for the application. Controls behavior such as logging verbosity, error details, and optimization levels.",
"enum": ["development", "production", "test"]
},
"domain": {
"description": "Global domain and port configuration used to derive public endpoints for all services.",
"$ref": "#/$defs/domain"
},
"endpoint_overrides": {
"description": "Manual overrides for specific public endpoints. If set, these take precedence over automatically derived URLs.",
"$ref": "#/$defs/endpoint_overrides"
},
"internal": {
"description": "Internal network endpoints for service-to-service communication. Only required for microservices mode.",
"$ref": "#/$defs/internal",
"default": {}
},
"database": {
"description": "Primary database configuration. Selects the backend (Cassandra vs SQLite) and provides connection details.",
"$ref": "#/$defs/database"
},
"s3": {
"description": "S3-compatible object storage configuration.",
"$ref": "#/$defs/s3"
},
"services": {
"description": "Configuration for individual Fluxer services.",
"$ref": "#/$defs/services"
},
"auth": {
"description": "Authentication and security settings.",
"$ref": "#/$defs/auth"
},
"cookie": {
"description": "HTTP cookie settings.",
"$ref": "#/$defs/cookie",
"default": {}
},
"integrations": {
"description": "Third-party service integrations.",
"$ref": "#/$defs/integrations",
"default": {}
},
"instance": {
"description": "Instance-specific settings and policies.",
"$ref": "#/$defs/instance",
"default": {}
},
"csam": {
"description": "CSAM (Child Sexual Abuse Material) detection and reporting policies.",
"$ref": "#/$defs/csam",
"default": {}
},
"dev": {
"description": "Development-only overrides and flags. These should generally be disabled in production.",
"$ref": "#/$defs/dev",
"default": {}
},
"geoip": {
"description": "GeoIP database configuration.",
"$ref": "#/$defs/geoip",
"default": {}
},
"proxy": {
"description": "Reverse proxy and IP resolution settings.",
"$ref": "#/$defs/proxy",
"default": {}
},
"discovery": {
"description": "Guild discovery listing configuration.",
"$ref": "#/$defs/discovery",
"default": {}
},
"attachment_decay_enabled": {
"type": "boolean",
"description": "Whether to automatically delete old attachments.",
"default": true
},
"deletion_grace_period_hours": {
"type": "number",
"description": "Grace period in hours before soft-deleted items are permanently removed.",
"default": 72
},
"inactivity_deletion_threshold_days": {
"type": "number",
"description": "Days of inactivity after which data may be subject to deletion.",
"default": 365
},
"alerts": {
"description": "System alerting configuration.",
"$ref": "#/$defs/alerts"
},
"telemetry": {
"description": "OpenTelemetry configuration.",
"$ref": "#/$defs/telemetry",
"default": {}
},
"sentry": {
"description": "Sentry error reporting configuration.",
"$ref": "#/$defs/sentry",
"default": {}
},
"app_public": {
"description": "Public client-side configuration exposed to the frontend.",
"$ref": "#/$defs/app_public",
"default": {}
},
"federation": {
"description": "Federation configuration for connecting with other Fluxer instances.",
"$ref": "#/$defs/federation",
"default": {}
}
}
}