Tropic Host

SearXNG: là gì và cách cài công cụ tìm kiếm riêng trên VPS

9 phút đọc
Tropic
SearXNG: là gì và cách cài công cụ tìm kiếm riêng trên VPS

Language: vi

SearXNG: công cụ tìm kiếm riêng không theo dõi trên VPS

Công cụ tìm kiếm thông thường có thể liên kết truy vấn với địa chỉ IP, cookie và lịch sử hoạt động. SearXNG thay đổi đường đi: trình duyệt kết nối tới phiên bản của bạn, phiên bản này truy vấn nhiều công cụ tìm kiếm bên ngoài rồi kết hợp phản hồi trên một trang.

Các nguồn bên ngoài nhìn thấy địa chỉ máy chủ SearXNG thay vì cookie của người dùng. Bản thân dịch vụ không xây dựng hồ sơ quảng cáo. Tuy nhiên, đây không phải sự ẩn danh hoàn toàn: chủ sở hữu phiên bản công khai về mặt kỹ thuật có thể lưu nhật ký, còn sau khi bạn mở liên kết, website đích lại tương tác với trình duyệt.

Chúng ta sẽ tìm hiểu khả năng của SearXNG và cài phiên bản riêng trên VPS với HTTPS cùng bảo vệ bằng mật khẩu.

SearXNG là gì và hoạt động như thế nào?

SearXNG là công cụ tìm kiếm siêu dữ liệu miễn phí, mã nguồn mở. Nó không duy trì chỉ mục website riêng: dịch vụ lấy kết quả từ các công cụ tìm kiếm và nguồn chuyên biệt đã cấu hình, chuẩn hóa rồi hiển thị trong một giao diện.

Browser → your SearXNG → search engines
                         ↓
                  combined results

Với mỗi truy vấn, SearXNG sẽ:

  1. xác định danh mục tìm kiếm: web, hình ảnh, tin tức, video hoặc danh mục khác;
  2. liên hệ các nguồn đã chọn thay mặt máy chủ;
  3. không gửi cookie của người dùng cho chúng và sử dụng hồ sơ trình duyệt ngẫu nhiên cho các yêu cầu đi;
  4. kết hợp phản hồi thành một trang kết quả.

Tốc độ phụ thuộc vào hệ thống bên ngoài: chúng có thể phản hồi chậm, hiển thị CAPTCHA hoặc chặn địa chỉ IP. SearXNG là lớp trung gian được quản lý, không phải chỉ mục tự hoạt động.

Vì sao SearXNG thú vị hơn một công cụ tìm kiếm đơn lẻ?

Nhiều nguồn trên một trang kết quả

Bạn có thể kết hợp các công cụ tìm kiếm phổ thông với nguồn chuyên biệt: bách khoa toàn thư, bản đồ, ấn phẩm khoa học, kho mã, dịch vụ tin tức hoặc danh mục hình ảnh. Điều này hữu ích khi trang kết quả thông thường bị quá tải bởi các trang SEO hoặc khó tìm tài liệu ngách.

Tại thời điểm chuẩn bị bài viết, tài liệu liệt kê 272 tích hợp, trong đó 83 được bật theo mặc định. Điều đó không có nghĩa tất cả đều ổn định như nhau.

Tập nguồn phụ thuộc vào cấu hình. Một vài nguồn ổn định thường hoạt động nhanh hơn việc bật tất cả cùng lúc.

Lệnh nhanh

Phím tắt cho phép tạm thời chọn công cụ, danh mục hoặc ngôn ngữ:

!wp docker compose       — search Wikipedia
!images northern lights  — search for images
:en !wp proxy server     — search Wikipedia in English

Lệnh !! chuyển người dùng trực tiếp tới công cụ tìm kiếm bên ngoài. Chế độ này không còn được SearXNG bảo vệ.

Tìm kiếm cho trình duyệt và công cụ riêng

SearXNG hỗ trợ OpenSearch, vì vậy có thể đặt làm công cụ tìm kiếm mặc định của trình duyệt. Nếu quản trị viên đã bật các định dạng cần thiết, HTTP API cũng có thể trả về JSON, CSV hoặc RSS.

Một phiên bản có thể làm backend tìm kiếm cho bảng điều khiển nội bộ, bot, script nghiên cứu hoặc trợ lý AI cục bộ. Chỉ nên mở API sau khi đã cấu hình xác thực và giới hạn tốc độ.

SearXNG riêng tư đến đâu?

