From 978e35d335571d6dfba058316c43af0d27acc548 Mon Sep 17 00:00:00 2001 From: Andras Bacsai Date: Thu, 20 Oct 2022 09:44:08 +0200 Subject: [PATCH] add searxng --- apps/api/src/lib/services/handlers.ts | 9 +++++---- apps/api/src/lib/templates.ts | 12 +++++++++--- apps/api/src/routes/api/v1/services/handlers.ts | 10 ++++------ 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/apps/api/src/lib/services/handlers.ts b/apps/api/src/lib/services/handlers.ts index 1cfac5862..c1b15aa1e 100644 --- a/apps/api/src/lib/services/handlers.ts +++ b/apps/api/src/lib/services/handlers.ts @@ -716,10 +716,10 @@ export async function startService(request: FastifyRequest) { // ...(exposePort ? { ports: [`${exposePort}:${port}`] } : {}), volumes: template.services[service].volumes, environment: newEnviroments, - depends_on: template.services[service].depends_on, - ulimits: template.services[service].ulimits, - cap_drop: template.services[service].cap_drop, - cap_add: template.services[service].cap_add, + depends_on: template.services[service]?.depends_on, + ulimits: template.services[service]?.ulimits, + cap_drop: template.services[service]?.cap_drop, + cap_add: template.services[service]?.cap_add, labels: makeLabelForServices(type), ...defaultComposeConfiguration(network), } @@ -752,6 +752,7 @@ export async function startService(request: FastifyRequest) { } const composeFileDestination = `${workdir}/docker-compose.yaml`; await fs.writeFile(composeFileDestination, yaml.dump(composeFile)); + console.log(composeFileDestination) await startServiceContainers(destinationDocker.id, composeFileDestination) return {} } catch ({ status, message }) { diff --git a/apps/api/src/lib/templates.ts b/apps/api/src/lib/templates.ts index 7ae3021b7..4df0f5f2c 100644 --- a/apps/api/src/lib/templates.ts +++ b/apps/api/src/lib/templates.ts @@ -8,12 +8,16 @@ export default [ "services": { "$$id": { "name": "SearXNG", + "build": { + context: "$$workdir", + dockerfile: "Dockerfile.$$id" + }, "depends_on": [ "$$id-redis" ], "image": "searxng/searxng:$$core_version", "volumes": [ - "$$id-postgresql-searxng:/etc/searxng", + "$$id-searxng:/etc/searxng", ], "environment": [ "SEARXNG_BASE_URL=$$config_searxng_base_url", @@ -22,11 +26,13 @@ export default [ "ports": [ "8080" ], + "cap_drop": ['ALL'], + "cap_add": ['CHOWN', 'SETGID', 'SETUID', 'DAC_OVERRIDE'], "extras": { "files": [ { - source: "$$workdir/schema.postgresql.sql", - destination: "/docker-entrypoint-initdb.d/schema.postgresql.sql", + source: "$$workdir/settings.yml", + destination: "/etc/searxng/settings.yml", content: ` # see https://docs.searxng.org/admin/engines/settings.html#use-default-settings use_default_settings: true diff --git a/apps/api/src/routes/api/v1/services/handlers.ts b/apps/api/src/routes/api/v1/services/handlers.ts index fc20e545f..e6d92a2f9 100644 --- a/apps/api/src/routes/api/v1/services/handlers.ts +++ b/apps/api/src/routes/api/v1/services/handlers.ts @@ -157,23 +157,21 @@ export async function parseAndFindServiceTemplates(service: any, workdir?: strin const { name, value } = setting const regex = new RegExp(`\\$\\$config_${name}\\"`, 'gi') if (service.fqdn && value === '$$generate_fqdn') { - parsedTemplate = JSON.parse(JSON.stringify(parsedTemplate).replaceAll(regex, service.fqdn + "\"")) + parsedTemplate = JSON.parse(JSON.stringify(parsedTemplate).replaceAll(regex, service.fqdn+ "\"")) } else if (service.fqdn && value === '$$generate_domain') { - parsedTemplate = JSON.parse(JSON.stringify(parsedTemplate).replaceAll(regex, getDomain(service.fqdn) + "\"")) + parsedTemplate = JSON.parse(JSON.stringify(parsedTemplate).replaceAll(regex, getDomain(service.fqdn)+ "\"")) } else { parsedTemplate = JSON.parse(JSON.stringify(parsedTemplate).replaceAll(regex, value + "\"")) } + } } - // replace $$secret if (service.serviceSecret.length > 0) { for (const secret of service.serviceSecret) { const { name, value } = secret - const regex = new RegExp(`\\$\\$secret_${name}\\"`, 'gi') - const regexHashed = new RegExp(`\\$\\$hashed\\$\\$secret_${name}\\"`, 'gi') - parsedTemplate = JSON.parse(JSON.stringify(parsedTemplate).replaceAll(regexHashed, bcrypt.hashSync(value, 10)).replaceAll(regex, value)) + parsedTemplate = JSON.parse(JSON.stringify(parsedTemplate).replaceAll(`$$hashed$$secret_${name.toLowerCase()}`, bcrypt.hashSync(value, 10)).replaceAll(`$$secret_${name.toLowerCase()}`, value)) } } }