Tropic Host

SearXNG란 무엇이며 VPS에 나만의 검색 엔진을 설치하는 방법

읽는 데 12분
Tropic
SearXNG란 무엇이며 VPS에 나만의 검색 엔진을 설치하는 방법

SearXNG: VPS에 구축하는 추적 없는 나만의 검색 엔진

일반적인 검색 엔진은 검색 요청을 IP 주소, 쿠키, 활동 기록과 연결할 수 있습니다. SearXNG는 요청 경로를 바꿉니다. 브라우저가 자신의 인스턴스에 접속하면, 인스턴스가 여러 외부 검색 엔진에 질의하고 그 응답을 한 페이지에 모읍니다.

외부 소스에는 사용자의 쿠키가 아니라 SearXNG 서버의 주소가 보입니다. 서비스 자체도 광고 프로필을 만들지 않습니다. 하지만 완전한 익명성을 제공하는 것은 아닙니다. 공개 인스턴스의 소유자는 기술적으로 로그를 남길 수 있으며, 검색 결과의 링크를 연 뒤에는 대상 사이트가 다시 브라우저와 직접 상호작용합니다.

SearXNG의 기능을 살펴보고 HTTPS와 비밀번호 보호가 적용된 자체 인스턴스를 VPS에 설치해 보겠습니다.

SearXNG란 무엇이며 어떻게 작동하는가

SearXNG는 무료 오픈 소스 메타 검색 엔진입니다. 자체 웹사이트 색인을 보유하지 않으며, 설정된 검색 엔진과 전문 소스에서 결과를 가져와 형식을 통일한 뒤 하나의 인터페이스에 표시합니다.

브라우저 → 내 SearXNG → 검색 엔진
                      ↓
                   통합 결과

검색 요청이 들어올 때마다 SearXNG는 다음 작업을 수행합니다.

  1. 웹, 이미지, 뉴스, 동영상 또는 기타 검색 카테고리를 결정합니다.
  2. 서버를 대신해 선택된 소스에 요청합니다.
  3. 사용자의 쿠키를 해당 소스에 전달하지 않고, 외부 요청에는 임의의 브라우저 프로필을 사용합니다.
  4. 응답을 하나의 검색 결과 페이지에 모읍니다.

속도는 외부 시스템에 따라 달라집니다. 응답이 느리거나 CAPTCHA가 표시될 수 있고, IP 주소가 차단될 수도 있습니다. SearXNG는 관리 가능한 중간 계층이지 독립적인 검색 색인은 아닙니다.

SearXNG가 단일 검색 엔진보다 매력적인 이유

서로 다른 소스를 하나의 검색 결과에 통합

일반 검색 엔진과 백과사전, 지도, 학술 논문, 저장소, 뉴스, 이미지 카탈로그 같은 전문 소스를 함께 사용할 수 있습니다. 일반 검색 결과가 SEO 페이지로 가득 차 있거나 틈새 자료를 제대로 찾지 못할 때 유용합니다.

이 글을 작성할 당시 문서에는 272개의 통합이 나열되어 있었으며, 그중 83개가 기본으로 활성화되어 있었습니다. 그렇다고 모든 통합이 똑같이 안정적이라는 뜻은 아닙니다.

사용되는 소스는 설정에 따라 달라집니다. 사용 가능한 소스를 모두 동시에 켜는 것보다 안정적인 소수의 소스만 사용하는 편이 일반적으로 더 빠릅니다.

빠른 명령어

축약 명령어를 사용하면 검색 엔진, 카테고리 또는 언어를 일시적으로 선택할 수 있습니다.

!wp docker compose       — Wikipedia에서 검색
!images 오로라           — 이미지 검색
:ko !wp 프록시 서버      — 한국어로 Wikipedia에서 검색

!! 명령은 사용자를 외부 검색 엔진으로 직접 이동시킵니다. 이 모드에서는 SearXNG의 보호가 더 이상 적용되지 않습니다.

브라우저와 자체 도구를 위한 검색

