diff --git a/config/platform-infra/public-edge.yaml b/config/platform-infra/public-edge.yaml index 3fcd034c..199e546d 100644 --- a/config/platform-infra/public-edge.yaml +++ b/config/platform-infra/public-edge.yaml @@ -34,6 +34,8 @@ targets: caddyfilePath: /opt/unidesk/pikaoa-edge/Caddyfile dataDir: /var/lib/unidesk/pikaoa-edge/caddy-data configDir: /var/lib/unidesk/pikaoa-edge/caddy-config + dnsServers: + - 10.43.0.10 responseHeaderTimeoutSeconds: 60 sites: - id: pikaoa-development diff --git a/scripts/src/platform-infra-public-edge.ts b/scripts/src/platform-infra-public-edge.ts index 7fd904ba..f2d64212 100644 --- a/scripts/src/platform-infra-public-edge.ts +++ b/scripts/src/platform-infra-public-edge.ts @@ -60,6 +60,7 @@ export interface PublicEdgeTarget { caddyfilePath: string; dataDir: string; configDir: string; + dnsServers: string[]; responseHeaderTimeoutSeconds: number; }; siteReferences: SiteReference[]; @@ -189,6 +190,7 @@ function readTarget(root: Record, requestedTargetId: string | n caddyfilePath: absolutePath(runtime.caddyfilePath, `targets.${targetId}.runtime.caddyfilePath`), dataDir: absolutePath(runtime.dataDir, `targets.${targetId}.runtime.dataDir`), configDir: absolutePath(runtime.configDir, `targets.${targetId}.runtime.configDir`), + dnsServers: array(runtime.dnsServers, `targets.${targetId}.runtime.dnsServers`).map((value, index) => ipv4(value, `targets.${targetId}.runtime.dnsServers[${index}]`)), responseHeaderTimeoutSeconds: positiveInteger(runtime.responseHeaderTimeoutSeconds, `targets.${targetId}.runtime.responseHeaderTimeoutSeconds`), }, siteReferences: sites.map((value, index) => { @@ -360,7 +362,8 @@ export function renderPublicEdgeArtifacts(target: PublicEdgeTarget, sites: Resol const protocols = target.listener.protocols.join(" "); const global = `\{\n\tservers \{\n\t\tprotocols ${protocols}\n\t\}\n\}\n`; const blocks = sites.map((site) => `${site.hostname} \{\n\treverse_proxy ${site.upstream} \{\n\t\ttransport http \{\n\t\t\tresponse_header_timeout ${target.runtime.responseHeaderTimeoutSeconds}s${site.upstreamTlsServerName === undefined ? "" : `\n\t\t\ttls_server_name ${site.upstreamTlsServerName}`}\n\t\t\}\n\t\}\n\}\n`).join("\n"); - const compose = `services:\n caddy:\n image: ${target.runtime.image}\n container_name: ${target.runtime.containerName}\n network_mode: host\n restart: unless-stopped\n volumes:\n - ${target.runtime.caddyfilePath}:/etc/caddy/Caddyfile:ro\n - ${target.runtime.dataDir}:/data\n - ${target.runtime.configDir}:/config\n`; + const dnsServers = target.runtime.dnsServers.map((server) => ` - ${server}`).join("\n"); + const compose = `services:\n caddy:\n image: ${target.runtime.image}\n container_name: ${target.runtime.containerName}\n network_mode: host\n restart: unless-stopped\n dns:\n${dnsServers}\n volumes:\n - ${target.runtime.caddyfilePath}:/etc/caddy/Caddyfile:ro\n - ${target.runtime.dataDir}:/data\n - ${target.runtime.configDir}:/config\n`; return { caddyfile: `${global}\n${blocks}`, compose }; } @@ -537,6 +540,7 @@ function targetSummary(target: PublicEdgeTarget): Record { composePath: target.runtime.composePath, dataDir: target.runtime.dataDir, configDir: target.runtime.configDir, + dnsServers: target.runtime.dnsServers, }; }