#!/usr/bin/env bash # Первичная подготовка сервера: каталоги данных, общий корень библиотеки с mount propagation, .env с секретами. # Запуск: sudo ./install.sh (повторный запуск безопасен) set -euo pipefail cd "$(dirname "$0")" DATA="${PIPU_DATA:-/srv/pipu}" echo "→ каталоги в $DATA" mkdir -p "$DATA"/{library,library-host,cache/transcode,cache/covers,postgres,meili,redis,models,updates,uploads,backups} # storage-agent монтирует NFS внутрь $DATA/library; чтобы точки монтирования видели другие контейнеры, # каталог должен быть отдельной точкой монтирования с shared propagation. if ! findmnt -n "$DATA/library" >/dev/null 2>&1; then echo "→ bind-mount $DATA/library (rshared)" mount --bind "$DATA/library" "$DATA/library" fi mount --make-rshared "$DATA/library" UNIT=/etc/systemd/system/pipu-library-mount.service if [ -d /etc/systemd/system ] && [ ! -f "$UNIT" ]; then echo "→ systemd-юнит $UNIT (повторяет bind-mount после перезагрузки)" cat > "$UNIT" <