feat: setup.sh asks for storage path, creates directory, injects into config
This commit is contained in:
parent
7a4c97e760
commit
b5dcbe9c56
1 changed files with 26 additions and 8 deletions
34
setup.sh
34
setup.sh
|
|
@ -143,8 +143,24 @@ log "Local time: $(date)"
|
||||||
TZ=$(timedatectl show --property=Timezone --value 2>/dev/null || cat /etc/timezone 2>/dev/null || echo "unknown")
|
TZ=$(timedatectl show --property=Timezone --value 2>/dev/null || cat /etc/timezone 2>/dev/null || echo "unknown")
|
||||||
log "Timezone: ${TZ}"
|
log "Timezone: ${TZ}"
|
||||||
|
|
||||||
|
# ── 1c. Storage path ──
|
||||||
|
echo ""
|
||||||
|
log "Step 1c/7: Where should recordings be stored?"
|
||||||
|
info " This is where video clips and snapshots will be saved."
|
||||||
|
info " Examples: /mnt/recordings, /home/user/nvr, /media/usb-drive"
|
||||||
|
echo ""
|
||||||
|
read -p " Storage path [/mnt/recordings]: " STORAGE_PATH
|
||||||
|
STORAGE_PATH="${STORAGE_PATH:-/mnt/recordings}"
|
||||||
|
# Strip trailing slash.
|
||||||
|
STORAGE_PATH="${STORAGE_PATH%/}"
|
||||||
|
|
||||||
|
info "Creating ${STORAGE_PATH}..."
|
||||||
|
sudo mkdir -p "${STORAGE_PATH}"
|
||||||
|
sudo chown "$(whoami):$(id -gn)" "${STORAGE_PATH}"
|
||||||
|
log "Storage: ${STORAGE_PATH}"
|
||||||
|
|
||||||
# ── 2. Install Go (portable — no distro packages) ──
|
# ── 2. Install Go (portable — no distro packages) ──
|
||||||
log "Step 2/6: Setting up Go ${GO_VERSION}..."
|
log "Step 2/7: Setting up Go ${GO_VERSION}..."
|
||||||
|
|
||||||
GO_TAR="go${GO_VERSION}.linux-${GO_ARCH}.tar.gz"
|
GO_TAR="go${GO_VERSION}.linux-${GO_ARCH}.tar.gz"
|
||||||
GO_URL="https://go.dev/dl/${GO_TAR}"
|
GO_URL="https://go.dev/dl/${GO_TAR}"
|
||||||
|
|
@ -166,7 +182,7 @@ export GOPATH="$HOME/go"
|
||||||
export GOCACHE="$HOME/.cache/go-build"
|
export GOCACHE="$HOME/.cache/go-build"
|
||||||
|
|
||||||
# ── 3. Clone or update repository ──
|
# ── 3. Clone or update repository ──
|
||||||
log "Step 3/6: Fetching NextNVR source..."
|
log "Step 4/7: Fetching NextNVR source..."
|
||||||
|
|
||||||
if [ -d "${DEPLOY_DIR}/.git" ]; then
|
if [ -d "${DEPLOY_DIR}/.git" ]; then
|
||||||
info "Repository exists, pulling latest..."
|
info "Repository exists, pulling latest..."
|
||||||
|
|
@ -183,7 +199,7 @@ fi
|
||||||
cd "${DEPLOY_DIR}"
|
cd "${DEPLOY_DIR}"
|
||||||
|
|
||||||
# ── 4. Build ──
|
# ── 4. Build ──
|
||||||
log "Step 4/6: Building NextNVR binary..."
|
log "Step 5/7: Building NextNVR binary..."
|
||||||
|
|
||||||
go mod tidy
|
go mod tidy
|
||||||
|
|
||||||
|
|
@ -198,21 +214,23 @@ chmod +x nextnvr
|
||||||
log "Binary built: nextnvr v${VERSION} ($(du -h nextnvr | cut -f1))"
|
log "Binary built: nextnvr v${VERSION} ($(du -h nextnvr | cut -f1))"
|
||||||
|
|
||||||
# ── 5. Configuration & directories ──
|
# ── 5. Configuration & directories ──
|
||||||
log "Step 5/6: Configuration..."
|
log "Step 6/7: Configuration..."
|
||||||
|
|
||||||
if [ ! -f "${DEPLOY_DIR}/config.yaml" ]; then
|
if [ ! -f "${DEPLOY_DIR}/config.yaml" ]; then
|
||||||
cp config.yaml "${DEPLOY_DIR}/config.yaml"
|
cp config.yaml "${DEPLOY_DIR}/config.yaml"
|
||||||
log "Default config.yaml created."
|
# Inject the user's storage path into the config.
|
||||||
|
sed -i "s|recordings_path:.*|recordings_path: \"${STORAGE_PATH}\"|" "${DEPLOY_DIR}/config.yaml"
|
||||||
|
log "Default config.yaml created with storage path: ${STORAGE_PATH}"
|
||||||
info "Edit it to match your cameras: nano ${DEPLOY_DIR}/config.yaml"
|
info "Edit it to match your cameras: nano ${DEPLOY_DIR}/config.yaml"
|
||||||
else
|
else
|
||||||
log "config.yaml already exists — preserved."
|
log "config.yaml already exists — preserved."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo mkdir -p /mnt/recordings 2>/dev/null || mkdir -p /mnt/recordings
|
sudo mkdir -p "${STORAGE_PATH}" 2>/dev/null || mkdir -p "${STORAGE_PATH}"
|
||||||
sudo chown "$(whoami):$(id -gn)" /mnt/recordings 2>/dev/null || true
|
sudo chown "$(whoami):$(id -gn)" "${STORAGE_PATH}" 2>/dev/null || true
|
||||||
|
|
||||||
# ── 6. Install service ──
|
# ── 6. Install service ──
|
||||||
log "Step 6/6: Service installation..."
|
log "Step 7/7: Service installation..."
|
||||||
|
|
||||||
RUN_USER="$(whoami)"
|
RUN_USER="$(whoami)"
|
||||||
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue