이번 포스팅에서는 Firecrawl과 SearXNG를 Contabo 서버에 직접 올려서
AI 프로젝트의 크롤링 및 검색 기능을 자체 호스팅(Self-Hosting) 하는 과정을 정리합니다.
Firecrawl은 웹 페이지의 내용을 크롤링하여 구조화된 데이터를 반환해주는 오픈소스 도구입니다.
유료 API도 제공되지만, 무료로 사용하기 위해 self-hosting이 공식적으로 지원됩니다.
git clone https://github.com/mendableai/firecrawl.git
기존 Backend(FastAPI 등)와 통신하기 위해
공유 네트워크(shared-net)를 만들어줍니다.
docker network create shared-net
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
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
docker compose up --build -d
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
.env 설정Firecrawl API 컨테이너 이름(firecrawl-api-1)을 기반으로 환경변수 추가:
FIRECRAWL_BASE_URL=http://firecrawl-api-1:3002
SearXNG는 다양한 검색 엔진의 결과를 통합하여 보여주는
오픈소스 메타 검색엔진입니다.
Firecrawl과 함께 사용하면, AI 검색 + 웹 요약 기능을 완성할 수 있습니다.
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으로 받을 수 있도록 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
.env 설정SearXNG API 주소를 환경 변수로 추가합니다.
SEARXNG_URL=http://searxng:8080
이제 Contabo 서버에서
✅ Firecrawl → 웹 데이터 수집
✅ SearXNG → 검색 결과 집계
✅ Backend → AI Summarization 연결
까지 완벽히 통합된 AI 데이터 수집·검색 파이프라인이 완성되었습니다.