1
0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2024-12-29 15:11:58 +00: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:
Matthew Momjian 2024-04-08 19:01:57 -04:00 committed by GitHub
parent 56e0e5d6ad
commit 933b6b67f5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 55 additions and 36 deletions

View file

@ -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`. - 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. - 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 :::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. 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.

View file

@ -11,6 +11,10 @@ Hardware and software requirements for Immich
- [Docker](https://docs.docker.com/get-docker/) - [Docker](https://docs.docker.com/get-docker/)
- [Docker Compose](https://docs.docker.com/compose/install/) - [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 :::info Podman
You can also use Podman to run the application. However, additional configuration might be required. You can also use Podman to run the application. However, additional configuration might be required.
::: :::

View file

@ -17,12 +17,11 @@ curl -o- https://raw.githubusercontent.com/immich-app/immich/main/install.sh | b
The script will perform the following actions: 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). 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. 2. Start the containers.
3. 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 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 :::tip
For common next steps, see [Post Install Steps](/docs/install/post-install.mdx). For common next steps, see [Post Install Steps](/docs/install/post-install.mdx).

View file

@ -1,62 +1,78 @@
#!/usr/bin/env bash #!/usr/bin/env bash
set -o nounset
set -o pipefail
echo "Starting Immich installation..." create_immich_directory() { local -r Tgt='./immich-app'
ip_address=$(hostname -I | awk '{print $1}')
create_immich_directory() {
echo "Creating Immich directory..." echo "Creating Immich directory..."
mkdir -p ./immich-app if [[ -e $Tgt ]]; then
cd ./immich-app || exit echo "Found existing directory $Tgt, will overwrite YAML files"
else
mkdir "$Tgt" || return
fi
cd "$Tgt" || return
} }
download_docker_compose_file() { download_docker_compose_file() {
echo "Downloading docker-compose.yml..." 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() { download_dot_env_file() {
echo "Downloading .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() { start_docker_compose() {
echo "Starting Immich's docker containers" echo "Starting Immich's docker containers"
if docker compose >/dev/null 2>&1; then if ! docker compose >/dev/null 2>&1; then
docker_bin="docker compose" echo "failed to find 'docker compose'"
elif docker-compose >/dev/null 2>&1; then return 1
docker_bin="docker-compose"
else
echo "Cannot find \`docker compose\` or \`docker-compose\`."
exit 1
fi fi
if $docker_bin up --remove-orphans -d; then if ! docker compose up --remove-orphans -d; then
show_friendly_message
exit 0
else
echo "Could not start. Check for errors above." echo "Could not start. Check for errors above."
exit 1 return 1
fi fi
show_friendly_message
} }
show_friendly_message() { show_friendly_message() {
echo "Successfully deployed Immich!" local ip_address
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" ip_address=$(hostname -I | awk '{print $1}')
echo "---------------------------------------------------" cat << EOF
echo "If you want to configure custom information of the server, including the database, Redis information, or the backup (or upload) location, etc. 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, 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 # MAIN
create_immich_directory main() {
download_docker_compose_file echo "Starting Immich installation..."
download_dot_env_file local -r RepoUrl='https://github.com/immich-app/immich/releases/latest/download'
start_docker_compose 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"