SSD Nodes Learn Hosting plans →
คู่มือ Matt Connorโดย Matt Connor

Searx หรือ SearXNG: โครงการไหนยังอัปเดตอยู่และควรใช้ตัวไหน

Searx หยุดพัฒนาตั้งแต่ปี 2023 โดยไม่มีการ commit โค้ดใหม่ ขณะที่ SearXNG กลายเป็นมาตรฐานปัจจุบัน ตรวจสอบสถานะโครงการด้วยตัวเอง พร้อมสรุปความแตกต่างของไฟล์คอนฟิกและวิธีติดตั้งใช้งาน

Searx หรือ SearXNG: คุณควรติดตั้งตัวไหน?

Searx และ SearXNG เป็นโครงการที่แตกต่างกันสองโครงการซึ่งมีชื่อเกือบจะเหมือนกัน แต่มีเพียงโครงการเดียวเท่านั้นที่ยังคงได้รับการแก้ไขข้อผิดพลาด คุณควรติดตั้ง SearXNG โครงการ Searx ดั้งเดิมไม่มีการ commit โค้ดใดๆ มาตั้งแต่เดือนเมษายน 2023 และไฟล์ README ของโครงการเองได้ระบุสถานะไว้ในบรรทัดเดียวว่า "Searx ไม่ได้รับการดูแลรักษาอีกต่อไป"

สิ่งนี้ทำให้เกิดปัญหาในทางปฏิบัติมากกว่าปัญหาเชิงทฤษฎี ทั้งสองโครงการใช้ภาพหน้าจอเดียวกัน ไฟล์คอนฟิกูเรชันส่วนใหญ่เหมือนกัน และใช้ชื่อร่วมกันครึ่งหนึ่ง ทำให้คู่มือที่เขียนขึ้นสำหรับโครงการหนึ่งดูเหมือนจะใช้ได้กับอีกโครงการหนึ่ง ซึ่งในความเป็นจริงแล้วไม่ใช่เช่นนั้น ไฟล์การตั้งค่าถูกจัดเก็บไว้ในตำแหน่งที่ต่างกัน ระบบป้องกันบอทเป็นแบบใหม่ และชื่อแพ็กเกจไม่มีอยู่ใน Ubuntu เวอร์ชันปัจจุบัน สิ่งที่จะกล่าวต่อไปนี้คือรายละเอียดการแยกตัวของโครงการ คำสั่งสำหรับตรวจสอบสถานะด้วยตนเอง และรายการสิ่งที่เปลี่ยนแปลงสำหรับผู้ที่ต้องการติดตั้งใช้งาน instance ของตนเอง

Searx คืออะไร และ SearXNG มีที่มาอย่างไร

Searx เป็น metasearch engine ซึ่งไม่ได้จัดเก็บดัชนีการค้นหาของตนเอง แต่จะรับคำค้นหาของคุณไปส่งต่อยังบริการค้นหาอื่น เช่น Bing, DuckDuckGo หรือ Wikipedia แล้วนำผลลัพธ์ที่ได้มารวมกันในหน้าเดียว ข้อดีคือบริการเหล่านั้นจะเห็นที่อยู่ IP ของเซิร์ฟเวอร์แทนที่จะเป็นของคุณ แต่ข้อเสียคือภาระในการดูแลรักษา เนื่องจากแต่ละ engine เป็นโค้ดขนาดเล็กที่ทำหน้าที่แยกวิเคราะห์ (parse) HTML หรือ API ของผู้อื่น ดังนั้น engine จะใช้งานไม่ได้ทันทีที่ต้นทางมีการเปลี่ยนแปลง ความเสถียรของ metasearch engine จึงขึ้นอยู่กับผู้ที่คอยแก้ไขโมดูล engine เหล่านั้น

repository ของ searx ถูกสร้างขึ้นในเดือนตุลาคม 2013 ต่อมาในเดือนเมษายน 2021 อดีตผู้ดูแลคนหนึ่งได้เริ่มโครงการ SearXNG โดยเป็นการ fork ออกมา คำว่า "NG" ย่อมาจาก next generation ในไฟล์ README ของ searx เองได้อธิบายถึงทั้งสองโครงการไว้ควบคู่กัน ซึ่งคำอธิบายนั้นยังคงเป็นสรุปที่ชัดเจนที่สุดเกี่ยวกับความแตกต่างของทั้งสองโครงการ:

SearXNG เป็นการ fork ของ searx ซึ่งสร้างโดยอดีตผู้ดูแลของ searx
SearXNG มีการปล่อยอัปเดตแบบ rolling releases มีการอัปเดต dependency บ่อยครั้งกว่า และมีการแก้ไข engine ที่รวดเร็วกว่า

