Immich: VPS에 사진과 동영상을 위한 나만의 클라우드 설치하기
Immich는 사진과 동영상을 저장하고 자동으로 업로드할 수 있는 셀프 호스팅 서비스입니다. 모바일 앱, 웹 인터페이스, 앨범, 스마트 검색, 얼굴 인식 기능을 제공하며, 미디어 라이브러리는 사용자가 선택한 서버에 저장됩니다.
아래에서는 Immich의 요구 사항, Docker Compose를 이용한 Ubuntu 설치, HTTPS 설정, 스마트폰 연결, 외부 백업 구성을 차례로 살펴봅니다.
여섯 단계로 Immich 설치하기
- 충분한 RAM과 디스크 공간을 갖춘 Linux VPS를 생성합니다.
photos.example.com과 같은 서브도메인을 서버 IP로 연결합니다.- Docker를 설치하고 Immich 공식 설정 파일을 다운로드합니다.
- 미디어 라이브러리와 데이터베이스 경로를 지정한 뒤 컨테이너를 시작합니다.
- 내부 포트를 외부에서 차단하고 HTTPS를 연결합니다.
- 모바일 앱을 설치하고 외부 백업을 설정합니다.
Immich란 무엇인가
Immich는 사진과 동영상 라이브러리를 직접 관리할 수 있는 오픈 소스 애플리케이션입니다. 사진은 타임라인에 표시되고, 앨범으로 묶거나 검색으로 찾을 수 있으며, 스마트폰에서 서버로 자동 업로드할 수 있습니다.
일반적인 클라우드 사진 서비스와 가장 큰 차이는 서버 측을 직접 제어한다는 점입니다. 파일은 자신의 VPS나 홈 서버에 저장되지만, 여유 공간, 업데이트, 보안, 백업은 서버 소유자가 직접 관리해야 합니다.
| 항목 | 클라우드 사진 서비스 | Immich |
|---|---|---|
| 파일 저장 위치 | 서비스 제공업체의 인프라 | 사용자의 서버 |
| 유지 관리 | 서비스 제공업체가 담당 | 서버 소유자가 담당 |
| 비용 | 저장 용량별 요금제 | VPS, 디스크, 백업 |
Immich 자체가 곧 백업은 아닙니다. 사진이 한 대의 VPS에만 존재한다면 디스크 고장이나 실수로 인한 삭제로 전체 보관함을 잃을 수 있습니다.
Immich의 주요 기능
- 자동 업로드. Android와 iOS 앱이 선택한 앨범의 사진과 동영상을 업로드합니다. 기본적으로 Wi-Fi를 사용하며, 이미 존재하는 파일은 체크섬을 기준으로 건너뜁니다.
- 스마트 검색. 사람, 장소, 날짜, 카메라, 이미지 속 문자, 콘텐츠 설명을 기준으로 검색할 수 있습니다. 얼굴은 자동으로 그룹화되며 이후 이름을 지정할 수 있습니다.
- 앨범과 공유. 여러 사용자, 공유 앨범, 파트너 공유, 비밀번호와 만료일을 설정할 수 있는 공개 링크를 지원합니다.
- 지도와 메타데이터. Immich는 EXIF 정보를 읽고 촬영 위치를 표시하며, 추억을 생성하고 즐겨찾기, 보관함, 외부 라이브러리를 지원합니다.
머신러닝은 첫 가져오기 과정에서 CPU와 RAM을 특히 많이 사용합니다. 썸네일과 인덱스 생성이 끝나면 일상적인 부하는 대체로 낮아집니다.
Immich 서버 요구 사항
현재 버전의 공식 요구 사항은 다음과 같습니다.
- 64비트 Linux 또는 Unix 계열 시스템;
- CPU 최소 2코어, 권장 4코어;
- RAM 최소 6GB, 권장 8GB;
docker compose플러그인이 포함된 Docker Engine;- PostgreSQL 데이터베이스용 로컬 SSD;
- 원본 파일, 썸네일, 트랜스코딩된 동영상을 저장할 공간.
머신러닝 기능을 비활성화하면 RAM 4GB 서버에서도 Immich를 실행할 수 있습니다. 얼굴 인식과 스마트 검색을 사용하려면 처음부터 8GB를 선택하는 편이 좋습니다.
썸네일과 트랜스코딩된 파일은 평균적으로 미디어 라이브러리 용량의 10–20%를 추가로 차지합니다. 200GB 보관함이라면 최소 240–260GB를 할당하는 것이 좋습니다. 데이터베이스 디렉터리인 DB_DATA_LOCATION은 네트워크 드라이브가 아니라 로컬 SSD에 두어야 합니다.
실용적인 시작 구성은 4 vCPU, RAM 8GB, Ubuntu 24.04 LTS, 그리고 원본 라이브러리보다 20–30% 여유가 있는 SSD입니다. 별도의 그래픽카드는 필수가 아니지만 대규모 보관함 처리 속도를 높일 수 있습니다.
VPS에 Immich를 설치하는 방법
이 예시에서는 Ubuntu 24.04와 photos.example.com 서브도메인을 사용합니다.
1. DNS를 설정하고 Ubuntu 준비하기
VPS의 IPv4 주소를 가리키는 DNS A 레코드를 생성합니다. 그런 다음 SSH로 접속합니다.
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable새 SSH 연결이 정상적으로 되는지 확인하기 전에는 현재 세션을 닫지 마십시오.
2. Docker와 Docker Compose 설치하기
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose version반드시 docker compose 명령을 사용해야 합니다. 오래된 docker-compose는 더 이상 이 프로젝트에서 지원되지 않습니다.
3. Immich 다운로드 및 설정하기
mkdir -p /opt/immich /srv/immich-data
cd /opt/immich
curl -L -o docker-compose.yml \
https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -L -o .env \
https://github.com/immich-app/immich/releases/latest/download/example.env파일을 엽니다.
nano /opt/immich/.env주요 매개변수를 변경합니다.
UPLOAD_LOCATION=/srv/immich-data
DB_DATA_LOCATION=/opt/immich/postgres
TZ=Europe/Berlin
DB_PASSWORD=REPLACE_WITH_A_LONG_PASSWORD자신의 시간대를 입력하십시오. PostgreSQL 비밀번호는 라틴 문자와 숫자로 구성해야 하며, openssl rand -hex 24 명령으로 임의의 값을 생성할 수 있습니다. 나머지 줄은 현재 example.env 파일의 내용 그대로 두십시오.
4. 내부 포트를 닫고 컨테이너 시작하기
docker-compose.yml에서 immich-server 서비스의 포트를 찾습니다.
ports:
- '2283:2283'다음과 같이 바꿉니다.
ports:
- '127.0.0.1:2283:2283'이제 이 포트는 VPS 자체에서만 접근할 수 있습니다. 서비스를 시작합니다.
cd /opt/immich
docker compose up -d
docker compose ps문제 진단에는 docker compose logs --tail=200을 사용하십시오.
5. Caddy로 HTTPS 연결하기
apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
photos.example.com {
reverse_proxy 127.0.0.1:2283
}
EOF
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddyDNS가 VPS를 가리키고 80번과 443번 포트에 접근할 수 있다면 Caddy가 인증서를 자동으로 요청합니다. Immich는 도메인이나 서브도메인의 루트에서 실행되어야 하며, example.com/immich와 같은 주소는 지원되지 않습니다.
6. 관리자 생성 및 스마트폰 연결하기
https://photos.example.com을 엽니다. 첫 번째로 등록한 사용자가 관리자가 되며 다른 계정을 생성할 수 있습니다.
App Store 또는 Google Play에서 Immich를 설치합니다. 로그인 화면에는 /api를 제외한 주소를 입력합니다.
https://photos.example.com앨범을 선택하고 백업을 활성화합니다. 첫 가져오기에는 시간이 걸릴 수 있습니다. 서버가 썸네일을 만들고, 얼굴을 인식하고, 검색 인덱스를 생성하고, 동영상을 처리하기 때문입니다.
Immich 업데이트
업데이트 전에는 릴리스 노트를 읽으십시오. 특히 새로운 메이저 버전으로 전환할 때 중요합니다.
cd /opt/immich
docker compose pull
docker compose up -d
docker image prune모바일 앱을 먼저 업데이트한 다음 서버를 업데이트하십시오. 별도의 안내가 없다면 데이터베이스를 이전 버전으로 되돌리는 작업이 지원되지 않을 수 있습니다.
Immich 백업
Immich는 PostgreSQL 덤프를 자동으로 생성하지만, 여기에는 데이터베이스와 메타데이터만 포함되고 사진과 동영상은 포함되지 않습니다. 완전한 복구를 위해 다음 항목을 보관하십시오.
/srv/immich-data전체 디렉터리;/opt/immich/.env와docker-compose.yml;- Caddy 설정.
같은 VPS에 저장한 복사본은 디스크 고장이나 서버 삭제를 막아주지 못합니다. 데이터를 별도의 서버, NAS 또는 객체 스토리지로 보내고 3-2-1 백업 원칙을 따르십시오. 백업 파일이 존재하는지만 확인하지 말고 정기적으로 복구 테스트를 수행하십시오.
Immich용 VPS 선택 방법
얼굴 인식과 스마트 검색을 포함한 모든 기능을 사용하려면 최소 4 vCPU와 RAM 8GB를 갖춘 VPS를 선택하는 것이 합리적입니다. 디스크 용량은 미디어 라이브러리를 기준으로 계산하되 썸네일, 동영상, 보관함 증가분을 위한 여유 공간을 포함하십시오.
고정 IP와 SSD 스토리지를 제공하는 tropic.host의 Linux VPS는 이 용도에 적합합니다. RAM 8GB 구성으로 시작한 뒤 라이브러리가 커지면 리소스를 늘릴 수 있습니다. PostgreSQL 데이터베이스는 빠른 로컬 디스크에 저장하고, 백업은 해당 VPS 외부에 보관하십시오.
VPS는 어느 네트워크에서든 24시간 접근하기 편리합니다. 수 TB 규모의 보관함이라면 홈 서버가 더 저렴할 수 있지만, 전원, 외부 접속, 이중화는 직접 준비해야 합니다.
Immich의 한계
셀프 호스팅만으로 신뢰성이 보장되지는 않습니다. 약한 비밀번호, 외부에 노출된 2283번 포트, 오래된 컨테이너, 외부 백업 부재는 데이터 손실 위험을 높입니다.
또한 Immich는 Google Photos나 iCloud와 완전히 동일한 서비스가 아닙니다. 편집 기능과 백그라운드 동기화 방식이 다르며, 분석 속도는 하드웨어 성능에 따라 달라집니다. 유일한 사진 보관함을 이전하기 전에는 작은 테스트 라이브러리로 서비스를 먼저 확인하십시오.
요약
Immich를 사용하면 모바일 업로드, 앨범, 얼굴 인식, 검색, 공유 기능을 갖춘 자신만의 사진 갤러리를 만들 수 있습니다. 현재 버전에는 4코어, RAM 8GB, 원본 라이브러리보다 최소 20–30% 여유가 있는 SSD를 갖춘 Linux VPS를 준비하는 것이 좋습니다.
설치 후에는 HTTPS, 업데이트, 미디어 디렉터리와 데이터베이스의 외부 백업을 설정하십시오. 사진을 손실로부터 보호하는 것은 셀프 호스팅 자체가 아니라 올바른 백업입니다.
FAQ
Immich는 무료인가요?
Immich 서버는 오픈 소스로 제공되며 필수 구독 없이 사용할 수 있습니다. 다만 VPS, 도메인, 디스크 공간, 백업 비용은 별도로 발생합니다.
Immich에는 RAM이 얼마나 필요한가요?
공식 최소 요구 사항은 RAM 6GB이며 권장 용량은 8GB입니다. 4GB 환경에서는 머신러닝을 비활성화해야 합니다.
도메인 없이 Immich를 설치할 수 있나요?
기술적으로는 가능합니다. 하지만 스마트폰에서 지속적으로 접속하려면 도메인과 HTTPS를 사용하는 편이 좋습니다. 인증과 파일 전송을 보호할 수 있습니다.
Immich가 사진 백업을 대체하나요?
아닙니다. 미디어 라이브러리와 데이터베이스를 다른 장치나 별도의 위치에 따로 복사하십시오.
기존 사진 보관함을 이전할 수 있나요?
가능합니다. 웹 인터페이스나 CLI로 파일을 업로드하거나 디렉터리를 외부 라이브러리로 연결할 수 있습니다. 대량으로 가져오기 전에는 원본 데이터를 복사해 두십시오.
