97 lines
2.2 KiB
Bash
97 lines
2.2 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ensure_root
|
|
detect_pkg_manager
|
|
pkg_install curl
|
|
|
|
BASE="/srv/docker/services/frigate"
|
|
$SUDO mkdir -p "$BASE/config"
|
|
$SUDO mkdir -p "$BASE/media"
|
|
cd "$BASE"
|
|
|
|
echo ""
|
|
echo "Möchtest du Coral TPU verwenden?"
|
|
echo " y = USB / PCIe TPU einbinden"
|
|
echo " n = ohne TPU (CPU Only)"
|
|
read -p "Auswahl (y/n): " TPU
|
|
|
|
TPU_CONFIG=""
|
|
if [[ "$TPU" == "y" || "$TPU" == "Y" ]]; then
|
|
TPU_CONFIG=" devices:
|
|
- /dev/apex_0:/dev/apex_0
|
|
- /dev/bus/usb:/dev/bus/usb"
|
|
echo "Coral TPU-Unterstützung aktiviert."
|
|
else
|
|
echo "Installiere ohne TPU."
|
|
fi
|
|
|
|
echo ""
|
|
read -p "Soll direkt eine Kamera eingetragen werden? (y/n): " ADD_CAM
|
|
|
|
CAMERA_CONFIG=""
|
|
if [[ "$ADD_CAM" == "y" || "$ADD_CAM" == "Y" ]]; then
|
|
read -p "Name der Kamera (z.B. wohnzimmer): " CAM_NAME
|
|
read -p "RTSP URL (z.B. rtsp://user:pass@192.168.x.x/stream): " CAM_URL
|
|
|
|
CAMERA_CONFIG="cameras:
|
|
$CAM_NAME:
|
|
ffmpeg:
|
|
inputs:
|
|
- path: \"$CAM_URL\"
|
|
input_args: preset-rtsp-restream"
|
|
else
|
|
CAMERA_CONFIG="cameras: {}"
|
|
fi
|
|
|
|
$SUDO tee "$BASE/config/config.yml" >/dev/null <<EOF
|
|
mqtt:
|
|
enabled: false
|
|
|
|
${CAMERA_CONFIG}
|
|
EOF
|
|
|
|
$SUDO tee "$BASE/docker-compose.yml" >/dev/null <<EOF
|
|
services:
|
|
frigate:
|
|
image: ghcr.io/blakeblackshear/frigate:stable
|
|
container_name: frigate
|
|
privileged: true
|
|
restart: unless-stopped
|
|
shm_size: "64m"
|
|
volumes:
|
|
- ./config:/config
|
|
- ./media:/media/frigate
|
|
- /dev/bus/usb:/dev/bus/usb
|
|
- /etc/localtime:/etc/localtime:ro
|
|
${TPU_CONFIG}
|
|
ports:
|
|
- "5000:5000"
|
|
- "8554:8554"
|
|
- "8555:8555/tcp"
|
|
- "8555:8555/udp"
|
|
EOF
|
|
|
|
$SUDO docker compose up -d
|
|
|
|
log "Frigate wurde installiert."
|
|
log "Web UI: http://<server-ip>:5000"
|
|
log "Konfiguration: $BASE/config/config.yml"
|
|
|
|
echo ""
|
|
read -p "Soll NGINX Proxy für Frigate eingerichtet werden? (y/n): " PROXY
|
|
|
|
if [[ "$PROXY" == "y" || "$PROXY" == "Y" ]]; then
|
|
PROXY_SCRIPT="/srv/docker/system/nginx-proxy-path/install.sh"
|
|
|
|
if [ ! -f "$PROXY_SCRIPT" ]; then
|
|
log "Fehler: nginx-proxy-path nicht installiert."
|
|
log "Bitte erst das Rezept 'nginx-proxy-path' installieren."
|
|
exit 0
|
|
fi
|
|
|
|
echo ""
|
|
echo "Starte Proxy-Konfiguration:"
|
|
bash "$PROXY_SCRIPT"
|
|
fi
|