osint-dashboard/deploy
Sirius DevOps 5212aaa5cd feat(sentinel1): Sentinel-1 SAR STAC -> self-hosted TiTiler tile template
Add GET /api/map/sentinel1?bbox=... which queries Planetary Computer STAC
(sentinel-1-grd, last 7d, most recent), signs the vv/hh COG with a SAS token,
and returns a same-origin /titiler/... XYZ tile template. Cache keyed on
quantized bbox + UTC day (20 min TTL). 429 -> 429 (Retry-After), no imagery
-> 404, other upstream errors -> 502.

Self-host TiTiler on the Pi (ghcr.io/developmentseed/titiler, arm64, 1G cap,
host loopback 8001 -> container 8000) instead of titiler.xyz. nginx
/titiler/ proxy snippet routes browser tiles to it; TITILER_PUBLIC_BASE and
TITILER_INTERNAL_URL are env-driven (no hardcoded hostnames).
2026-08-29 01:01:20 -04:00
..
masscan-excludes.txt masscan: active RTSP (554) camera discovery service 2026-08-24 22:23:36 -04:00
osint-masscan.service masscan: active RTSP (554) camera discovery service 2026-08-24 22:23:36 -04:00
osint-titiler.nginx.conf feat(sentinel1): Sentinel-1 SAR STAC -> self-hosted TiTiler tile template 2026-08-29 01:01:20 -04:00
osint-ws.nginx.conf fix: pipeline reliability — WS, summarizer, ingest, health 2026-08-28 21:49:05 -04:00
README.md masscan: drop default rate to 1000 pps (home uplink) 2026-08-24 23:22:03 -04:00

systemd unit template — copy to /etc/systemd/system/osint-masscan.service

The masscan service is a CONTINUOUS rolling sweep (a full IPv4 pass at a

conservative rate takes ~5 days), so it runs as a long-lived service, NOT a

daily timer. The [Install] WantedBy means it starts at boot and Restart=always

keeps it up. Install steps (run once on the Pi, as root):

apt install -y masscan # or: apt-get install masscan

mkdir -p /etc/osint-dashboard /opt/siriusdevops

cp deploy/masscan-excludes.txt /etc/osint-dashboard/masscan-excludes.txt

# Optional tuning (override env in this file; the DB_* values in the unit

# already point at the host-published Postgres on 127.0.0.1:5432):

cat > /etc/osint-dashboard/masscan.env <<'EOF'

MASSCAN_RANGE=0.0.0.0/0

MASSCAN_PORTS=554

MASSCAN_RATE=1000

EOF

# Venv for the scanner (host-level, not the compose image):

cd /opt/siriusdevops/osint-dashboard

python3 -m venv .venv-masscan

.venv-masscan/bin/pip install -r app/requirements.txt

install -m 644 deploy/osint-masscan.service /etc/systemd/system/

systemctl daemon-reload

systemctl enable --now osint-masscan

Watch: journalctl -u osint-masscan -f

DB: writes into the same Postgres the compose stack uses (127.0.0.1:5432)

so findings appear on the dashboard camera map automatically.