이미치(immich), portainer 설치

 

Immich를 Portainer의 Stack 기능을 사용하여 설치하는 방법을 단계별로 정리한 내용입니다. 이 방법은 Portainer를 통해 Docker 환경을 관리할 때 유용하며, docker-compose.yml 파일을 사용하여 Immich를 설치할 수 있습니다.

Immich 설치 단계

  1. Portainer 접속

  • Portainer에 접속하여 왼쪽 사이드바에서 **"Stacks"**를 클릭합니다.

  1. 새로운 Stack 추가

  • "Add stack" 버튼을 클릭합니다.

  • Stack에 이름을 지정합니다. 예: immich.

  • **"Web Editor"**를 빌드 방법으로 선택합니다.

  1. docker-compose.yml 파일 내용 복사

docker-compose.yml은 이미치 공식 사이트에서 찾을수 있어요

https://immich.app/docs/install/portainer/

#######################################################################
# WARNING: 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
     

    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, openvino] 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, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - model-cache:/cache

    restart: always
    healthcheck:
      disable: false

  redis:
    container_name: immich_redis
    image: docker.io/redis:6.2-alpine@sha256:2ba50e1ac3a0ea17b736ce9db2b0a9f6f8b85d4c27d5f5accc6a416d8f42c6d5
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always

  database:
    container_name: immich_postgres
    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    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
    healthcheck:
      test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1; Chksum="$$(psql --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1
      interval: 5m
      start_interval: 30s
      start_period: 5m
    command:
      [
        'postgres',
        '-c',
        'shared_preload_libraries=vectors.so',
        '-c',
        'search_path="$$user", public, vectors',
        '-c',
        'logging_collector=on',
        '-c',
        'max_wal_size=2GB',
        '-c',
        'shared_buffers=512MB',
        '-c',
        'wal_compression=on',
      ]
    restart: always

volumes:
  model-cache:
######################################################################
  • Immich의 GitHub 저장소에서 docker-compose.yml 파일의 내용을 복사합니다.

  • 복사한 내용을 Portainer의 웹 에디터에 붙여넣습니다.

  1. .env 파일을 stack.env로 변경

  • 웹 에디터에서 환경 변수(예: DB 설정 등)를 사용해야 하는 모든 컨테이너에 대해 .env를 stack.env로 변경합니다.

Dot Env 설정

  1. "Advanced Mode" 활성화

  • 환경 변수 섹션에서 **"Advanced Mode"**를 클릭합니다.

  • example.env 파일을 GitHub 저장소에서 찾아서 내용을 복사한 후 웹 에디터에 붙여넣습니다.

  1. "Simple Mode"로 돌아가기

  • 에디터에서 **"Simple Mode"**로 돌아갑니다.

  1. 환경 변수 수정

  • DB_PASSWORD를 원하는 값으로 변경합니다.

  • 필요에 따라 사용자 정의 데이터베이스 연결 정보도 추가합니다.

  • DB_DATA_LOCATION을 데이터베이스가 저장될 디스크 폴더로 지정합니다.

  • UPLOAD_LOCATION을 업로드된 미디어 파일과 생성된 미디어가 저장될 디스크 폴더로 지정합니다.

  1. Stack 배포

  • 모든 설정을 완료한 후, "Deploy the stack" 버튼을 클릭하여 Immich Stack을 배포합니다.

추가 설정 및 참고사항

  • Database 설정: DB_PASSWORD와 DB_DATA_LOCATION은 실제 사용 환경에 맞게 설정해야 합니다. 데이터베이스의 위치와 비밀번호를 변경하여 보안을 강화할 수 있습니다.

  • 미디어 저장 위치: 미디어 파일이 저장될 위치를 지정하는 UPLOAD_LOCATION을 적절한 디렉토리로 변경하여 미디어 파일이 관리될 수 있도록 합니다.

  • 기타 설정: stack.env 파일에 추가적인 환경 변수들을 설정할 수 있으며, 필요에 따라 추가적인 맞춤 설정을 할 수 있습니다.

설치 후 확인

  • Stack 배포 후 Portainer에서 컨테이너 상태를 확인하여 Immich가 정상적으로 실행되는지 확인합니다.

  • 이후 웹 브라우저에서 Immich UI에 접속하여 미디어 업로드 및 관리 기능을 테스트할 수 있습니다.

이 과정으로 Immich를 Portainer의 Stack 기능을 통해 손쉽게 설치할 수 있습니다.


댓글