Immich 3.0

6 hours ago 3
  • Immich v3.0.0은 수개월 작업 뒤 나온 다음 메이저 릴리스로, 모바일 비파괴 편집, 워크플로우 미리보기, 백그라운드 백업 개선, 무결성 검사, 실시간 비디오 트랜스코딩 미리보기 등을 포함함
  • 이번 릴리스에는 Breaking changes가 있지만 상당수는 Immich API 엔드포인트 변경이라 Immich API와 통합하는 서드파티 도구에 주로 영향을 주며, 대부분의 사용자는 기존 방식대로 업데이트 가능함
  • 업그레이드는 .env의 IMMICH_VERSION을 v2에서 v3로 바꾼 뒤 docker compose pull && docker compose up -d를 실행하며, v3.0.0은 pgvecto.rs 지원을 중단해 v1.133.0 이전 환경은 VectorChord 마이그레이션이 필요함
  • 모바일 앱은 웹과 같은 비파괴 편집 모델을 도입하고 Android 백그라운드 백업을 주기 작업 스케줄러로 개선했으며, iOS는 짧은 백그라운드 실행 시간 안에서 동기화와 업로드를 병렬 실행함
  • 실시간 비디오 트랜스코딩은 아직 실험적 기능이고 현재 웹 앱에만 구현되어 있으며, 모바일 앱은 구현 중이라 기존 오프라인 트랜스코딩 파일을 수동 삭제하는 것은 권장되지 않음

업데이트와 호환성 변경

  • Immich v3.0.0은 다음 메이저 버전으로 발표됐으며, 여러 Breaking changes를 포함함
  • Breaking changes 중 다수는 API 엔드포인트 업데이트라 Immich API와 통합하는 서드파티 도구에 주로 영향을 줌
  • 대부분의 사용자는 기존과 같은 방식으로 업데이트할 수 있음
  • 전체 마이그레이션 가이드는 릴리스 안내에서 별도 링크로 제공됨
  • v3.0.0은 pgvecto.rs 지원을 중단
  • 업데이트 절차:
    • .env 파일에서 IMMICH_VERSION=v2를 IMMICH_VERSION=v3로 변경
    • docker compose pull && docker compose up -d 실행

릴리스 후보와 알림 채널

  • v3.0.0은 Immich가 release candidate를 처음 사용한 릴리스임
  • 릴리스 후보는 테스트됐지만 공식 릴리스는 아닌 프리릴리스이며, 최종 릴리스 전 남은 버그를 찾고 수정하는 데 사용됨
  • Immich 안에서 릴리스 후보 알림을 받고 싶으면 Admin settings > Version check에서 릴리스 채널을 Stable에서 Release candidate로 바꿀 수 있음

모바일 편집과 백업 개선

  • 모바일 비파괴 편집은 v2.5.0에 웹으로 먼저 추가된 이미지 편집 기능의 후속 작업임
  • 기존 모바일 편집기는 사진을 제자리에서 수정하지 않고 새 asset을 만드는 별도 시스템을 사용했음
  • v3.0.0의 모바일 편집기는 웹 버전과 같은 기능을 제공하며, 원본 파일을 건드리지 않고 자르기, 회전, 이미지 조정을 할 수 있음
  • 편집은 비파괴 방식이라 나중에 다시 수정하거나 되돌릴 수 있고, 모바일에서 편집한 뒤 웹에서 이어서 조정할 수 있음
  • 이전 모바일 편집 구현에서 제공되던 일부 기능은 제거됨
    • 사진 색상 변경
    • Live Photo 편집
    • 로컬 asset 편집
  • 일부 기능은 향후 릴리스에서 다시 제공할 계획이 있음
  • Android 백그라운드 백업은 주기 작업 스케줄러를 사용해 더 안정적으로 동작함
    • 이전에는 새로 촬영한 사진에 제한됐음
    • 이제 전체 라이브러리를 백그라운드에서 업로드할 수 있음
    • Android 백그라운드 실행 제한과 더 잘 맞고, 작업 정리와 배터리 최적화·알림 설정 경고를 처리함
  • iOS 백그라운드 새로고침 작업은 동기화와 업로드를 병렬 실행해, iOS가 허용하는 짧은 시간 안에 업로드가 시작되도록 바뀜

