Files
bigbrother/presence/install.sh
T
Cobra fd1eeeda47 Fix P1 blockers: configurable port, connection leak, race condition, DB path + WAL
- P1 #551: Add STATUS_PORT env var (default 9191) for configurable HTTP status server port
- P1 #552: Fix SQLite connection leak — wrap all sqlite3.connect() with try/finally in lookup_person(), seed_persons_from_db(), log_signal(), log_presence_change()
- P1 #553: Fix race condition in update_person_state() — compute certainty snapshot under devices_lock, determine state transition under persons_lock, send alert outside locks to prevent stale snapshot
- P2 #559 (included): Add WAL mode + pragmas to init_db() for concurrent write safety
- Database path: Align to /opt/sensor/presence.db in both daemon and install.sh
- Increase connection timeout from 1s to 10s across all functions
- install.sh: Document PRESENCE_STATUS_PORT and PRESENCE_MATRIX_WEBHOOK env vars
2026-04-10 15:49:03 -04:00

51 lines
1.2 KiB
Bash

#!/bin/bash
# Install script for presence daemon
# Deploys sensor.py and service configuration to /opt/sensor/
set -e
echo "Installing presence daemon..."
# Create sensor directory
sudo mkdir -p /opt/sensor
sudo chown $USER:$USER /opt/sensor
# Copy daemon and schema
cp presence_daemon.py /opt/sensor/sensor.py
cp presence_schema.sql /opt/sensor/
chmod +x /opt/sensor/sensor.py
echo "Created /opt/sensor/sensor.py and schema"
# Create systemd service
sudo tee /etc/systemd/system/sensor.service > /dev/null << 'EOF'
[Unit]
Description=Network Sensor
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 /opt/sensor/sensor.py
Restart=on-failure
RestartSec=10
Environment=PRESENCE_DB_PATH=/opt/sensor/presence.db
# Optional: override default status port (9191)
# Environment=PRESENCE_STATUS_PORT=9191
# Optional: configure Matrix webhook for alerts
# Environment=PRESENCE_MATRIX_WEBHOOK=https://matrix.example.com/hook
[Install]
WantedBy=multi-user.target
EOF
echo "Created /etc/systemd/system/sensor.service"
# Reload systemd and enable service
sudo systemctl daemon-reload
sudo systemctl enable sensor
sudo systemctl start sensor
echo "Enabled and started sensor service"
echo "Status:"
sudo systemctl status sensor --no-pager | head -20