Ctrl K
ComunidadGuías…

src/domain/hosting-deployment-common.js

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
import { ASSISTANT_COMPANION_IMAGES, createSearxngSettings } from "./assistant-templates.js";
import { getLocalModelDefinition } from "../local-model/catalog.mjs";

export function modelEnvironment(model, host = "0.0.0.0:11434", modelsPath = "/var/data/models") {
  const selected = getLocalModelDefinition(model?.id);
  if (typeof host !== "string" || !/^(?:0\.0\.0\.0|127\.0\.0\.1|\[::\]):11434$/u.test(host) ||
      typeof modelsPath !== "string" || !/^\/(?:[a-zA-Z0-9_-]+\/)*[a-zA-Z0-9_-]+$/u.test(modelsPath)) {
    throw new TypeError("The private model listener or cache path is invalid.");
  }
  return {
    OLLAMA_HOST: host,
    OLLAMA_MODELS: modelsPath,
    OLLAMA_NO_CLOUD: "1",
    OLLAMA_MAX_LOADED_MODELS: "1",
    OLLAMA_NUM_PARALLEL: "1",
    OLLAMA_CONTEXT_LENGTH: String(selected.contextTokens),
    OLLAMA_KEEP_ALIVE: "5m",
  };
}

export function searchEnvironment(host = "0.0.0.0") {
  if (host !== "0.0.0.0" && host !== "::") {
    throw new TypeError("The private search listener is invalid.");
  }
  return { GRANIAN_HOST: host, GRANIAN_PORT: "8080", FORCE_OWNERSHIP: "false" };
}

export function createSearchImageFiles() {
  return [
    { name: "Dockerfile", mediaType: "text/plain", content: `FROM ${ASSISTANT_COMPANION_IMAGES.searxng}
USER root
RUN mkdir -p /etc/searxng /var/cache/searxng && chown -R 977:977 /etc/searxng /var/cache/searxng
COPY --chown=977:977 settings.yml /etc/searxng/settings.yml
COPY --chown=977:977 --chmod=0755 start.sh /usr/local/bin/relmio-searxng-start
USER 977:977
ENTRYPOINT ["/usr/local/bin/relmio-searxng-start"]
` },
    { name: "settings.yml", mediaType: "text/yaml", content: createSearxngSettings() },
    { name: "start.sh", mediaType: "text/plain", content: `#!/bin/sh
set -eu
if [ -z "\${SEARXNG_SECRET:-}" ] || [ "\${#SEARXNG_SECRET}" -lt 32 ]; then
  echo 'SEARXNG_SECRET must be supplied through the provider secret store (32+ characters).' >&2
  exit 1
fi
exec /usr/local/searxng/entrypoint.sh
` },
    { name: ".dockerignore", mediaType: "text/plain", content: "*\n!Dockerfile\n!settings.yml\n!start.sh\n" },
  ];
}