commit edfb12ef0a7e4e4bff5c5128cc1ecdb5e7aa9187 Author: root Date: Sun May 25 16:38:56 2025 +0000 Added docker diff --git a/.env b/.env new file mode 100644 index 0000000..f7d4c16 --- /dev/null +++ b/.env @@ -0,0 +1,6 @@ +DB_PASSWORD=postgres +DB_DATA_LOCATION=/data/immich/postgres +DB_DATABASE_NAME=immich +UPLOAD_LOCATION=/data/immich/library +DB_USERNAME=postgres +IMMICH_VERSION=release diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..69b3274 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,73 @@ +# +# WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose +# +# Make sure to use the docker-compose.yml of the current release: +# +# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml +# +# The compose file on main may not be compatible with the latest release. + +name: immich + +services: + immich-server: + container_name: immich_server + image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} + # extends: + # file: hwaccel.transcoding.yml + # service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding + volumes: + # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file + - ${UPLOAD_LOCATION}:/usr/src/app/upload + - /etc/localtime:/etc/localtime:ro + env_file: + - .env + ports: + - '2283:2283' + depends_on: + - redis + - database + restart: always + healthcheck: + disable: false + + immich-machine-learning: + container_name: immich_machine_learning + # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag. + # Example tag: ${IMMICH_VERSION:-release}-cuda + image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} + # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration + # file: hwaccel.ml.yml + # service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable + volumes: + - model-cache:/cache + env_file: + - .env + restart: always + healthcheck: + disable: false + + redis: + container_name: immich_redis + image: docker.io/valkey/valkey:8-bookworm@sha256:ff21bc0f8194dc9c105b769aeabf9585fea6a8ed649c0781caeac5cb3c247884 + healthcheck: + test: redis-cli ping || exit 1 + restart: always + + database: + container_name: immich_postgres + image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0 + environment: + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_DB: ${DB_DATABASE_NAME} + POSTGRES_INITDB_ARGS: '--data-checksums' + # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs + # DB_STORAGE_TYPE: 'HDD' + volumes: + # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + restart: always + +volumes: + model-cache: diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..cf104b6 --- /dev/null +++ b/install.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml + +wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env + + +# Helper function to check a command +command_exists() { + command -v "$1" >/dev/null 2>&1 +} + +DOCKER_OK=true +COMPOSE_OK=true + +# Check for Docker +if ! command_exists docker; then + DOCKER_OK=false +fi + +# Check for Docker Compose (plugin or legacy) +if ! docker compose version >/dev/null 2>&1 && ! command_exists docker-compose; then + COMPOSE_OK=false +fi + +# If either is missing, run install script +if [[ "$DOCKER_OK" = false || "$COMPOSE_OK" = false ]]; then + echo "Missing required tools. Running installer..." + git clone https://git.giovanesaggio.com/Selfhosting/docker_setup.git + ./docker_setup/docker_setup.sh + rm -r docker_setup +fi + +# Parse and prompt for .env variables +ENV_FILE=".env" + +if [[ ! -f "$ENV_FILE" ]]; then + echo "$ENV_FILE not found. Creating a new one." + touch "$ENV_FILE" +fi + +declare -A ENV_VARS + +# Load existing env vars +while IFS='=' read -r key value; do + [[ "$key" =~ ^[A-Z_][A-Z0-9_]*$ ]] || continue + ENV_VARS["$key"]="$value" +done < "$ENV_FILE" + +echo "Configure environment variables (press ENTER to keep current value):" + +# Prompt for each variable +for key in "${!ENV_VARS[@]}"; do + current="${ENV_VARS[$key]}" + read -p "$key [$current]: " new_value + if [[ -n "$new_value" ]]; then + ENV_VARS["$key"]="$new_value" + fi +done + +# Overwrite .env with updated values +> "$ENV_FILE" +for key in "${!ENV_VARS[@]}"; do + echo "$key=${ENV_VARS[$key]}" >> "$ENV_FILE" +done + +# Launch Docker +docker compose up -d