목차
OpenMediaVault와 Immich 연동 사례: 나만의 프라이빗 사진 클라우드 구축
안녕하세요, 13년차 인프라 엔지니어 서버실입니다. 오늘은 많은 분들이 고민하시는 사진 관리 문제, 특히 프라이빗 클라우드 구축에 대한 이야기를 해볼까 합니다. 구글 포토의 정책 변경 이후, '내 사진을 내 손으로 관리하고 싶다!'는 열망이 더 커진 것 같아요. 저도 처음엔 클라우드 서비스가 편해서 잘 썼는데, 역시 데이터 주권(Data Sovereignty)은 중요하더라고요. 그래서 홈랩에서 직접 OpenMediaVault(OMV)와 Immich를 연동해서 저만의 프라이빗 사진 클라우드를 구축했습니다. 나스(NAS) 환경에서 사진을 자동으로 백업하고 관리할 수 있게 된 과정을 솔직하게 공유해 드릴게요.
그림 1: OpenMediaVault 기반 Immich 프라이빗 사진 클라우드 아키텍처
OpenMediaVault와 Immich, 왜 이 조합일까요?
먼저, 이 두 친구가 어떤 역할을 하는지 간단히 짚어보고 갈까요? 쉽게 말해, OpenMediaVault(OMV)는 나스(NAS, Network Attached Storage)의 뼈대 역할을 하고, Immich는 그 위에 멋진 옷을 입혀주는 사진 관리 솔루션이라고 생각하시면 됩니다.
- OpenMediaVault (OMV): 데비안(Debian) 리눅스 기반의 무료 오픈소스 NAS 운영체제입니다. 파일 공유(SMB/NFS), RAID 관리, 플러그인 확장성, 그리고 무엇보다 도커(Docker) 컨테이너 지원이 강력해서 홈랩에서 활용도가 정말 높아요. 튼튼한 스토리지 백엔드를 제공하는 셈이죠. 제가 직접 써보니 안정성도 뛰어나고 관리도 편하더라고요.
- Immich: 요즘 뜨는 셀프 호스팅(Self-hosted) 사진 및 비디오 백업 솔루션입니다. 구글 포토와 비슷한 사용자 경험을 제공하면서, AI 기반 얼굴 인식(Facial Recognition), 객체 감지(Object Detection), 검색 기능, 타임라인(Timeline) 뷰, 공유 앨범 등 고급 기능까지 갖추고 있어요. 모바일 앱(iOS/Android)도 있어서 자동 백업도 가능합니다. 이 정도면 '나만의 구글 포토'라고 불러도 손색이 없죠.
OMV가 안정적인 스토리지 공간을 제공하고, Immich가 그 공간에 저장된 사진들을 스마트하게 관리해주니, 이보다 더 좋은 조합이 있을까요? 👍
OMV에 도커와 Immich 설치하기: 실전 구현
이제 본격적으로 OMV 위에 Immich를 올려볼 차례입니다. OMV에 도커와 포테이너(Portainer)가 이미 설치되어 있다고 가정할게요. (아직 설치 안 하셨다면, OMV 웹 UI에서 OMV-Extras 플러그인을 통해 쉽게 설치할 수 있습니다.)
1. Immich용 공유 폴더 생성
먼저 OMV에서 Immich가 사진을 저장할 공유 폴더를 만들어야 합니다. 저는 /srv/dev-disk-by-uuid-XXXX/data/immich 경로에 immich라는 공유 폴더를 만들었어요. 여기서 정말 중요한 부분이 바로 권한 설정입니다. 도커 컨테이너 내부의 프로세스가 이 폴더에 접근하고 파일을 쓸 수 있도록 적절한 권한을 부여해야 하는데, 보통 PUID와 PGID를 사용합니다. 저는 1000:1000 (기본 사용자/그룹)으로 설정했습니다.
2. Docker Compose 파일 준비
Immich는 여러 서비스(PostgreSQL, Redis, Microservices 등)로 구성되어 있어서 도커 컴포즈(Docker Compose)로 한 번에 배포하는 게 가장 편리합니다. Immich 공식 GitHub 저장소에서 예시 docker-compose.yaml 파일을 가져오는 게 좋아요. 저는 항상 최신 버전을 확인하고 수정해서 사용합니다.
# OMV SSH 접속 후 작업 디렉토리 생성
mkdir -p /srv/dev-disk-by-uuid-XXXX/config/immich
cd /srv/dev-disk-by-uuid-XXXX/config/immich
# Immich GitHub에서 docker-compose.yaml 다운로드 (최신 버전 확인 필수)
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 파일과 docker-compose.yml 파일을 열어서 몇 가지를 수정해야 합니다.
- .env 파일 수정:
UPLOAD_LOCATION=./upload부분을 OMV에서 생성한 공유 폴더 경로로 변경합니다. 예:UPLOAD_LOCATION=/data/immich/upload(컨테이너 내부 경로)DB_PASSWORD,REDIS_PASSWORD등을 강력한 비밀번호로 변경하세요.TZ=Asia/Seoul처럼 시간대를 설정합니다.
- docker-compose.yml 파일 수정:
- 각 서비스의
volumes섹션에서 OMV 공유 폴더와 연결되는 부분을 확인하고 수정합니다. 특히./upload:/usr/src/app/upload부분을/srv/dev-disk-by-uuid-XXXX/data/immich:/usr/src/app/upload(호스트 경로:컨테이너 내부 경로) 형태로 맞춰줘야 합니다. PUID,PGID환경 변수를 OMV에서 설정한 사용자/그룹 ID에 맞춰주세요.
- 각 서비스의
이 부분이 사실 제가 겪었던 가장 큰 삽질의 핵심이었습니다. 😅 볼륨 마운트 경로를 잘못 지정하거나 권한이 없어서 컨테이너가 파일을 못 읽는 경우가 정말 많거든요. 항상 호스트 경로와 컨테이너 내부 경로가 정확히 매핑되는지, 그리고 해당 호스트 폴더에 컨테이너가 접근할 수 있는 권한이 있는지 꼼꼼히 확인해야 합니다.
그림 2: Immich Docker Compose 설정 파일 예시 (볼륨 및 환경 변수)
3. Immich 서비스 실행
파일 수정이 끝났다면, 이제 도커 컴포즈를 이용해 서비스를 실행합니다. OMV SSH 터미널에서 docker-compose.yml 파일이 있는 디렉토리로 이동한 다음 아래 명령어를 실행하세요.
docker compose up -d
-d 옵션은 백그라운드에서 컨테이너를 실행하라는 의미입니다. 컨테이너들이 모두 정상적으로 올라오는지 docker compose ps 명령어로 확인해볼 수 있습니다.
⚠️ 주의사항 및 트러블슈팅: 제가 겪은 삽질들
제가 이 OpenMediaVault와 Immich 연동 구성을 하면서 가장 많이 겪었던 문제들은 역시 권한(Permissions)과 볼륨 마운트(Volume Mount)였습니다. 특히 OMV의 공유 폴더와 도커 컨테이너 간의 권한 문제가 많았어요. 홈랩에서 사진 백업을 구축할 때 이 부분을 간과하면 정말 답답하더라고요.
- 권한 문제 (Permission Denied): Immich 컨테이너가 OMV 공유 폴더에 사진을 저장하거나 데이터베이스 파일을 생성할 때 'Permission Denied' 에러가 발생하는 경우가 많았습니다. 이럴 때는 OMV에서 해당 공유 폴더의 ACL(Access Control List) 설정을 확인하거나, SSH로 접속해서 직접
chown명령어로 소유권을 변경해줘야 합니다. 예를 들어,sudo chown -R 1000:1000 /srv/dev-disk-by-uuid-XXXX/data/immich이런 식으로요.PUID,PGID값과 일치시켜주는 게 정말 중요합니다. - 리소스 부족 (Resource Exhaustion): Immich는 생각보다 많은 리소스를 사용합니다. 특히 처음 사진을 인덱싱(Indexing)하고 AI 기능을 사용할 때 CPU와 RAM 사용량이 급증할 수 있어요. 저사양 NAS나 라즈베리 파이(Raspberry Pi) 같은 장비에선 버벅거릴 수 있습니다. 저는 N100 기반 미니 PC에 16GB RAM을 사용하는데, 이 정도면 충분하더라고요. 나스 환경의 사양을 고려해서 구축해야 합니다.
- 포트 충돌 (Port Conflict): 만약 OMV에서 다른 서비스가 Immich와 동일한 포트(기본 2283)를 사용하고 있다면 충돌이 발생할 수 있습니다.
docker-compose.yml파일에서 Immich 서버의 포트를 다른 번호로 변경해주거나, 기존 서비스의 포트를 변경해야 합니다.
이런 문제들을 하나씩 해결해나가면서 '아, 역시 인프라 엔지니어는 삽질의 연속이구나' 싶었지만, 각각을 해결할 때마다 느껴지는 성취감이 있었어요. 💡
설치 검증 및 결과 확인 🎉
모든 컨테이너가 정상적으로 실행되면, 웹 브라우저를 열고 http://[OMV_IP_주소]:2283으로 접속하면 됩니다. 처음 접속하면 관리자 계정을 생성하라는 화면이 나올 거예요. 계정을 만들고 로그인하면 드디어 Immich의 멋진 인터페이스를 만날 수 있습니다!
모바일 앱을 설치해서 OMV 서버의 IP 주소와 포트를 입력하면 스마트폰 사진을 자동으로 백업할 수 있어요. 실제로 제가 갤러리 앱에서 사진 몇 장을 찍어보니 Immich 웹 UI에 바로바로 동기화되더라고요. 정말 신기하고 뿌듯했습니다. 🤩
그림 3: Immich 웹 UI (사진 업로드 및 타임라인)
가족 사진, 여행 사진, 친구들과의 추억까지! 이제 모두 제 OMV 나스에 안전하게 보관되고, Immich의 강력한 기능으로 편리하게 관리할 수 있게 되었습니다. 프라이버시(Privacy) 걱정 없이, 원하는 만큼의 용량을 마음껏 쓸 수 있다는 점이 가장 큰 장점 같아요.
마무리하며: 나만의 사진 클라우드, 그 다음은?
OpenMediaVault와 Immich를 연동해서 나만의 프라이빗 사진 클라우드를 구축하는 과정, 어떠셨나요? 처음에는 조금 복잡하게 느껴질 수도 있지만, 한 번 구축해두면 정말 든든한 나만의 사진 보관소가 생기는 겁니다. 데이터 주권을 되찾고, 클라우드 서비스 구독료도 절약할 수 있으니 일석이조죠.
저는 여기서 멈추지 않고, Nginx Proxy Manager 같은 리버스 프록시(Reverse Proxy)를 이용해 외부에서도 안전하게 접속할 수 있도록 설정할 계획입니다. 또, 백업 전략(Backup Strategy)도 빠뜨리지 않고 구현해야 하겠더라고요. Raid는 백업이 아니라는 점, 다들 아시죠? 😉
여러분도 제 경험을 바탕으로 나만의 프라이빗 사진 클라우드 구축에 도전해 보시길 강력히 추천합니다. 궁금한 점이 있으시다면 언제든지 댓글로 남겨주세요! 다음에는 Nginx Proxy Manager를 활용한 외부 접속 설정에 대해 다뤄볼까 합니다. 기대해주세요!
그림 4: OMV + Immich 연동의 주요 장점
'IT > Nas' 카테고리의 다른 글
| [NAS] OpenMediaVault에 Immich 구축 6개월 사용기: 자가 호스팅 사진 관리의 명과 암 (0) | 2026.05.30 |
|---|---|
| [Nas] TrueNAS iSCSI로 가상머신 마이그레이션: ESXi 스토리지 이전 완벽가이드 (0) | 2026.05.29 |
| [Nas] Cloudflare Tunnel vs. VPN: 홈서버 원격 접속 비용 효율성 비교 (0) | 2026.05.26 |
| [Nas] Nextcloud S3 호환 스토리지 연동 사례: 대용량 클라우드 확장 전략 (0) | 2026.05.24 |
| [NAS] OMV와 Immich 연동: 구글 포토 대안, 실제 구축 가이드 (0) | 2026.05.23 |
| [Nas] TrueNAS SCALE ZFS 성능 벤치마크: 하드웨어별 최적화 전략 (0) | 2026.05.22 |