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.