Có làmKhông làm
Không gửi cookie trình duyệt cho công cụ tìm kiếm bên ngoàiKhông cung cấp sự ẩn danh hoàn toàn
Che địa chỉ IP của người dùng sau IP máy chủKhông bảo vệ người dùng sau khi họ mở website kết quả
Loại bỏ quảng cáo bên thứ ba và một số tham số theo dõiKhông đảm bảo chủ máy chủ của người khác không lưu nhật ký
Có thể proxy hình ảnhKhông thay thế VPN, Tor hoặc cơ chế bảo vệ của trình duyệt

Phiên bản công khai thuận tiện để thử dịch vụ, nhưng bạn phải tin tưởng quản trị viên, còn IP dùng chung có khả năng bị giới hạn tốc độ cao hơn.

Máy chủ riêng cho bạn quyền kiểm soát nhật ký, nguồn và quyền truy cập, nhưng không làm trình duyệt trở nên ẩn danh.

Phiên bản công khai, máy chủ gia đình hay VPS?

Lựa chọnƯu điểmHạn chế
Phiên bản công khaiKhông cần cài đặt gìPhải tin chủ sở hữu, quá tải, CAPTCHA
Máy chủ gia đìnhKiểm soát hoàn toàn mà không thuê VPSThiết bị phải chạy liên tục; khó cấu hình truy cập bên ngoài
VPS riêngHoạt động 24/7, tên miền, HTTPS, truy cập từ nhiều thiết bịPhải cập nhật container và theo dõi bảo mật

Phiên bản SearXNG riêng hữu ích cho gia đình, nhóm, nhà phát triển hoặc các công cụ AI cục bộ. Với tìm kiếm không thường xuyên, phiên bản công khai đơn giản hơn.

SearXNG cần loại VPS nào?

Tải phụ thuộc vào số người dùng, nguồn và truy vấn đồng thời. Cấu hình khởi điểm thực tế:

Tình huốngCPURAMBộ nhớ
Một người dùng1 vCPU1 GB10 GB
Gia đình hoặc nhóm nhỏ2 vCPU2 GB20 GB
API và dịch vụ bổ sung2–4 vCPUtừ 4 GBtừ 30 GB

Không cần đĩa lớn. Chất lượng mạng, IP ổn định và RAM dự phòng quan trọng hơn.

VPS Linux từ tropic.host phù hợp với trường hợp này: bạn có thể bắt đầu bằng cấu hình nhỏ và tăng tài nguyên khi thêm người dùng hoặc API. Khi chọn gói, đầu tư vào RAM và chất lượng mạng hữu ích hơn việc trả thêm cho dung lượng lưu trữ lớn.

Cài SearXNG trên VPS bằng Docker Compose

Ví dụ này dùng Ubuntu 24.04 LTS, search.example.com, Valkey và Caddy. Trỏ bản ghi DNS A đến máy chủ và mở các cổng 80, 443.

1. Cài Docker và tạo thư mục

sudo apt update
sudo apt install -y docker.io docker-compose-v2 openssl
sudo systemctl enable --now docker

sudo mkdir -p /opt/searxng/searxng
cd /opt/searxng

Tạo tệp .env chứa tên miền và một secret ngẫu nhiên:

printf 'SEARXNG_HOSTNAME=search.example.com\nSEARXNG_SECRET=%s\n' \
  "$(openssl rand -hex 32)" | sudo tee .env >/dev/null
sudo chmod 600 .env

2. Tạo docker-compose.yml

name: searxng

services:
  searxng:
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    environment:
      SEARXNG_BASE_URL: https://${SEARXNG_HOSTNAME}/
      SEARXNG_SECRET: ${SEARXNG_SECRET}
      SEARXNG_VALKEY_URL: valkey://valkey:6379/0
    volumes:
      - ./searxng:/etc/searxng:rw
      - searxng-cache:/var/cache/searxng
    depends_on: [valkey]

  valkey:
    image: docker.io/valkey/valkey:9-alpine
    restart: unless-stopped
    command: valkey-server --save 30 1 --loglevel warning
    volumes:
      - valkey-data:/data

  caddy:
    image: docker.io/caddy:2-alpine
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
      - "443:443/udp"
    environment:
      SEARXNG_HOSTNAME: ${SEARXNG_HOSTNAME}
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy-data:/data
      - caddy-config:/config
    depends_on: [searxng]

volumes:
  searxng-cache:
  valkey-data:
  caddy-data:
  caddy-config:

3. Cấu hình SearXNG

Tạo searxng/settings.yml:

use_default_settings: true

general:
  instance_name: "Private Search"

search:
  safe_search: 1
  autocomplete: ""
  formats: [html]

server:
  limiter: true
  image_proxy: true

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

Tạo searxng/limiter.toml:

