#!/bin/bash # shellcheck disable=SC1091 source "${AGENT_PATH}/common.sh" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "${SCRIPT_DIR}/_volumes.sh" source "${SCRIPT_DIR}/_compose.sh" _check_required_env_vars "CONTAINER_NAME" "UPLOAD_LOCATION" "DB_DATA_LOCATION" "DB_PASSWORD" # Set defaults IMMICH_VERSION="${IMMICH_VERSION:-release}" ML_IMAGE_TAG="${ML_IMAGE_TAG:-release}" ML_GPU_ENABLED="${ML_GPU_ENABLED:-false}" WEB_PORT="${WEB_PORT:-2283}" DB_USERNAME="${DB_USERNAME:-postgres}" DB_DATABASE_NAME="${DB_DATABASE_NAME:-immich}" cd "$SCRIPT_DIR" || _die "Failed to change to script directory" # Generate docker-compose.yml from template using sed echo "Generating docker-compose.yml..." sed -e "s|\${CONTAINER_NAME}|${CONTAINER_NAME}|g" \ -e "s|\${UPLOAD_LOCATION}|${UPLOAD_LOCATION}|g" \ -e "s|\${DB_DATA_LOCATION}|${DB_DATA_LOCATION}|g" \ -e "s|\${DB_PASSWORD}|${DB_PASSWORD}|g" \ -e "s|\${DB_USERNAME}|${DB_USERNAME}|g" \ -e "s|\${DB_DATABASE_NAME}|${DB_DATABASE_NAME}|g" \ -e "s|\${WEB_PORT}|${WEB_PORT}|g" \ -e "s|\${IMMICH_VERSION}|${IMMICH_VERSION}|g" \ -e "s|\${ML_IMAGE_TAG}|${ML_IMAGE_TAG}|g" \ docker-compose.yml.template > docker-compose.yml \ || _die "Failed to generate docker-compose.yml" # Add GPU configuration if enabled if [ "$ML_GPU_ENABLED" = "true" ]; then echo "Enabling GPU acceleration..." sed -i 's|#GPU_PLACEHOLDER#| devices:\n - /dev/dri:/dev/dri|' docker-compose.yml else # Remove the placeholder sed -i '/#GPU_PLACEHOLDER#/d' docker-compose.yml fi # Create data directories _create_folder "${UPLOAD_LOCATION}" _create_folder "${DB_DATA_LOCATION}" # Pull images echo "Pulling Immich images..." docker_compose pull || _die "Failed to pull images" # Stop and remove existing containers bash ./stop.sh 2>/dev/null || true # Start services bash ./start.sh || _die "Failed to start containers" echo "Installation complete for ${CONTAINER_NAME}." echo "Web UI available at http://localhost:${WEB_PORT}"