repo/installer/src/compose.ts
Ezequiel C. 187379de4e multistreaming: scenes/composition, installer build support, service updates
- 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.
2026-09-02 21:18:25 +02:00

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 });
}