- multistreaming (new): RTMP ingest + multi-platform fan-out with pluggable providers (Twitch/YouTube/Kick/custom), zero-knowledge key vaults, Authelia OIDC auth, shared rooms with editor/streamer roles, single-use invites, per-account streaming grants, and scenes & composition (grid/PiP layouts, text/image overlays, per-output audio routing). - installer: support Dockerfile build in metadata (not just image) and RSA key generation for the Authelia OIDC JWKS. - authelia: add OIDC provider with portainer + multistreaming clients (public + PKCE). - services: remove allprox; add nginx-proxy-manager and portainer; update lldap; regenerate catalog.
22 lines
803 B
TypeScript
22 lines
803 B
TypeScript
import { stringify } from "yaml";
|
|
import type { ServiceMetadata } from "./types.ts";
|
|
|
|
/** True when the service builds its image from a Dockerfile rather than pulling one. */
|
|
export function usesBuild(meta: ServiceMetadata): boolean {
|
|
return Boolean(meta.compose && (meta.compose as Record<string, unknown>).build);
|
|
}
|
|
|
|
/** Build the docker-compose.yml content for a service from its metadata. */
|
|
export function generateComposeFile(meta: ServiceMetadata): string {
|
|
const doc: Record<string, unknown> = {};
|
|
|
|
if (meta.networks && Object.keys(meta.networks).length > 0) {
|
|
doc.networks = meta.networks;
|
|
}
|
|
if (meta.volumes && Object.keys(meta.volumes).length > 0) {
|
|
doc.volumes = meta.volumes;
|
|
}
|
|
doc.services = { [meta.id]: meta.compose };
|
|
|
|
return stringify(doc, { lineWidth: 0 });
|
|
}
|