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
This commit is contained in:
176
fluxer/packages/config/src/schema/root.json
Normal file
176
fluxer/packages/config/src/schema/root.json
Normal file
@@ -0,0 +1,176 @@
|
||||
{
|
||||
"$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": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user