구글포토를 계속 쓰면서도 마음 한쪽이 불편했던 이유는 비용만은 아니었습니다. 가족 사진, 영수증, 여행 기록이 한곳에 오래 쌓이다 보니 사진 백업은 편해야 하지만, 저장 위치와 백업 방식은 직접 통제하고 싶다는 생각이 커졌습니다.

구성 환경
이번 구성은 Rocky Linux 9 + Docker Compose v2 기준입니다. Rocky Linux 기본 설정은 Rocky Linux 9 기본 설정 글을 먼저 보면 흐름이 편하고, Docker가 아직 없다면 Docker 설치글을 먼저 끝내는 편이 좋습니다.
| 항목 | 값 |
|---|---|
| OS | Rocky Linux 9.x |
| 실행 방식 | Docker + Compose v2 |
| Immich 포트 | 2283/tcp |
| RAM | 최소 4GB, 얼굴 인식까지 고려하면 8GB 이상 권장 |
| 사진 저장 경로 | /srv/immich/library |
| DB 저장 경로 | /srv/immich/postgres |
| 공식 문서 | Immich Docker Compose 안내 |
Immich는 공식 문서 기준으로 docker compose 설치 흐름이 잘 정리되어 있습니다. 예전 자료에서는 pgvecto-rs DB 이미지를 쓰는 경우도 많았지만, 현재 공식 Compose 예시는 ghcr.io/immich-app/postgres 계열 이미지로 정리되어 있습니다. 이미 운영 중인 서버라면 새 Compose 파일을 그대로 덮기보다, 공식 업그레이드 문서를 먼저 확인하는 쪽이 안전합니다.
docker-compose.yml 구성
Immich는 기능이 많아 보여도 기본 구성은 비교적 단순합니다. 사진 업로드와 웹 화면을 담당하는 immich-server, 검색과 얼굴 인식에 쓰이는 machine-learning, 캐시용 redis, 데이터베이스가 함께 떠야 정상적으로 동작합니다.
환경값은 .env로 분리해두는 편이 관리하기 쉽습니다. 비밀번호는 복잡하게 만들수록 좋지만, Docker 파싱 문제를 줄이려면 공식 안내처럼 영문과 숫자 조합으로 두는 쪽이 덜 번거로웠습니다.

SELinux와 방화벽 설정
Rocky Linux 9에서 Immich를 올릴 때 가장 자주 막히는 부분은 SELinux입니다. Docker 볼륨에 :z 라벨을 붙이지 않거나 컨텍스트가 맞지 않으면 컨테이너는 떠도 내부에서 파일을 쓰지 못합니다.
실제로는 이런 로그를 만나기 쉽습니다.
DB 쪽에서는 아래처럼 보일 수 있습니다.
이때 setenforce 0으로 넘기는 방식은 피하는 게 좋습니다. 계속 켜둘 홈서버라면 SELinux를 끄는 대신 컨텍스트를 맞춰서 해결하는 방식이 맞습니다.
firewalld도 Rocky Linux 기본 흐름에 맞춰 열어줍니다.
컨테이너 실행은 Immich Compose 파일이 있는 디렉터리에서 진행합니다.
얼굴 인식과 메모리 사용
Immich의 장점은 사진을 단순히 저장하는 데서 끝나지 않는다는 점입니다. 업로드한 사진을 기준으로 검색, 미리보기, 얼굴 인식이 돌아가면 구글포토를 쓰던 감각과 꽤 가까워집니다.

다만 immich-machine-learning 컨테이너는 생각보다 메모리를 사용합니다. 사진 수가 많고 CPU만으로 인덱싱을 돌리면 초반 며칠은 서버가 계속 바쁠 수 있습니다. N100 미니PC나 ARM 서버처럼 저전력 장비에서는 업로드 직후 결과를 기대하기보다, 밤새 천천히 처리하게 두는 편이 현실적입니다.
메모리와 CPU 사용량은 아래 명령으로 확인할 수 있습니다.
CPU 인덱싱 속도는 사진 해상도와 장비에 따라 차이가 큽니다. GPU 가속을 붙이면 빨라질 수 있지만, 홈서버에서는 전력과 발열도 함께 봐야 하므로 무조건 정답이라고 보기는 어렵습니다.
모바일 앱 백업 설정
서버가 올라오면 브라우저에서 아래 주소로 접속합니다.
외부에서 쓰려면 리버스 프록시와 HTTPS까지 붙이는 편이 좋습니다. 다만 집 안에서 먼저 테스트할 때는 2283 포트만으로도 충분합니다. 모바일 앱에서는 서버 URL을 넣고 로그인한 뒤 백그라운드 자동 백업을 켜면 됩니다.
처음부터 모든 앨범을 올리기보다는 카메라 앨범부터 시작하는 편이 좋습니다. 스크린샷이나 다운로드 폴더는 나중에 필요할 때 추가해야 정리가 덜 흐트러집니다.
스토리지 설계
사진 백업은 처음에는 100GB도 커 보이지만, 가족 단위로 몇 년 치를 모으면 금방 단위가 바뀝니다. 휴대폰 사진에 동영상까지 섞이면 1TB는 시작점에 가깝고, 장기 보관은 4TB 이상부터 여유가 생깁니다.
| 제품 | 장점 | 단점 |
|---|---|---|
| 구글 포토 | 앱 완성도와 검색이 좋고 관리 부담이 거의 없습니다 | 용량이 늘수록 비용이 계속 붙고 데이터 위치를 직접 통제하기 어렵습니다 |
| Immich 셀프호스팅 | 원본 사진을 내 서버에 보관하고 백업 정책을 직접 정할 수 있습니다 | 서버 운영, 업데이트, 백업을 직접 챙겨야 합니다 |
| Synology NAS | 저장소 관리와 디스크 교체가 편하고 가족용 공유에 강합니다 | 초기 비용이 있고 Docker 성능은 모델에 따라 차이가 납니다 |
| N100/N150 미니PC | 전력 대비 성능이 좋아 Immich 서버용으로 무난합니다 | 디스크 베이를 따로 구성해야 해서 저장소 설계가 필요합니다 |
| NAS HDD | 대용량을 비교적 안정적으로 운용하기 좋습니다 | SSD보다 느리며 DB 저장 위치로는 적합하지 않을 수 있습니다 |

개인적으로는 사진 원본은 NAS HDD에 두고, DB는 SSD에 두는 구성이 가장 무난해 보였습니다. Immich 공식 안내에서도 DB를 네트워크 공유에 두는 방식은 권장하지 않으니, 처음 설계할 때 저장 위치를 나눠두는 편이 좋습니다.
마지막으로 백업은 Immich 하나로 끝내지 않는 게 안전합니다. 서버에 원본이 있고, NAS나 외장하드에 한 벌 더 있으며, 정말 중요한 사진은 외부 저장소까지 두는 3-2-1 규칙을 기준으로 잡으면 복구 선택지가 남습니다. Immich는 단순히 구글포토 화면을 대신하는 도구라기보다, 내 사진 보관 방식을 다시 정리하게 만드는 홈서버 서비스에 가깝습니다.
답글 남기기