.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를 직접 지정하는 옵션