mirror of
				https://github.com/immich-app/immich.git
				synced 2025-11-04 03:27:09 -05:00 
			
		
		
		
	feat: Improve error handling for Install Script (#8422)
* Update install.sh * Update install.sh * Update install.sh * Update install.sh * Update install.sh * Update install.sh * Update install.sh * Update install.sh * Update install.sh * Update docs immich-app vs immich-data We do not actually touch the .env file * Remove docker-compose Docker-compose is no longer supported by Immich * Update remote-machine-learning.md * Update install.sh * Update install.sh * Update requirements.md * Update requirements.md
This commit is contained in:
		
							parent
							
								
									56e0e5d6ad
								
							
						
					
					
						commit
						933b6b67f5
					
				@ -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.
 | 
			
		||||
 | 
			
		||||
@ -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.
 | 
			
		||||
:::
 | 
			
		||||
 | 
			
		||||
@ -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).
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										80
									
								
								install.sh
									
									
									
									
									
								
							
							
						
						
									
										80
									
								
								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"
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user