워크플로우 미리보기

  • Workflows는 라이브러리의 동작을 자동화하는 첫 미리보기 기능임
  • 트리거, 필터, 액션을 드래그 앤 드롭 빌더로 연결해 자동화를 만들 수 있음
  • 웹의 Utilities > Workflows에서 접근 가능함
  • 새 빈 워크플로우를 만들거나 미리 만들어진 템플릿을 둘러볼 수 있음
  • 편집기는 Visual editorJSON editor를 제공함
    • Visual editor는 워크플로우 구성에 적합함
    • JSON editor는 워크플로우 내용을 다른 사람과 공유하거나 받는 데 적합함
  • 각 워크플로우는 trigger와 일련의 steps로 구성됨
    • Trigger는 워크플로우의 진입점이며, 트리거가 발생하면 단계가 평가됨
    • Steps는 조건에 해당하는 Filters와 효과에 해당하는 Actions를 포함함
  • 공유 방식은 텍스트와 JSON 두 가지임
    • 텍스트는 포럼 공유나 시연용에 적합함
    • JSON은 워크플로우 설정을 정확히 복제하는 데 적합함
  • 새 트리거와 액션 아이디어는 별도 discussion thread에서 피드백을 받음

라이브러리 탐색과 무결성 검사

  • 웹과 모바일에 Recently Added 페이지가 추가됨
    • asset 촬영 시점이 아니라 Immich에 추가된 시점 기준으로 라이브러리를 볼 수 있음
    • 새로 가져온 묶음을 탐색할 때 무엇이 새로 들어왔는지 찾기 쉬움
    • 웹에서는 Explore 탭, 모바일에서는 Search 탭에서 찾을 수 있음
  • 유지보수 페이지에는 integrity reports가 추가됨
    • Immich가 파일 시스템의 디렉터리를 스캔하고 데이터베이스에 저장된 정보와 비교함
    • Immich가 모르는 파일이 디렉터리에 있으면 untracked로 표시됨
    • 데이터베이스에는 참조가 있지만 해당 위치에 파일이 없으면 missing으로 표시됨
    • 디스크 파일 체크섬이 Immich가 저장한 체크섬과 다르면 checksum mismatch로 표시됨
  • 체크섬 불일치는 일반적으로 파일 손상에서 발생할 수 있고, 잘못된 이름 변경의 결과일 수도 있음
  • 무결성 검사 작업은 매일 밤 언제, 얼마나 오래 실행할지 설정할 수 있음

비디오와 미디어 재생

  • 모바일 앱에 Slideshow 기능이 추가되어 웹처럼 사진과 비디오를 화면에서 자동 재생할 수 있음
  • HLS와 실시간 비디오 트랜스코딩은 미리보기 기능으로 추가됨
    • 오프라인 트랜스코드를 미리 만들지 않고 동영상이 재생되는 동안 변환할 수 있음
    • 수동·자동 품질 전환을 지원함
    • 클라이언트가 지원하는 최적 코덱으로 트랜스코딩할 수 있음
    • 오프라인 트랜스코딩을 비활성화하면 저장 공간 부담을 줄일 수 있음
  • 아직 구현되지 않은 항목도 명시됨
    • 호환 클라이언트용 HDR
    • 대역폭이 허용될 때 원본을 트랜스코딩하지 않고 remuxing
  • 실시간 트랜스코딩은 실험적이며 버전마다 동작이 바뀔 수 있음
  • 현재 웹 앱에만 구현되어 있고 모바일 앱 구현은 진행 중임
  • 활성화는 video transcoding settings에서 할 수 있음
  • 실시간 트랜스코딩을 켜도 오프라인 트랜스코딩은 직접 영향을 받지 않으므로, 오프라인 트랜스코딩을 끄려면 transcode policy도 조정해야 함
  • v3 이전에 가져온 asset은 작업 패널에서 Metadata Extraction을 다시 실행해야 재처리됨
  • 서버가 실시간 트랜스코딩을 처리할 만큼 충분히 강해야 하며, 하드웨어 가속은 권장되지만 필수는 아님
  • 웹 앱에는 Immich 디자인에 맞춘 새 커스텀 비디오 플레이어가 추가됨
    • 모든 기기에서 같은 컨트롤과 레이아웃을 제공함
    • 재생 속도 변경 같은 기본 기능을 제공함
    • iOS에서 OS 컨트롤이 Immich 내비게이션 바 뒤에 숨는 문제도 해결할 수 있음

