First Commit
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
[Unit]
|
||||
Description=Frigate Object Batch Counter Service
|
||||
Documentation=https://github.com/your-repo/frigate-counter
|
||||
After=network-online.target mosquitto.service
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=frigate-counter
|
||||
Group=frigate-counter
|
||||
|
||||
# Working directory where state file and DB live
|
||||
WorkingDirectory=/opt/frigate-counter
|
||||
|
||||
# Path to your Python virtual environment
|
||||
Environment="PYTHONPATH=/opt/frigate-counter"
|
||||
Environment="PATH=/opt/frigate-counter/venv/bin:/usr/local/bin:/usr/bin:/bin"
|
||||
Environment="CAMERA_NAME=cam_gudang_utara"
|
||||
Environment="OBJECT_LABEL=ayam-potong"
|
||||
Environment="FRIGATE_MQTT_HOST=192.168.1.10"
|
||||
Environment="FRIGATE_MQTT_PORT=1883"
|
||||
Environment="FRIGATE_MQTT_USER="
|
||||
Environment="FRIGATE_MQTT_PASS="
|
||||
Environment="FRIGATE_MQTT_TOPIC=frigate/events"
|
||||
Environment="BATCH_TIMEOUT_SECONDS=60"
|
||||
Environment="DAILY_CUTOFF_TIME=17:00"
|
||||
Environment="DB_PATH=/opt/frigate-counter/frigate_counter.db"
|
||||
Environment="STATE_FILE=/opt/frigate-counter/current_batch.json"
|
||||
Environment="LOG_LEVEL=INFO"
|
||||
|
||||
# Or use an EnvironmentFile instead of inline variables:
|
||||
# EnvironmentFile=/opt/frigate-counter/.env
|
||||
|
||||
ExecStart=/opt/frigate-counter/venv/bin/python /opt/frigate-counter/counter_service.py
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
|
||||
# Graceful shutdown: give the service time to persist the batch to DB
|
||||
TimeoutStopSec=30
|
||||
KillSignal=SIGTERM
|
||||
|
||||
# Restart policy
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
StartLimitInterval=60s
|
||||
StartLimitBurst=3
|
||||
|
||||
# Security hardening (optional but recommended)
|
||||
NoNewPrivileges=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
ReadWritePaths=/opt/frigate-counter
|
||||
PrivateTmp=true
|
||||
ProtectKernelTunables=true
|
||||
ProtectKernelModules=true
|
||||
ProtectControlGroups=true
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
Reference in New Issue
Block a user