skills/greenheadhq/nixos-config/viewing-immich-photo

viewing-immich-photo

SKILL.md

Immich 사진 확인

macOS 또는 NixOS 환경에서 immich 사진 경로를 받아 이미지를 확인하는 방법입니다.

목적과 범위

Immich 저장 경로 검증, 플랫폼별 파일 접근, 이미지 표시 절차를 다룬다.

빠른 참조

항목
허용 루트 /mnt/data/immich/photos/, /var/lib/docker-data/immich/upload-cache/
macOS 동작 ssh minipc로 파일을 /tmp 복사 후 확인
NixOS 동작 로컬 경로를 직접 확인
비허용 패턴 .. 포함 경로

경로 검증 (보안)

요청된 경로가 immich 디렉토리 내부인지 먼저 확인:

  • 허용 경로: /mnt/data/immich/photos/ 또는 /var/lib/docker-data/immich/upload-cache/
  • .. 포함 경로는 거부 (path traversal 방지)

플랫폼 감지

환경 정보에서 플랫폼 확인:

  • <env> 블록의 Platform: darwin → macOS
  • <env> 블록의 Platform: linux → NixOS

macOS에서 실행 시

MiniPC에 저장된 파일이므로 SSH로 가져온 후 Read 도구로 확인합니다.

핵심 절차

  1. 경로가 /mnt/data/immich/photos 또는 /var/lib/docker-data/immich/upload-cache로 시작하는지 확인
  2. SSH로 파일을 /tmp에 복사 (확장자 유지)
  3. Read 도구로 이미지 확인
  4. 삭제 불필요 (/tmp는 시스템 자동 정리)

명령어

# 파일명에서 확장자 추출 (Scriptable 업로드는 일반적으로 .jpg)
BASENAME="${FILE_PATH##*/}"
if [[ "$BASENAME" != *.* ]]; then
  echo "오류: 파일 확장자가 없습니다 (.jpg/.jpeg/.png/.webp/.gif 필요)." >&2
  exit 1
fi

EXT="${BASENAME##*.}"
case "$EXT" in
  jpg|jpeg|png|webp|gif|JPG|JPEG|PNG|WEBP|GIF) ;;
  *)
    echo "오류: 지원하지 않는 확장자: $EXT" >&2
    exit 1
    ;;
esac

ssh minipc "cat <원본경로>" > "/tmp/immich_photo_$(date +%s).$EXT"

주의: minipc는 SSH config에 정의된 호스트 alias.

NixOS에서 실행 시

로컬 파일이므로 경로를 직접 Read 도구에 전달합니다.

핵심 절차

  1. 경로 검증 규칙(허용 루트, .. 부재)을 먼저 확인
  2. 로컬 경로를 Read 도구에 직접 전달

경로 패턴

유형 경로 패턴
업로드 캐시 /var/lib/docker-data/immich/upload-cache/UUID/xx/xx/file.ext
라이브러리 /mnt/data/immich/photos/library/UUID/YYYY/MM/file.ext

경로 변환 (Immich API → 호스트)

Immich API 경로 호스트 경로
/usr/src/app/upload/upload/ /var/lib/docker-data/immich/upload-cache/
/usr/src/app/upload/ /mnt/data/immich/photos/

지원 파일 형식

Read 도구는 이미지를 시각적으로 표시:

  • 이미지: .jpg, .jpeg, .png, .webp, .gif
  • 동영상: 확인 불가 (메타데이터만 표시)

참고: Scriptable 업로드는 항상 .jpg로 저장됨

트러블슈팅

상황 대응
SSH 연결 실패 tailscale status 확인, ssh minipc "echo ok" 테스트
파일 없음 경로 오타 확인, Immich API 경로→호스트 경로 변환 확인
권한 없음 파일 소유자/권한 확인 (ls -la <path>)

참조

  • Immich 경로 변환 규칙은 본 문서의 경로 패턴/변환 표를 기준으로 유지한다.
  • 로컬 원본 기준: modules/nixos/programs/docker/immich.nixvirtualisation.oci-containers.containers.immich-server.volumes (.../immich/photos:/usr/src/app/upload, .../immich/upload-cache:/usr/src/app/upload/upload)
  • 업스트림 기준: Immich 배포 템플릿 docker/docker-compose.ymlimmich-server.volumes (https://github.com/immich-app/immich/blob/main/docker/docker-compose.yml)
Weekly Installs
5
GitHub Stars
1
First Seen
3 days ago
Installed on
mcpjam5
claude-code5
replit5
junie5
windsurf5
zencoder5