SearXNG는 OpenSearch를 지원하므로 브라우저의 기본 검색 엔진으로 지정할 수 있습니다. 관리자가 필요한 형식을 허용한 경우 JSON, CSV 또는 RSS로 응답하는 HTTP API도 사용할 수 있습니다.

하나의 인스턴스를 내부 대시보드, 봇, 조사 스크립트 또는 로컬 AI 어시스턴트의 검색 백엔드로 활용할 수 있습니다. API는 인증과 요청 제한을 설정한 뒤에만 공개하는 것이 좋습니다.

SearXNG의 개인정보 보호 수준

제공하는 기능제공하지 않는 기능
브라우저 쿠키를 외부 검색 엔진에 전달하지 않음완전한 익명성을 보장하지 않음
서버 IP 뒤에 사용자 IP를 숨김검색 결과 사이트를 연 뒤에는 보호하지 않음
제3자 광고와 일부 추적 매개변수를 제거함타인의 서버 운영자가 로그를 남기지 않는다고 보장하지 않음
이미지를 프록시로 불러올 수 있음VPN, Tor 또는 브라우저 보호 기능을 대체하지 않음

공개 인스턴스는 서비스를 체험하기에는 편리하지만 관리자를 신뢰해야 하며, 공유 IP는 제한을 더 자주 받을 수 있습니다.

자체 서버를 사용하면 로그, 소스, 접근 권한을 제어할 수 있지만 브라우저 자체가 익명화되는 것은 아닙니다.

공개 인스턴스, 홈 서버 또는 VPS

선택지장점제한 사항
공개 인스턴스설치할 필요가 없음운영자를 신뢰해야 하며 과부하와 CAPTCHA가 발생할 수 있음
홈 서버VPS 임대 없이 완전히 제어 가능기기가 계속 켜져 있어야 하며 외부 접속 설정이 더 어려움
자체 VPS24시간 운영, 도메인, HTTPS, 여러 기기에서 접속 가능컨테이너를 업데이트하고 보안을 관리해야 함

자체 SearXNG는 가족, 팀, 개발자 또는 로컬 AI 도구에 유용합니다. 가끔 검색하는 정도라면 공개 인스턴스가 더 간단합니다.

SearXNG에 필요한 VPS 사양

부하는 사용자 수, 소스 수, 동시 요청 수에 따라 달라집니다. 실용적인 시작 구성은 다음과 같습니다.

사용 시나리오CPURAM디스크
사용자 1명1 vCPU1 GB10 GB
가족 또는 소규모 팀2 vCPU2 GB20 GB
API와 추가 서비스2–4 vCPU4 GB 이상30 GB 이상

큰 디스크는 필요하지 않습니다. 네트워크 품질, 안정적인 IP 주소, 여유 RAM이 더 중요합니다.

이 용도에는 tropic.host의 Linux VPS가 적합합니다. 작은 구성으로 시작한 뒤 사용자나 API 접속이 늘어날 때 리소스를 확장할 수 있습니다. 요금제를 선택할 때는 저장 공간에 과도한 비용을 쓰기보다 RAM과 네트워크 품질에 투자하는 편이 더 유용합니다.

Docker Compose로 VPS에 SearXNG 설치하기

이 예제에서는 Ubuntu 24.04 LTS, search.example.com, Valkey, Caddy를 사용합니다. DNS A 레코드를 서버로 지정하고 80번과 443번 포트를 여십시오.

1. Docker를 설치하고 디렉터리 만들기

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

도메인과 임의의 비밀값이 들어 있는 .env 파일을 만듭니다.

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

2. 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. SearXNG 설정하기

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

searxng/limiter.toml을 만듭니다.

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

Limiter는 봇이 인스턴스에 과부하를 일으키고 외부 검색 엔진이 해당 IP 주소를 더 빨리 제한할 위험을 줄입니다.

4. 비밀번호와 HTTPS 추가하기

강력한 비밀번호의 해시를 생성합니다.

sudo docker run --rm caddy:2-alpine \
  caddy hash-password --plaintext '비밀번호로_교체'

생성된 해시를 Caddyfile에 입력합니다.

