- 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
177 lines
4.6 KiB
JSON
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": {}
|
|
}
|
|
}
|
|
}
|