ติดตั้ง SearXNG ค้นหาส่วนตัวบน VPS
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
ตรวจสอบว่า 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
/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;
}