최근 취미로 카메라를 시작해 사진을 기록하고 있다.
그런데 촬영한 사진 중 몇 장만 공유하는 것이 아쉬워 사진을 공유할 수 있는 오픈소스를 찾아보았다.
PhotoPrism
오픈소스 사진 관리 애플리케이션으로, 사진/비디오를 자체 서버에 호스팅 하면서 자동 태깅, 얼굴 인식, 필터 검색 등을 활용해 사진 라이브러리를 정리하고 탐색할 수 있다.
https://github.com/photoprism/photoprism
GitHub - photoprism/photoprism: AI-Powered Photos App for the Decentralized Web 🌈💎✨
AI-Powered Photos App for the Decentralized Web 🌈💎✨ - photoprism/photoprism
github.com
주요 특징
1. 자동 정리와 인덱싱
- 사진을 불러오면 날짜, 위치(GPS 메타데이터), 카메라 정보 등을 기반으로 자동으로 정리한다.
- 얼굴 인식과 객체 감지를 통해 사람이나 사물을 분류할 수도 있다.
- 과정에 라벨을 자동으로 붙여준다. ex) bottle, people, portrait, moment ...
2. 검색 기능
- 메타데이터, 파일명, 태그, 장소 등을 기준으로 빠른 검색이 가능하다.
3. 접근성
- 웹 UI를 제공해 PC, 스마트폰, 태블릿 어디서든 접속할 수 있다.
4. 공유
- 앨범에 공유 링크를 만들어 다른 사람에게 보여줄 수 있다.
- WebDAV를 통해 외부 파일 탐색기와 연동할 수도 있다.
5. 스토리지 유연성
- 사진은 로컬 디스크, 외장 HDD, NAS 등에 보관 가능하며, 원본 파일과 별개로 색인 데이터와 썸네일을 따로 관리한다.
PhotoPrism 도커 실행
도커로 간단하게 사용할 수 있다.
윈도우의 경우 Docker Desktop을 실행할 수 있다면 준비가 끝났다.
# docker-compoes.yml
services:
photoprism:
image: photoprism/photoprism:latest
depends_on:
- mariadb
environment:
PHOTOPRISM_ADMIN_USER: "admin"
PHOTOPRISM_ADMIN_PASSWORD: "admin1234"
PHOTOPRISM_ORIGINALS_LIMIT: 10240
# 기타 환경 변수 설정
ports:
- "2342:2342" # 웹 UI 포트
volumes:
- ./storage:/photoprism/storage
- ./originals:/photoprism/originals
mariadb:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: "0000"
MYSQL_DATABASE: photoprism
MYSQL_USER: user
MYSQL_PASSWORD: "1111"
volumes:
- ./db:/var/lib/mysql
1. 폴더를 만들고 docker-compose.yml 작성
ADMIN_USER/PASSWORD
접속하기 위한 관리자 계정이다.
ORIGINALS_LIMIT
파일 최대 사이즈 MB 단위이다. default = 1000
자세한 Option은 docs 참고
https://docs.photoprism.app/getting-started/config-options/
PhotoPrism - Config Options
Official Documentation
docs.photoprism.app
VOLUMES
storage = cache 저장소
originals = 원본 파일 저장소
대략 4GB original에 700MB storage 정도 나온다. 계속 비례적인지는 모르겠지만 약 17퍼 크기가 캐시됐다.
(나는 cache는 ssd에, originals은 hdd에 두었다.)
2. docker compose up -d
만든 폴더 루트에서 `docker compose up -d` 실행한다.
사용
로그인

인덱싱

original 폴더 아래 사진,동영상 파일을 위치시키면 된다.
예시로 3개의 폴더에 사진을 두었다. (/cane, /cavallo, /elefante)
인덱싱할 폴더를 고르고 start를 누르면 인덱싱이 진행된다.


인덱싱( ≈ 파일 등록)이 완료되면 이미지가 보인다.
인덱싱 과정에 자동으로 태그를 생성하거나 얼굴을 인식하여 분류해주기도 한다.
삭제

삭제 순서는 archive -> delete 이다.
사진을 선택하고 보관함으로 옮긴다.

보관함에서는 delete icon이 보인다.
삭제는 originals의 원본 파일도 삭제된다.
공유


폴더나 앨범을 링크가 있는 사용자에게 공유할 수 있다.
유효 기간을 설정할 수도 있고, 휴지통 아이콘을 눌러 링크를 지울 수 있다.
로컬로 접속해서 주소가 저렇게 나왔는데, 호스팅 환경에 맞게 외부IP 또는 도메인으로 바꾸면 된다.
ex) 41.167.11.21:2342/s/~~
ex) mymymy.com:2342/s/~~
공유 앨범에서 private 처리한 파일은 보이지 않는다.
Account Roles
계정에 따른 접근제어도 있다.
https://docs.photoprism.app/user-guide/users/roles/
PhotoPrism - Account Roles
Official Documentation
docs.photoprism.app
User와 Viewer는 멤버십 사용자만 가능하다.
docker compose exec photoprism photoprism users add --name "guest2" --email "guest@example.com" --password "guest123" --role guest
Guest를 추가해서 테스트해 보면 공유 링크 접속과 다를 게 없어 보인다.
사진 공유는 계정 관리 없이 링크 공유로 충분하다.
마치며
개인적으로 사진을 관리하고 공유하기에는 충분해 보인다.
불편함이 생기기 전까지는 사용해 볼 생각이다.
'software' 카테고리의 다른 글
| Nosql MongoDB를 알아보자 (0) | 2023.09.08 |
|---|