volumes: # searxng_data: {} valkey_data2: {} networks: searxng: driver: overlay attachable: true traefik-public: external: true services: valkey_valkey: image: docker.io/valkey/valkey:alpine command: valkey-server --save 30 1 --loglevel warning restart: unless-stopped cap_drop: - ALL cap_add: - SETGID - SETUID - DAC_OVERRIDE volumes: - valkey_data2:/data logging: driver: "json-file" options: max-size: "1m" max-file: "1" networks: - searxng deploy: placement: constraints: - node.labels.searxng.redis == true searxng: image: docker.io/searxng/searxng:latest restart: unless-stopped environment: - LIMITER=true - SEARXNG_BASE_URL=https://search.${DOMAIN}/ - SEARXNG_VALKEY_URL=valkey://valkey_valkey:6379/0 - SEARXNG_SECRET=${SEARXNG_SECRET:-ultrasecretkey} - SEARXNG_LIMITER=true # - SEARXNG_USE_DEFAULT_SETTINGS=true # - SEARXNG_IMAGE_PROXY=true # - SEARXNG_DEBUG=false volumes: - /var/data/config/searxng:/etc/searxng # - searxng_data:/etc/searxng # cap_drop: # - ALL # cap_add: # - CHOWN # - SETGID # - SETUID logging: driver: "json-file" options: max-size: "1m" max-file: "1" depends_on: - valkey_valkey networks: - searxng - traefik-public deploy: # placement: # constraints: # - node.labels.searxng.searxng_data == true labels: - traefik.enable=true - traefik.swarm.network=traefik-public - traefik.constraint-label=traefik-public - traefik.http.routers.searxng-rtr.entrypoints=https - traefik.http.routers.searxng-rtr.rule=Host(`search.${DOMAIN}`) - traefik.http.routers.searxng-rtr.middlewares=xbot - traefik.http.routers.searxng-rtr.tls.certresolver=le - traefik.http.routers.searxng-rtr.service=searxng-svc - traefik.http.services.searxng-svc.loadbalancer.server.port=8080