diff --git a/apps/control-panel-app/src/templates/build-template-records.util.ts b/apps/control-panel-app/src/templates/build-template-records.util.ts index ad66f378..b2475022 100644 --- a/apps/control-panel-app/src/templates/build-template-records.util.ts +++ b/apps/control-panel-app/src/templates/build-template-records.util.ts @@ -496,6 +496,10 @@ const metadataBySlug: Partial>> = { name: "Meilisearch", version: "1.22", }, + searxng: { + name: "SearXNG", + version: "latest", + }, dashy: { name: "Dashy", version: "latest", diff --git a/apps/control-panel-app/templates/searxng/.env.example b/apps/control-panel-app/templates/searxng/.env.example new file mode 100644 index 00000000..b0954ac5 --- /dev/null +++ b/apps/control-panel-app/templates/searxng/.env.example @@ -0,0 +1,12 @@ +SERVICE_PORT_SEARXNG=8080 +SERVICE_HEX_64_SEARXNG=0000000000000000000000000000000000000000000000000000000000000000 +SEARXNG_IMAGE=searxng/searxng:latest +SEARXNG_RESTART_POLICY=unless-stopped +SEARXNG_FORCE_OWNERSHIP=true +TZ=UTC + +# Public URL when running behind a reverse proxy. +SERVICE_URL_SEARXNG_8080=http://localhost:8080 +SERVICE_URL_SEARXNG=http://localhost:8080 +SERVICE_FQDN_SEARXNG_8080=localhost +SERVICE_FQDN_SEARXNG=localhost diff --git a/apps/control-panel-app/templates/searxng/docker-compose.yml b/apps/control-panel-app/templates/searxng/docker-compose.yml new file mode 100644 index 00000000..40bac506 --- /dev/null +++ b/apps/control-panel-app/templates/searxng/docker-compose.yml @@ -0,0 +1,52 @@ +# documentation: https://docs.searxng.org/admin/installation-docker.html +# shortDescription: Privacy-respecting metasearch engine +# longDescription:

SearXNG is a free, open-source metasearch engine that aggregates results from multiple search services without tracking users.

Web UI on port 8080. Set SEARXNG_BASE_URL via SERVICE_URL_SEARXNG and a secret with SERVICE_HEX_64_SEARXNG.

+# category: search +# tags: searxng,search,metasearch,privacy,self-hosted +# port: 8080 +# logo: svgs/searxng.svg + +services: + searxng: + image: ${SEARXNG_IMAGE:-searxng/searxng:latest} + restart: ${SEARXNG_RESTART_POLICY:-unless-stopped} + + ports: + - '${SERVICE_PORT_SEARXNG:-8080}:8080' + + environment: + - SERVICE_URL_SEARXNG_8080 + - SEARXNG_BASE_URL=${SERVICE_URL_SEARXNG:-${SERVICE_URL_SEARXNG_8080}}/ + - SEARXNG_SECRET=${SERVICE_HEX_64_SEARXNG} + - FORCE_OWNERSHIP=${SEARXNG_FORCE_OWNERSHIP:-true} + - TZ=${TZ:-UTC} + + volumes: + - searxng_config:/etc/searxng + - searxng_data:/var/cache/searxng + + healthcheck: + test: ['CMD', 'wget', '--spider', '-q', 'http://127.0.0.1:8080/healthz'] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + + deploy: + resources: + limits: + cpus: '1.0' + memory: 1G + reservations: + cpus: '0.25' + memory: 256M + + logging: + driver: json-file + options: + max-size: "10m" + max-file: "3" + +volumes: + searxng_config: + searxng_data: diff --git a/apps/control-panel-app/templates/svgs/searxng.svg b/apps/control-panel-app/templates/svgs/searxng.svg new file mode 100644 index 00000000..aa3d3439 --- /dev/null +++ b/apps/control-panel-app/templates/svgs/searxng.svg @@ -0,0 +1 @@ + \ No newline at end of file