Android, OCR, 공유와 앨범 흐름

  • Android에서 Immich를 갤러리/이미지 뷰어 앱처럼 사용할 수 있음
    • 다른 앱에서 사진이나 비디오를 탭하고 Immich를 선택하면 asset viewer에서 바로 열림
    • 파일 공유 또는 라이브러리 업로드 옵션을 제공함
    • 이미 라이브러리에 있는 파일을 인식하는 방식은 향후 개선될 예정임
  • 모바일 asset viewer에는 사진 속 인식된 텍스트를 강조하는 OCR 토글이 추가됨
    • 이미지에서 텍스트를 선택하고 복사할 수 있음
  • 모바일 앱에서 로컬 사진을 앨범에 직접 업로드할 수 있음
    • asset bottom sheet에서도 앨범에 바로 추가 가능함
    • 먼저 업로드한 뒤 나중에 정리하는 흐름의 마찰을 줄임
  • 모바일 공유 시 전송 전 이미지 크기를 선택할 수 있음
    • 메시징 앱용으로 파일을 작게 유지할 수 있음
    • 필요하면 전체 품질로 공유할 수도 있음
    • 기본 동작은 App Settings > Preferences에서 변경 가능함
    • 공유 버튼을 길게 눌러 즉석에서 옵션을 고를 수 있음
  • 한 달 안에 asset이 많은 경우의 타임라인 탐색 성능이 개선되어, 브라우저 탭이 잠기는 상황을 줄임

주요 변경 묶음

  • Breaking changes에는 class-validator에서 zod로의 마이그레이션, replace asset 제거, 오래된 timeline sync 엔드포인트 제거, pgvecto.rs 지원 중단, 오류 응답 구조 변경 등이 포함됨
  • Deprecated changes로는 PUT 라우트를 PATCH로 대체하는 방향의 deprecation이 포함됨
  • 보안 항목에는 프로필 사진을 thumbnail pipeline을 거치도록 하는 수정이 포함됨
  • 기능 추가에는 모바일 편집, Android periodic work manager task, 커스텀 웹 비디오 플레이어, recently added assets page, workflows & plugins, HLS 실시간 트랜스코딩, 모바일 OCR, 무결성 검사 작업 등이 포함됨
  • 버그 수정에는 OAuth 이메일 정규화, zip에 추가하기 전 파일명 정리, 잠긴 asset의 파트너 노출 방지, 무단 face 생성 수정, CLI 업로드 시 메모리 부족 방지 등이 포함됨

토론에서 확인된 제약과 답변

  • v2.0.1에서 v3.0.0으로 올리는 경우 별도 특별 지침은 없으며 릴리스 노트의 업데이트 절차를 따르면 된다는 답변이 있었음
  • 모바일 업데이트 뒤 앨범이 보이지 않는 사례는 모바일 쪽 마이그레이션 버그로 보였고, 로그아웃 후 재로그인 또는 서버를 v3로 업데이트하면 해결될 수 있음
  • iPhone 백업 복원 뒤 모바일 앱에서 서버에 있는 사진을 다시 로컬로 받는 흐름에 대해, 모바일 앱에는 아직 bulk download 옵션이 없고 개별 사진 다운로드만 가능함
  • 실시간 트랜스코딩을 켠 뒤 기존 트랜스코딩 비디오를 지우는 질문에는, 모바일 앱이 아직 실시간 트랜스코딩을 지원하지 않으므로 기존 트랜스코딩 비디오가 필요하며 수동 삭제는 권장되지 않는다는 답변이 있었음
  • HEIC 사진을 즉석에서 JPG로 변환하는 기능은 계획이 없고, 현재 생성되는 썸네일은 JPEG/WEBP라 모든 브라우저와 클라이언트에 호환된다는 답변이 있었음
  • Android 백그라운드 백업 개선은 100MB 이상 대형 이미지와 Cloudflare 제한 문제를 해결하는 변경이 아니라, 백그라운드 작업이 더 자주 주기적으로 실행되도록 하는 개선임
  • 실시간 트랜스코딩에서 코덱은 서버가 아니라 클라이언트가 선택하며, 서버가 AV1 변형을 광고하면 AV1 디코딩 가능한 클라이언트가 그쪽으로 갈 수 있음
    • 서버가 광고할 코덱과 해상도를 선택하는 설정을 추가할 계획이 있음
  • 캐스팅 개선은 할 일 목록에 있으며, cast 전체를 다시 작성하고 실시간 트랜스코딩도 추가해야 한다는 답변이 있었음
  • 업그레이드 뒤 No vector extension found. Available extensions: vchord, vector 오류를 올린 사용자는 이후 해결됐다고 남김
  • 새 체크섬 불일치 검사에 대해, 과거 Immich 외부에서 업로드된 이미지를 편집한 사용자는 수백 개 checksum mismatch가 생길 수 있어 체크섬 재계산으로 해결하는 기능이 유용하다는 의견이 있었음
  • VectorChord 마이그레이션과 관련해, v1.102 이전 사용자는 DB_DATA_LOCATION opt-in 변경을 놓쳤을 수 있으므로 경고가 있으면 좋겠다는 의견이 있었음

후원과 상품

Read Entire Article