immich Docker Log

immich Docker Log
Photo by Erik Mclean / Unsplash

.env & docker-compose Download

wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

Modification Log

  • .env에서 UPLOAD_LOCATION를 수정
  • NFS로 처음에 진행하였으나 SMB로 수정

NFS Issue

  • UID/GID 불일치 문제이슈 발생
    • 서버와 클라이언트가 서로 다른 사용자 및 그룹 정보를 가지고 있을 때 발생
  • 이러한 문제를 해결하기 위해 사용하는 NFS 버전에 따라 접근 방식이 다름
  • NFSv3: 서버와 클라이언트의 /etc/passwd 및 /etc/group 파일에 동일한 사용자와 그룹이 동일한 UID와 GID를 갖도록 설정하는 것이 가장 기본적인 해결책
  • NFSv4: 기존의 숫자 기반 ID 대신 user@domain 형태의 문자열 기반 ID를 사용
    • ID 매핑 데몬 (rpc.idmapd): NFSv4는 rpc.idmapd 데몬을 사용하여 문자열 기반의 사용자/그룹 이름과 시스템의 숫자 UID/GID를 서로 변환
      • 서버와 클라이언트의 /etc/idmapd.conf 파일에 설정된 도메인 이름이 반드시 동일
    • 클라이언트에서 마운트할 때 -t nfs4 옵션을 명시적으로 사용하여 NFSv4 프로토콜로 연결되도록 하는 것이 좋음

Squash Option 사용

  • root_squash (기본값 및 권장): 클라이언트의 root(UID 0) 사용자가 서버의 파일에 접근할 때, 권한이 없는 nobody 또는 nfsnobody 사용자로 강제로 매핑
  • no_root_squash: 클라이언트의 root 사용자를 서버에서도 root 사용자로 인식하게 하므로, 서버의 모든 파일에 대한 통제권을 가질 수 있음
  • all_squash: 모든 클라이언트 사용자를 익명의 사용자(기본적으로 nobody)로 매핑
  • anonuid 및 anongid: all_squash나 root_squash가 적용될 때 매핑될 익명 사용자의 UID와 GID를 직접 지정하는 옵션