Immich 셀프 호스팅 RAM 사양 및 업데이트 주의사항
Immich 운영 시 필요한 6 GB RAM 사양과 HTTPS 포트 2283 설정법을 설명합니다. v3 업데이트 시 pgvecto.rs 데이터베이스 오류로 인한 Exit 137 문제와 복구 방법을 확인하십시오.
구축 목표
Immich는 Google Photos를 대체할 수 있는 self-hosted 사진 및 비디오 백업 서비스입니다. 이 서비스는 카메라 롤을 백그라운드에서 업로드하는 모바일 앱, 타임라인, 앨범 기능을 제공합니다. 또한 별도의 태그 지정 없이도 "beach"나 특정 인물을 찾아낼 수 있는 얼굴 인식 및 machine-learning 검색 기능을 갖추고 있습니다. 사용자는 본인의 VPS에서 서비스를 운영하며, 원본 파일은 본인의 디스크에 저장됩니다. 외부 업체가 데이터를 스캔하여 광고에 활용하는 일도 없습니다.
설치는 프로젝트에서 제공하는 Docker Compose 파일을 사용하여 네 개의 container를 실행하는 방식입니다. 이 과정은 10분 정도 소요됩니다. 이 가이드의 나머지 부분은 주의가 필요한 구간입니다. machine-learning container는 저사양 서버에서 메모리 점유율이 높고, 원본 파일은 디스크 용량을 빠르게 차지합니다. 모바일 앱은 plain-HTTP 서버를 지원하지 않으며, Immich는 업데이트가 빈번하여 부주의한 docker compose pull 작업 시 데이터베이스가 시작되지 않을 수 있습니다. 이 네 가지 사항을 주의 깊게 다루면 Immich는 매우 안정적으로 작동합니다. 이를 간과하면 작업에 많은 시간을 허비할 수 있습니다.
Prerequisites, and the honest gotchas
- RAM: 공식 문서는 최소 6 GB, 권장 8 GB를 명시합니다. 4 GB RAM에 swap을 추가한 상태를 최소 사양으로 간주하십시오.
immich-server및 Postgres 컨테이너는 리소스를 적게 사용합니다.immich-machine-learning컨테이너가 리소스를 많이 사용합니다. 검색 인덱스 생성을 위해 CLIP 및 face-recognition 모델을 RAM에 로드하므로, 2 GB 사양의 시스템에서는 커널에 의해 프로세스가 종료될 수 있습니다. 4 GB RAM을 보유한 경우에도 swap을 추가하십시오. - Disk: 전체 라이브러리 용량보다 여유 있게 할당하십시오. 원본 파일이 그대로 복사되며, Immich가 썸네일과 미리보기 이미지를 생성합니다(약 10–20% 추가 용량 필요). 200 GB 규모의 사진 컬렉션에는 300 GB 볼륨이 필요합니다. Postgres는 이와 비교하면 크기가 작습니다.
- CPU: 최신 KVM VPS라면 무엇이든 사용 가능하지만, CPU를 이용한 ML 연산은 느립니다. 대규모 데이터 임포트 시 smart-search 인덱싱이 백그라운드에서 몇 시간 동안 실행될 수 있습니다. 이는 정상적인 현상이며 GPU가 반드시 필요한 것은 아닙니다.
- A domain name VPS를 가리키는 도메인 이름이 필요합니다. 모바일 앱은 HTTPS 엔드포인트를 권장하며, 앞에 reverse proxy를 구성하는 것이 좋습니다. 이는 Docker, TLS 및 백업을 사용하는 self-hosted Nextcloud 인스턴스와 유사한 구성 방식이며, Immich는 해당 파일 서버의 사진 관리 대응 버전입니다.
- Docker and the Compose plugin 설치가 필요합니다. Docker Compose 기초 가이드에서 다루는 내용과 동일하게, Docker Engine과 Docker 공식 apt 저장소의 Compose v2 플러그인을 설치하십시오.
Step 1: 다른 작업을 수행하기 전에 swap을 추가하십시오
소규모 VPS에서 발생하는 가장 흔한 Immich 오류는 ML container가 OOM-killed되는 현상입니다. 커널에 여유 공간을 먼저 확보하십시오.
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -hfree -h 명령어를 실행하면 Swap: 행에 4.0Gi가 표시됩니다. 이것이 ML의 속도를 높여주지는 않지만, 4 GB 사양의 머신에서 인덱싱 도중 container가 종료되는 현상을 방지합니다.
Step 2: 공식 compose 및 env 파일 가져오기 — 복사본이 아닌 공식 파일을 사용하십시오
Immich는 배포 파일 내에 서비스 버전과 데이터베이스 이미지를 고정합니다. 블로그(이 글 포함)의 compose 파일을 소스 데이터로 사용하지 마십시오. 릴리스 에셋을 다운로드하십시오:
sudo mkdir -p /opt/immich && cd /opt/immich
sudo wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
sudo wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env이 파일들은 태그가 지정된 릴리스에서 제공되므로 이미지 참조가 일치합니다. compose 파일은 4개의 서비스를 정의합니다. 작업을 시작하기 전에 각 서비스의 역할을 확인하십시오:
immich-server(ghcr.io/immich-app/immich-server, containerimmich_server) — port2283에서 대기하는 API 및 web UI입니다./data경로에 업로드 파일을 마운트합니다.immich-machine-learning(ghcr.io/immich-app/immich-machine-learning, containerimmich_machine_learning) — CLIP 검색 및 얼굴 인식 기능입니다. 다운로드된 모델을model-cache볼륨에 캐시합니다. 메모리 사용량이 많습니다.database(containerimmich_postgres) — 유사도 검색을 지원하는 VectorChord vector extension이 포함된 Postgres입니다. 이미지 태그는 compose 파일 내에 digest 형식으로 고정되어 있습니다(예:ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:...). 이전 설정에서는pgvecto.rs을 사용했습니다. Immich v3.0에서 해당 지원이 제거되었으므로, 현재 설치하는 모든 버전은 VectorChord를 사용합니다. 이 태그를 직접 수정하지 마십시오.redis(containerimmich_redis) — job queue를 위한 Valkey/Redis 인스턴스입니다.
Step 3: .env 설정 — 사진 및 데이터베이스 저장 위치
.env을 열고 네 가지 항목을 설정하십시오. 표시된 라인 아래의 모든 설정은 그대로 유지해야 합니다.
# Where original uploads are stored on the host
UPLOAD_LOCATION=/opt/immich/library
# Where the Postgres data lives. NEVER put this on an NFS/network share.
DB_DATA_LOCATION=/opt/immich/postgres
# "v3" is a floating tag that tracks the latest v3.x. Pin a full tag like
# v3.0.2 instead — then you upgrade on purpose, not by surprise.
IMMICH_VERSION=v3.0.2
# Change this to a long random string. Letters and digits only.
DB_PASSWORD=REPLACE_WITH_A_LONG_RANDOM_STRING
# Set your timezone so timestamps and "on this day" line up
TZ=Europe/London
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich오류를 방지하기 위한 두 가지 규칙이 있습니다. UPLOAD_LOCATION는 대용량 디스크를 가리켜야 합니다. 나중에 데이터 볼륨을 추가할 계획이라면, 처음부터 해당 볼륨의 mount path로 설정하십시오. 나중에 위치를 변경하면 thumbnail을 이동하고 asset path를 모두 업데이트해야 합니다. 또한 DB_DATA_LOCATION은 반드시 로컬 디스크에 있어야 합니다. NFS 또는 SMB 공유에 Postgres를 설치하면 데이터가 손상되며, 이는 공식 문서에도 명시되어 있습니다. DB_PASSWORD에 영문자와 숫자만 사용하면 connection-string escaping 관련 버그를 방지할 수 있습니다.
Step 4: First run and creating the admin user
cd /opt/immich
sudo docker compose up -d
sudo docker compose ps정상적으로 실행되면 running 상태인 컨테이너 4개가 생성되며, 최종적으로 healthy 상태가 됩니다.
NAME STATUS
immich_machine_learning Up (healthy)
immich_postgres Up (healthy)
immich_redis Up (healthy)
immich_server Up (healthy)첫 번째 up 단계에서 수 GB 용량의 이미지를 다운로드하므로 시간이 소요될 수 있습니다. sudo docker compose logs -f immich-server 명령어로 진행 상황을 확인할 수 있습니다. 준비가 완료되면 서버 로그에 2283 포트에서 대기 중이라는 메시지가 표시됩니다. 이제 브라우저에서 http://YOUR_SERVER_IP:2283에 접속하십시오. 처음 접속하면 Getting Started 마법사가 나타납니다. 이때 생성하는 첫 번째 계정이 관리자(admin) 계정입니다. 강력한 비밀번호를 설정하십시오. 이 계정은 서버 설정, 사용자 관리 및 향후 필요한 ML 구성을 제어합니다.
Step 5: 모바일 앱 및 백그라운드 백업
App Store 또는 Play Store에서 "Immich"를 설치합니다. 로그인 화면에서 Server Endpoint URL을 요구합니다. scheme를 포함한 전체 URL을 입력하십시오. 예를 들어 https://photos.example.com를 입력하면 됩니다 (앱이 자동으로 /api를 추가합니다). 방금 생성한 계정으로 로그인합니다. 앱의 Backup 화면을 열고 보호할 앨범(일반적으로 Camera 및 Screenshots)을 선택한 뒤 Background backup을 활성화합니다. iOS의 백그라운드 백업은 OS에 의해 제한됩니다. 포그라운드 업로드는 항상 실행되지만, 백그라운드 업로드는 OS가 허용할 때만 실행됩니다.
이 단계에서 많은 사용자가 어려움을 겪습니다. 앱 설정 문제로 고생하기 전에 Step 6를 먼저 읽으십시오.
Step 6: 리버스 프록시를 통한 HTTPS — 그리고 full-URL 규칙
모바일 앱은 HTTPS를 필수적으로 요구합니다. port 2283 앞에 리버스 프록시를 배치하여 TLS를 종료하십시오. 이미 여러 컨테이너를 실행 중이라면, 여러 Docker 앱을 위한 자동 TLS를 지원하는 Traefik이 가장 깔끔한 선택입니다. 하나의 label 블록으로 photos.example.com를 immich-server 컨테이너로 라우팅하고 인증서를 자동으로 가져올 수 있습니다. nginx를 선호한다면, Certbot과 nginx를 이용한 Let's Encrypt 가이드를 통해 인증서와 proxy_pass http://127.0.0.1:2283; 블록을 설정할 수 있습니다. Immich 설정에서 중요한 점이 하나 있습니다. 업로드 크기 제한을 늘려야 합니다. 휴대폰 동영상 파일은 크기 때문입니다. nginx에서는 server block 내부의 client_max_body_size 50000M; 설정이 이에 해당합니다. 기본값인 1 MB 설정은 413 Request Entity Too Large 오류와 함께 동영상 업로드를 거부합니다.
앱이 적용하는 규칙은 다음과 같습니다. 엔드포인트는 접속 가능해야 하며, 실제로는 HTTPS여야 합니다. http:// 엔드포인트나 포트가 생략된 직접적인 IP 주소를 사용하면 "the app cannot reach the server" 오류가 발생합니다. 이 내용은 아래의 특정 오류 항목에서 다룹니다.
Step 7: External libraries vs uploads — importing an existing photo tree
Immich에 사진을 추가하는 방법은 두 가지이며, 두 방식은 서로 다릅니다.
- Uploads는 Immich가 소유하는 자산입니다. 앱 또는 웹 업로더가 파일을
UPLOAD_LOCATION로 복사합니다. Immich는 이 파일들의 이름을 변경하거나, 이동하거나, 삭제할 수 있습니다. - External libraries는 서버의 폴더에 이미 존재하는 파일들을 읽기 전용으로 가져오는 방식입니다. 예시로는 기존의
Pictures트리나 NAS 내보내기 파일이 있습니다. Immich는 파일을 제자리에서 인덱싱하여 타임라인에 표시하지만, 원본 파일을 수정하거나 삭제하지 않습니다.
기존 트리를 가져오려면 해당 폴더를 서버 컨테이너에 읽기 전용으로 마운트해야 합니다. immich-server: 아래의 docker-compose.yml를 수정하여 볼륨을 추가하십시오.
immich-server:
volumes:
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
- /srv/photos:/mnt/media/photos:ro:ro를 설정하면 Immich가 원본 파일을 절대 수정할 수 없습니다. sudo docker compose up -d를 사용하여 컨테이너를 다시 생성하십시오. 그 다음 웹 UI에서 프로필 아이콘 → Administration → External Libraries → Create Library로 이동합니다. 소유 사용자를 선택하고 Folders 아래의 Add를 클릭한 뒤, 호스트 경로 /srv/photos가 아닌 컨테이너 경로인 /mnt/media/photos를 입력하십시오. Scan을 클릭합니다. 호스트 경로 대신 컨테이너 경로를 사용하지 않는 것은 외부 라이브러리 설정 시 가장 자주 발생하는 실수입니다. 이 경우 스캔 결과 자산이 0개로 표시됩니다.
Step 8: Immich에 요구되는 업그레이드 원칙
이 단계는 정상적인 Immich 운영과 시스템 장애를 결정짓는 중요한 과정입니다. Immich는 업데이트 속도가 매우 빠르며, 이전 버전으로의 수정 사항 백포트(backport)나 다운그레이드 지원을 제공하지 않습니다. v3 태그를 무분별하게 추적하면 결국 데이터베이스가 손상됩니다. 다음 원칙을 준수하십시오.
- 버전을 고정하십시오. 항상 최신 v3.x를 가져오는
v3대신,v3.0.2과 같은 특정 태그로IMMICH_VERSION를 설정하십시오. - 업그레이드 전 반드시 릴리스 노트를 확인하십시오. 데이터베이스 또는 vector-extension 관련 변경 사항과 같은 중대한 변경 사항(breaking changes)이 여기에 명시됩니다. v3.0 릴리스가 대표적인 예입니다. 해당 버전은 pgvecto.rs를 완전히 제거했으므로, 이전 확장을 사용하던 사용자는 업그레이드 전에 반드시 VectorChord 마이그레이션(v1.133에서 도입됨)을 완료해야 합니다.
- 먼저 데이터베이스를 백업하십시오 (Step 9). 항상 백업을 수행해야 하며, 특히 릴리스 노트에 데이터베이스 관련 내용이 있다면 더욱 주의하십시오.
- 새로운 compose 파일도 다운로드하십시오.
IMMICH_VERSION는 server와 ML 이미지만 고정합니다. Postgres 이미지는docker-compose.yml내부의 digest로 고정되어 있습니다. 따라서 더 높은 버전의 데이터베이스 확장이 필요한 경우 새로운 compose 파일이 함께 제공됩니다. 두 릴리스 자산을 모두 다시 다운로드하고,.env값을 다시 적용한 후 업그레이드를 진행하십시오. - 모바일 클라이언트도 비슷한 시기에 업데이트하십시오. 서버는 일치하는 메이저 버전과만 통신하며, 앱은 현재 버전과 직전 메이저 버전까지만 지원합니다. 서버 버전이 앱 버전보다 높으면 앱에
Your app major version is not compatible with the server!오류가 표시되므로, 앱을 먼저 업데이트하는 것이 가장 안전합니다.
새 파일이 준비된 후 실행할 실제 명령어는 다음과 같습니다:
cd /opt/immich
sudo docker compose pull
sudo docker compose up -d
sudo docker image pruneStep 9: Backups — 데이터베이스 덤프와 원본 파일, 그리고 복구 테스트
Immich 백업은 두 가지 요소로 구성됩니다. 하나라도 없으면 백업은 무용지물입니다. database에는 앨범 구조, 얼굴 정보, 검색 인덱스, 그리고 asset과 file을 연결하는 맵이 저장됩니다. originals directory에는 실제 사진 파일이 저장됩니다. 하나만 복구할 경우, 정리가 되지 않은 사진만 남거나 파일이 누락된 빈 껍데기만 남게 됩니다.
Postgres 컨테이너 내부에서 pg_dump를 사용하여 데이터베이스를 덤프하십시오. 전체 클러스터가 아닌 immich 데이터베이스만 지정해야 합니다:
sudo docker exec -t immich_postgres pg_dump --clean --if-exists \
--dbname=immich --username=postgres | gzip > /opt/immich/immich-db-$(date +%F).sql.gz그 다음 UPLOAD_LOCATION를 백업하십시오. /opt/immich/library 트리 전체, 특히 library/, upload/, profile/ 하위 폴더를 restic, rsync 또는 borg를 사용하여 다른 머신이나 object storage로 백업하십시오. 데이터베이스를 먼저 백업한 후 파일을 백업해야 합니다. 그래야 덤프 파일이 아직 복사되지 않은 사진을 참조하는 일이 발생하지 않습니다. 외부 library는 실제 소스 위치에서 별도로 백업해야 하며, Immich가 관리하지 않습니다.
가장 중요한 단계는 복구 테스트입니다. 복구 테스트는 서버가 한 번도 실행된 적 없는 새로운 stack을 대상으로 수행해야 합니다. 또한 Postgres image의 vector extension이 덤프 파일과 호환되어야 합니다. 이것이 DB image tag를 임의로 지정하면 안 되는 이유입니다. 동일한 compose와 .env를 사용하는 깨끗한 환경에서 기존 상태를 모두 삭제한 후, 데이터베이스만 실행하고 덤프를 로드하십시오:
cd /opt/immich
sudo docker compose down -v
sudo docker compose pull
sudo docker compose create
sudo docker start immich_postgres
sleep 10
gunzip --stdout immich-db-2026-07-15.sql.gz |
sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" |
sudo docker exec -i immich_postgres psql --dbname=immich --username=postgres --single-transaction --set ON_ERROR_STOP=on
sudo docker compose up -dVectorChord 데이터베이스를 사용하는 경우 search_path의 sed rewrite는 필수입니다. 이를 생략하면 복구 과정 중간에 중단됩니다. stack이 정상적으로 실행되고 originals 파일이 배치된 상태에서 web UI를 여십시오. 사진과 앨범이 정상적으로 보인다면 백업이 성공한 것입니다. 이 과정을 수행하지 않았다면, 그것은 백업이 아니라 단순한 희망일 뿐입니다.
Failure modes, with the strings you will see
The ML container is OOM-killed. sudo docker compose logs immich-machine-learning가 갑자기 종료됩니다. docker compose ps에서 Restarting 상태를 확인할 수 있으며, exit code는 137입니다. sudo dmesg | grep -i oom이 이를 확인합니다: Out of memory: Killed process ... (python3). 이로 인해 Search 및 face jobs가 중단됩니다. 원인은 모델 구동에 필요한 RAM이 부족하기 때문입니다. 해결 방법은 다음과 같습니다: swap을 추가합니다 (Step 1); VPS의 RAM을 증설합니다; 또는, 물리적으로 불가능한 경우 Administration → Settings → Machine Learning Settings에서 Smart Search와 Facial Recognition을 꺼서 ML 기능을 비활성화합니다. 이 경우 백업과 앨범은 유지되지만, 콘텐츠 기반 검색 기능은 사용할 수 없습니다. compose file에서 immich-machine-learning 서비스를 제거해도 동일한 결과가 나타납니다.
Postgres refuses to start after an upgrade. 서버 로그에 The database currently has VectorChord 0.5.3 activated, but the Postgres instance only has 0.4.2 available. This most likely means the extension was downgraded.와 같은 문구가 반복됩니다. 구형 스택의 경우 The pgvecto.rs extension is not available in this Postgres instance.이 나타날 수 있습니다. 원인은 데이터베이스 이미지의 extension 버전이 업그레이드된 데이터 버전보다 낮기 때문입니다. 이는 주로 이미지 태그를 수동으로 수정하거나, 구형 이미지에 최신 덤프를 복원할 때 발생합니다. 해결 방법은 일치하는 Postgres 이미지를 사용하는 것입니다. 데이터베이스 버전과 일치하는 릴리스의 compose file을 사용하십시오. 버전을 낮추지 말고, 반드시 호환되는 이미지에만 복원해야 합니다.
The mobile app cannot reach the server. URL 입력 후 로그인 화면에 connection error / Server is not reachable 오류가 표시됩니다. 원인은 세 가지입니다: 프록시가 https://만 서비스하는데 http://을 입력한 경우; 백엔드에 직접 연결하면서 포트를 생략하여 example.com:2283 대신 example.com(port 443)으로 접속을 시도한 경우; 또는 reverse proxy가 /api를 전달하지 않는 경우입니다. 전체 https://photos.example.com URL을 입력하여 모바일 브라우저에서 먼저 접속되는지 확인하십시오. 브라우저에서는 접속되지만 앱에서 안 된다면, 프록시가 path를 제거하거나 인증서가 self-signed 상태인 것입니다. 앱은 신뢰할 수 없는 인증서를 거부합니다.
Out of disk mid-import. 업로드가 실패하고 썸네일이 빈 화면으로 나타납니다. 로그에는 ENOSPC: no space left on device 또는 Postgres의 경우 could not extend file ... No space left on device가 표시됩니다. df -h을 통해 UPLOAD_LOCATION 볼륨이 100%임을 확인할 수 있습니다. 대규모 라이브러리를 임포트하기 전에 디스크 용량을 미리 확보해야 하는 이유입니다. 해결 방법은 더 큰 볼륨을 연결하고, stack을 중지한 뒤, UPLOAD_LOCATION을 해당 볼륨으로 이동시키고, .env를 업데이트한 후 다시 시작하는 것입니다. 또는 제공업체에서 지원한다면 기존 디스크를 확장하십시오. 디스크가 가득 차면 Postgres가 멈출 수 있습니다. 데이터 손상을 의심하기 전에 먼저 공간을 확보하고 데이터베이스 컨테이너를 재시작하십시오.
FAQ
Immich에 필요한 RAM과 디스크 용량은 얼마입니까?
Immich의 공식 요구 사항은 최소 6 GB RAM이며 권장 사양은 8 GB입니다. 소규모 라이브러리의 경우 swap을 포함하여 4 GB가 실질적인 최소 사양입니다. machine-learning 컨테이너에서 리소스 사용량이 급증하므로 어떤 경우에도 swap을 설정하십시오. 디스크 용량은 전체 라이브러리 크기에 생성된 썸네일 및 미리보기를 위한 약 10–20%를 추가하여 로컬 스토리지에 할당하십시오. Postgres data directory를 네트워크 공유 디렉토리에 저장하지 마십시오. 다른 서비스 운영 여부를 결정 중이라면, 2026년 셀프 호스팅 가이드에서 다른 서비스와 비교한 Immich의 리소스 점유율을 확인할 수 있습니다.
GPU 없이 Immich를 실행할 수 있습니까?
가능합니다. machine-learning 컨테이너는 CPU에서 정상적으로 작동합니다. GPU는 smart-search 인덱싱과 적절한 이미지 변형을 사용한 비디오 트랜스코딩 속도만 높여줍니다. CPU를 사용할 경우 대규모 라이브러리의 초기 인덱싱이 백그라운드에서 몇 시간 동안 지속될 수 있으나, 백업이나 브라우징 작업이 차단되지는 않습니다. 시스템 사양이 ML을 실행하기에 너무 부족하다면, 관리자 설정에서 Smart Search와 Facial Recognition을 비활성화하고 나머지 기능을 계속 사용할 수 있습니다.
Immich를 안전하게 업그레이드하는 방법은 무엇입니까?
IMMICH_VERSION를 v3.0.2과 같은 특정 태그로 고정하십시오. 업그레이드 전에는 항상 릴리스 노트를 읽고 데이터베이스를 먼저 백업하십시오. Postgres 이미지는 IMMICH_VERSION이 아닌 docker-compose.yml 내부에서 고정되어 있으므로, 대상 릴리스의 compose 파일과 example.env를 모두 다시 다운로드하여 설정을 재적용한 후 docker compose pull && docker compose up -d를 실행하십시오. 버전을 방치하여 자동으로 업데이트되게 하지 마십시오. Immich는 breaking changes를 포함하며 다운그레이드를 지원하지 않습니다.
정확히 무엇을 백업해야 합니까?
다음 두 가지를 함께 백업해야 합니다: immich 데이터베이스의 pg_dump과 UPLOAD_LOCATION originals 디렉토리 전체입니다. 데이터베이스에는 앨범, 얼굴 및 에셋-파일 매핑 정보가 저장됩니다. 디렉토리에는 실제 사진이 저장됩니다. 복구를 위해서는 두 항목 모두와 호환 가능한 vector extension이 포함된 데이터베이스 이미지가 필요합니다. 데이터베이스 덤프를 먼저 수행한 다음 파일 복사를 수행하십시오. 테스트하지 않은 백업은 백업이 아닙니다. 최소 한 번은 별도의 테스트 환경에서 복구 테스트를 수행하십시오.
기존 사진 폴더를 어떻게 가져옵니까?
해당 폴더를 immich-server 컨테이너에 추가 볼륨(예: - /srv/photos:/mnt/media/photos:ro)으로 read-only로 마운트하십시오. 컨테이너를 다시 생성한 후, Administration → External Libraries에서 라이브러리를 생성하고 컨테이너 경로인 /mnt/media/photos를 추가하십시오. Immich는 파일을 제자리에서 인덱싱하며 파일을 수정하거나 삭제하지 않습니다. 가장 흔한 실수는 컨테이너 경로 대신 호스트 경로를 입력하는 것이며, 이 경우 스캔 결과가 아무것도 나타나지 않습니다.