Skip to main content

SearXNG

Privacy-respecting, hackable metasearch engine

version: '3.7'

services:

  redis:
    container_name: searxng-redis
    image: "redis:alpine"
    restart: unless-stopped
    command: redis-server --save "" --appendonly "no"
    networks:
      - searxng
    tmpfs:
      - /var/lib/redis
    cap_drop:
      - ALL
    cap_add:
      - SETGID
      - SETUID
      - DAC_OVERRIDE

  searxng:
    container_name: searxng
    image: searxng/searxng:latest
    restart: unless-stopped
    depends_on:
      - redis
    networks:
      - searxng
    ports:
     - "8082:8080"
    volumes:
      - /srv/.../Files/Searxng/:/etc/searxng:rw
    environment:
      - SEARXNG_BASE_URL=https://your.domain.tld/
    cap_drop:
      - ALL
    cap_add:
      - CHOWN
      - SETGID
      - SETUID
      - DAC_OVERRIDE
    logging:
      driver: "json-file"
      options:
        max-size: "1m"
        max-file: "1"
networks:
  searxng:
    ipam:
      driver: default

Voici un tuto concis basé sur ta méthode (clone + docker-compose dans Portainer + config minimale via WebUI) :


1. Préparer le repo

git clone https://github.com/searxng/searxng-docker.git
cd searxng-docker
  • Édite searxng/settings.yml pour définir ton secret_key et supprimer tout tag YAML non reconnu (!go ou autres) :

use_default_settings: true
server:
  secret_key: "ultrasecretkey"
  limiter: false
  image_proxy: true
redis:
  url: redis://redis:6379/0

2. Préparer Docker Compose

  • Dans Portainer, créer un stack et coller ton docker-compose.yml adapté :

    • Supprimer le service caddy si tu ne l’utilises pas.

    • Binder tes volumes sur /srv/dev-disk-by-uuid-53d16a81-1979-44a2-9f39-fd2dff88856a/Files/Searxng/ :

services:
  redis:
    container_name: redis
    image: docker.io/valkey/valkey:8-alpine
    command: valkey-server --save 30 1 --loglevel warning
    restart: unless-stopped
    volumes:
      - /srv/dev-disk-by-uuid-53d16a81-1979-44a2-9f39-fd2dff88856a/Files/Searxng/redis:/data

  searxng:
    container_name: searxng
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    ports:
      - "127.0.0.1:8080:8080"
    volumes:
      - /srv/dev-disk-by-uuid-53d16a81-1979-44a2-9f39-fd2dff88856a/Files/Searxng/searxng:/etc/searxng
      - /srv/dev-disk-by-uuid-53d16a81-1979-44a2-9f39-fd2dff88856a/Files/Searxng/cache:/var/cache/searxng

3. Lancer le stack

  • Dans Portainer : Deploy the stack.

  • Vérifier les logs :

docker logs -f searxng
  • Corriger les éventuels warnings YAML ou Redis si besoin.


4. Configurer via WebUI

  • Accéder à http://localhost:8080 (ou ton host).

  • Dans Settings → Engines, activer/désactiver les moteurs.

  • Sauvegarder.

  • Tu peux ignorer Google si tu veux éviter les blocages 403.


5. Notes

  • Les moteurs comme Google peuvent être bloqués → mieux vaut utiliser Google API ou les désactiver.

  • Toutes les données persistent dans les volumes bindés → tu peux recréer le conteneur sans perdre la config.

  • Pour mises à jour : docker pull searxng/searxng:latest + relancer le stack.