[botdetection]
trusted_proxies = [
  "127.0.0.0/8",
  "::1",
  "172.16.0.0/12",
]

Limiter giảm nguy cơ bot làm quá tải phiên bản và khiến công cụ tìm kiếm bên ngoài giới hạn IP của phiên bản sớm hơn.

4. Thêm mật khẩu và HTTPS

Tạo hash cho một mật khẩu mạnh:

sudo docker run --rm caddy:2-alpine \
  caddy hash-password --plaintext 'REPLACE_WITH_PASSWORD'

Chèn hash kết quả vào Caddyfile:

{$SEARXNG_HOSTNAME} {
    basic_auth {
        searchuser INSERT_HASH_HERE
    }

    reverse_proxy searxng:8080 {
        header_up X-Real-IP {remote_host}
    }
}

Caddy lưu hash thay vì mật khẩu dạng văn bản. Thay cho Basic Auth, dịch vụ cũng có thể được giới hạn trong VPN.

5. Khởi động các container

sudo docker compose config
sudo docker compose pull
sudo docker compose up -d
sudo docker compose ps

Mở https://search.example.com. Caddy sẽ tự động lấy chứng chỉ TLS, sau đó trình duyệt yêu cầu tên người dùng searchuser và mật khẩu. Nhật ký SearXNG có thể xem bằng lệnh:

sudo docker compose logs -f searxng

Cần cấu hình gì sau khi khởi động?

Chỉ giữ các nguồn hữu ích, chọn ngôn ngữ và thiết lập SafeSearch, sau đó thêm SearXNG vào trình duyệt qua OpenSearch. Để cập nhật, chạy:

sudo docker compose pull
sudo docker compose up -d

Sao lưu .env, Caddyfile và thư mục searxng. Chỉ bật JSON API khi cần thiết, không để API thiếu mật khẩu và giới hạn tốc độ.

Những lỗi thường gặp

LỗiHậu quảGiải pháp
Để phiên bản công khaiBot tạo tải và IP bị giới hạn thường xuyên hơnDùng mật khẩu, VPN hoặc đăng nhập một lần
Bật quá nhiều nguồnKết quả chậm và hết thời gian chờGiữ một vài công cụ ổn định
Coi SearXNG là chỉ mục riêngMột số kết quả biến mất khi hệ thống bên ngoài lỗiTính đến sự phụ thuộc vào nguồn
Mong đợi ẩn danh hoàn toànWebsite đích vẫn có thể theo dõi trình duyệtDùng cơ chế bảo vệ trình duyệt, VPN hoặc Tor
Chạy mà không có HTTPSTruy vấn và mật khẩu truyền không an toànDùng reverse proxy với TLS

Kết luận

SearXNG kết hợp nhiều nguồn trong một giao diện, giảm cá nhân hóa và cung cấp một dịch vụ tìm kiếm duy nhất cho trình duyệt, script hoặc AI cục bộ. Phiên bản công khai đủ để thử. Với việc sử dụng thường xuyên, máy chủ riêng có HTTPS, xác thực, limiter và một nhóm nhỏ nguồn ổn định là lựa chọn tốt hơn.

Bạn có thể bắt đầu với 1 GB RAM. Tăng tài nguyên khi số người dùng tăng, khi bật API hoặc khi chạy thêm container.

FAQ

SearXNG có hoàn toàn ẩn danh không?

Không. Nó ẩn một phần dữ liệu khỏi công cụ tìm kiếm bên ngoài, nhưng quản trị viên phiên bản có thể lưu nhật ký. Sau khi bạn mở website, cơ chế theo dõi riêng của website đó sẽ được áp dụng.

SearXNG có tốt hơn Google không?

Nó giải quyết một vấn đề khác. Google thường nhanh hơn và cá nhân hóa kết quả mạnh hơn. SearXNG cho bạn nhiều quyền kiểm soát hơn, cho phép kết hợp nguồn và ít phụ thuộc vào hồ sơ người dùng hơn.

Có thể dùng SearXNG mà không cần VPS không?

Có. Bạn có thể dùng phiên bản công khai, máy tính gia đình, NAS hoặc máy chủ mini. VPS cần thiết nếu muốn truy cập 24/7 từ mọi mạng.

Cần bao nhiêu RAM?

Với một người dùng, bắt đầu bằng 1 GB là hợp lý. Với gia đình, nhóm, API hoặc container bổ sung, nên dùng 2–4 GB.

Có thể kết nối SearXNG với trình duyệt hoặc AI không?

Có. Trình duyệt có thể dùng OpenSearch, còn ứng dụng có thể dùng HTTP API. Quyền truy cập API nên được bảo vệ bằng xác thực và limiter.