Sự cố Production lúc 2 giờ sáng
Lúc đó là 2 giờ sáng ngày thứ Ba. Tôi đang loay hoay xử lý một lỗi hỏng hệ thống tập tin XFS bí ẩn, đe dọa xóa sạch cơ sở dữ liệu production dung lượng 2TB. Mỗi lần tôi dán mã lỗi vào Google, bốn kết quả đầu tiên đều là rác “được tài trợ” — những công cụ khôi phục vô dụng có giá tới 200 USD. Kết quả thứ năm? Một bài viết trên Medium bị khóa sau bức tường thanh toán 5 USD/tháng. Tôi đã kiệt sức và mệt mỏi vì bị theo dõi bởi hàng chục mã script chỉ để tìm một luồng thảo luận hiệu quả trên Stack Overflow.
Đêm đó, tôi quyết định ngừng làm “món hàng” cho các công ty quảng cáo. Tôi không chỉ muốn một trình duyệt “riêng tư”; tôi muốn sở hữu cơ sở hạ tầng xử lý các truy vấn của mình. Điều đó dẫn tôi đến với SearXNG. Nếu bạn đang xây dựng một HomeLab để thoát khỏi các gã khổng lồ khai thác dữ liệu, đây chính là viên gạch nền tảng cho một hệ thống thực sự riêng tư.
Công cụ Tìm kiếm vs. Công cụ Tìm kiếm Tổng hợp: Hiểu rõ sự khác biệt
Thông thường bạn có ba con đường khi tìm kiếm trên web. Hiểu rõ những khác biệt này là tối quan trọng trước khi bạn bắt đầu kéo (pull) các image Docker.
- Các công cụ phổ biến (Google/Bing): Họ cung cấp chỉ mục khổng lồ nhưng tồn tại nhờ dữ liệu của bạn. Họ xây dựng hồ sơ sở thích của bạn trong nhiều năm để bán quảng cáo mục tiêu.
- Proxy ưu tiên quyền riêng tư (DuckDuckGo/Startpage): Họ không theo dõi bạn, nhưng bạn vẫn bị kẹt với logic xếp hạng “hộp đen” của họ. Bạn hoàn toàn không có quyền kiểm soát những gì họ lọc hoặc thúc đẩy.
- Công cụ tìm kiếm tổng hợp Self-Hosted (SearXNG): Đây là lựa chọn của các kỹ sư. Bản thân SearXNG không thu thập dữ liệu web. Thay vào đó, nó hoạt động như một proxy tốc độ cao, truy vấn đồng thời Google, Bing, DuckDuckGo và 70 công cụ khác. Nó loại bỏ các ID theo dõi, cookie và script lấy dấu vân tay trình duyệt trước khi hiển thị kết quả cho bạn.
Tôi chọn SearXNG vì nó tổng hợp những kết quả tốt nhất từ mọi nguồn lớn trong khi vẫn giữ cho tôi ẩn danh trước các công cụ tìm kiếm nguồn. Nó biến máy chủ của bạn thành một tấm khiên bảo vệ quyền riêng tư một cách hiệu quả.
Sự đánh đổi: Liệu nó có phù hợp với bạn?
Hãy nhìn vào thực tế khi vận hành công cụ tìm kiếm riêng. Nó không phải là không có những rắc rối.
Ưu điểm
- Quyền riêng tư tuyệt đối: Không ai xây dựng hồ sơ về thói quen fix bug đêm khuya hay các mối quan tâm về sức khỏe của bạn.
- Không quảng cáo: SearXNG loại bỏ hoàn toàn nội dung được tài trợ. Nếu một kết quả xuất hiện, đó là vì nó liên quan, không phải vì có ai đó đã trả tiền cho vị trí đó.
- Lọc chính xác: Bạn có thể cấu hình để tìm kiếm cụ thể trên Reddit, StackOverflow và Wikipedia chỉ với một cú nhấp chuột.
- Chủ quyền dữ liệu: Lịch sử tìm kiếm nằm trên phần cứng của bạn. Nó không bao giờ rời khỏi mạng nội bộ.
Nhược điểm
- Bảo trì: Các công cụ tìm kiếm thường xuyên thay đổi cấu trúc trang web của họ. Bạn sẽ cần cập nhật image Docker hàng tháng để giữ cho các bộ quét (scraper) hoạt động ổn định.
- Uy tín IP: Truy vấn Google quá thường xuyên từ một địa chỉ IP dân dụng và bạn sẽ gặp phải bức tường CAPTCHA. Tôi sẽ hướng dẫn cách khắc phục điều này bên dưới.
- Tài nguyên: Nó khá hiệu quả — thường chạy không tải ở mức dưới 250MB RAM — nhưng vẫn cần tài nguyên xử lý nhất định trong môi trường Docker của bạn.
Kiến trúc HomeLab: Thiết kế để tối ưu tốc độ
Làm chủ cơ sở hạ tầng có nghĩa là thiết kế để đạt hiệu suất thay vì chỉ làm cho nó “chạy được”. Để có một thiết lập SearXNG nhanh nhạy, tôi tránh cạm bẫy “một container duy nhất”. Thay vào đó, hãy sử dụng cách tiếp cận ba tầng này:
- SearXNG Core: Bộ máy xử lý logic và giao diện người dùng.
- Redis: Thành phần thiết yếu để lưu bộ nhớ đệm (caching). Không có Redis, việc tải trang có thể bị chậm đi 600ms hoặc hơn do công cụ phải chờ phản hồi từ bên ngoài.
- Filtron (Tùy chọn): Một reverse proxy viết bằng Go giúp bảo vệ instance của bạn khỏi các bot hung hãn và giới hạn lưu lượng truy cập từ bên ngoài nếu bạn quyết định công khai instance của mình.
Hướng dẫn thực hiện: Triển khai
Mở terminal của bạn. Tôi giả định bạn đã cài đặt sẵn Docker và Compose. Nếu bạn sử dụng Portainer, bạn có thể triển khai cái này như một stack tiêu chuẩn.
Bước 1: Thiết lập không gian làm việc
mkdir -p ~/homelab/searxng/searxng
cd ~/homelab/searxng
Bước 2: Bảo mật là trên hết
SearXNG yêu cầu một khóa bí mật mạnh để mã hóa phiên làm việc. Đừng dùng mã tạm bợ. Hãy tạo một chuỗi hex 32-byte chuẩn để giữ cho các phiên làm việc của bạn an toàn.
openssl rand -hex 32
Bước 3: Cấu hình Docker Compose
Tạo tệp docker-compose.yml. Tệp này liên kết ứng dụng với Redis để đảm bảo giao diện phản hồi nhanh chóng.
services:
redis:
container_name: searxng-redis
image: docker.io/library/redis:alpine
command: redis-server --save "" --appendonly no
networks:
- searxng-net
restart: unless-stopped
searxng:
container_name: searxng
image: docker.io/searxng/searxng:latest
networks:
- searxng-net
ports:
- "8080:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_SETTINGS_PATH=/etc/searxng/settings.yml
depends_on:
- redis
restart: unless-stopped
networks:
searxng-net:
driver: bridge
Bước 4: Tinh chỉnh bộ máy
Tạo tệp searxng/settings.yml. Đây là nơi các xử lý quan trọng diễn ra. Bạn phải trỏ ứng dụng đến container Redis và xác định các công cụ tìm kiếm ưu tiên của mình.
use_default_settings: true
server:
port: 8080
bind_address: "0.0.0.0"
secret_key: "DÁN_MÃ_HEX_CỦA_BẠN_VÀO_ĐÂY"
base_url: http://192.168.1.50:8080/
redis:
url: redis://redis:6379/0
search:
safe_search: 0
autocomplete: google
engines:
- name: google
engine: google
- name: duckduckgo
engine: duckduckgo
- name: stackoverflow
engine: stackoverflow
Bước 5: Khởi chạy
Thực hiện triển khai:
docker-compose up -d
Truy cập vào http://ip-may-chu-cua-ban:8080. Bạn sẽ thấy một thanh tìm kiếm tối giản, sạch sẽ sẵn sàng cho truy vấn đầu tiên.
Xử lý lỗi 403 Forbidden
Nếu instance của bạn đột nhiên báo lỗi ‘Engines cannot retrieve results’, có khả năng Google đã gắn cờ IP nhà bạn. Đây là một rào cản phổ biến. Đây là cách tôi xử lý:
- Thay đổi nguồn: Trong
settings.yml, hãy tạm thời tắt Google. Bật Brave Search hoặc Qwant làm công cụ chính. - Sử dụng VPN: Sử dụng một container sidecar như Gluetun để điều hướng lưu lượng SearXNG qua một Wireguard VPN. Điều này giúp ẩn hoàn toàn IP dân dụng của bạn khỏi các gã khổng lồ tìm kiếm.
- Cá nhân hóa lưu lượng: Giảm số lượng công cụ tìm kiếm được truy vấn cùng lúc. Truy vấn 50 công cụ cùng lúc trông giống như bot; truy vấn 5 công cụ trông giống như một người dùng bình thường.
Tích hợp vào quy trình làm việc
Một công cụ tìm kiếm tự host chỉ có giá trị nếu bạn thực sự sử dụng nó. Hãy đặt instance SearXNG của bạn làm mặc định trong Firefox hoặc Brave bằng cài đặt ‘Search Engine Shortcuts’.
Xây dựng hệ thống này giúp lấp đầy khoảng cách giữa quản lý hạ tầng đơn thuần và tiện ích hàng ngày. Bạn không chỉ đang ‘học Docker’; bạn đang tạo ra một công cụ mà bạn sẽ sử dụng 50 lần mỗi ngày. Giờ đây, mỗi khi tôi tìm kiếm một tệp cấu hình, tôi biết rằng sự tò mò của mình không bị đem ra đấu giá cho một công ty tiếp thị. Sự an tâm đó xứng đáng với từng dòng YAML.
HomeLab là mạng lưới riêng tư của bạn. Thêm SearXNG giống như lắp một cửa sổ dán phim cách nhiệt riêng tư — bạn có cái nhìn rõ ràng ra thế giới, nhưng thế giới không thể nhìn ngược lại vào bên trong.

