G: 안녕하세요, 디지털 라이프를 사랑하는 여러분! 📸 우리는 수많은 사진과 영상을 찍으며 추억을 기록합니다. 스마트폰, 디지털카메라에 저장된 소중한 순간들을 구글 포토, 아이클라우드 같은 클라우드 서비스에 맡기고 계신가요? 편리하지만, 언젠가 서비스가 유료화되거나, 내 데이터가 어디에 어떻게 저장되는지 궁금했던 적은 없으신가요?
오늘은 이 모든 고민을 한 번에 해결해 줄 혁신적인 오픈소스 솔루션, Immich를 소개해 드리고자 합니다. Immich는 마치 나만의 구글 포토를 만드는 것과 같아요! 개인 서버에 사진과 영상을 안전하게 저장하고, 강력한 AI 기능으로 자동으로 분류하고 검색할 수 있는 놀라운 경험을 선사합니다.
이 가이드를 통해 Immich가 무엇인지부터 설치, 그리고 AI 기능을 활용하는 방법까지, 차근차근 알아보겠습니다. 이제 더 이상 내 소중한 추억을 남에게 맡기지 마세요! 🚀
💡 Immich, 왜 선택해야 할까? 나만의 클라우드 사진첩의 매력!
Immich는 단순한 사진 저장소가 아닙니다. 나만의 서버에서 모든 것을 통제할 수 있다는 강력한 이점을 바탕으로, 다양한 편의 기능을 제공합니다.
- 100% 데이터 주권 확보: 내 사진과 영상은 오직 나에게만 속합니다. 상업적인 클라우드 서비스와 달리, 내 서버에 모든 데이터가 저장되므로 프라이버시 침해 걱정 없이 안심할 수 있습니다. 🔒
- 강력한 AI 기반 검색: Immich의 핵심 기능 중 하나는 뛰어난 AI 능력입니다.
- 얼굴 인식: 사진 속 인물을 자동으로 인식하고 분류하여 특정 인물의 사진만 모아볼 수 있습니다. 👨👩👧👦
- 객체 및 장면 인식: “강아지”, “산”, “바다”, “음식” 등으로 검색하면 관련된 사진들을 찾아줍니다. 🐶⛰️🍽️
- 위치 기반 검색: 사진의 위치 정보를 기반으로 “부산”, “제주도” 등으로 검색할 수 있습니다. 🗺️
- 스마트 검색: 이 모든 조건을 조합하여 “부산에서 찍은 강아지 사진”처럼 복합적인 검색도 가능합니다! 🔎
- 다양한 플랫폼 지원: 웹 인터페이스는 물론, iOS/Android 모바일 앱을 통해 스마트폰 사진을 자동으로 백업하고, PC에서 편리하게 접근할 수 있습니다. 📱💻
- 오픈소스 & 활발한 커뮤니티: Immich는 오픈소스 프로젝트로, 전 세계 개발자들이 지속적으로 기능을 개선하고 있습니다. 문제가 발생해도 커뮤니티의 도움을 받을 수 있으며, 원하는 기능을 직접 추가하는 것도 가능합니다. 🤝
- 멀티 유저 지원: 가족이나 친구와 함께 Immich 서버를 공유하고 각자의 계정으로 사진을 관리할 수 있습니다. 🧑🤝🧑
🛠️ Immich 설치 전 준비물: 완벽한 시작을 위한 체크리스트
Immich를 설치하기 전에 몇 가지 준비물이 필요합니다. 대부분의 자가 호스팅 솔루션과 마찬가지로, 서버 역할을 할 장치와 소프트웨어 환경을 갖춰야 합니다.
1. 하드웨어 (서버) 🖥️
Immich는 Docker 컨테이너 기반으로 작동하며, 사진의 양과 AI 기능 활용도에 따라 성능 요구사항이 달라집니다.
- NAS (Network Attached Storage): 시놀로지, QNAP 등 Docker를 지원하는 NAS가 있다면 최적의 선택입니다. 안정적이고 24시간 구동에 적합합니다.
- 미니 PC 또는 구형 PC: NUC, 라즈베리 파이 4 (4GB 이상 RAM 권장), 혹은 사용하지 않는 구형 데스크톱/노트북이 있다면 훌륭한 서버가 될 수 있습니다.
- 가상 사설 서버 (VPS): 클라우드 서버(AWS EC2, Google Cloud, Azure 등)를 활용할 수도 있지만, 대용량 스토리지 비용이 발생할 수 있습니다.
권장 사양:
- CPU: 4코어 이상 (AI 처리에 필요)
- RAM: 8GB 이상 (많은 사진을 인덱싱하고 AI 기능을 사용할수록 더 필요합니다. 16GB 이상 권장)
- 저장 공간:
- 운영체제 및 Docker/Immich 설치 공간: 최소 30GB 이상의 SSD (PostgreSQL 데이터베이스가 SSD에 있을 때 성능이 좋습니다)
- 사진 저장 공간: 여유 있는 HDD 또는 SSD (본인이 보유한 사진 양에 따라 달라집니다. 외장하드 연결도 가능)
- 네트워크: 안정적인 유선 인터넷 연결 (기가비트 이더넷 권장)
2. 소프트웨어 🐳
대부분의 설치는 Linux 환경에서 이루어집니다 (Ubuntu, Debian 등).
- Docker: 컨테이너 가상화 플랫폼. Immich는 여러 개의 독립적인 서비스(컨테이너)로 구성되어 Docker 위에서 작동합니다.
- Docker Compose: 여러 Docker 컨테이너를 한 번에 정의하고 관리하는 도구입니다. Immich 설치의 핵심입니다.
- Git: Immich의 설정 파일을 다운로드하는 데 사용합니다.
3. 네트워크 (선택 사항이지만 권장) 🌐
외부에서 Immich 서버에 접속하고 싶다면 다음 설정을 고려해 보세요.
- 고정 IP 또는 DDNS (Dynamic DNS): 집 인터넷 IP가 유동적이라면 DDNS 서비스를 통해 도메인 주소로 항상 접속할 수 있게 합니다.
- 포트 포워딩: 외부에서 특정 포트(예: 22(SSH), 80(HTTP), 443(HTTPS), Immich 서비스 포트)로 접속할 수 있도록 라우터에서 설정합니다. (보안에 유의!)
- 역방향 프록시 (Reverse Proxy): Nginx Proxy Manager, Caddy, Traefik 등을 사용하여 도메인 주소로 접속하고, HTTPS를 쉽게 적용할 수 있습니다. 보안과 편의성을 크게 향상시킵니다. (강력 추천!)
🚀 Immich 설치 단계별 가이드: 이제 시작해 볼까요?
이제 본격적으로 Immich를 설치해 보겠습니다. 이 가이드에서는 Linux (Ubuntu/Debian) 환경을 기준으로 설명합니다.
1단계: Docker 및 Docker Compose 설치 🐳
아직 서버에 Docker가 설치되어 있지 않다면 다음 명령어를 실행하여 설치합니다.
# 필요한 패키지 설치
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release
# Docker 공식 GPG 키 추가
sudo mkdir -m 0755 -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# Docker APT 레포지토리 설정
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker 설치
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 현재 사용자에게 Docker 그룹 권한 부여 (sudo 없이 Docker 사용 가능)
sudo usermod -aG docker $USER
# 변경 사항 적용을 위해 재로그인 또는 서버 재부팅
# su - $USER
echo "Docker 설치 완료! 재로그인 또는 서버 재부팅이 필요합니다."
설치 후 docker run hello-world
명령어를 실행하여 Docker가 정상 작동하는지 확인합니다.
2단계: Immich 구성 파일 다운로드 및 설정 ⚙️
Immich는 GitHub에서 제공하는 docker-compose.yml
파일을 기반으로 설치됩니다.
-
Immich 설치 디렉토리 생성 및 이동: 사진 데이터와 설정 파일이 저장될 디렉토리를 만듭니다. 예시에서는
/immich
디렉토리를 사용합니다.mkdir ~/immich cd ~/immich
-
Immich 설정 파일 다운로드: Immich 공식 GitHub 저장소에서 최신
docker-compose.yml
및.env
파일을 다운로드합니다.wget https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml wget https://github.com/immich-app/immich/releases/latest/download/.env
-
.env
파일 설정 (필수!):.env
파일은 Immich 서비스의 환경 변수를 설정하는 파일입니다. 이 파일을 반드시 본인의 환경에 맞게 수정해야 합니다.nano
또는vi
편집기로 엽니다.nano .env
주요 설정 항목은 다음과 같습니다.
DB_HOSTNAME
: 데이터베이스 호스트 이름. 기본값immich_postgres
그대로 두세요.DB_USERNAME
,DB_PASSWORD
,DB_DATABASE
: 데이터베이스 접속 정보. 기본값을 사용하거나 원하는 대로 변경하세요. (변경 시 반드시 기억해야 합니다!)UPLOAD_LOCATION
: 매우 중요! 사진과 동영상이 저장될 경로를 지정합니다./mnt/photos
와 같이 서버의 실제 저장 공간을 지정해야 합니다. 이 디렉토리는 Immich 컨테이너의/usr/src/app/upload
와 연결됩니다.- 예시:
/your/actual/path/to/photos
- 팁: 외장 하드를 사용한다면 해당 하드를 마운트한 경로를 지정하세요.
- 예시:
UPLOAD_MAX_SIZE
: 최대 업로드 파일 크기 (기본값 10GB). 필요에 따라 조정하세요. (예:10GB
,20GB
)TZ
: 타임존 설정.Asia/Seoul
로 설정하여 올바른 시간 정보를 표시하도록 합니다.- 예시:
TZ=Asia/Seoul
- 예시:
IMMICH_WEB_PORT
: Immich 웹 인터페이스가 사용할 포트. 기본값 3000. 다른 서비스와 충돌하지 않는다면 그대로 사용해도 됩니다. (예:3000
,8080
)IMMICH_SERVER_PORT
: 백엔드 API 포트. 기본값 3001. 그대로 두세요.NODE_ENV
: 운영 환경.production
으로 설정하세요.
# .env 파일 예시 (수정 필요 부분): # --- Immich Core --- DB_HOSTNAME=immich_postgres DB_USERNAME=immich DB_PASSWORD=immich DB_DATABASE=immich # --- Timezone --- TZ=Asia/Seoul # <-- 한국 시간대로 변경! # --- Storage Path --- UPLOAD_LOCATION=/data/immich/upload # <-- 사진/동영상 저장될 실제 경로로 변경! (예: /mnt/my_photos) # --- CORS (Optional) --- # CORS_ORIGIN=http://localhost:3000 # 웹 UI 도메인, 역방향 프록시 사용 시 필요 없음 # --- Authentication --- # JWT_SECRET=super-secret-jwt-key # 기본값 사용하거나 직접 생성 # --- Others --- # LOG_LEVEL=verbose # NODE_ENV=development # <-- 운영 환경에서는 production 으로 변경! # UPLOAD_MAX_SIZE=10GB # <-- 최대 업로드 파일 크기 (필요 시 조절)
수정 후
Ctrl+X
,Y
,Enter
를 눌러 저장하고 종료합니다.
3단계: Immich 실행 🚀
모든 설정이 완료되었다면 이제 Immich 서비스를 시작할 시간입니다!
-
Docker Compose로 Immich 서비스 시작: 다운로드한
docker-compose.yml
파일이 있는 디렉토리(~/immich
)에서 다음 명령어를 실행합니다.docker compose up -d
-d
옵션은 백그라운드에서 컨테이너를 실행하여 터미널을 닫아도 서비스가 계속 작동하도록 합니다.- 최초 실행 시 Immich에 필요한 모든 Docker 이미지를 다운로드하므로 시간이 다소 소요될 수 있습니다.
-
서비스 상태 확인: 모든 컨테이너가 정상적으로 실행 중인지 확인합니다.
docker compose ps
모든 서비스(immich-server, immich-microservices, immich-machine-learning, immich-postgres, immich-redis 등)의 상태가
running
으로 표시되어야 합니다. -
Immich 웹 인터페이스 접속: 웹 브라우저를 열고
http://[서버 IP 주소]:[IMMICH_WEB_PORT]
(예:http://192.168.1.100:3000
)로 접속합니다.- 성공적으로 접속되면 초기 설정 화면이 나타납니다. 관리자 계정을 생성하고 로그인합니다.
축하합니다! 이제 나만의 Immich 사진 서버가 성공적으로 구축되었습니다! 🎉
🖼️ Immich 활용 및 AI 기능 파헤치기: 스마트한 사진 관리
Immich에 접속했다면 이제 사진을 업로드하고 강력한 AI 기능을 활용해 보세요.
1단계: 사진 업로드 및 관리 📤
사진을 Immich 서버로 가져오는 방법은 여러 가지가 있습니다.
- 웹 인터페이스를 통한 업로드: 웹 브라우저에서 ‘업로드’ 버튼을 클릭하여 개별 사진이나 폴더를 업로드할 수 있습니다.
- 모바일 앱을 통한 자동 백업:
- iOS 앱스토어 또는 Android 구글 플레이 스토어에서 “Immich”를 검색하여 앱을 설치합니다.
- 앱에서 서버 주소와 로그인 정보를 입력하고 연결합니다.
- 설정에서 ‘자동 백업’ 기능을 활성화하면 스마트폰의 새로운 사진이 자동으로 Immich 서버로 업로드됩니다. (구글 포토와 동일한 편리함!) 📱
- 외부 저장소 연결 (CLI):
이미 가지고 있는 대용량 사진 폴더를 Immich에 연결할 수 있습니다. 이는 Immich 서버의
UPLOAD_LOCATION
경로에 사진을 복사하거나,external-library
기능을 사용하여 기존 폴더를 스캔하도록 설정하는 방식입니다.- 예시: 서버의
/data/my_old_photos
폴더를 연결하고 싶다면, Immich 컨테이너 내부에서 해당 경로를 마운트하고 CLI 명령어를 통해 스캔합니다. 이는 고급 설정에 해당합니다.
- 예시: 서버의
2단계: AI 기능 파헤치기 🧠
Immich는 사진 업로드 후 백그라운드에서 AI 작업을 수행하여 메타데이터를 추출하고 분류합니다. 이 과정은 사진의 양과 서버 성능에 따라 시간이 소요될 수 있습니다.
-
얼굴 인식 (Face Recognition):
- 사진 속 인물을 자동으로 감지하고, 비슷한 얼굴끼리 그룹화합니다.
- ‘탐색’ 탭에서 ‘사람’ 섹션을 클릭하면 인식된 얼굴들을 볼 수 있습니다.
- 특정 얼굴에 이름을 태그하면, 나중에 그 사람의 사진만 쉽게 검색할 수 있습니다. 👧🧑🦰
- 예시: ‘철수’라고 이름 태그를 해두면 검색창에 ‘철수’를 입력했을 때 철수가 나온 사진만 보여줍니다.
-
객체 및 장면 인식 (Object & Scene Detection):
- 사진에 포함된 다양한 객체(예: 개, 자동차, 건물, 나무)나 장면(예: 해변, 산, 도시)을 자동으로 인식합니다.
- 검색창에 원하는 객체나 장면을 입력하여 검색합니다.
- 예시: “dog”, “car”, “beach”, “mountain”, “food” 등으로 검색하여 원하는 사진을 찾을 수 있습니다. 🐶🚗🏖️
- 팁: 한글 검색도 일부 지원되지만, 아직 영어 검색이 더 정확할 수 있습니다.
-
역 지오코딩 (Reverse Geocoding):
- 사진에 포함된 GPS 정보를 기반으로 촬영 장소의 도시, 국가 등의 이름을 자동으로 부여합니다.
- ‘탐색’ 탭의 ‘장소’ 섹션에서 지도 형태로 사진이 촬영된 위치를 볼 수 있습니다. 🌍
- 검색창에 “Seoul”, “Paris” 등 도시 이름을 입력하여 해당 도시에서 촬영된 사진을 찾을 수 있습니다.
-
스마트 검색 (Smart Search):
- Immich의 진정한 강점은 이 모든 AI 기능을 조합하여 복합적인 검색을 수행할 수 있다는 것입니다.
- 예시:
- “dog park” (공원에서 찍은 강아지 사진) 🐾
- “cat indoor” (실내에서 찍은 고양이 사진) 🐱
- “sunset beach 2023” (2023년에 해변에서 찍은 일몰 사진) 🌅
- “wedding dress Seoul” (서울에서 찍은 웨딩드레스 사진) 👰♀️
- 검색창에 키워드를 조합하여 입력하면 Immich의 AI가 놀라운 정확도로 원하는 사진을 찾아냅니다.
3단계: 유용한 기능들 ✨
- 앨범 생성 및 공유: 특정 테마나 이벤트별로 앨범을 만들고, 다른 Immich 사용자나 웹 링크를 통해 공유할 수 있습니다.
- 타임라인 뷰: 모든 사진이 시간 순서대로 정렬되어 스크롤하며 추억을 되새길 수 있습니다.
- 맵 뷰: 지도 위에 사진이 촬영된 위치를 표시하여 시각적으로 감상할 수 있습니다.
- 아카이빙: 특정 사진을 ‘아카이브’하여 메인 타임라인에서 숨길 수 있습니다. (삭제는 아님)
- 비디오 지원: 사진뿐만 아니라 동영상 파일도 업로드, 관리, 재생할 수 있습니다.
⚙️ Immich 고급 설정 및 팁: 더욱 강력하게!
Immich를 더 효율적이고 안전하게 사용하기 위한 몇 가지 고급 설정과 팁을 공유합니다.
1. 백업 전략 수립 🚨
가장 중요한 부분 중 하나입니다! 서버가 고장 나거나 데이터가 손상될 경우를 대비하여 반드시 백업 계획을 세워야 합니다.
-
Immich 데이터 볼륨 백업: Immich의 모든 설정, 메타데이터, 그리고 가장 중요한 사진/영상 파일은 Docker 볼륨과
UPLOAD_LOCATION
에 저장됩니다.docker-compose.yml
파일에 정의된postgres-data
와redis-data
볼륨, 그리고.env
파일에 설정한UPLOAD_LOCATION
경로를 정기적으로 백업해야 합니다.- 방법:
rsync
명령어를 사용하거나, NAS의 백업 기능을 활용하여 다른 저장 장치나 클라우드 스토리지로 복사합니다.
# 예시: postgres-data 볼륨 백업 (데이터베이스 중지 후 수행하는 것이 안전) docker compose down sudo cp -r /var/lib/docker/volumes/immich_postgres-data /mnt/backup/immich_backup/postgres-data_$(date +%Y%m%d) # UPLOAD_LOCATION 백업 sudo rsync -avh /your/actual/path/to/photos /mnt/backup/immich_backup/photos_$(date +%Y%m%d) docker compose up -d
- 자동화:
cron
스케줄러를 사용하여 정기적으로 백업 스크립트를 실행하도록 설정합니다.
2. 외부 접근 설정 (Reverse Proxy & HTTPS) 🌐
집 밖에서도 Immich에 안전하게 접속하고 싶다면 역방향 프록시 설정을 강력히 추천합니다.
-
포트 포워딩 (Port Forwarding):
- 공유기(라우터) 설정에 들어가 Immich 서비스 포트(기본 3000)를 서버의 내부 IP 주소로 포워딩합니다.
- 주의: 이 방법은 보안에 취약할 수 있으므로, 반드시 HTTPS를 적용하고 강력한 비밀번호를 사용해야 합니다.
-
역방향 프록시 (Reverse Proxy) & HTTPS (SSL/TLS):
- Nginx Proxy Manager (NPM): Docker 컨테이너로 쉽게 설치할 수 있으며, 웹 UI를 통해 역방향 프록시 설정과 Let’s Encrypt를 이용한 무료 SSL 인증서 발급을 간편하게 할 수 있습니다. 초보자에게 강력 추천합니다.
- Caddy: 설정이 매우 간결하고 자동으로 HTTPS를 적용해 줍니다.
- Nginx: 전통적이고 강력한 웹 서버/리버스 프록시입니다.
- 이들을 사용하면
https://photos.mydomain.com
과 같은 나만의 도메인으로 안전하게 Immich에 접속할 수 있습니다.
설정 흐름:
- 자신만의 도메인 (예:
mydomain.com
)을 구매하거나, DDNS 서비스를 통해 무료 도메인을 확보합니다. - 도메인의 DNS 설정에서 Immich 서버의 공인 IP 주소를 연결합니다.
- 역방향 프록시 서버(NPM, Caddy 등)를 설치하고, 해당 서버를 통해 Immich의 내부 IP:포트(예:
192.168.1.100:3000
)로 요청을 전달하도록 설정합니다. - 역방향 프록시에서 Let’s Encrypt를 통해 SSL 인증서를 발급받아 HTTPS를 적용합니다.
3. 성능 최적화 ⚡️
사진과 영상이 많아지거나 동시 접속자가 늘어나면 성능 문제가 발생할 수 있습니다.
- SSD 사용: PostgreSQL 데이터베이스가 SSD에 저장되도록 설정하면 Immich의 전반적인 반응 속도가 크게 향상됩니다. (설치 시
/var/lib/docker/volumes
또는 Immich 볼륨을 SSD에 두세요.) - RAM 증설: RAM이 많을수록 사진 인덱싱 및 AI 처리 속도가 빨라집니다. 특히 많은 사진을 한 번에 처리할 때 유리합니다.
- GPU 가속 (선택 사항): Immich의
immich-machine-learning
서비스는 GPU를 활용하여 AI 처리 속도를 높일 수 있습니다. NVIDIA GPU가 있다면 Docker에 GPU 지원을 설정하고,docker-compose.yml
파일에 GPU 관련 설정을 추가하여 성능을 극대화할 수 있습니다. (설정 방법은 Immich 공식 문서 참고) - CPU 코어 수: AI 모델 실행 시 여러 코어를 활용하므로, CPU 코어 수가 많을수록 처리량이 늘어납니다.
4. Immich 업데이트 방법 🔄
Immich는 활발히 개발되는 프로젝트이므로, 정기적으로 업데이트를 확인하고 적용하는 것이 좋습니다.
- Immich 디렉토리로 이동:
cd ~/immich
- Git으로 최신 파일 가져오기:
git pull
- 만약
git
으로 다운로드하지 않고wget
으로 파일을 받았다면,wget
으로.env
와docker-compose.yml
파일을 다시 다운로드하여 덮어씌워야 합니다. (이때 기존 설정값은 수동으로 옮겨야 하므로git clone
으로 시작하는 것이 좋습니다.)
- 만약
- Docker 이미지 업데이트 및 서비스 재시작:
docker compose pull docker compose up -d
pull
명령은 최신 Docker 이미지를 다운로드하고,up -d
는 서비스를 재시작하며 변경된 이미지로 컨테이너를 다시 생성합니다.- 업데이트 후에는 Immich 웹 인터페이스에 접속하여 새로운 기능이나 변경 사항을 확인하세요.
맺음말: 나만의 디지털 유산을 구축하세요! 🎉
Immich는 단순히 사진을 저장하는 것을 넘어, 우리의 소중한 추억을 보다 스마트하고 안전하게 관리할 수 있도록 돕는 강력한 도구입니다. 이 가이드를 통해 여러분만의 Immich 사진 서버를 성공적으로 구축하고, AI의 힘으로 편리하게 사진을 정리하며, 무엇보다 내 데이터에 대한 완전한 통제권을 확보하는 만족감을 느끼셨기를 바랍니다.
처음에는 다소 복잡하게 느껴질 수 있지만, 한 번 구축해두면 나만의 디지털 유산을 관리하는 든든한 기반이 될 것입니다. 궁금한 점이 있다면 Immich 커뮤니티나 관련 포럼을 적극 활용해 보세요.
이제 더 이상 제한적인 클라우드 서비스에 얽매이지 말고, 여러분의 소중한 사진과 영상을 Immich와 함께 자유롭게, 그리고 안전하게 즐기세요! 해피 셀프-호스팅! ✨🚀
더 알아보기:
- Immich 공식 웹사이트:
https://immich.app/
- Immich GitHub 저장소:
https://github.com/immich-app/immich