Synology Photos를 immich로 마이그레이션
안녕하세요.
이번에 윈도우 Nas로 이사하면서 Photos를 immich로 마이그레이션한 내용을 공유합니다.
간단히 요약하자면 아래와 같은 순서로 진행합니다
- immich 설치
- immich-go 다운로드
- immich-go 명령어로 업로드
- immich 설치
- 저는 Windows Docker에 도커로 immich를 설치해서 사용하기 때문에 docker-compose를 활용했습니다.
- immich 설치를 위한 도커 폴더는 다음과 같이 미리 생성해 놓습니다.
(d:\docker\18_immich, d:\docker\18_immich\config)
그리고, 사진 및 영상이 저장될 폴더도 미리 생성해 놓습니다.(d:\Photos)
- immich는 .env 파일을 미리 생성한 후 여기에 업로드할 폴더 위치를 지정해야 합니다.
- .env 파일은 18_immich 폴더에 저장합니다.(아래 내용을 복사한 후 .env 파일로 저장해도 됩니다)
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables # The location where your uploaded files are stored UPLOAD_LOCATION=D:\Photos # The Immich version to use. You can pin this to a specific version like "v1.71.0" IMMICH_VERSION=release # Connection secrets for postgres and typesense. You should change these to random passwords TYPESENSE_API_KEY=1q2w3e4r5t6y7u8i9o0p DB_PASSWORD=postgres # The values below this line do not need to be changed ################################################################################### DB_HOSTNAME=immich_postgres DB_USERNAME=postgres DB_DATABASE_NAME=immich REDIS_HOSTNAME=immich_redis
- docker-compose.yml 파일은 마찬가지로 18_immich 폴더에 .env 파일과 같은 위치로 저장합니다. 내용은 다음과 같습니다
version: "3.8" # # WARNING: Make sure to use the docker-compose.yml of the current release: # # https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml # # The compose file on main may not be compatible with the latest release. # name: 18_immich #컨테이너에 보여질 서비스명 services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} command: [ "start.sh", "immich" ] volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro - D:\Photos:/mnt/media:ro #미디어가 저장될 위치 env_file: - .env ports: - 30050:3001 #외부에서 사용할 포트 설정 depends_on: - redis - database - typesense restart: always immich-microservices: container_name: immich_microservices image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} extends: # 하드웨어 가속을 사용할 경우 주석을 제거 file: hwaccel.yml service: hwaccel command: [ "start.sh", "microservices" ] volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro - D:\Photos:/mnt/media:ro # 미디어 저장 경로는 위와 동일하게 지정 env_file: - .env depends_on: - redis - database - typesense restart: always immich-machine-learning: container_name: immich_machine_learning image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} volumes: - ./config/model-cache:/cache env_file: - .env restart: always typesense: container_name: immich_typesense image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd environment: - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - TYPESENSE_DATA_DIR=/data # remove this to get debug messages - GLOG_minloglevel=1 volumes: - ./config/tsdata:/data restart: always redis: container_name: immich_redis image: redis:6.2-alpine@sha256:80cc8518800438c684a53ed829c621c94afd1087aaeb59b0d4343ed3e7bcf6c5 restart: always database: container_name: immich_postgres image: postgres:14-alpine@sha256:50d9be76e9a90da4c781554955e0ffc79d9d5c4226838e64b36aacc97cbc35ad env_file: - .env environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} volumes: - ./config/pgdata:/var/lib/postgresql/data restart: always volumes: pgdata: model-cache: tsdata:
- 하드웨어 가속을 위해 hwaccel.yml 파일을 docker-compose.yml과 동일한 위치에 아래와 같은 내용으로 저장합니다
version: "3.8"
# Hardware acceleration for transcoding - Optional
# This is only needed if you want to use hardware acceleration for transcoding.
# Depending on your hardware, you should uncomment the relevant lines below.services:
hwaccel:
devices:
- /dev/dri/renderD128:/dev/dri
# - /dev/dri:/dev/dri # If using Intel QuickSync or VAAPI
# volumes:
# - /usr/lib/wsl:/usr/lib/wsl # If using VAAPI in WSL2
# environment:
# - NVIDIA_DRIVER_CAPABILITIES=all # If using NVIDIA GPU
# - LD_LIBRARY_PATH=/usr/lib/wsl/lib # If using VAAPI in WSL2
# - LIBVA_DRIVER_NAME=d3d12 # If using VAAPI in WSL2
# deploy: # Uncomment this section if using NVIDIA GPU
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: 1
# capabilities: [gpu,video]
2. immich 실행
18_immich 폴더에서 cmd 실행한 후 아래 명령을 통해 도커 설치를 시작합니다.(윈도우의 경우, Docker desktop가 설치되어 있어야 함)
docker-compose up -d
- immich 로그인 및 계정 생성
관리자 계정을 설정한 후 로그인 합니다.
- 사용자 계정 설정
관리자 계정으로 로그인 한 후 우측 상단의 'Administration'을 클릭한 후 아래와 같이 사용할 계정을 추가합니다.
Photos 사용시 다중 사용자로 설정하셨을 경우, 이렇게 계정을 추가하고 단일 계정을 사용하지면 계정 추가는 할 필요가 없습니다.
-
계정별 API Key 획득
각 계정마다 로그인한 후 우 상단의 네임카드를 클릭한 후 Account Settings를 클릭합니다.API Keys > New API Key에서 Create를 클릭해 나오는 키값을 따로 저장해 놓습니다.
이 키값은 업로드 시 해당 API 로그인 유저 앨범으로 업로드 하는데 사용합니다.
3. immich-go 다운로드
1. immich-go 준비
immich 미디어를 업로드할 수 있는 프로그램으로 다음의 주소에서 확인할 수 있습니다.
다음의 주소에서 immich-go 실행파일을 받습니다. 저는 윈도우에서 사용하기 때문에 윈도우용으로 받았습니다.
2. immich-go 실행
압축을 해제하면 immich-go.exe 파일을 볼 수 있습니다.
다음 명령으로 업로드를 실행합니다.
immich-go -server=http://192.168.0.10:30050 -key=P58rzzzz5TzSaZBz2QjHc9oRaXweee9wshcBaMh6svP4 upload E:\homes\userfolder
* -server=immich주소
* -key=immich에서 사용할 계정으로 로그인 한 후 우상단 이름아이콘 클릭 > Account settings > Api Keys > New Api Key > Create 를 클릭해 나오는 문자열
* upload : 업로드 할 파일이 있는 위치. 서브폴더를 포함해서 업로드 함
이렇게 실행하면 다음 화면과 같이 파일 업로드를 시작합니다.
다만, 업로드 시 주의할 점은 Photos는 @eaDir 폴더가 숨어있는데요, 미리보기 이미지들이 들어있습니다.
제가 업로드 할때는 이 폴더들을 모두 삭제하고 업로드 해서 확인되지 않았습니다만, immich-cli로 업로드 할 때에는 이 폴더까지 업로드 되는 바람에 미리보기 파일까지 모두 다 업로드 되는 불상사가 있었습니다.
immich-go 설명에는 업로드 폴더 제외 기능은 아직 개발 전인것으로 나와 있어 이 부분은 주의가 필요합니다.
혹시 파일 업로드 중 immich가 다운되거나 피치못해 업로드를 중단해도 다시 업로드를 시작하면 기존에 올린 중복 파일은 건너뛰고 이어서 올립니다(단, 기존 업로드 파일을 모두 확인하는데 시간이 좀 걸립니다)
다음 버전인 1.91에서는 typesense 컨테이너도 제거된다고 하는데
immich 발전 속도가 아주 빠릅니다. 기대가 많이 되는 녀석입니다
cmt alert