104 lines
4.2 KiB
Bash
104 lines
4.2 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
cd "$ROOT"
|
|
|
|
if [ -f .env ]; then
|
|
set -a
|
|
# shellcheck disable=SC1091
|
|
. ./.env
|
|
set +a
|
|
fi
|
|
|
|
GEOINTEL_FRONTEND_PORT="${GEOINTEL_FRONTEND_PORT:-1202}"
|
|
GEOINTEL_STORAGE_PATH="${GEOINTEL_STORAGE_PATH:-/mnt/user/appdata/geointel/storage}"
|
|
GEOINTEL_MODELS_PATH="${GEOINTEL_MODELS_PATH:-/mnt/user/appdata/geointel/models}"
|
|
GEOINTEL_POSTGIS_DATA_PATH="${GEOINTEL_POSTGIS_DATA_PATH:-/mnt/user/appdata/geointel/postgres-data}"
|
|
GEOINTEL_POSTGRES_DB="${GEOINTEL_POSTGRES_DB:-geointel}"
|
|
GEOINTEL_POSTGRES_USER="${GEOINTEL_POSTGRES_USER:-geointel}"
|
|
GEOINTEL_POSTGRES_PASSWORD="${GEOINTEL_POSTGRES_PASSWORD:-geointel}"
|
|
GEOINTEL_CORS_ORIGINS="${GEOINTEL_CORS_ORIGINS:-http://localhost:${GEOINTEL_FRONTEND_PORT},http://127.0.0.1:${GEOINTEL_FRONTEND_PORT},http://192.168.10.150:${GEOINTEL_FRONTEND_PORT}}"
|
|
GEOINTEL_MAX_UPLOAD_MB="${GEOINTEL_MAX_UPLOAD_MB:-500}"
|
|
YOLO_ENABLED="${YOLO_ENABLED:-false}"
|
|
YOLO_MODELS_DIR="${YOLO_MODELS_DIR:-/app/models}"
|
|
YOLO_MODEL_PATH="${YOLO_MODEL_PATH:-}"
|
|
YOLO_MODEL_ID="${YOLO_MODEL_ID:-yolo-configured}"
|
|
YOLO_MODEL_DISPLAY_NAME="${YOLO_MODEL_DISPLAY_NAME:-Configured YOLO detector}"
|
|
YOLO_MODEL_VERSION="${YOLO_MODEL_VERSION:-}"
|
|
YOLO_CONFIG_DIR="${YOLO_CONFIG_DIR:-/app/storage/ultralytics}"
|
|
YOLO_DEVICE="${YOLO_DEVICE:-cpu}"
|
|
YOLO_IMAGE_SIZE="${YOLO_IMAGE_SIZE:-640}"
|
|
YOLO_MAX_TILES="${YOLO_MAX_TILES:-100}"
|
|
YOLO_MAX_DETECTIONS="${YOLO_MAX_DETECTIONS:-1000}"
|
|
YOLO_DUPLICATE_IOU_THRESHOLD="${YOLO_DUPLICATE_IOU_THRESHOLD:-0.5}"
|
|
YOLO_BATCH_SIZE="${YOLO_BATCH_SIZE:-1}"
|
|
|
|
install_dockerman_metadata() {
|
|
if [ -d /boot/config/plugins/dockerMan ]; then
|
|
mkdir -p /boot/config/plugins/dockerMan/templates-user /boot/config/plugins/dockerMan/images
|
|
cp deploy/unraid/geointel-unraid-template.xml /boot/config/plugins/dockerMan/templates-user/my-geointel.xml
|
|
cp deploy/unraid/geointel-icon.png /boot/config/plugins/dockerMan/images/geointel-icon.png
|
|
fi
|
|
}
|
|
|
|
migrate_compose_volume_if_needed() {
|
|
if [ -f "${GEOINTEL_POSTGIS_DATA_PATH}/PG_VERSION" ]; then
|
|
return 0
|
|
fi
|
|
|
|
local compose_volume_path
|
|
compose_volume_path="$(docker volume inspect geointel_geointel_postgis --format '{{ .Mountpoint }}' 2>/dev/null || true)"
|
|
if [ -z "$compose_volume_path" ] || [ ! -f "${compose_volume_path}/PG_VERSION" ]; then
|
|
return 0
|
|
fi
|
|
|
|
echo "Migrating existing Compose PostGIS volume to ${GEOINTEL_POSTGIS_DATA_PATH}..."
|
|
mkdir -p "$GEOINTEL_POSTGIS_DATA_PATH"
|
|
cp -a "${compose_volume_path}/." "$GEOINTEL_POSTGIS_DATA_PATH/"
|
|
}
|
|
|
|
install_dockerman_metadata
|
|
|
|
docker compose down --remove-orphans || true
|
|
|
|
if docker ps -a --format '{{.Names}}' | grep -qx geointel; then
|
|
docker rm -f geointel
|
|
fi
|
|
|
|
mkdir -p "$GEOINTEL_STORAGE_PATH" "$GEOINTEL_MODELS_PATH" "$GEOINTEL_POSTGIS_DATA_PATH"
|
|
migrate_compose_volume_if_needed
|
|
|
|
docker run -d \
|
|
--name geointel \
|
|
--restart unless-stopped \
|
|
--label net.unraid.docker.managed=dockerman \
|
|
--label 'net.unraid.docker.webui=http://[IP]:[PORT:80]/' \
|
|
--label net.unraid.docker.icon=/boot/config/plugins/dockerMan/images/geointel-icon.png \
|
|
-p "${GEOINTEL_FRONTEND_PORT}:80" \
|
|
-e GEOINTEL_POSTGRES_DB="$GEOINTEL_POSTGRES_DB" \
|
|
-e GEOINTEL_POSTGRES_USER="$GEOINTEL_POSTGRES_USER" \
|
|
-e GEOINTEL_POSTGRES_PASSWORD="$GEOINTEL_POSTGRES_PASSWORD" \
|
|
-e GEOINTEL_STORAGE_ROOT=/app/storage \
|
|
-e GEOINTEL_CORS_ORIGINS="$GEOINTEL_CORS_ORIGINS" \
|
|
-e GEOINTEL_MAX_UPLOAD_MB="$GEOINTEL_MAX_UPLOAD_MB" \
|
|
-e YOLO_ENABLED="$YOLO_ENABLED" \
|
|
-e YOLO_MODELS_DIR="$YOLO_MODELS_DIR" \
|
|
-e YOLO_MODEL_PATH="$YOLO_MODEL_PATH" \
|
|
-e YOLO_MODEL_ID="$YOLO_MODEL_ID" \
|
|
-e YOLO_MODEL_DISPLAY_NAME="$YOLO_MODEL_DISPLAY_NAME" \
|
|
-e YOLO_MODEL_VERSION="$YOLO_MODEL_VERSION" \
|
|
-e YOLO_CONFIG_DIR="$YOLO_CONFIG_DIR" \
|
|
-e YOLO_DEVICE="$YOLO_DEVICE" \
|
|
-e YOLO_IMAGE_SIZE="$YOLO_IMAGE_SIZE" \
|
|
-e YOLO_MAX_TILES="$YOLO_MAX_TILES" \
|
|
-e YOLO_MAX_DETECTIONS="$YOLO_MAX_DETECTIONS" \
|
|
-e YOLO_DUPLICATE_IOU_THRESHOLD="$YOLO_DUPLICATE_IOU_THRESHOLD" \
|
|
-e YOLO_BATCH_SIZE="$YOLO_BATCH_SIZE" \
|
|
-v "${GEOINTEL_POSTGIS_DATA_PATH}:/var/lib/postgresql/data" \
|
|
-v "${GEOINTEL_STORAGE_PATH}:/app/storage" \
|
|
-v "${GEOINTEL_MODELS_PATH}:/app/models" \
|
|
geointel-all-in-one:latest
|
|
|
|
docker ps --filter name=geointel
|