Add arch_install.sh
This commit is contained in:
commit
0f9a7c1d6b
|
|
@ -0,0 +1,123 @@
|
|||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
echo "=== Frigate + SMB installer for Arch Linux ==="
|
||||
|
||||
read -rp "SMB server IP or hostname: " SMB_SERVER
|
||||
read -rp "SMB share name: " SMB_SHARE
|
||||
read -rp "SMB username: " SMB_USER
|
||||
read -rsp "SMB password: " SMB_PASS
|
||||
echo
|
||||
read -rp "Local mount path [/mnt/frigate-recordings]: " MOUNT_PATH
|
||||
MOUNT_PATH=${MOUNT_PATH:-/mnt/frigate-recordings}
|
||||
|
||||
FRIGATE_DIR="/opt/frigate"
|
||||
CRED_FILE="/etc/samba/frigate-smb.cred"
|
||||
|
||||
echo "Installing packages..."
|
||||
sudo pacman -Syu --needed --noconfirm docker docker-compose cifs-utils
|
||||
|
||||
echo "Enabling Docker..."
|
||||
sudo systemctl enable --now docker
|
||||
|
||||
echo "Creating directories..."
|
||||
sudo mkdir -p "$MOUNT_PATH"
|
||||
sudo mkdir -p "$FRIGATE_DIR/config"
|
||||
sudo mkdir -p /etc/samba
|
||||
|
||||
echo "Creating SMB credentials file..."
|
||||
sudo tee "$CRED_FILE" >/dev/null <<EOF
|
||||
username=$SMB_USER
|
||||
password=$SMB_PASS
|
||||
EOF
|
||||
|
||||
sudo chmod 600 "$CRED_FILE"
|
||||
|
||||
echo "Adding SMB mount to /etc/fstab..."
|
||||
FSTAB_LINE="//$SMB_SERVER/$SMB_SHARE $MOUNT_PATH cifs credentials=$CRED_FILE,uid=1000,gid=1000,file_mode=0664,dir_mode=0775,iocharset=utf8,nofail,_netdev,x-systemd.automount 0 0"
|
||||
|
||||
if ! grep -q "//$SMB_SERVER/$SMB_SHARE" /etc/fstab; then
|
||||
echo "$FSTAB_LINE" | sudo tee -a /etc/fstab >/dev/null
|
||||
fi
|
||||
|
||||
echo "Mounting SMB share..."
|
||||
sudo systemctl daemon-reload
|
||||
sudo mount "$MOUNT_PATH" || true
|
||||
|
||||
echo "Testing SMB write access..."
|
||||
sudo mkdir -p "$MOUNT_PATH/frigate"
|
||||
sudo touch "$MOUNT_PATH/frigate/test-write.txt"
|
||||
sudo rm -f "$MOUNT_PATH/frigate/test-write.txt"
|
||||
|
||||
echo "Creating Frigate docker-compose.yml..."
|
||||
sudo tee "$FRIGATE_DIR/docker-compose.yml" >/dev/null <<EOF
|
||||
services:
|
||||
frigate:
|
||||
container_name: frigate
|
||||
image: ghcr.io/blakeblackshear/frigate:stable
|
||||
restart: unless-stopped
|
||||
stop_grace_period: 30s
|
||||
shm_size: "512mb"
|
||||
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- $FRIGATE_DIR/config:/config
|
||||
- $MOUNT_PATH/frigate:/media/frigate
|
||||
- type: tmpfs
|
||||
target: /tmp/cache
|
||||
tmpfs:
|
||||
size: 1000000000
|
||||
|
||||
ports:
|
||||
- "8971:8971"
|
||||
- "8554:8554"
|
||||
- "8555:8555/tcp"
|
||||
- "8555:8555/udp"
|
||||
|
||||
environment:
|
||||
FRIGATE_RTSP_PASSWORD: "change_this_password"
|
||||
EOF
|
||||
|
||||
echo "Creating starter Frigate config..."
|
||||
sudo tee "$FRIGATE_DIR/config/config.yml" >/dev/null <<EOF
|
||||
mqtt:
|
||||
enabled: false
|
||||
|
||||
record:
|
||||
enabled: true
|
||||
retain:
|
||||
days: 7
|
||||
mode: all
|
||||
|
||||
snapshots:
|
||||
enabled: true
|
||||
retain:
|
||||
default: 14
|
||||
|
||||
storage:
|
||||
max_usage_percent: 90
|
||||
|
||||
cameras:
|
||||
test_camera:
|
||||
enabled: false
|
||||
ffmpeg:
|
||||
inputs:
|
||||
- path: rtsp://USER:PASS@CAMERA_IP:554/stream1
|
||||
roles:
|
||||
- detect
|
||||
- record
|
||||
detect:
|
||||
width: 1920
|
||||
height: 1080
|
||||
fps: 5
|
||||
EOF
|
||||
|
||||
echo "Starting Frigate..."
|
||||
cd "$FRIGATE_DIR"
|
||||
sudo docker compose up -d
|
||||
|
||||
echo
|
||||
echo "Done."
|
||||
echo "Open Frigate at: http://SERVER_IP:8971"
|
||||
echo "Config file: $FRIGATE_DIR/config/config.yml"
|
||||
echo "Recordings path: $MOUNT_PATH/frigate"
|
||||
Loading…
Reference in New Issue