SearXNG is a free internet metasearch engine which aggregates results from various search services and databases.
Users are neither tracked nor profiled.
name: searxng
services:
searxng-redis:
container_name: searxng-redis
image: docker.io/valkey/valkey:9-alpine
command: valkey-server --save 30 1 --loglevel warning
restart: unless-stopped
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 30s
timeout: 10s
retries: 3
volumes:
- ${DOCKER_VOLUMES}/searxng/valkey-data:/data
cap_drop:
- ALL
cap_add:
- SETGID
- SETUID
- DAC_OVERRIDE
- CHOWN
- FOWNER
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
- searxng-backend
searxng:
container_name: searxng
image: docker.io/searxng/searxng:2026.7.3-747cec4c2
restart: unless-stopped
volumes:
- ${DOCKER_VOLUMES}/searxng:/etc/searxng
- ./config/settings.yml:/etc/searxng/settings.yml
environment:
SEARXNG_BASE_URL: https://searxng.${MYDOMAIN}/
# https://docs.searxng.org/admin/settings/settings_server.html
SEARXNG_SECRET: ${SEARXNG_SECRET}
# https://docs.searxng.org/admin/settings/settings_redis.html
SEARXNG_REDIS_URL: "redis://searxng-redis:6379/0"
UWSGI_WORKERS: ${SEARXNG_UWSGI_WORKERS:-4}
UWSGI_THREADS: ${SEARXNG_UWSGI_THREADS:-4}
logging:
driver: "json-file"
options:
max-size: "1m"
max-file: "1"
networks:
- searxng-backend
- proxy
labels:
traefik.enable: true
traefik.http.routers.searxng.middlewares: localaccess@file
traefik.http.services.searxng.loadbalancer.server.port: 8080
homepage.group: Tools
homepage.name: SearXNG
homepage.icon: searxng.png
homepage.href: https://searxng.${MYDOMAIN}/
homepage.description: "Internet metasearch engine"
networks:
searxng-backend:
external: false
proxy:
external: true