
iNTERCEPT, 최고의 신호 정보 도구를 단일하고 접근 가능한 인터페이스로 통합하는 무료 오픈 소스 플랫폼.
이 오픈소스 프로젝트의 개발자를 후원해 주세요
신호 정보 플랫폼
소프트웨어 정의 라디오 도구를 위한 웹 기반 인터페이스입니다.
git clone https://github.com/smittix/intercept.git
cd intercept
./setup.sh # Interactive menu (first run launches setup wizard)
sudo ./start.sh
처음 실행할 때 setup.sh는 안내 마법사를 실행하여 운영 체제를 감지하고, 설치 프로필을 선택할 수 있게 하며, Python 환경을 설정하고, 선택적으로 환경 변수와 PostgreSQL을 구성합니다.
이후 실행에서는 대화형 메뉴가 열립니다:
INTERCEPT Setup Menu
════════════════════════════════════════
1) Install / Add Modules
2) System Health Check
3) Database Setup (ADS-B History)
4) Update Tools
5) Environment Configurator
6) Uninstall / Cleanup
7) View Status
0) Exit
프로덕션 vs 개발 서버:
start.sh는 gunicorn + gevent를 자동 감지하여 협력적 그린릿(cooperative greenlet) 기반의 프로덕션 서버를 실행합니다. 이는 블로킹 없이 다수의 SSE/WebSocket 클라이언트를 처리합니다. gunicorn이 설치되어 있지 않으면 Flask 개발 서버로 대체됩니다. 빠른 로컬 개발을 위해서는 여전히sudo -E venv/bin/python intercept.py를 직접 사용할 수 있습니다.
마법사 실행 중 또는 메뉴 옵션 1을 통해 설치할 항목을 선택하세요:
| # | 프로필 | 도구 |
|---|---|---|
| 1 | 핵심 SIGINT | rtl_sdr, multimon-ng, rtl_433, dump1090, acarsdec, dumpvdl2, ffmpeg, gpsd |
| 2 | 해양 & 무선 | AIS-catcher, direwolf |
| 3 | 기상 & 우주 | SatDump, radiosonde_auto_rx |
| 4 | RF 보안 | aircrack-ng, HackRF, BlueZ, hcxtools, Ubertooth, SoapySDR |
| 5 | 전체 SIGINT | 위의 모든 항목 |
| 6 | 사용자 지정 | 도구별 체크리스트 |
여러 프로필을 조합할 수 있습니다 (예: 핵심 + 기상을 위해 1 3 입력).
./setup.sh --non-interactive # Headless full install (same as legacy behavior)
./setup.sh --profile=core,weather # Install specific profiles
./setup.sh --health-check # Check system health and exit
./setup.sh --postgres-setup # Run PostgreSQL setup and exit
./setup.sh --menu # Force interactive menu
git clone https://github.com/smittix/intercept.git
cd intercept
docker compose --profile basic up -d --build
참고: Docker는 USB SDR 액세스를 위해 권한 모드(privileged mode)가 필요합니다. SDR 장치는
/dev/bus/usb를 통해 전달됩니다.
데이터: 설정, 사용자, 경보 규칙, 감시 목록 및 디코딩된 메시지는 호스트의
./instance에 저장되므로--build후에도 유지됩니다. 해당 마운트가 없는 compose 파일에서 업그레이드하는 경우, 재빌드 전에 기존 데이터를 복사하세요:docker cp intercept:/app/instance ./instance.
다중 아키텍처 빌드(라즈베리 파이용 amd64 + arm64)는 build-multiarch.sh를 참조하세요 — 크로스 컴파일과 레지스트리 푸시를 한 단계로 처리합니다.
환경 구성 도구(메뉴 옵션 5)를 사용하여 모든 INTERCEPT_* 변수를 대화형으로 설정할 수 있습니다. 설정은 .env 파일에 저장되며, start.sh가 시작 시 자동으로 이를 소싱합니다.
.env를 직접 생성하거나 편집할 수도 있습니다:
# .env (auto-loaded by start.sh)
INTERCEPT_PORT=5050
INTERCEPT_ADSB_AUTO_START=true
INTERCEPT_DEFAULT_LAT=51.5074
INTERCEPT_DEFAULT_LON=-0.1278
ADS-B 기록 기능은 장기 분석을 위해 항공기 메시지를 PostgreSQL에 영구 저장합니다.
자동 설정 (로컬 설치):
./setup.sh --postgres-setup
# Or use menu option 3: Database Setup
필요한 경우 PostgreSQL을 설치하고, 데이터베이스/사용자/테이블을 생성하며, 연결 설정을 .env에 기록합니다.
Docker:
docker compose --profile history up -d
다음 환경 변수를 설정하세요 (.env 파일에서):
INTERCEPT_ADSB_HISTORY_ENABLED=true
INTERCEPT_ADSB_DB_HOST=adsb_db
INTERCEPT_ADSB_DB_PORT=5432
INTERCEPT_ADSB_DB_NAME=intercept_adsb
INTERCEPT_ADSB_DB_USER=intercept
INTERCEPT_ADSB_DB_PASSWORD=intercept
Postgres 데이터를 외부 스토리지에 저장하려면 PGDATA_PATH를 설정하세요 (기본값은 ./pgdata):
PGDATA_PATH=/mnt/usbpi1/intercept/pgdata
그런 다음 보고 대시보드를 위해 /adsb/history를 엽니다.
설치가 완료되었고 정상적으로 작동하는지 확인하세요:
./setup.sh --health-check
# Or use menu option 2
설치된 도구, SDR 장치, 포트 가용성, 권한, Python venv, .env 구성 및 PostgreSQL 연결을 확인합니다.
시작한 후 브라우저에서 http://localhost:5050 을 엽니다.
기본 비밀번호는 없습니다. 최초 시작 시 INTERCEPT가 admin 계정용 비밀번호를 생성하여 로그에 기록하고 instance/.initial_password에 저장합니다. 해당 비밀번호로 로그인하면 인터페이스가 잠금 해제되기 전에 직접 비밀번호를 설정하라는 요청을 받게 됩니다.
처음부터 직접 비밀번호를 지정하려면 최초 시작 전에 INTERCEPT_ADMIN_PASSWORD를 설정하십시오. 자세한 내용과 이전의 admin/admin 기본값이 대체된 이유는 보안을 참조하십시오.
| 하드웨어 | 용도 | 가격 |
|---|---|---|
| RTL-SDR | 모든 SDR 기능에 필요 | ~$25-35 |
| WiFi 어댑터 | 프로미스큐어스(모니터) 모드를 지원해야 함 | ~$20-40 |
| Bluetooth 어댑터 | 장치 스캔 (보통 내장) | - |
| GPS | Linux에서 지원되는 모든 GPS 장치 | ~10 |
대부분의 기능은 기본 RTL-SDR 동글(RTL2832U + R820T2)로 작동합니다.
| ❗ RTL-SDR 장치를 사용하지 않으십니까? |
|---|
| Intercept는 SoapySDR이 지원하는 모든 장치를 지원합니다. 단, 사용하는 장치에 맞는 올바른 모듈이 설치되어 있어야 합니다! 예를 들어 SDRPlay 장치가 있다면 soapysdr-module-sdrplay를 설치해야 합니다. |
| ❗ GPS 사용 |
|---|
| 실시간 위치 확인에는 gpsd가 필요합니다. Intercept는 지도가 렌더링될 때마다 백그라운드에서 gpsd가 실행 중인지 자동으로 확인합니다. |