موتور جستجو شخصی امن



امروز قرار یک موتور جستجوی شخصی درست کنیم، قرار نیست از اول یک موتور جستجو بنویسیم بلکه قرار یک موتور جستجوی شخصی روی یک VPS داشته باشیم.

نکته: این اموزش برای کسی است که حداقل با لینوکس و راه اندازی سایت اشنایت داشته باشه، اگر می خواهید فقط براساس این اموزش این کار کنید سایت درست کار نخواهد کرد چون به طور خیلی خلاصه مراحل گفته شده است وبیشتر برای فردی است که از مراحل که انجام می دهد حداقل اشنایت را داشته باشد.

اینطوری تمام جستجوی های که انجام می دهید امن تر خواهد بود، چون تمام داده ها از روی VPS شخصی شما عبور می کند.

موتور جستجوی که قرار استفاده کنیم، موتور جستجوی searx است. همنطوری که می دانید این موتور جستجوی ازاد یعنی منبع باز برای عموم موجود است و در گیت هاب می تونید پیدا کنید.

اول از همه چند نکته درباره VPS که دارید توضیحی بدم بهتر از دبیان استفاده کنید، بخاطر اینکه ابونتو ممکن یکسری مشکلات با منابع بخورید. چون یکسری تفاوت های مثل پایتون و غیره داره و هم اینکه با این موتور جستجوی سازگارتر برای من به شخصه با دبیان راحت بودم.برای هر سایتی مشخص چه چیزهای نیاز دارید DNS و مخلفاتی که فکر میکنید. بریم برای راه اندازی موتور جستجوی شخصی، اولین کاری که می کنید با SSH یا هر برنامه به VPS نصب می شوید و دستورات زیر را وارد می کنید:

نصب یکسری از برنامه های مورد نیاز:

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

ساخت کاربر و یسکری از پوشه های مورد نیاز:


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

$ sudo -H mkdir /usr/local/searx
$ sudo -H chown -R searx:searx /usr/local/searx

دانلود موتور جستجو

$ sudo -H -u searx -i
(searx)$ git clone https://github.com/searx/searx.git /usr/local/searx/searx-src

ساخت virtualenv :

(searx)$ python3 -m venv /usr/local/searx/searx-pyenv
(searx)$ echo . /usr/local/searx/searx-pyenv/bin/activate >>  /usr/local/searx/.profile

بعد ساخت محیط مجازی این محیط مجازی اجر و یکسری برنامه مورد نیاز پایتون نصب می کنید:


$ sudo -H -u searx -i

(searx)$ command -v python && python --version
/usr/local/searx/searx-pyenv/bin/python
Python 3.8.1

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

# jump to searx's working tree and install searx into virtualenv
(searx)$ cd /usr/local/searx/searx-src
(searx)$ pip install -e .

یکسری تنظیمات که مربوط به کلید ها ست:

$ sudo -H cp /usr/local/searx/searx-src/searx/settings.yml /etc/searx/settings.yml
$ sudo -H sed -i -e s/ultrasecretkey/\eebdbfd72995e61547cfa45d513c1019/g /etc/searx/settings.yml
$ sudo -H sed -i -e s/{instance_name}/searx@\alexandre-vm/g /etc/searx/settings.yml

حال باید یکسری از تنظیمات در موتور جستجو انجام دهید که دراین ادرس است

vim /usr/local/searx/searx-src/searx/settings.yml

حالا کافی چک کنیم که اجرا می شود

python searx/webapp.py

حالا کافی یکسری تنظیمات در ادرس زیر اضافه کنیم

vim /etc/uwsgi/apps-available/searx.ini
برای فعال کردن سرویس زمان بوت
enable:    sudo -H ln -s /etc/uwsgi/apps-available/searx.ini /etc/uwsgi/apps-enabled/
برای روشن کردن سرویس
start:     sudo -H service uwsgi start   searx

این تنظیمات در فایل بالا اضافه می میشود : منظور همون دستور اول که می زنید متن زیر را کپی کنید.

[uwsgi]

# uWSGI core
# ----------
#
# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#uwsgi-core

# Who will run the code
uid = searx
gid = searx

# set (python) default encoding UTF-8
env = LANG=C.UTF-8
env = LANGUAGE=C.UTF-8
env = LC_ALL=C.UTF-8

# chdir to specified directory before apps loading
chdir = /usr/local/searx/searx-src/searx

# searx configuration (settings.yml)
env = SEARX_SETTINGS_PATH=/etc/searx/settings.yml

# disable logging for privacy
disable-logging = true

# The right granted on the created socket
chmod-socket = 666

# Plugin to use and interpretor config
single-interpreter = true

# enable master process
master = true

# load apps in each worker instead of the master
lazy-apps = true

# load uWSGI plugins
plugin = python3,http

# By default the Python plugin does not initialize the GIL.  This means your
# app-generated threads will not run.  If you need threads, remember to enable
# them with enable-threads.  Running uWSGI in multithreading mode (with the
# threads options) will automatically enable threading support. This *strange*
# default behaviour is for performance reasons.
enable-threads = true


# plugin: python
# --------------
#
# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-python

# load a WSGI module
module = searx.webapp

# set PYTHONHOME/virtualenv
virtualenv = /usr/local/searx/searx-pyenv

# add directory (or glob) to pythonpath
pythonpath = /usr/local/searx/searx-src


# speak to upstream
# -----------------
#
# Activate the 'http' configuration for filtron or activate the 'socket'
# configuration if you setup your HTTP server to use uWSGI protocol via sockets.

# using IP:
#
# https://uwsgi-docs.readthedocs.io/en/latest/Options.html#plugin-http
# Native HTTP support: https://uwsgi-docs.readthedocs.io/en/latest/HTTP.html

http = 127.0.0.1:8888

# using unix-sockets:
#
# On some distributions you need to create the app folder for the sockets::
#
#   mkdir -p /run/uwsgi/app/searx
#   chown -R searx:searx  /run/uwsgi/app/searx
#
# socket = /run/uwsgi/app/searx/socket

همچنین نیاز به سرویس دهنده وب سرور دارید من به شخصه از nginx استفاده کردم می تونید از اپاچی استفاده کنید.

sudo -H apt-get install nginx

همچنین یکسری تنظیمات که مروبوط به VPS می شود را باید انجام دهید که در این اردس است

/etc/nginx/sites-available/searx
sudo -H ln -s /etc/nginx/sites-available/searx /etc/nginx/sites-enabled/searx
تموم فقط کافی سرویس راه اندازی کنیم.
sudo -H systemctl restart nginx
sudo -H service uwsgi restart searx

حالا با اسم سایت که برای خود انتخاب کردید جستجو کنید و می بینید موتور جستجوی شخصی بالا می اید.

تمامی اموزش گفته شده براساس مطالب اموزشی خود سایت searx می باشد.