ติดตั้ง SearXNG ค้นหาส่วนตัวบน VPS

ติดตั้ง SearXNG ค้นหาส่วนตัวบน VPS

มิถุนายน 2026 · อ่าน 7 นาที

SearXNG คือ meta search engine ที่รวมผลการค้นหาจากกว่า 70 แหล่งรวมถึง Google, Bing, DuckDuckGo, Wikipedia และอื่นๆ โดยที่ไม่ส่งข้อมูลส่วนตัวหรือ tracking cookie ไปให้ใคร ติดตั้งบน VPS แล้วใช้เป็น private search engine ให้ทีมหรือครอบครัว เป็น fork ของ SearX ที่ active กว่าและมี UI ที่ modern กว่า

ติดตั้ง SearXNG ด้วย Docker

วิธีเร็วที่สุดคือใช้ Docker Compose ที่ทีม SearXNG เตรียมไว้:

sudo apt update && sudo apt install docker.io docker-compose git -y
sudo systemctl enable --now docker

# Clone repo
cd /opt
sudo git clone https://github.com/searxng/searxng-docker searxng
cd searxng
# แก้ domain ในไฟล์ .env
sudo nano .env
SEARXNG_HOSTNAME=search.yourdomain.com
[email protected]
# สร้าง secret key
sudo sed -i "s|ultrasecretkey|$(openssl rand -hex 32)|g" searxng/settings.yml

# รัน SearXNG พร้อม Caddy (auto TLS)
sudo docker-compose up -d

ติดตั้งแบบ Manual (ไม่ใช้ Docker)

# สร้าง user
sudo useradd -r -s /usr/sbin/nologin searxng
sudo mkdir -p /usr/local/searxng
sudo chown searxng:searxng /usr/local/searxng

# ติดตั้ง dependencies
sudo apt install python3-dev python3-babel python3-venv -y
sudo -u searxng -H python3 -m venv /usr/local/searxng/venv

# Clone และ install
sudo -u searxng git clone https://github.com/searxng/searxng /usr/local/searxng/src
sudo -u searxng /usr/local/searxng/venv/bin/pip install -e /usr/local/searxng/src

ตั้งค่า SearXNG

sudo cp /usr/local/searxng/src/searx/settings.yml /etc/searxng/settings.yml
sudo nano /etc/searxng/settings.yml
general:
  debug: false
  instance_name: "My Private Search"
  contact_url: false

server:
  secret_key: "$(openssl rand -hex 32)"
  bind_address: "127.0.0.1"
  port: 8888
  base_url: "https://search.yourdomain.com"
  image_proxy: true

ui:
  default_locale: "th"
  query_in_title: true
  infinite_scroll: true

search:
  safe_search: 0
  autocomplete: "google"

ตั้ง Nginx + TLS

sudo nano /etc/nginx/sites-available/searxng
server {
    listen 443 ssl;
    server_name search.yourdomain.com;
    ssl_certificate /etc/letsencrypt/live/search.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/search.yourdomain.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:8888;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
server { listen 80; server_name search.yourdomain.com; return 301 https://$host$request_uri; }
sudo certbot --nginx -d search.yourdomain.com
sudo ln -s /etc/nginx/sites-available/searxng /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
Tip: ถ้าใช้ Docker version Caddy จะจัดการ TLS ให้อัตโนมัติ ไม่ต้องตั้ง Nginx แยก แต่ถ้าต้องการ reverse proxy ร่วมกับ service อื่นๆ บน server เดียว Nginx จัดการได้ยืดหยุ่นกว่า

ตรวจสอบว่า SearXNG ทำงานถูกต้อง

# ทดสอบ API โดยตรง
curl "https://search.yourdomain.com/search?q=test&format=json" | python3 -m json.tool

# ตรวจ Docker container
docker ps | grep searxng
docker logs searxng-searxng-1 | tail -20

# ตรวจ port
sudo ss -tulnp | grep 8888
Tip: SearXNG มี API endpoint /search?q=keyword&format=json ที่ใช้เชื่อมต่อกับ browser extension หรือ script ได้ทันที

แก้ปัญหาที่พบบ่อย

ผลการค้นหาหาย (engines ไม่ตอบ)

IP ของ VPS อาจถูก rate limit จาก search engine ตั้ง cache หรือลด engines ที่ใช้:

sudo nano /etc/searxng/settings.yml
# ปิด engine ที่มีปัญหา
engines:
  - name: google
    disabled: true  # ถ้า Google block IP

# เปิด Redis cache
redis:
  url: redis://localhost:6379/0

Error 429: Too Many Requests จาก Google

Google block datacenter IP เมื่อ search volume สูง ใช้ search-by-scraping engines อื่นแทน:

# แก้ settings.yml เปิด engine ที่ไม่มี rate limit เช่น
# - brave, qwant, mojeek, mwmbl
# แล้ว restart
sudo docker-compose restart

SearXNG ช้ามากเมื่อค้นหา

เปิด Redis cache เพื่อ cache ผลการค้นหา:

sudo apt install redis-server -y
sudo systemctl enable --now redis-server
# เพิ่มใน settings.yml:
redis:
  url: redis://localhost:6379/0

หน้า UI ไม่แสดงผล (static files หาย)

# Docker version ตรวจ volume
docker exec searxng-searxng-1 ls /usr/local/searxng/src/searx/static/

# Manual install ตรวจ nginx root
ls /usr/local/searxng/src/searx/static/

คำถามที่พบบ่อย

SearXNG ปลอดภัยกว่า Google อย่างไร?

SearXNG ไม่เก็บ search history ไม่ส่ง fingerprint ไม่ใช้ cookie ติดตาม และ IP ที่ส่งไปหา search engine คือ IP ของ VPS ไม่ใช่ IP ของผู้ใช้จริง ทำให้ Google ไม่สามารถ profile ผู้ใช้ได้

ใช้ SearXNG เป็น default browser search ได้ไหม?

ได้ ไปที่ SearXNG URL แล้วเพิ่มเป็น search engine ใน browser settings Firefox รองรับ OpenSearch protocol ที่ SearXNG ใช้โดย native สามารถ add เป็น default search engine ได้ในคลิกเดียว

ตั้ง SearXNG แบบ private (ใช้เฉพาะคนที่รู้ URL) ได้ไหม?

ได้ เพิ่ม HTTP basic auth ใน Nginx หรือจำกัด access ด้วย IP whitelist ใน nginx.conf:

location / {
    auth_basic "Private Search";
    auth_basic_user_file /etc/nginx/.htpasswd;
    proxy_pass http://127.0.0.1:8888;
}