version: '3.7' services: caddy: container_name: caddy image: abiosoft/caddy:1.0.3-no-stats ports: - 80:80 - 443:443 network_mode: host command: -email ${LETSENCRYPT_EMAIL} -agree=${LETSENCRYPT_AGREE} -log stdout -host ${SEARX_HOSTNAME} -conf /etc/Caddyfile volumes: - ./Caddyfile:/etc/Caddyfile:rw - ./caddy:/root/.caddy:rw - ./srv:/srv:rw - searx-checker:/srv/searx-checker:rw environment: - SEARX_HOSTNAME=${SEARX_HOSTNAME} - SEARX_PROTOCOL=${SEARX_PROTOCOL:-} - SEARX_TLS=${SEARX_TLS:-} - FILTRON_USER=${FILTRON_USER} - FILTRON_PASSWORD=${FILTRON_PASSWORD} cap_drop: - ALL cap_add: - NET_BIND_SERVICE - DAC_OVERRIDE filtron: container_name: filtron image: dalf/filtron restart: always ports: - 4040:4040 - 4041:4041 networks: - searx command: -listen 0.0.0.0:4040 -api 0.0.0.0:4041 -target searx:8080 volumes: - ./rules.json:/etc/filtron/rules.json:rw read_only: true cap_drop: - ALL searx: container_name: searx image: searx/searx:latest restart: always networks: - searx command: ${SEARX_COMMAND:-} volumes: - ./searx:/etc/searx:rw environment: - BIND_ADDRESS=0.0.0.0:8080 - BASE_URL=https://${SEARX_HOSTNAME}/ - MORTY_URL=https://${SEARX_HOSTNAME}/morty/ - MORTY_KEY=${MORTY_KEY} cap_drop: - ALL cap_add: - CHOWN - SETGID - SETUID - DAC_OVERRIDE morty: container_name: morty image: dalf/morty restart: always ports: - 3000:3000 networks: - searx command: -listen 0.0.0.0:3000 -timeout 6 -ipv6 environment: - MORTY_KEY=${MORTY_KEY} logging: driver: none read_only: true cap_drop: - ALL searx-checker: container_name: searx-checker image: searx/searx-checker restart: always networks: - searx command: -cron -o html/data/status.json http://searx:8080 volumes: - searx-checker:/usr/local/searx-checker/html/data:rw networks: searx: ipam: driver: default volumes: searx-checker: