작성일 댓글 남기기

Immich 설치 가이드 – NAS에 Google 포토 대안 구축하는 법

NAS 홈서버에서 운영되는 Immich 사진 갤러리

봄맞이 사진 정리, 이번에는 내 서버에서 해보자

봄이 되면 벚꽃 사진, 나들이 사진, 아이 성장 사진까지 스마트폰 갤러리가 빠르게 채워집니다. 대부분 Google 포토에 자동 백업해두고 안심하지만, 한 가지 불안한 사실이 있습니다. 2021년부터 Google 포토의 무제한 무료 저장이 종료되었고, 15GB를 넘기면 월 구독료를 내야 합니다. 가족 사진 수만 장을 맡겨둔 곳이 언제든 요금 정책을 바꿀 수 있다는 뜻이기도 합니다.

그래서 최근 IT 커뮤니티에서 폭발적으로 주목받고 있는 오픈소스 프로젝트가 바로 Immich입니다. GitHub 스타 수 6만 개를 넘기며, 셀프호스팅 사진 관리 도구 중 사실상 표준으로 자리 잡았습니다. Google 포토와 거의 동일한 사용 경험을 제공하면서도 모든 사진이 내 NAS나 홈서버에 저장되니, 용량 걱정도 프라이버시 걱정도 없습니다.

이 글에서는 Immich를 처음 접하는 분도 따라 할 수 있도록, 설치부터 Google 포토 사진 마이그레이션, 모바일 자동 백업, 그리고 AI 기반 검색·얼굴 인식 같은 고급 기능 활용까지 단계별로 안내합니다.

Immich 시스템 구성도와 데이터 흐름

Immich가 정확히 뭔가요? Google 포토와 뭐가 다른가요?

Immich는 한마디로 내 서버에 설치하는 Google 포토입니다. 스마트폰 사진을 자동으로 백업하고, 타임라인 뷰로 사진을 탐색하며, 얼굴 인식과 장소별 분류, 자연어 검색까지 지원합니다. 그런데 이 모든 것이 클라우드 서버가 아니라 내 집 NAS나 미니 PC에서 돌아갑니다.

핵심 특징 한눈에 보기

  • 모바일 자동 백업: iOS·Android 앱이 백그라운드에서 사진과 동영상을 자동 업로드합니다. Google 포토 앱과 사용 경험이 거의 동일합니다.
  • AI 기반 스마트 검색: CLIP 모델을 내장하고 있어서 “해변에서 찍은 사진”, “빨간 자동차” 같은 자연어로 사진을 검색할 수 있습니다. 모든 AI 처리가 로컬에서 이루어집니다.
  • 얼굴 인식·클러스터링: 사진 속 인물을 자동으로 그룹핑하고, 이름을 붙여 인물별로 사진을 모아볼 수 있습니다.
  • 지도 뷰: GPS 정보가 있는 사진을 세계 지도 위에 표시해줍니다. 여행 기록을 한눈에 볼 수 있어서 상당히 유용합니다.
  • 공유 앨범·파트너 공유: 가족이나 친구와 앨범을 공유하거나, 특정 파트너와 전체 라이브러리를 공유할 수 있습니다.
  • RAW 파일 지원: DSLR이나 미러리스 카메라의 RAW 파일도 썸네일 생성과 미리보기를 지원합니다.
  • 외부 라이브러리: 이미 NAS에 정리해둔 사진 폴더를 Immich에 그대로 연결할 수 있습니다. 파일을 옮기지 않아도 됩니다.

Google 포토 vs Immich 비교

Google 포토는 편리하지만 내 사진이 Google 서버에 있고, 무료 용량 15GB를 넘기면 매달 비용이 발생합니다. Google One 2TB 요금이 월 13,000원 정도인데, 가족 사진이 수십 년치 쌓이면 더 큰 용량이 필요해집니다. 반면 Immich는 초기에 NAS나 서버만 있으면 추가 비용 없이 무제한 저장이 가능합니다. 4TB HDD가 10만 원 안팎이니, 한 번 투자하면 수년간 용량 걱정이 없습니다.

기능 면에서도 Immich는 Google 포토의 핵심 기능을 대부분 구현해냈습니다. 오히려 RAW 파일 지원, 외부 라이브러리 연결, 중복 감지 같은 부분에서는 Immich가 더 뛰어납니다. 다만 아직 개발 중인 프로젝트이므로 일부 세부 기능(예: 콜라주 자동 생성, 프린트 주문 등)은 없습니다. 하지만 사진 백업·관리·검색이라는 핵심 목적에서는 이미 충분히 실사용 가능한 수준입니다.

Immich 설치하기: Docker Compose 한 방이면 끝

Immich 설치는 Docker Compose를 사용하면 놀라울 정도로 간단합니다. Synology NAS, QNAP, 미니 PC, 심지어 라즈베리파이에서도 설치할 수 있습니다. 여기서는 가장 범용적인 Docker Compose 방식으로 진행합니다.

사전 준비물

  • 서버: Docker와 Docker Compose가 설치된 NAS 또는 PC (최소 RAM 4GB 권장, AI 기능 활용 시 6GB 이상)
  • 저장 공간: 사진 보관용 충분한 디스크 (사진 양에 따라 1TB~4TB 권장)
  • 네트워크: 같은 공유기에 연결된 상태 (외부 접속은 이후 설정)

1단계: 설치 파일 다운로드

Immich는 공식적으로 설치에 필요한 파일을 GitHub에서 제공합니다. 터미널(SSH)에서 다음 명령어를 실행합니다.

작업 디렉토리를 만들고 필요한 파일을 다운로드합니다:

mkdir -p ~/immich && cd ~/immich
curl -Lo docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -Lo .env https://github.com/immich-app/immich/releases/latest/download/example.env
curl -Lo hwaccel.transcoding.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.transcoding.yml
curl -Lo hwaccel.ml.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml

2단계: 환경 변수 설정

다운로드한 .env 파일을 열어서 핵심 설정을 수정합니다.

# .env 파일 편집
nano .env

수정해야 할 주요 항목은 다음과 같습니다:

  • UPLOAD_LOCATION: 사진이 저장될 경로입니다. NAS의 대용량 볼륨을 지정하세요. 예: /volume1/photos/immich
  • DB_PASSWORD: 데이터베이스 비밀번호입니다. 기본값을 반드시 변경하세요. 영문+숫자+특수문자 조합 16자 이상을 권장합니다.
  • IMMICH_VERSION: release로 설정하면 항상 최신 안정 버전을 사용합니다.
  • DB_DATA_LOCATION: 데이터베이스 파일 저장 경로입니다. 기본값을 사용해도 무방합니다.

Synology NAS를 사용하시는 분은 UPLOAD_LOCATION을 공유 폴더 경로(예: /volume1/docker/immich/upload)로 설정하면 됩니다. 디렉토리는 미리 생성해두세요.

3단계: Docker Compose 실행

설정을 마쳤으면 한 줄 명령어로 모든 컨테이너를 시작합니다.

docker compose up -d

이 명령어 하나로 다음 5개의 컨테이너가 자동으로 실행됩니다:

  • immich-server: 웹 인터페이스와 API를 제공하는 메인 서버
  • immich-machine-learning: 얼굴 인식, 스마트 검색 등 AI 기능 담당
  • immich-redis: 작업 큐와 캐시를 관리하는 Redis
  • immich-database: 사진 메타데이터를 저장하는 PostgreSQL

처음 실행 시 이미지 다운로드에 5~10분 정도 걸릴 수 있습니다. docker compose logs -f로 진행 상황을 확인할 수 있습니다.

4단계: 웹 접속 및 초기 설정

컨테이너가 모두 실행되면 웹 브라우저에서 http://서버IP:2283으로 접속합니다. 처음 접속하면 관리자 계정 생성 화면이 나타납니다. 이메일과 비밀번호를 입력하면 바로 사용할 수 있습니다.

관리자 계정을 만든 뒤에는 관리 > 설정에서 몇 가지 기본 설정을 확인하세요:

  • 저장소 템플릿: 사진 파일이 저장되는 폴더 구조를 지정합니다. 기본값은 {{y}}/{{y}}-{{MM}}-{{dd}}로 연도/날짜별 폴더가 생성됩니다. 이 구조가 마음에 들지 않으면 {{y}}/{{MM}}(연/월별) 등으로 변경할 수 있습니다.
  • 썸네일 설정: 썸네일 품질과 크기를 조절할 수 있습니다. 기본값으로도 충분하지만, 저장 공간이 넉넉하면 품질을 높여도 좋습니다.
  • 머신러닝: 스마트 검색과 얼굴 인식 기능을 켜고 끌 수 있습니다. 서버 성능이 부족하면 일시적으로 끌 수도 있습니다.
Immich 웹 대시보드 인터페이스 화면

Google 포토에서 사진 옮겨오기

이미 Google 포토에 수년치 사진이 쌓여 있다면, 이걸 어떻게 Immich로 옮길지가 가장 큰 고민일 겁니다. 다행히 Google Takeout과 전용 마이그레이션 도구를 활용하면 메타데이터(촬영 일시, GPS 위치)까지 완벽하게 보존하며 이전할 수 있습니다.

Google Takeout으로 사진 내보내기

먼저 Google에서 내 사진 데이터를 다운로드합니다.

  • 1. takeout.google.com에 접속하여 로그인합니다.
  • 2. “선택 해제” 버튼을 눌러 모든 서비스의 체크를 해제한 뒤, Google 포토만 선택합니다.
  • 3. “다음 단계”를 눌러 내보내기 형식을 설정합니다. 파일 형식은 .zip, 파일 크기는 50GB로 설정하면 분할 횟수를 줄일 수 있습니다.
  • 4. “내보내기 만들기”를 클릭하면 Google이 백그라운드에서 파일을 준비합니다. 사진 양에 따라 몇 시간에서 며칠이 걸릴 수 있습니다.
  • 5. 준비가 끝나면 이메일로 알림이 오고, 다운로드 링크가 제공됩니다.

immich-go 도구로 업로드하기

Google Takeout에서 받은 zip 파일에는 사진과 함께 .json 메타데이터 파일이 포함되어 있습니다. 이 메타데이터에는 촬영 일시, GPS 좌표, 설명 등 중요한 정보가 들어 있는데, 단순히 사진만 업로드하면 이 정보가 유실됩니다.

immich-go는 이 문제를 해결해주는 공식 추천 CLI 도구입니다. Google Takeout의 json 메타데이터를 읽어서 사진의 EXIF 정보를 복원한 뒤 Immich에 업로드합니다.

# immich-go 설치 (Linux/macOS)
curl -sL https://github.com/simulot/immich-go/releases/latest/download/immich-go_Linux_x86_64.tar.gz | tar xz

# Google Takeout zip 파일 직접 업로드 (압축 해제 불필요)
./immich-go upload from-google-photos takeout-*.zip \
  --server=http://서버IP:2283 \
  --api-key=YOUR_API_KEY

API 키는 Immich 웹 화면에서 계정 설정 > API 키에서 생성할 수 있습니다. immich-go의 장점은 zip 파일을 압축 해제하지 않고 바로 업로드할 수 있다는 점입니다. 50GB짜리 zip 파일 여러 개를 풀지 않아도 되니 디스크 공간을 절약할 수 있습니다.

업로드 속도는 네트워크와 서버 성능에 따라 다르지만, 대략 사진 1만 장(약 50GB)에 1~3시간 정도 소요됩니다. 업로드가 완료되면 Immich가 자동으로 썸네일 생성, 얼굴 인식, 스마트 검색 인덱싱 작업을 백그라운드에서 수행합니다. 이 작업은 사진 양에 따라 상당한 시간이 걸릴 수 있으니, 하룻밤 정도 여유를 두고 기다리세요.

기존 NAS 폴더를 그대로 연결하기

이미 NAS에 연도별·폴더별로 정리해둔 사진이 있다면, 파일을 복사하지 않고 외부 라이브러리 기능으로 연결할 수 있습니다. 관리 화면에서 외부 라이브러리를 추가하고 경로를 지정하면, Immich가 해당 폴더의 사진을 스캔하여 타임라인에 표시합니다. 원본 파일은 그 자리에 그대로 있으므로 기존 폴더 구조가 전혀 바뀌지 않습니다.

스마트폰 앱 설정: 찍는 즉시 자동 백업

Immich의 진정한 가치는 모바일 앱에서 드러납니다. 한 번 설정해두면 사진을 찍는 즉시 내 서버에 자동 백업됩니다. Google 포토 앱을 쓰던 경험과 거의 동일합니다.

Immich 모바일 앱 자동 백업 및 갤러리 화면

앱 설치 및 서버 연결

  • 1. App Store(iOS) 또는 Play Store(Android)에서 Immich를 검색하여 설치합니다. 무료 앱입니다.
  • 2. 앱을 열면 서버 주소를 입력하는 화면이 나옵니다. 같은 와이파이에서는 http://서버IP:2283/api를 입력합니다.
  • 3. 웹에서 만든 계정으로 로그인합니다.
  • 4. 로그인하면 자동 백업 설정 화면이 표시됩니다. 백업 활성화를 켜세요.

백업 세부 설정

앱의 백업 설정에서 다음 옵션들을 확인하세요:

  • Wi-Fi에서만 백업: 모바일 데이터 소모를 방지하려면 이 옵션을 켜두세요. 기본적으로 켜져 있습니다.
  • 백그라운드 백업: 앱을 열지 않아도 자동으로 백업이 진행됩니다. iOS에서는 위치 권한을 “항상 허용”으로 설정해야 백그라운드 작업이 안정적으로 동작합니다.
  • 백업할 앨범 선택: 카메라 롤 외에 스크린샷, 다운로드 등 다른 앨범도 백업 대상에 추가할 수 있습니다.

앱 자체의 갤러리 기능도 훌륭합니다. 타임라인 뷰, 앨범, 검색, 지도, 인물별 사진 모아보기 등 웹에서 제공하는 기능 대부분을 앱에서도 사용할 수 있습니다.

외부에서 접속하려면?

집 밖에서도 Immich에 접속하려면 외부 접근 설정이 필요합니다. 가장 안전하고 간편한 방법 두 가지를 소개합니다:

  • Tailscale VPN: 이전 포스팅에서 다뤘던 Tailscale을 사용하면 어디서든 내부 네트워크처럼 접속할 수 있습니다. Tailscale을 설치한 기기에서 Tailscale IP로 Immich에 접속하면 됩니다.
  • Cloudflare Tunnel: 역시 이전에 다뤘던 Cloudflare Tunnel을 사용하면 도메인을 통해 HTTPS로 접속할 수 있습니다. 공유기 포트포워딩 없이 안전하게 외부 공개가 가능합니다.

보안을 위해 직접적인 포트포워딩(공유기에서 2283 포트를 여는 것)은 권장하지 않습니다. 반드시 VPN이나 터널을 통한 접속 방식을 사용하세요.

놓치면 아까운 Immich 고급 기능 5가지

기본적인 사진 백업과 관리만으로도 충분히 유용하지만, Immich에는 Google 포토 못지않은(때로는 더 나은) 고급 기능이 숨어 있습니다.

1. 자연어 스마트 검색

Immich는 OpenAI의 CLIP 모델을 로컬에서 실행하여 사진의 내용을 이해합니다. “바다”, “고양이”, “결혼식”, “빨간 드레스” 같은 키워드로 검색하면 관련 사진을 찾아줍니다. 영어뿐만 아니라 한국어 검색도 어느 정도 지원되며, 버전이 올라갈수록 한국어 인식률이 개선되고 있습니다. 중요한 건 이 모든 AI 처리가 내 서버에서 이루어진다는 점입니다. 사진이 외부로 전송되지 않으니 프라이버시가 완벽하게 보호됩니다.

2. 얼굴 인식과 인물 관리

사진을 업로드하면 Immich가 자동으로 얼굴을 감지하고 같은 사람끼리 그룹핑합니다. 각 그룹에 이름을 붙여주면 “엄마”, “아이” 같은 이름으로 검색하여 해당 인물의 사진만 모아볼 수 있습니다. 가족 사진이 많은 분들에게 특히 유용한 기능입니다. 인식 정확도도 상당히 높아서, 수만 장의 사진에서도 꽤 정확하게 인물을 구분합니다.

3. 지도 뷰

GPS 정보가 포함된 사진은 세계 지도 위에 클러스터로 표시됩니다. 지도를 확대하면 특정 지역에서 찍은 사진을 바로 확인할 수 있습니다. 여행 다녀온 장소를 한눈에 볼 수 있어서 추억을 되돌아보기에 아주 좋습니다. 지도 타일은 기본적으로 OpenStreetMap을 사용하며, 다른 지도 제공자로 변경할 수도 있습니다.

4. 공유 앨범과 파트너 공유

특정 사진을 모아 공유 앨범을 만들고 다른 사용자와 함께 볼 수 있습니다. 가족 행사 사진을 모으거나, 여행 동행과 사진을 나눌 때 유용합니다. 더 나아가 파트너 공유 기능을 사용하면 배우자나 가족에게 내 전체 라이브러리를 공유할 수 있습니다. 파트너가 별도의 앱으로 접속하면 내 사진을 타임라인에서 함께 볼 수 있습니다.

외부 링크 공유도 가능합니다. Immich에 로그인하지 않은 사람에게도 특정 앨범이나 사진의 링크를 생성하여 공유할 수 있습니다. 링크에 비밀번호를 설정하거나 만료 기간을 지정할 수도 있습니다.

5. 중복 감지와 스택

같은 사진이 여러 번 업로드되면 Immich가 자동으로 중복을 감지하고 알려줍니다. 중복 사진을 일괄 정리할 수 있어서 저장 공간을 절약할 수 있습니다. 또한 비슷한 사진 여러 장(예: 연사 촬영)을 하나의 스택으로 묶어 타임라인을 깔끔하게 유지할 수 있습니다.

Immich 핵심 기능 5가지 요약 인포그래픽

실전 운영 팁: 안정적으로 오래 쓰려면

Immich를 설치하고 사진을 옮기는 것까지는 어렵지 않지만, 장기적으로 안정적으로 운영하려면 몇 가지 실전 팁을 알아두면 좋습니다.

정기 백업은 필수

Immich에 모든 사진을 모았다고 해서 백업이 끝난 게 아닙니다. NAS의 디스크가 고장나거나 실수로 데이터를 삭제할 수도 있으니, 3-2-1 백업 원칙(원본 1개 + 복사본 2개를 서로 다른 매체에, 그중 1개는 외부에)을 지키는 것이 안전합니다.

  • 데이터베이스 백업: Immich 설정에서 데이터베이스 자동 백업을 활성화하세요. 기본적으로 매일 자정에 백업이 생성됩니다. 이 백업 파일을 별도의 외장 디스크나 클라우드에 복사해두면 만일의 사태에 대비할 수 있습니다.
  • 사진 원본 백업: UPLOAD_LOCATION에 저장된 사진 파일을 외장 HDD나 다른 NAS에 정기적으로 복사하세요. Synology NAS라면 Hyper Backup을 사용할 수 있습니다.

성능 최적화

  • 하드웨어 가속: Intel CPU가 있다면 Quick Sync를 활용한 동영상 트랜스코딩 가속이 가능합니다. hwaccel.transcoding.yml 파일을 docker-compose.yml에 연결하면 됩니다. 동영상 재생이 훨씬 부드러워집니다.
  • 머신러닝 서버 분리: AI 기능(얼굴 인식, 스마트 검색)이 CPU를 많이 사용합니다. 사진을 대량 업로드하는 초기에 서버가 느려질 수 있으니, 작업 관리자에서 CPU 사용률을 모니터링하세요. 초기 인덱싱이 끝나면 안정됩니다.
  • 썸네일 품질 조절: 저장 공간이 부족하다면 썸네일 품질을 낮추거나 WebP 포맷을 사용하여 공간을 절약할 수 있습니다.

업데이트 방법

Immich는 활발하게 개발되고 있어서 거의 매주 새 버전이 나옵니다. 업데이트는 간단합니다:

cd ~/immich
docker compose pull
docker compose up -d

두 줄이면 최신 버전으로 업데이트됩니다. 다만 메이저 버전 업데이트 시에는 릴리즈 노트를 먼저 확인하세요. 간혹 설정 파일 변경이 필요한 경우가 있습니다. Immich 공식 Discord와 GitHub Releases 페이지에서 변경 사항을 확인할 수 있습니다.

멀티 유저 활용

가족 구성원 각각에게 계정을 만들어줄 수 있습니다. 각자 자기 사진을 별도로 관리하면서도, 공유 앨범이나 파트너 공유로 서로의 사진을 볼 수 있습니다. 관리자 화면에서 각 사용자의 저장 공간 할당량을 설정할 수도 있어서, 한 사람이 디스크를 독점하는 걸 방지할 수 있습니다.

Synology NAS 사용자를 위한 추가 팁

이 블로그의 서버이기도 한 Synology NAS에서 Immich를 운영할 때 알아두면 좋은 팁을 정리합니다.

Container Manager(구 Docker 패키지) 활용

Synology DSM 7.2 이상에서는 Container Manager를 통해 docker-compose.yml 파일을 GUI에서 관리할 수 있습니다. SSH 접속 없이도 컨테이너 상태 확인, 로그 조회, 재시작이 가능합니다.

  • 프로젝트 생성: Container Manager에서 “프로젝트” 탭을 열고, docker-compose.yml 내용을 붙여넣기하면 됩니다.
  • 공유 폴더 경로: Synology에서는 공유 폴더가 /volume1/폴더이름 형태입니다. UPLOAD_LOCATION에 이 경로를 지정하세요.
  • 권한 설정: 사진 저장 폴더의 권한이 올바르게 설정되어야 합니다. Immich 컨테이너가 읽기/쓰기 권한을 가져야 합니다.

DSM 사진 앱과의 공존

Synology Photos를 이미 사용 중이라면, Immich와 동시에 운영할 수 있습니다. 다만 같은 사진을 두 곳에 저장하면 공간 낭비이므로, 점진적으로 Immich로 이전하는 것을 권장합니다. Immich의 외부 라이브러리 기능으로 Synology Photos의 사진 폴더를 연결하면 파일 이동 없이도 Immich에서 사진을 볼 수 있습니다.

마무리: 내 추억은 내 손으로 지키자

Immich를 설치하고 나면, 왜 진작 이걸 안 했을까 하는 생각이 들 겁니다. Google 포토만큼 편리하면서도 사진이 완전히 내 소유라는 안도감은 다른 어떤 서비스도 줄 수 없는 가치입니다.

정리하면, Immich가 주는 핵심 이점은 세 가지입니다:

  • 무제한 저장: 월 구독료 없이, 디스크 용량이 허락하는 한 무한정 사진을 저장할 수 있습니다.
  • 완벽한 프라이버시: 사진이 절대 외부 서버로 전송되지 않습니다. AI 분석도 내 서버에서 이루어집니다.
  • Google 포토급 사용 경험: 모바일 자동 백업, 자연어 검색, 얼굴 인식, 지도 뷰 등 핵심 기능을 모두 제공합니다.

봄맞이 대청소를 하듯, 이번 기회에 사진 관리 시스템도 정비해보세요. Google Takeout으로 사진을 내려받고, Immich에 차곡차곡 옮기는 작업을 주말 하루만 투자하면 충분합니다. 내 추억을 내 서버에서 직접 관리하는 뿌듯함을 느껴보시기 바랍니다.

이미지는 Leonardo AI 로 생성되었습니다.

이미지는 Claude AI 로 생성되었습니다.