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 hostname: filtron restart: always ports: - 127.0.0.1:4040:4040 - 127.0.0.1:4041:4041 networks: searx: ipv4_address: 10.10.10.3 command: -listen 10.10.10.3:4040 -api 10.10.10.3:4041 -target 10.10.10.4:8080 volumes: - ./rules.json:/etc/filtron/rules.json:rw read_only: true cap_drop: - ALL searx: container_name: searx image: searx/searx:latest hostname: searx restart: always networks: searx: ipv4_address: 10.10.10.4 command: ${SEARX_COMMAND:-} volumes: - ./searx:/etc/searx:rw environment: - BIND_ADDRESS=10.10.10.4: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 hostname: morty restart: always ports: - 127.0.0.1:3000:3000 networks: searx: ipv4_address: 10.10.10.5 command: -listen 10.10.10.5: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 hostname: searx-checker restart: always networks: searx: ipv4_address: 10.10.10.6 command: -cron -o html/data/status.json http://10.10.10.4:8080 volumes: - searx-checker:/usr/local/searx-checker/html/data:rw networks: searx: ipam: driver: default config: - subnet: 10.10.10.0/24 volumes: searx-checker: