Tìm kiếm riêng tư: So sánh các lựa chọn của bạn
Mỗi truy vấn bạn nhập vào một công cụ tìm kiếm thương mại đều làm rò rỉ dữ liệu. Các nhà cung cấp liên kết địa chỉ IP công cộng, browser headers và chuỗi tìm kiếm của bạn lại với nhau để xây dựng hồ sơ quảng cáo chi tiết. Nếu bạn đang vận hành một home lab, việc đánh giá lại thói quen tìm kiếm cũng quan trọng không kém việc triển khai các DNS sinkhole như Pi-hole hay tinh chỉnh quy tắc tường lửa.
Hầu hết các hệ thống mạng gia đình thường dựa vào ba chiến lược chính để bảo vệ quyền riêng tư khi tìm kiếm web:
- Công cụ tìm kiếm riêng tư được lưu trữ sẵn (DuckDuckGo, Brave Search, Startpage): Các trang web này cung cấp giải pháp thay thế nhanh chóng, không cần cấu hình cho Google. Chúng loại bỏ cookie theo dõi và ẩn IP của bạn. Dù vậy, bạn vẫn phải đặt trọn niềm tin vào máy chủ của bên thứ ba – nơi có thể thay đổi thứ hạng kết quả, hiển thị đoạn trích quảng cáo hoặc âm thầm ghi nhật ký yêu cầu khi có lệnh triệu tập của cơ quan chức năng.
- Cô lập trình duyệt và hồ sơ dùng một lần: Bạn có thể khởi chạy các container trình duyệt tạm thời qua Kasm Workspaces hoặc định tuyến lưu lượng qua các tunnel WireGuard tạm thời. Cách này ngăn chặn hoàn toàn việc lập hồ sơ cross-site. Đổi lại, chi phí tài nguyên bộ nhớ rất lớn (thường tốn 1–2 GB cho mỗi phiên duyệt web) và độ trễ tải trang tăng rõ rệt.
- Metasearch tự host (SearXNG trên Docker): SearXNG hoạt động như một proxy tự quản lý nằm giữa mạng LAN của bạn và hơn 70 backend tìm kiếm, bao gồm Google, Bing, DuckDuckGo, Wikipedia và Reddit. Các nền tảng nguồn chỉ nhìn thấy yêu cầu xuất phát từ IP máy chủ của bạn, không bao giờ thấy máy trạm hay điện thoại cá nhân. SearXNG tổng hợp kết quả, loại bỏ các token theo dõi và trả về kết quả tìm kiếm sạch sẽ, không quảng cáo cho trình duyệt của bạn.
Tự host SearXNG mang lại sự cân bằng tốt nhất giữa tốc độ truy vấn, khả năng đọc không bị làm phiền bởi quảng cáo và quyền kiểm soát trực tiếp đối với dữ liệu đo từ xa (telemetry) gửi ra ngoài.
Ưu và nhược điểm khi tự host SearXNG
Trước khi triển khai các container, hãy cân nhắc giữa thực tế vận hành và lợi ích về quyền riêng tư mà bạn nhận được.
Ưu điểm
- Tổng hợp kết quả tìm kiếm từ nhiều nguồn: Thay vì tin tưởng vào một bộ chỉ mục duy nhất, SearXNG truy vấn song song nhiều công cụ tìm kiếm. Một lượt tìm kiếm duy nhất có thể hiển thị đồng thời kết quả từ các web crawler phổ biến, kho lưu trữ GitHub và các diễn đàn cộng đồng.
- Hoàn toàn không có quảng cáo hay liên kết theo dõi: Các kết quả được tài trợ, liên kết tiếp thị liên kết chứa mã theo dõi và các trang nội dung rác chuẩn SEO sẽ bị loại bỏ trước khi mã HTML được hiển thị. Bạn sẽ nhận được các liên kết đích trực tiếp và sạch sẽ.
- Phủ sóng toàn bộ mạng nội bộ: Chỉ cần triển khai container stack một lần trên máy chủ, bạn có thể trỏ mọi điện thoại, máy tính bảng và máy trạm trong subnet của mình tới đó chỉ trong vài giây.
- Kiểm soát công cụ tìm kiếm chi tiết: Bạn tự chọn các nguồn tìm kiếm bên ngoài. Bạn có thể tắt hoàn toàn các nền tảng kém chất lượng hoặc ưu tiên các endpoint chuyên biệt cho bài báo khoa học, torrent hoặc mã nguồn.
Hạn chế cần lưu ý
- Giới hạn tần suất truy vấn (Rate Limit) và CAPTCHA từ phía nguồn: Các nhà cung cấp lớn như Google và Bing thường giới hạn rất gắt gao dải IP của các máy chủ VPS trên đám mây. Chạy SearXNG từ đường truyền mạng hộ gia đình (residential ISP) sẽ tránh được hầu hết các đợt chặn này, nhưng nếu lưu lượng tìm kiếm quá lớn, bạn vẫn cần giới hạn tần suất truy vấn một cách hợp lý.
- Cần bảo trì scraper liên tục: Các nhà cung cấp tìm kiếm thường xuyên thay đổi cấu trúc mã trang và API, điều này có thể làm hỏng scraper của từng công cụ tìm kiếm riêng lẻ. Bạn sẽ cần pull phiên bản container image mới của SearXNG từ một đến hai lần mỗi tháng để đảm bảo các scraper luôn hoạt động ổn định.
- Mức tiêu hao bộ nhớ (RAM): Để có tốc độ phản hồi nhanh, hệ thống cần bộ nhớ đệm dạng key-value chạy trực tiếp trên RAM (Redis hoặc Valkey), làm tăng thêm khoảng 80–150 MB RAM cơ bản cho toàn bộ stack.
Kiến trúc khuyến nghị
Một mô hình triển khai SearXNG ổn định sẽ kết hợp hai container gọn nhẹ thông qua Docker Compose:
- SearXNG Core: Ứng dụng Python đảm nhận việc tổng hợp các truy vấn bên ngoài, áp dụng các bộ lọc nội dung và render giao diện người dùng frontend.
- Valkey (hoặc Redis): Bộ nhớ đệm in-memory chạy trên cổng 6379. Nó lưu cache các phản hồi tìm kiếm giống nhau, lưu trữ phiên người dùng tạm thời và điều tiết các lệnh gọi ra ngoài với tần suất cao nhằm tránh việc nhà cung cấp tìm kiếm đưa IP của bạn vào danh sách đen.
Tách rời các tệp cấu hình khỏi container runtime giúp việc cập nhật phần mềm sau này diễn ra dễ dàng. Thiết lập này giúp cấu hình của bạn luôn gọn gàng và dễ di chuyển.
Tổ chức thư mục dự án của bạn như sau:
~/searxng-docker/
├── docker-compose.yml
├── searxng/
│ └── settings.yml
└── .env
Hướng dẫn triển khai: Từng bước cài đặt SearXNG
Bước 1: Tạo thư mục và các tệp cơ bản
SSH vào Docker host của bạn và thiết lập cấu trúc thư mục riêng cho stack:
mkdir -p ~/searxng-docker/searxng
cd ~/searxng-docker
Bước 2: Tạo khóa mã hóa (Encryption Key)
SearXNG yêu cầu một khóa mã hóa để ký cookie phiên và ngăn chặn các cuộc tấn công CSRF. Hãy tạo một chuỗi bí mật thập lục phân (hex) dài 32 byte và ghi trực tiếp vào tệp .env của bạn:
echo "SEARXNG_SECRET=$(openssl rand -hex 32)" > .env
Kiểm tra xem tệp đã chứa chuỗi hex 64 ký tự hay chưa bằng lệnh cat .env.
Bước 3: Cấu hình thiết lập SearXNG
SearXNG phân tích cú pháp cấu hình khi chạy từ một tệp YAML trung tâm. Hãy tạo tệp searxng/settings.yml bằng trình biên tập văn bản của bạn:
nano searxng/settings.yml
Dán cấu hình production sau đây vào. Cấu hình này sẽ kết nối với container cache Valkey, kích hoạt tính năng proxy hình ảnh và tinh chỉnh thời gian chờ (timeout) cho các backend tìm kiếm quan trọng:
use_default_settings: true
general:
debug: false
instance_name: "Tìm kiếm HomeLab"
server:
# Lắng nghe trên tất cả các interface bên trong container
bind_address: "0.0.0.0"
port: 8080
secret_key: "ultrasecretkey" # Được ghi đè khi chạy bởi SEARXNG_SECRET
limiter: true
image_proxy: true
method: "GET"
redis:
url: redis://redis:6379/0
search:
safe_search: 0
autocomplete: "duckduckgo"
default_lang: "en"
engines:
- name: google
engine: google
use_mobile_ui: false
timeout: 3.0
- name: duckduckgo
engine: duckduckgo
timeout: 3.0
- name: bing
engine: bing
timeout: 3.0
- name: wikipedia
engine: wikipedia
timeout: 2.0
- name: github
engine: github
timeout: 3.0
Lưu và đóng tệp lại (trong nano, nhấn Ctrl + O, bấm Enter, sau đó thoát bằng Ctrl + X).
Bước 4: Định nghĩa Docker Compose Stack
Bây giờ, hãy viết định nghĩa các dịch vụ trong docker-compose.yml:
nano docker-compose.yml
Thêm cấu hình sau vào. Hãy nhớ thay thế 192.168.1.50 bằng địa chỉ IP LAN thực tế của máy chủ bạn:
services:
redis:
image: valkey/valkey:8-alpine
container_name: searxng-redis
restart: unless-stopped
command: valkey-server --save "" --appendonly no
networks:
- searxng-net
tmpfs:
- /var/lib/valkey
cap_drop:
- ALL
cap_add:
- SETGID
- SETUID
- DAC_OVERRIDE
searxng:
image: searxng/searxng:latest
container_name: searxng
restart: unless-stopped
networks:
- searxng-net
ports:
- "8080:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://192.168.1.50:8080/
- SEARXNG_SECRET=${SEARXNG_SECRET}
depends_on:
- redis
cap_drop:
- ALL
cap_add:
- CHOWN
- SETGID
- SETUID
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
networks:
searxng-net:
name: searxng-net
Bước 5: Khởi chạy và kiểm tra các container
Khởi chạy stack ở chế độ chạy nền (detached mode):
docker compose up -d
Kiểm tra xem cả hai container đã hoạt động bình thường chưa:
docker compose ps
Xem log ứng dụng theo thời gian thực để đảm bảo cấu hình được phân tích cú pháp thành công mà không có lỗi cú pháp hay thiếu key nào:
docker compose logs -f searxng
Nhấn Ctrl + C để thoát khỏi luồng xem log sau khi quá trình khởi tạo hoàn tất. Tiếp theo, mở trình duyệt web và truy cập vào http://<YOUR_SERVER_IP>:8080. Bạn sẽ thấy một thanh tìm kiếm tối giản, phản hồi nhanh và sẵn sàng xử lý các truy vấn.
Bước 6: Cấu hình công cụ tìm kiếm mặc định trên trình duyệt
Tích hợp phiên bản SearXNG của bạn vào trình duyệt hàng ngày thông qua chuẩn OpenSearch:
- Firefox: Truy cập vào địa chỉ URL của SearXNG. Nhấp chuột phải vào thanh địa chỉ của trình duyệt, sau đó chọn Add Search Engine.
- Các trình duyệt Chromium (Chrome, Brave, Edge): Đi tới Settings > Search engine > Manage search engines and site search.
- Trong mục Site search, nhấn Add và điền các trường thông tin:
- Search engine: SearXNG HomeLab
- Shortcut: @sx
- URL with %s in place of query:
http://<YOUR_SERVER_IP>:8080/search?q=%s
- Nhấp vào biểu tượng dấu ba chấm cạnh mục vừa tạo và chọn Make default.
Giờ đây, các tìm kiếm nhập vào thanh địa chỉ sẽ được định tuyến thẳng tới Docker host cục bộ của bạn. Kết quả trả về nhanh chóng, không bị chèn quảng cáo và hoàn toàn không bị theo dõi.