{$SEARXNG_HOSTNAME} {
    basic_auth {
        searchuser 여기에_해시_입력
    }

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

Caddy는 평문 비밀번호가 아니라 해시를 저장합니다. Basic Auth 대신 VPN 내부에서만 서비스에 접근하도록 제한할 수도 있습니다.

5. 컨테이너 시작하기

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

https://search.example.com을 여십시오. Caddy가 TLS 인증서를 자동으로 발급받은 뒤 브라우저가 사용자 이름 searchuser와 비밀번호를 요청합니다. SearXNG 로그는 다음 명령으로 확인할 수 있습니다.

sudo docker compose logs -f searxng

시작 후 설정할 항목

유용한 소스만 남기고 언어와 SafeSearch 설정을 선택한 다음 OpenSearch를 통해 SearXNG를 브라우저에 추가하십시오. 업데이트는 다음 명령만 실행하면 됩니다.

sudo docker compose pull
sudo docker compose up -d

.env, Caddyfile, searxng 디렉터리를 백업하십시오. JSON API는 필요할 때만 활성화하고, 비밀번호와 요청 빈도 제한 없이 공개하지 마십시오.

흔히 발생하는 실수

실수결과해결 방법
인스턴스를 모든 사람에게 공개함봇이 부하를 만들고 IP가 더 자주 제한됨비밀번호, VPN 또는 통합 로그인을 사용함
너무 많은 소스를 활성화함검색 결과가 느려지고 시간 초과가 발생함안정적인 검색 엔진 몇 개만 남김
SearXNG를 자체 색인으로 생각함외부 시스템에 장애가 발생하면 일부 결과가 사라짐소스에 대한 의존성을 고려함
완전한 익명성을 기대함검색 결과 사이트가 여전히 브라우저를 추적할 수 있음브라우저 보호 기능, VPN 또는 Tor를 사용함
HTTPS 없이 실행함검색 요청과 비밀번호가 안전하지 않게 전송됨TLS를 사용하는 리버스 프록시를 구성함

결론

SearXNG는 여러 소스를 하나의 인터페이스에 통합하고 개인화의 영향을 줄이며 브라우저, 스크립트 또는 로컬 AI에 공통 검색 기능을 제공합니다. 체험만 한다면 공개 인스턴스로 충분합니다. 지속적으로 사용하려면 HTTPS, 인증, limiter, 소수의 안정적인 소스를 갖춘 자체 서버가 더 적합합니다.

1 GB RAM으로 시작할 수 있습니다. 사용자 수가 늘거나 API를 연결하거나 추가 컨테이너를 실행할 때 리소스를 확장하면 됩니다.

FAQ

SearXNG는 완전히 익명인가요?

아닙니다. 외부 검색 엔진으로부터 일부 데이터를 숨기지만 인스턴스 관리자는 로그를 남길 수 있습니다. 사이트를 연 뒤에는 해당 사이트의 자체 추적 수단이 적용됩니다.

SearXNG가 Google보다 더 좋은가요?

해결하는 문제가 다릅니다. Google은 일반적으로 더 빠르고 검색 결과를 더 강하게 개인화합니다. SearXNG는 더 많은 제어권을 제공하고 여러 소스를 결합할 수 있으며 사용자 프로필에 덜 의존합니다.

VPS 없이 SearXNG를 사용할 수 있나요?

네. 공개 인스턴스, 가정용 컴퓨터, NAS 또는 미니 서버를 사용할 수 있습니다. VPS는 어떤 네트워크에서든 24시간 접속할 수 있게 하려는 경우 필요합니다.

RAM은 얼마나 필요한가요?

사용자 1명이라면 1 GB로 시작하는 것이 합리적입니다. 가족, 팀, API 또는 추가 컨테이너에는 2–4 GB가 더 적합합니다.

SearXNG를 브라우저나 AI에 연결할 수 있나요?

네. 브라우저는 OpenSearch를 사용할 수 있고 프로그램은 HTTP API를 사용할 수 있습니다. API 접근은 인증과 limiter로 보호해야 합니다.