diff --git a/docs/docs/guides/remote-machine-learning.md b/docs/docs/guides/remote-machine-learning.md
index 087f9aab76..a5dbf5498d 100644
--- a/docs/docs/guides/remote-machine-learning.md
+++ b/docs/docs/guides/remote-machine-learning.md
@@ -4,7 +4,7 @@ To alleviate [performance issues on low-memory systems](/docs/FAQ.mdx#why-is-imm
 
 - Set the URL in Machine Learning Settings on the Admin Settings page to point to the designated ML system, e.g. `http://workstation:3003`.
 - Copy the following `docker-compose.yml` to your ML system.
-- Start the container by running `docker-compose up -d` or `docker compose up -d` (depending on your Docker version).
+- Start the container by running `docker compose up -d`.
 
 :::note Info
 Starting with version v1.93.0 face detection work and face recognize were split. From now on face detection is done in the immich_machine_learning service, but facial recognition is done in the immich_microservices service.
diff --git a/docs/docs/install/requirements.md b/docs/docs/install/requirements.md
index f56e5c10bc..b611d04f2c 100644
--- a/docs/docs/install/requirements.md
+++ b/docs/docs/install/requirements.md
@@ -11,6 +11,10 @@ Hardware and software requirements for Immich
 - [Docker](https://docs.docker.com/get-docker/)
 - [Docker Compose](https://docs.docker.com/compose/install/)
 
+:::note
+Immich requires the command `docker compose` - the similarly named `docker-compose` is [deprecated](https://docs.docker.com/compose/migrate/) and is no longer compatible with Immich.
+:::
+
 :::info Podman
 You can also use Podman to run the application. However, additional configuration might be required.
 :::
diff --git a/docs/docs/install/script.md b/docs/docs/install/script.md
index 0b097e4c79..3c3060e4d6 100644
--- a/docs/docs/install/script.md
+++ b/docs/docs/install/script.md
@@ -17,12 +17,11 @@ curl -o- https://raw.githubusercontent.com/immich-app/immich/main/install.sh | b
 The script will perform the following actions:
 
 1. Download [docker-compose.yml](https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml), and the [.env](https://github.com/immich-app/immich/releases/latest/download/example.env) file from the main branch of the [repository](https://github.com/immich-app/immich).
-2. Populate the `.env` file with necessary information based on the current directory path.
-3. Start the containers.
+2. Start the containers.
 
 The web application will be available at `http://<machine-ip-address>:2283`, and the server URL for the mobile app will be `http://<machine-ip-address>:2283/api`
 
-The directory which is used to store the library files is `./immich-data` relative to the current directory.
+The directory which is used to store the library files is `./immich-app` relative to the current directory.
 
 :::tip
 For common next steps, see [Post Install Steps](/docs/install/post-install.mdx).
diff --git a/install.sh b/install.sh
index 232ee1597e..92d9c1b8be 100755
--- a/install.sh
+++ b/install.sh
@@ -1,62 +1,78 @@
 #!/usr/bin/env bash
+set -o nounset
+set -o pipefail
 
-echo "Starting Immich installation..."
-
-ip_address=$(hostname -I | awk '{print $1}')
-
-create_immich_directory() {
+create_immich_directory() { local -r Tgt='./immich-app'
   echo "Creating Immich directory..."
-  mkdir -p ./immich-app
-  cd ./immich-app || exit
+  if [[ -e $Tgt ]]; then
+    echo "Found existing directory $Tgt, will overwrite YAML files"
+  else
+    mkdir "$Tgt" || return
+  fi 
+  cd "$Tgt" || return
 }
 
 download_docker_compose_file() {
   echo "Downloading docker-compose.yml..."
-  curl -L https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml -o ./docker-compose.yml >/dev/null 2>&1
+  "${Curl[@]}" "$RepoUrl"/docker-compose.yml -o ./docker-compose.yml
 }
 
 download_dot_env_file() {
   echo "Downloading .env file..."
-  curl -L https://github.com/immich-app/immich/releases/latest/download/example.env -o ./.env >/dev/null 2>&1
+  "${Curl[@]}" "$RepoUrl"/example.env -o ./.env
 }
 
 start_docker_compose() {
   echo "Starting Immich's docker containers"
 
-  if docker compose >/dev/null 2>&1; then
-    docker_bin="docker compose"
-  elif docker-compose >/dev/null 2>&1; then
-    docker_bin="docker-compose"
-  else
-    echo "Cannot find \`docker compose\` or \`docker-compose\`."
-    exit 1
+  if ! docker compose >/dev/null 2>&1; then
+    echo "failed to find 'docker compose'"
+    return 1
   fi
 
-  if $docker_bin up --remove-orphans -d; then
-    show_friendly_message
-    exit 0
-  else
+  if ! docker compose up --remove-orphans -d; then
     echo "Could not start. Check for errors above."
-    exit 1
+    return 1
   fi
+  show_friendly_message
 }
 
 show_friendly_message() {
-  echo "Successfully deployed Immich!"
-  echo "You can access the website at http://$ip_address:2283 and the server URL for the mobile app is http://$ip_address:2283/api"
-  echo "---------------------------------------------------"
-  echo "If you want to configure custom information of the server, including the database, Redis information, or the backup (or upload) location, etc. 
+  local ip_address
+  ip_address=$(hostname -I | awk '{print $1}')
+  cat << EOF
+Successfully deployed Immich!
+You can access the website at http://$ip_address:2283 and the server URL for the mobile app is http://$ip_address:2283/api
+---------------------------------------------------
+If you want to configure custom information of the server, including the database, Redis information, or the backup (or upload) location, etc. 
   
-  1. First bring down the containers with the command 'docker-compose down' in the immich-app directory, 
+  1. First bring down the containers with the command 'docker compose down' in the immich-app directory, 
   
   2. Then change the information that fits your needs in the '.env' file, 
   
-  3. Finally, bring the containers back up with the command 'docker-compose up --remove-orphans -d' in the immich-app directory"
-
+  3. Finally, bring the containers back up with the command 'docker compose up --remove-orphans -d' in the immich-app directory
+EOF
 }
 
 # MAIN
-create_immich_directory
-download_docker_compose_file
-download_dot_env_file
-start_docker_compose
+main() {
+  echo "Starting Immich installation..."
+  local -r RepoUrl='https://github.com/immich-app/immich/releases/latest/download'
+  local -a Curl
+  if command -v curl >/dev/null; then
+    Curl=(curl -fsSL)
+  else
+    echo 'no curl binary found; please install curl and try again'
+    return 14
+  fi
+
+  create_immich_directory || { echo 'error creating Immich directory'; return 10; }
+  download_docker_compose_file || { echo 'error downloading Docker Compose file'; return 11; }
+  download_dot_env_file || { echo 'error downloading .env'; return 12; }
+  start_docker_compose || { echo 'error starting Docker'; return 13; }
+  return 0; }
+
+main
+Exit=$?
+[[ $Exit == 0 ]] || echo "There was an error installing Immich. Exit code: $Exit. Please provide these logs when asking for assistance."
+exit "$Exit"