ความเห็นที่ไม่ตรงกันซึ่งนำไปสู่การ fork คือเรื่องการวินิจฉัยปัญหา Searx มองว่าข้อมูลการใช้งานเป็นสิ่งที่ instance ไม่ควรจัดเก็บ และการตั้งค่าเริ่มต้นก็ได้ระบุไว้ชัดเจนว่า: enable_stats: False # activate /stats page - note: it may leak usage data ในขณะที่ SearXNG ตัดสินใจในทางตรงกันข้ามและกำหนดค่า enable_metrics: true ไว้เป็นค่าเริ่มต้น เมตริกเหล่านี้คือสิ่งที่เติมเต็มแถบแสดงเวลาตอบสนองและหน้าแสดงข้อผิดพลาด ซึ่งช่วยให้ค้นหาและแก้ไข engine ที่เสียหายได้ง่ายขึ้น ทั้งสองแนวทางต่างมีเหตุผลรองรับ แต่มีเพียงโครงการเดียวที่ยังคงมีการพัฒนาโค้ดอย่างต่อเนื่องมาจนถึงปัจจุบัน

Searx ตายแล้วหรือยัง? วิธีตรวจสอบด้วยตนเอง

"ตาย" ไม่ใช่สถานะที่ GitHub รายงาน ดังนั้นให้พิจารณาสองสัญญาณที่มีอยู่เพื่อตัดสินใจ สัญญาณแรกคือ repository ถูกเก็บถาวร (archived) หรือไม่ และมีการ push ล่าสุดเมื่อใด

curl -s https://api.github.com/repos/searx/searx | jq -r '.archived, .pushed_at'
curl -s https://api.github.com/repos/searxng/searxng | jq -r '.archived, .pushed_at'

ณ วันที่ 18 ตุลาคม 2026 คำสั่งแรกจะแสดงผล false และ 2026-05-14T10:02:22Z ส่วนคำสั่งที่สองจะแสดงผล false และประทับเวลาล่าสุด ซึ่งมักจะเป็นช่วงหนึ่งหรือสองวันที่ผ่านมา ให้สังเกตค่าแรกที่ได้ repository ของ searx ไม่ได้ถูกเก็บถาวรและไม่มีใครล็อกประตูไว้ นั่นคือเหตุผลที่คำถามนี้ยังคงถูกถามอยู่เรื่อยๆ

pushed_at เป็นสัญญาณที่อ่อนในตัวมันเอง เพราะมันจะเปลี่ยนเมื่อมีการ push ไปยัง branch ใดก็ตาม รวมถึงการแก้ไขเอกสารเพียงบรรทัดเดียว ให้เปลี่ยนไปอ่านรายการ commit แทน

curl -s 'https://api.github.com/repos/searx/searx/commits?per_page=5' \
  | jq -r '.[] | .commit.committer.date[:10] + "  " + (.commit.message | split("\n")[0])'

ณ วันที่ 18 ตุลาคม 2026 คำสั่งดังกล่าวแสดงผลดังนี้:

