Ref: https://docs.searxng.org/admin/installation-searxng.html

dockerfile 36 lines
FROM python:3.11-slim

# Install dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3-babel \
    uwsgi uwsgi-plugin-python3 \
    git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev \
    && rm -rf /var/lib/apt/lists/*

# Create searxng user and directories
RUN useradd --system --shell /bin/bash --home-dir /usr/local/searxng --comment 'Privacy-respecting metasearch engine' searxng \
    && mkdir -p /usr/local/searxng \
    && chown -R searxng:searxng /usr/local/searxng

USER searxng
WORKDIR /usr/local/searxng

# Clone SearXNG source
RUN git clone https://github.com/searxng/searxng /usr/local/searxng/searxng-src

# Set up virtualenv and install SearXNG
RUN python3 -m venv /usr/local/searxng/searx-pyenv \
    && . /usr/local/searxng/searx-pyenv/bin/activate \
    && pip install -U pip setuptools wheel pyyaml \
    && cd /usr/local/searxng/searxng-src \
    && pip install --use-pep517 --no-build-isolation -e .

# Copy settings file
COPY --chown=searxng:searxng settings.yml /etc/searxng/settings.yml

ENV SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml

EXPOSE 8888

# Entrypoint
CMD ["/usr/local/searxng/searx-pyenv/bin/python", "/usr/local/searxng/searxng-src/searx/webapp.py"]
bash 77 lines
#! /usr/bin/env bash

# Autocomplete Options: duckduckgo, bing, google, startpage, qwant, searxng
SEARXNG_AUTOCOMPLETE="duckduckgo"
SEARXNG_BASE_URL="http://example.com/location"
SEARXNG_SECRET="ultrasecretkey"

sudo -H apt-get install -y \
    python3-dev python3-babel python3-venv \
    uwsgi uwsgi-plugin-python3 \
    git build-essential libxslt-dev zlib1g-dev libffi-dev libssl-dev

sudo -H useradd --shell /bin/bash --system \
    --home-dir "/usr/local/searxng" \
    --comment 'Privacy-respecting metasearch engine' \
    searxng

sudo -H mkdir "/usr/local/searxng"
sudo -H chown -R "searxng:searxng" "/usr/local/searxng"

sudo -H -u searxng -i
git clone "https://github.com/searxng/searxng" \
    "/usr/local/searxng/searxng-src"

python3 -m venv "/usr/local/searxng/searx-pyenv"
echo ". /usr/local/searxng/searx-pyenv/bin/activate" \
    >>  "/usr/local/searxng/.profile"

sudo -H -u searxng -i

command -v python && python --version
searxng/searx-pyenv/bin/python

# update pip's boilerplate ..
pip install -U pip
pip install -U setuptools
pip install -U wheel
pip install -U pyyaml

# jump to SearXNG's working tree and install SearXNG into virtualenv
cd "/usr/local/searxng/searxng-src"
pip install --use-pep517 --no-build-isolation -e .

sudo tee /etc/searxng/settings.yml > /dev/null <<'EOF'
# SearXNG settings

use_default_settings: true

general:
    debug: false
    instance_name: "${SEARXNG_INSTANCE_NAME:-SearXNG}"

search:
    safe_search: 2
    autocomplete: '${SEARXNG_AUTOCOMPLETE:-duckduckgo}'
    formats:
        - html

server:
    secret_key: "${SEARXNG_SECRET:-ultrasecretkey}"
    limiter: false
    image_proxy: true

redis:
    # URL to connect redis database. Is overwritten by ${SEARXNG_REDIS_URL}.
    url: unix:///usr/local/searxng-redis/run/redis.sock?db=0

ui:
    static_use_hash: true
EOF

sudo -H -u searxng -i
cd /usr/local/searxng/searxng-src
export SEARXNG_SETTINGS_PATH="/etc/searxng/settings.yml"
python searx/webapp.py

# open http://127.0.0.1:8888