Contabo 서버 운영 (3) — Firecrawl & SearXNG Self-Hosting

INNOPER·2025년 3월 16일

이번 포스팅에서는 FirecrawlSearXNG를 Contabo 서버에 직접 올려서
AI 프로젝트의 크롤링 및 검색 기능을 자체 호스팅(Self-Hosting) 하는 과정을 정리합니다.


7️⃣ Firecrawl Self-Hosting & Docker Network 구성 🕸️

Firecrawl은 웹 페이지의 내용을 크롤링하여 구조화된 데이터를 반환해주는 오픈소스 도구입니다.
유료 API도 제공되지만, 무료로 사용하기 위해 self-hosting이 공식적으로 지원됩니다.


🧩 Firecrawl 클론

git clone https://github.com/mendableai/firecrawl.git

🌐 Backend와 연결할 공통 네트워크 생성

기존 Backend(FastAPI 등)와 통신하기 위해
공유 네트워크(shared-net)를 만들어줍니다.

docker network create shared-net

⚙️ Backend의 docker-compose.yml 수정

taeri-api 서비스가 Firecrawl과 같은 네트워크를 사용하도록 설정합니다.

services:
  taeri-api:
    container_name: taeri-api
    build: .
    ports:
      - "8000:8000"
    env_file:
      - .env
    environment:
      - PYTHONPATH=/app
    restart: unless-stopped
    # 추가
    networks:
      - shared-net

# 추가
networks:
  shared-net:
    external: true

🧱 Firecrawl의 docker-compose.yml 수정

Firecrawl의 각 서비스(playwright-service, api, worker, redis)에도
공통 네트워크(shared-net)를 추가합니다.

...
  playwright-service:
    ...
    networks:
      - backend
      - shared-net

  api:
    ...
    networks:
      - backend
      - shared-net

  worker:
    ...
    networks:
      - backend
      - shared-net

  redis:
    ...
    networks:
      - backend
      - shared-net
      
 ...
 
 networks:
  backend:
    driver: bridge

  shared-net:
    external: true

🚀 Firecrawl 빌드 및 실행

docker compose up --build -d

🔍 Firecrawl 컨테이너 확인

docker ps

예시 출력:

CONTAINER ID   IMAGE                          COMMAND                   CREATED          STATUS          PORTS                              NAMES
2c7f841f7c2e   firecrawl-worker               "/bin/sh -c \\"/app/do…"   6 minutes ago    Up 6 minutes    8080/tcp                           firecrawl-worker-1
48af73d5cdb4   firecrawl-api                  "/bin/sh -c \\"/app/do…"   6 minutes ago    Up 6 minutes    0.0.0.0:3002->3002/tcp, 8080/tcp   firecrawl-api-1
25cb0d3850e1   firecrawl-playwright-service   "docker-entrypoint.s…"    6 minutes ago    Up 6 minutes                                       firecrawl-playwright-service-1
75f04b84bb14   redis:alpine                   "docker-entrypoint.s…"    6 minutes ago    Up 6 minutes    6379/tcp                           firecrawl-redis-1
00ff2489a062   taeri_api-taeri-api            "uvicorn main:app --…"    27 minutes ago   Up 27 minutes   0.0.0.0:8000->8000/tcp             taeri-api
b0090c4d3de5   nginx:latest                   "/docker-entrypoint.…"    7 weeks ago      Up 6 weeks      0.0.0.0:80->80/tcp                 nginx

⚙️ Backend .env 설정

Firecrawl API 컨테이너 이름(firecrawl-api-1)을 기반으로 환경변수 추가:

FIRECRAWL_BASE_URL=http://firecrawl-api-1:3002

8️⃣ SearXNG Self-Hosting 🔍

SearXNG는 다양한 검색 엔진의 결과를 통합하여 보여주는
오픈소스 메타 검색엔진입니다.
Firecrawl과 함께 사용하면, AI 검색 + 웹 요약 기능을 완성할 수 있습니다.


🧩 SearXNG 클론

git clone https://github.com/searxng/searxng-docker.git

⚙️ settings.yml 수정

nano /searxng-docker/searxng/settings.yml
🔑 secret_key 수정

openssl rand -hex 32 명령으로 무작위 키를 생성한 후 삽입합니다.

server:
  ...
  secret_key: "505491abb3d83622d78de721c5b8856ef467b3e6e5458ef8526f7bb5d31928b2"  # change this!

📡 JSON API 활성화

검색 결과를 JSON으로 받을 수 있도록 search 섹션을 추가합니다.

search:
  formats:
    - html
    - json

🧱 docker-compose.yml 수정

공통 네트워크(shared-net) 추가 및 포트 수정

  searxng:
    container_name: searxng
    image: docker.io/searxng/searxng:latest
    restart: unless-stopped
    networks:
      - searxng
      # 추가
      - shared-net
    ports:
      # 수정: 내부/외부 컨테이너 접근 가능하게
      - "8080:8080"
      
  networks:
    searxng:
    # 추가
    shared-net:
      external: true

⚙️ Backend .env 설정

SearXNG API 주소를 환경 변수로 추가합니다.

SEARXNG_URL=http://searxng:8080

🧭 마무리

이제 Contabo 서버에서
✅ Firecrawl → 웹 데이터 수집
✅ SearXNG → 검색 결과 집계
✅ Backend → AI Summarization 연결

까지 완벽히 통합된 AI 데이터 수집·검색 파이프라인이 완성되었습니다.

profile
FE 개발자 INNOPER 입니다

0개의 댓글