2026-05-14  [doc] add hister reference
2023-09-07  Searx is no longer maintained
2023-04-05  Fix quoting issue in search_operator plugin (#3479)
2023-04-04  Bump pallets-sphinx-themes from 2.0.2 to 2.0.3 (#3450)
2023-04-04  Update searx.data - update_wikidata_units.py (#3454)

ให้อ่านจากล่างขึ้นบน งานปกติหยุดลงในเดือนเมษายน 2023 commit ในเดือนกันยายน 2023 คือการที่ผู้ดูแลโครงการเขียนประกาศลงใน README commit เดียวที่เกิดขึ้นหลังจากนั้นเป็นเพียงการแก้ไขเอกสาร เนื่องจากผู้เขียนต้นฉบับย้ายไปทำ Hister ซึ่งเป็นเครื่องมือค้นหาที่ทำดัชนีหน้าเว็บและไฟล์ที่คุณเลือกแทนการสืบค้นจากเครื่องมือค้นหาอื่น นั่นเป็นแนวคิดที่แตกต่างออกไป และมีประโยชน์หากสิ่งที่คุณต้องการจริงๆ คือ เครื่องมือค้นหาส่วนตัวสำหรับเนื้อหาของคุณเอง

สัญญาณที่สองคือการทำแพ็กเกจ ซึ่งเป็นสิ่งที่ tutorial เก่าๆ ส่วนใหญ่พึ่งพาโดยไม่รู้ตัว

  • PyPI มี release ของ searx อยู่ 20 รายการ ตั้งแต่ 0.1.2 ในเดือนมกราคม 2014 จนถึง 0.17.0 ในเดือนกรกฎาคม 2020 และทุกรายการยังคงดาวน์โหลดได้ pip install searx ทำงานสำเร็จและให้เวอร์ชันล่าสุดแก่คุณคือ 0.17.0 ซึ่งเป็นโค้ดจากเก้าเดือนก่อนที่ fork จะเกิดขึ้น
  • Debian เคยจัดส่ง searx 1.1.0 ใน Debian 12 (bookworm) และยังคงมีอยู่ใน unstable มันถูกนำออกจาก testing ในเดือนตุลาคม 2023 ดังนั้น Debian 13 (trixie) จึงไม่มีแพ็กเกจ searx เลย
  • Ubuntu เคยจัดส่งครั้งล่าสุดใน 23.10 (mantic) ที่เวอร์ชัน 1.1.0 ส่วน LTS release ล่าสุดที่มีคือ 22.04 ที่เวอร์ชัน 1.0.0 และแพ็กเกจถูกลบออกจาก 24.04 ก่อนที่ release นั้นจะออกมา บน Ubuntu 24.04 คำสั่ง sudo apt install searx จะจบลงด้วย E: Unable to locate package searx
  • searx.space ซึ่งเป็นไดเรกทอรี instance สาธารณะที่โครงการแนะนำให้ผู้ใช้ไปดูเสมอ ปัจจุบันแสดงรายการ instance ของ SearXNG แล้ว

นี่คือสถานะตามความเป็นจริง โค้ดเป็นสาธารณะ ยังคงทำงานได้ และคุณสามารถ clone และเริ่มใช้งานได้ในวันนี้ สิ่งที่คุณจะไม่ได้รับคือการแก้ไข engine หรือการอัปเดตความปลอดภัย ซึ่งสำหรับ metasearch engine แล้ว นั่นคืองานทั้งหมดของมัน Engine ต่างๆ จะเสื่อมสภาพตามตารางเวลาของผู้อื่น Instance ที่ไม่มีการดูแลจะส่งผลลัพธ์กลับมาน้อยลงทุกเดือนโดยที่ไม่มีใครต้องไปแตะต้องเซิร์ฟเวอร์เลย

สิ่งที่เปลี่ยนไปสำหรับอินสแตนซ์ใหม่

ไฟล์การตั้งค่าถูกย้ายและเปลี่ยนเป็นรูปแบบ overlay

ใน Searx คุณแก้ไข searx/settings.yml ภายใน source tree แต่ใน SearXNG ไฟล์นี้จะอยู่ที่ /etc/searxng/settings.yml และโปรเซสจะค้นหาไฟล์ผ่านตัวแปรสภาพแวดล้อม SEARXNG_SETTINGS_PATH เทมเพลตที่ตัวติดตั้งคัดลอกไปไว้ที่นั่นมีขนาดสั้น:

use_default_settings: true

general:
  debug: false
  instance_name: "SearXNG"

search:
  safe_search: 2
  autocomplete: 'duckduckgo'
  formats:
    - html

server:
  # Is overwritten by ${SEARXNG_SECRET}
  secret_key: "ultrasecretkey"
  limiter: true
  image_proxy: true

valkey:
  # URL to connect valkey database. Is overwritten by ${SEARXNG_VALKEY_URL}.
  url: valkey://localhost:6379/0

use_default_settings: true คือบรรทัดที่เปลี่ยนวิธีการทำงานของคุณ ด้วยบรรทัดนี้ ไฟล์ของคุณจะเก็บเฉพาะค่าที่ต้องการเขียนทับ (override) เท่านั้น ส่วนคีย์ใดที่คุณไม่ได้ระบุไว้ ระบบจะดึงค่าเริ่มต้นที่มาพร้อมกับแพ็กเกจมาใช้ หากไม่มีบรรทัดนี้ ไฟล์ของคุณจะต้องระบุการตั้งค่าทั้งหมดแยกตาม engine ซึ่งเป็นสาเหตุที่ทำให้หลายคนพบว่าอินสแตนซ์เริ่มทำงานได้ปกติแต่กลับไม่พบผลลัพธ์ใดๆ ไฟล์การตั้งค่า Searx เก่าที่นำมาวางใน path นี้คือการตั้งค่าที่สมบูรณ์แต่มีชื่อคีย์ที่ต่างออกไป จึงทำให้ระบบเลือกใช้วิธีที่สองและทำงานผิดพลาด

secret key จะหยุดการทำงานของโปรเซส

sudo -H sed -i -e "s/ultrasecretkey/$(openssl rand -hex 16)/g" \
              "/etc/searxng/settings.yml"

ให้รันคำสั่งดังกล่าวหนึ่งครั้งหลังจากคัดลอกเทมเพลต หากข้ามขั้นตอนนี้ SearXNG จะบันทึก log หนึ่งบรรทัดและออกจากโปรแกรมด้วยสถานะ 1 เนื่องจาก webapp.py จะเปรียบเทียบ key กับค่าในเทมเพลตก่อนที่จะให้บริการใดๆ:

server.secret_key is not changed. Please use something else instead of ultrasecretkey.

การตรวจสอบนี้จะถูกข้ามไปเมื่อ general.debug เป็น true ดังนั้นอินสแตนซ์อาจทำงานได้ปกติในเซสชัน debug แต่กลับปฏิเสธที่จะเริ่มทำงานภายใต้ systemd หรือในคอนเทนเนอร์ หากคอนเทนเนอร์รีสตาร์ทวนลูปโดยมีบรรทัดดังกล่าวใน docker compose logs แสดงว่าการตรวจสอบนี้กำลังทำงาน ไม่ใช่เพราะอิมเมจเสียหาย

ตัวจำกัดการใช้งาน (limiter) เป็นของใหม่และต้องใช้ Valkey

Searx ไม่มีการจำกัดอัตราการใช้งาน (rate limiting) ภายในตัวแอปพลิเคชัน อินสแตนซ์ Searx สาธารณะจึงต้องใช้บริการแยกต่างหากมาวางไว้ด้านหน้า เช่น filtron สำหรับกรองคำขอ และ morty สำหรับ proxy เนื้อหาผลลัพธ์ ทั้งสอง repository ไม่มีการ commit เพิ่มเติมตั้งแต่เดือนมกราคม 2023 โดย filtron commit ล่าสุดอยู่ในเดือนนั้น ส่วน morty คือเดือนเมษายน 2021

SearXNG ทำงานเหล่านี้ด้วยตัวเอง การจำกัดอัตราการใช้งานและการตรวจจับบอทจะใช้ limiter ซึ่งเปิดใช้งานด้วย server.limiter โดยค่าเริ่มต้นที่มากับระบบคือ false และในเทมเพลตของตัวติดตั้งคือ true ซึ่งจำเป็นต้องใช้ฐานข้อมูล Valkey เพื่อเก็บตัวนับ Valkey เป็น fork ของ Redis และ Ubuntu 24.04 มีแพ็กเกจนี้ให้ใช้งาน:

sudo apt install -y valkey-server
server:
  limiter: true

valkey:
  url: valkey://localhost:6379/0

คู่มือที่เขียนก่อนการเปลี่ยนชื่อนี้จะแนะนำให้ตั้งค่าบล็อก redis: แทน ดังนั้นให้คัดลอกชื่อคีย์จากเอกสารประกอบของ limiter ฉบับปัจจุบัน การปรับแต่งอย่างละเอียดจะอยู่ในไฟล์ที่สองคือ /etc/searxng/limiter.toml และ server.public_instance: true จะเปิดใช้งานการตรวจจับบอทที่เข้มงวดขึ้นซึ่งจำเป็นสำหรับอินสแตนซ์สาธารณะ รวมถึงวิธี link token ผลลัพธ์ที่เห็นได้ชัดคือบางคำขอจะได้รับคำตอบเป็น HTTP 429 แทนที่จะเป็นผลลัพธ์ รวมถึงคำขอของคุณเองหากคุณเขียนสคริปต์เรียกใช้อินสแตนซ์ ซึ่งมีหน้าอธิบายเฉพาะเรื่องนี้ที่นี่: เหตุใดอินสแตนซ์ SearXNG จึงตอบกลับ 429 Too Many Requests

Engine จะระงับการทำงานตัวเองและมีระยะเวลา timeout ที่ยาวนาน

เมื่อบริการต้นทางตอบกลับด้วย CAPTCHA หรือหน้าแจ้งเตือนการจำกัดอัตราการใช้งาน SearXNG จะยกเว้นการทำงาน (exception) และหยุดเรียกใช้ engine นั้นเป็นเวลาที่กำหนด แทนที่จะพยายามเรียกซ้ำจนถูกบล็อก ค่าเริ่มต้นจะอยู่ใน searx/settings.yml ภายใต้ search.suspended_times นี่คือค่าที่เผยแพร่ 6 รายการ ณ เดือนตุลาคม 2026:

แผนภูมิSearXNG default engine suspension times, in seconds
ข้อมูลเบื้องหลังแผนภูมินี้
[
  {
    "label": "SearxEngineAccessDenied",
    "suspend_seconds": "180"
  },
  {
    "label": "SearxEngineCaptcha",
    "suspend_seconds": "3,600"
  },
  {
    "label": "SearxEngineTooManyRequests",
    "suspend_seconds": "180"
  },
  {
    "label": "cf_SearxEngineCaptcha",
    "suspend_seconds": "1,296,000"
  },
  {
    "label": "cf_SearxEngineAccessDenied",
    "suspend_seconds": "86,400"
  },
  {
    "label": "recaptcha_SearxEngineCaptcha",
    "suspend_seconds": "604,800"
  }
]

คำตอบปฏิเสธการเข้าถึงแบบปกติจะระงับ engine นั้นเป็นเวลา 180 วินาที, CAPTCHA จะระงับเป็นเวลา 3,600 วินาที, Cloudflare CAPTCHA จะระงับเป็นเวลา 1,296,000 วินาที ซึ่งเท่ากับสิบห้าวัน และ Google reCAPTCHA เป็นเวลา 604,800 วินาที ซึ่งเท่ากับหนึ่งสัปดาห์ ค่าที่ยาวนานเหล่านี้ถูกกำหนดไว้อย่างตั้งใจ เพราะการพยายามเรียกซ้ำหลังจากบริการปลายทางระบุตัวตน IP ของอินสแตนซ์แล้ว จะนำไปสู่การถูกบล็อกอย่างถาวร

ในขณะที่ engine ถูกระงับ หน้าผลลัพธ์จะข้าม engine นั้นไปและรายงานในแถบด้านข้างหัวข้อ "ข้อความจากเครื่องมือค้นหา" และ /stats/errors จะแสดงรายการที่ล้มเหลว อินสแตนซ์ที่เพิ่งติดตั้งใหม่แล้วให้ผลลัพธ์น้อยมักเกิดจากสาเหตุนี้ ไม่ใช่เพราะการติดตั้งเสียหาย

JSON API ถูกปิดใช้งานโดยค่าเริ่มต้น

ค่าเริ่มต้นที่มากับระบบคือ formats: [html] และไม่มีการตั้งค่าอื่น ดังนั้น API ที่สคริปต์ทุกตัวต้องการจะถูกปิดจนกว่าคุณจะเปิดใช้งาน:

curl -s -o /dev/null -w '%{http_code}\n' \
  'http://127.0.0.1:8888/search?q=test&format=json'

คำสั่งดังกล่าวจะพิมพ์ 403 ออกมา เนื่องจากเส้นทาง (route) การค้นหาจะเรียก flask.abort(403) เมื่อรูปแบบที่ร้องขอไม่อยู่ใน search.formats ให้เพิ่มรูปแบบดังกล่าวและรีสตาร์ทบริการ:

search:
  formats:
    - html
    - json

ไฟล์การตั้งค่า searx ไม่มีคีย์ formats ดังนั้นผลลัพธ์ JSON จึงพร้อมใช้งานทันทีที่ร้องขอ สคริปต์และโค้ดตัวอย่างจากยุคนั้นจึงอนุมานเช่นเดียวกัน และรูปแบบความผิดพลาดที่เกิดขึ้นคือ 403 โดยไม่มีคำอธิบาย หากคุณกำลังเชื่อมต่ออินสแตนซ์เข้ากับเครื่องมือต่างๆ การกำหนด endpoint ของ SearXNG ให้กับ agent เพื่อใช้ค้นหา จะเริ่มต้นด้วยการตั้งค่านี้

เหตุใดคู่มือ Searx ที่คัดลอกมาจึงใช้งานไม่ได้

แต่ละบรรทัดต่อไปนี้ปรากฏอยู่ในคู่มือที่ยังคงติดอันดับการค้นหา แต่ละบรรทัดล้วนล้มเหลวหรือทำให้เข้าใจผิดในการติดตั้งปัจจุบัน

  • sudo apt install searx บน Ubuntu 24.04 จะหยุดทำงานที่ E: Unable to locate package searx เนื่องจากแพ็กเกจดังกล่าวถูกปล่อยออกมาครั้งล่าสุดในเวอร์ชัน 23.10 และถูกลบออกจาก 24.04 ก่อนการเปิดตัวอย่างเป็นทางการ
  • pip install searx ทำงานสำเร็จและติดตั้งเวอร์ชัน 0.17.0 จากเดือนกรกฎาคม 2020 โดยไม่มีคำเตือนใดๆ ว่าเวอร์ชันนี้เก่ากว่าการแยกโปรเจกต์ (fork)
  • git clone https://github.com/asciimoo/searx ยังคงใช้งานได้เนื่องจาก GitHub ทำการเปลี่ยนเส้นทาง (redirect) ชื่อเจ้าของเดิมให้ ระบบจะดึง branch เริ่มต้นปัจจุบันมา ซึ่งมี commit เอกสารจากเดือนพฤษภาคม 2026 อยู่บนโค้ดแอปพลิเคชันที่หยุดการพัฒนาไปตั้งแต่เดือนเมษายน 2023
  • ขั้นตอนที่แก้ไข searx/settings.yml ใน source tree จะไม่มีผลใดๆ กับ SearXNG เนื่องจากโปรแกรมอ่านค่าจาก /etc/searxng/settings.yml
  • ขั้นตอนที่ติดตั้ง filtron หรือ morty คือการสร้างส่วนประกอบที่ SearXNG มีอยู่แล้วขึ้นมาใหม่
  • URL redis: สำหรับตัวจำกัดการใช้งาน (limiter) นั้นใช้ชื่อเก่าที่ล้าสมัยไปหนึ่งชื่อเมื่อเทียบกับคีย์ valkey: ในปัจจุบัน

คู่มือ SearXNG เองก็เสื่อมสภาพตามกาลเวลาเช่นกัน และ URL สำหรับ clone คือวิธีที่เร็วที่สุดในการตรวจสอบความเก่าของคู่มือ ไฟล์ compose เคยแยกไปอยู่ใน repository searxng-docker ซึ่งปัจจุบันถูกเก็บถาวร (archived) ไปแล้ว โดยมีการ push ครั้งล่าสุดในเดือนมีนาคม 2026 และไฟล์ทั้งหมดถูกย้ายเข้าไปอยู่ใน container/ ใน repository หลักแทน ขั้นตอนการเริ่มต้นใช้งาน container อย่างรวดเร็วตามเอกสารปัจจุบันคือ:

mkdir -p ./searxng/core-config/
cd ./searxng/
curl -fsSL \
    -O https://raw.githubusercontent.com/searxng/searxng/master/container/docker-compose.yml \
    -O https://raw.githubusercontent.com/searxng/searxng/master/container/.env.example
cp -i .env.example .env
nano .env
docker compose up -d

ให้แก้ไข .env ก่อนรันคำสั่งสุดท้าย อิมเมจจะแมป environment variable เข้ากับคีย์การตั้งค่า ดังนั้น SEARXNG_SECRET จะกลายเป็น server.secret_key และ SEARXNG_BASE_URL จะกลายเป็น server.base_url ส่วนการติดตั้งผ่านสคริปต์บนโฮสต์เป็นอีกเส้นทางหนึ่งที่ให้ผลลัพธ์เดียวกัน:

git clone https://github.com/searxng/searxng.git searxng
cd searxng
sudo -H ./utils/searxng.sh install all

คำสั่งดังกล่าวจะสร้างผู้ใช้ searxng, สร้าง virtual environment ไว้ที่ /usr/local/searxng และสร้างบริการ uWSGI ซึ่งเป็นการตั้งค่ามาตรฐานตามเอกสารของ SearXNG สำหรับคำอธิบายโดยละเอียดของเส้นทางนี้ สามารถดูได้ที่ การติดตั้ง SearXNG บน VPS ของคุณ

อินสแตนซ์สาธารณะหรืออินสแตนซ์ส่วนตัวของคุณเอง

อินสแตนซ์สาธารณะคือเซิร์ฟเวอร์ของผู้อื่นที่ทำหน้าที่ยุติการเชื่อมต่อ TLS (Transport Layer Security) ของคุณ ดังนั้นซอฟต์แวร์ที่นั่นจะอ่านคำค้นหาของคุณเป็นข้อความธรรมดา เอกสารประกอบของ SearXNG ระบุประเด็นเรื่องความเชื่อใจไว้อย่างชัดเจนว่า คุณต้องเชื่อใจผู้ดูแลระบบ และคุณไม่มีทางทราบได้เลยว่ามีการบันทึก log, รวบรวมข้อมูล หรือส่งต่อคำค้นหาไปยังบุคคลที่สามหรือไม่ รายการที่แสดงให้เห็นนั้นสั้นและครบถ้วน สแต็กของผู้ให้บริการสามารถมองเห็นข้อความคำค้นหา, เวลา, ที่อยู่ IP ที่คำขอส่งมา, user agent ของเบราว์เซอร์ และคุกกี้การตั้งค่าที่เก็บค่ากำหนดของคุณ นอกจากนี้ผู้ให้บริการยังเป็นผู้ควบคุมโค้ด ดังนั้น patch ใดๆ ที่พวกเขาติดตั้งจะทำงานกับทุกการค้นหาที่คุณทำที่นั่น

ค่าเริ่มต้นอย่างหนึ่งทำให้การบันทึก log โดยไม่ตั้งใจทำได้ง่ายขึ้น Searx เคยส่งการค้นหาผ่าน POST แต่ SearXNG มาพร้อมกับ method: "GET" โดยมีหมายเหตุว่า POST ช่วยให้คำค้นหาไม่ไปปรากฏในประวัติของเบราว์เซอร์ แต่ก่อให้เกิดปัญหาด้านการใช้งาน สำหรับ GET นั้น คำค้นหาจะอยู่ในบรรทัดคำขอ จึงทำให้ถูกบันทึกลงใน access log ของ reverse proxy โดยค่าเริ่มต้น และปรากฏในประวัติของเบราว์เซอร์ นั่นเป็นพฤติกรรมปกติของเว็บเซิร์ฟเวอร์ ซึ่งควรทราบก่อนที่คุณจะเลือกว่าจะใช้เซิร์ฟเวอร์ของใคร

การรัน instance ของตนเองเป็นการย้ายจุดที่ต้องเชื่อถือ ไม่ใช่การลบความเสี่ยงนั้นออกไป คุณควบคุมโค้ดและ log ได้ และหากไม่ต้องการเผยแพร่ hostname หรือ TLS certificate สำหรับเครื่องที่ใช้งานคนเดียวเลย การเข้าถึงผ่าน v3 onion service จะทำให้ instance ไม่ปรากฏใน public DNS แต่ยังเข้าถึงได้จากที่ใดก็ได้ ในทางกลับกัน upstream engine จะเห็น address เดียวสำหรับการค้นหาทั้งหมดของคุณ และบน instance สำหรับผู้ใช้คนเดียว ทุก query จะเชื่อมโยงกลับมาที่คุณ แทนที่จะปะปนอยู่ในกลุ่มผู้ใช้อื่น instance สาธารณะที่มีผู้ใช้จำนวนมากช่วยให้คุณอยู่รวมกับผู้ใช้อื่น แต่ทำให้คุณไม่สามารถควบคุม log ได้ เลือกคุณสมบัติที่ให้ความสำคัญ และหากต้องการดูรายการความเสี่ยงทั้งหมดก่อน SearXNG ปลอดภัยต่อการใช้งานหรือไม่ จะอธิบายประเด็นเหล่านี้ให้ครบถ้วน ประวัติตำแหน่งที่ตั้งก็ต้องพิจารณาในลักษณะเดียวกัน แต่มีความเสี่ยงสูงกว่า เพราะโทรศัพท์ที่รายงานตำแหน่งตลอดทั้งวันเปิดเผยข้อมูลมากกว่า search log ใด ๆ และ การเปรียบเทียบ location tracker แบบ self-hosted เป็นจุดเริ่มต้น หากต้องการเก็บข้อมูลนั้นไว้บนเครื่องที่คุณควบคุม

ข้อควรทราบสำหรับ VPS คือ ช่วงที่อยู่ของ datacentre มักถูกทำเครื่องหมายเร็วกว่าการเชื่อมต่อจากบ้าน ดังนั้น instance ใหม่อาจพบ CAPTCHAs ในบาง search engine ภายในไม่กี่ครั้งแรกที่ค้นหา นี่เป็นพฤติกรรมการระงับการใช้งานตามที่อธิบายไว้ข้างต้น ไม่ใช่การตั้งค่าผิด หากยังพบว่า search engine เดิมถูกบล็อกซ้ำหลังการระงับสิ้นสุดลง การ อ่านข้อผิดพลาดจริงก่อนเปลี่ยนแปลงสิ่งใด จะช่วยให้ไม่ต้องคาดเดาวิธีแก้ไข

หากคุณใช้งานอินสแตนซ์ Searx อยู่แล้ว

ไม่มีสิ่งใดเสียหายในวันที่คุณอ่านข้อความนี้ เซิร์ฟเวอร์จะยังคงทำงานต่อไปจนกว่าการเปลี่ยนแปลงจากต้นน้ำ (upstream) จะทำให้เอนจินอื่นหยุดทำงาน และหลังจากนั้นมันจะยังคงเสียอยู่อย่างนั้น ให้วางแผนการย้ายระบบและอย่าคัดลอกไฟล์การตั้งค่าเดิมมาใช้โดยตรง ให้เริ่มต้นจากเทมเพลตของ SearXNG แล้วค่อยเพิ่มเฉพาะสิ่งที่คุณตั้งใจปรับเปลี่ยนกลับเข้าไป ได้แก่ ชื่ออินสแตนซ์, safe_search, เอนจินที่คุณเปิดหรือปิดใช้งานตามชื่อ และค่าเริ่มต้นของอินเทอร์เฟซ เนื่องจากชื่อเอนจินและตัวเลือกต่างๆ ได้เปลี่ยนไปในเวอร์ชัน fork นี้แล้ว ให้ตรวจสอบแต่ละรายการเทียบกับเอกสารประกอบปัจจุบันแทนการคาดเดาว่าคีย์เดิมยังคงมีอยู่ กฎของ Filtron และ URL ของ morty ไม่มีค่าที่เทียบเท่ากันในระบบใหม่ เนื่องจากงานเหล่านั้นถูกย้ายเข้าไปอยู่ภายในตัวแอปพลิเคชันแล้ว

ให้รันอินสแตนซ์ใหม่บนพอร์ตอื่นในขณะที่อินสแตนซ์เดิมยังคงทำงานอยู่ ระบบจะถือว่าทำงานได้ปกติเมื่อหน้าแรกตอบกลับสถานะ 200, การค้นหาแสดงผลลัพธ์จากเอนจินมากกว่าหนึ่งรายการ และ /stats/errors ว่างเปล่าหรือแสดงเฉพาะรายการข้อผิดพลาดที่คุณเข้าใจที่มาที่ไป จากนั้นจึงย้ายการตั้งค่า reverse proxy มายังอินสแตนซ์ใหม่และหยุดบริการเดิมลง

FAQ

Searx ยังใช้งานได้อยู่หรือไม่ในปี 2026?

ตัว repository ไม่ได้ถูกจัดเก็บถาวร (archived) ดังนั้นคุณจึงยังสามารถ clone ได้ แต่โครงการนี้ไม่มีการดูแลรักษาแล้ว commit ล่าสุดเกิดขึ้นในเดือนเมษายน 2023 และในไฟล์ README ระบุข้อความว่า "Searx is no longer maintained" คุณสามารถตรวจสอบด้วยตนเองได้โดยใช้ curl -s https://api.github.com/repos/searx/searx | jq -r '.pushed_at' แล้วอ่านข้อความ commit ล่าสุด เนื่องจากวันที่ push อาจมาจากการแก้ไขเอกสารเพียงอย่างเดียว สำหรับ metasearch engine การไม่มีผู้ดูแลหมายความว่าผลลัพธ์จะแย่ลงเรื่อยๆ เพราะโมดูลของแต่ละ engine ขึ้นอยู่กับเว็บไซต์ต้นทางที่มีการเปลี่ยนแปลงอยู่ตลอดเวลา

ฉันยังสามารถติดตั้ง Searx ด้วย apt หรือ pip ได้หรือไม่?

ไม่ได้สำหรับระบบปัจจุบัน และไม่แนะนำหากทำได้ Ubuntu เคยบรรจุ searx ครั้งล่าสุดในเวอร์ชัน 23.10 ที่เวอร์ชัน 1.1.0 และ LTS release ล่าสุดที่มีคือ 22.04 ที่เวอร์ชัน 1.0.0 มันถูกลบออกจาก 24.04 ก่อนการเปิดตัว ดังนั้น sudo apt install searx บน 24.04 จะส่งผลลัพธ์เป็น E: Unable to locate package searx ส่วน Debian เคยมีเวอร์ชัน 1.1.0 ใน Debian 12 และถูกถอดออกจากเวอร์ชัน testing ในเดือนตุลาคม 2023 ทำให้ Debian 13 ไม่มีแพ็กเกจนี้ PyPI ยังคงให้บริการ searx ทุกเวอร์ชัน โดยเวอร์ชันใหม่ล่าสุดคือ 0.17.0 จากเดือนกรกฎาคม 2020 ซึ่งเก่ากว่าตัว fork เองเสียอีก ขอแนะนำให้ติดตั้ง SearXNG แทน

ไฟล์ settings.yml เดิมของ searx จะใช้กับ SearXNG ได้หรือไม่?

ไม่ได้ ให้คัดลอกเฉพาะค่าต่างๆ ไม่ใช่ทั้งไฟล์ SearXNG จะอ่าน /etc/searxng/settings.yml และคาดหวังให้มี use_default_settings: true อยู่ที่ส่วนบนสุด ดังนั้นไฟล์ของคุณจะทำหน้าที่เป็น overlay ทับค่าเริ่มต้นที่มากับโปรแกรม ไฟล์ searx แบบเก่าเป็นการตั้งค่าแบบเต็มรูปแบบที่มีชื่อ key ต่างออกไป และไม่มี limiter, ไม่มีบล็อก valkey และไม่มีรายการ formats ให้เริ่มต้นจากเทมเพลตที่ utils/templates/etc/searxng/settings.yml แล้วค่อยๆ เพิ่มการตั้งค่าของคุณกลับเข้าไปทีละรายการ

ทำไม SearXNG instance ของฉันถึงแสดงผลลัพธ์น้อยกว่า instance สาธารณะ?

บาง engine ถูกระงับการใช้งาน เมื่อ engine ตอบกลับด้วย CAPTCHA หรือหน้าแจ้งเตือน rate limit ตัว SearXNG จะหยุดส่งคำขอไปยัง engine นั้นเป็นเวลาที่กำหนด ตั้งแต่ 180 วินาทีสำหรับการปฏิเสธทั่วไป ไปจนถึง 1,296,000 วินาทีสำหรับ CAPTCHA ของ Cloudflare หน้าผลลัพธ์จะรายงานเรื่องนี้ภายใต้หัวข้อ "Messages from the search engines" และ /stats/errors จะแสดงรายการความล้มเหลวพร้อมเหตุผล ที่อยู่ IP ของศูนย์ข้อมูล (datacentre) มักถูกระบุสถานะเร็วกว่าการเชื่อมต่อจากบ้าน ดังนั้น VPS instance ที่สร้างใหม่จึงมักพบปัญหานี้ได้เร็ว

ฉันควรใช้ SearXNG instance สาธารณะหรือรันด้วยตัวเอง?

ให้รันด้วยตัวเองหากคุณต้องการควบคุมโค้ดและ log โดยต้องยอมรับว่า engine ต้นทางจะเห็นที่อยู่ IP เดียวสำหรับทุกการค้นหาของคุณ ให้ใช้ instance สาธารณะหากการผสมคำค้นหาของคุณเข้ากับผู้อื่นมีความสำคัญมากกว่าการรู้ว่ามีการบันทึกข้อมูลอะไรไว้บ้าง บน instance สาธารณะ ผู้ดูแลระบบสามารถเห็นข้อความค้นหา, เวลา, IP address และ user agent ของคุณ และสามารถเปลี่ยนโค้ดได้ตลอดเวลา นโยบายการบันทึกข้อมูลที่ระบุไว้ไม่สามารถตรวจสอบได้จากภายนอก