- PhotoPrism은 AI를 사용하여 태그, 장소, 고급 검색 기능을 통해 사진을 로컬로 정리합니다.
- 명확한 요구 사항: 2코어 CPU, 3GB RAM, DB 및 캐시용 SSD, 넉넉한 스왑 공간.
- Docker를 이용한 간편한 설치, 원본 마운트, 저장소, 원하는 경우 폴더 가져오기 등이 가능합니다.
- 개인정보 보호가 최우선입니다. 인터넷에 노출되는 경우 Traefik/Caddy를 사용하여 HTTPS 뒤에 배포하고 정기적으로 백업하세요.
¿PhotoPrism을 로컬에서 개인 AI 기반 갤러리로 사용하는 방법은 무엇인가요? 사진 라이브러리를 관리하세요퍼블릭 클라우드에 의존하지 않고도, 더 이상 꿈이 아닙니다. PhotoPrism을 사용하면 개인 컴퓨터나 서버에 AI 기반 비공개 사진 갤러리를 만들고 개인정보를 침해하지 않고 수년간의 추억을 탐색할 수 있습니다. 작동 방식, 필요한 기능, 그리고 Docker를 사용하여 로컬에서 설정하는 방법에 대한 자세하고 실용적인 설명을 소개합니다.
많은 사람들에게 Google Photos는 매우 편리하지만, 그 편리함의 대가로 데이터 사용에 대한 합리적인 의구심이 있습니다. 개인정보 보호에 대해 걱정되시면 또는 전문적인 맥락에서 GDPR과 같은 규정을 준수해야 하는 경우 PhotoPrism은 강력한 대안입니다. 자동 구성, AI 기반 태그, 고급 검색, 대규모 컬렉션에 맞게 설계된 워크플로를 모두 기존 인프라 내에서 사용할 수 있습니다.
PhotoPrism이란 무엇이며 왜 지역적으로 사용해야 합니까?

PhotoPrism은 웹 애플리케이션입니다 사람, 사물, 색상, 장면을 인식하여 라이브러리에 태그를 지정하고 정리하는 AI 기반 사진 관리 솔루션(Google TensorFlow 기반 분류 기능 포함)입니다. 셀프 호스팅 솔루션으로 제작되어 사진과 비디오를 집이나 개인 서버에 보관할 수 있으며, 최신 기능을 그대로 유지하면서도 개인 정보를 보호할 수 있습니다.
DNA에는 몇 가지 단서가 있습니다. RAW 및 클래식 포맷과의 호환성 JPEG 또는 PNG와 같은 파일 형식, 중복 감지 기능을 갖춘 지능형 인덱싱, 타임라인, 위치 및 태그별 탐색 기능, 카메라, 색상, 날짜, 국가별 필터를 조합하고 즐겨찾기로 표시할 수 있는 검색 엔진 등이 있습니다. 모든 기능은 로컬 캐시를 통해 사용자 컴퓨터에서 실행되며, 타사 분석 서비스에 의존하지 않습니다.
인터페이스는 PWA이므로 컴퓨터와 모바일 기기의 홈 화면에 설치됩니다. 특히 Chrome, Chromium, Safari, Firefox 및 Edge에서 잘 작동합니다.특정 비디오 및 오디오 코덱(예: H.264의 AAC)의 재생은 브라우저마다 다를 수 있는데, 이는 최신 웹에서는 정상적인 현상입니다.
또 다른 차별화 요소는 WebDAV 및 외부 서비스와의 통합입니다. PhotoSync와 같은 앱을 사용하면 모바일 기기에서 동기화할 수 있습니다.또한 만료되는 비밀번호로 보호된 링크와 함께 갤러리를 표시합니다. 또한, 지도와 위치 데이터가 필요한 경우 PhotoPrism은 MapTiler 기반의 역방향 지오코딩 서비스와 높은 개인정보 보호 수준의 지도를 사용합니다. 이러한 리소스는 노출을 최소화하고 캐싱 성능을 향상시키도록 설계되었습니다. 자세한 내용은 이 가이드를 참조하세요. 클라우드 스토리지 없이 AI로 사진 정리: PhotoPrism과 로컬 대안.
요구 사항, 하드웨어 및 성능
원활한 현지 사용을 위해 최소 두 개의 CPU 코어, 3GB RAM, 그리고 64비트 시스템을 권장합니다. 최소 사양을 초과하는 경우, 코어 수에 맞춰 RAM을 구성하고, 대규모 라이브러리의 경우 데이터베이스와 캐시에 로컬 SSD를 사용하는 것이 좋습니다. 인덱싱은 많은 작업을 필요로 하므로, SSD와 적절한 스와핑을 통해 성능이 크게 향상됩니다.
서버의 스왑이 4GB 미만이거나 매우 공격적인 메모리/스왑 제한을 설정한 경우 예상치 못한 재시작이 발생할 수 있습니다. 인덱서에 더 많은 리소스가 필요한 경우(대용량 RAW 파일, 360 파노라마 또는 4K 비디오에서 흔히 발생하는 현상) 스왑 공간을 활성화하거나 늘리고 인내심을 가지세요. 사진이 많으면 초기 인덱싱에 며칠이 걸릴 수 있습니다.
데이터베이스에 관하여, PhotoPrism은 SQLite 3 및 MariaDB 10.5.12 이상을 지원합니다.SQLite는 시작하기 쉽지만, 성능과 확장성을 고려한다면 MariaDB가 더 나은 선택입니다. MySQL 8은 MariaDB에 비해 수요가 적고 기능이 부족하여 지원이 중단되었습니다. 중요 팁: MariaDB 이미지에 "최신" 태그를 사용하지 마세요. 철저한 테스트를 거친 안정적인 버전을 사용하세요.
플랫폼과 관련하여 앱은 Docker를 사용할 수 있는 모든 곳에 배포됩니다. Docker Desktop을 사용한 Linux, macOS 및 WindowsFreeBSD, Raspberry Pi 및 많은 NAS 장치 외에도 PikaPods나 DigitalOcean을 통한 클라우드 옵션이 있지만, 여기서는 개인 정보 보호 및 제어를 위한 로컬 솔루션에 중점을 두겠습니다.
Docker 설치 단계별 안내
Docker를 사용한 적이 없다면걱정하지 마세요. Docker Compose를 사용한 배포는 매우 간단합니다. YAML 파일은 원하는 폴더에 저장할 수 있습니다. 먼저 PhotoPrism용 디렉터리를 만들고 그 안에 docker-compose.yml 파일을 저장하세요. 중요한 것은 원본, 저장소, 그리고 필요한 경우 가져오기 볼륨을 명확하게 정의하는 것입니다.
일반적인 설정은 다음과 같습니다. 원본(읽기 전용 또는 읽기/쓰기), 저장소(캐시, DB 및 사이드카) 및 가져오기 (선택 사항). 원본을 사진이 이미 있는 폴더로 지정할 수 있습니다. 제가 추천하는 방법은 사진과 저장소를 분리하여 데이터베이스와 캐시가 원본과 섞이지 않도록 하는 것입니다.
docker-compose의 기본 예 MariaDB와 PhotoPrism을 사용하면(사용자 환경에 맞게 조정 가능):
version: '3.5'
services:
mariadb:
image: 'mariadb:11'
restart: unless-stopped
security_opt:
- 'seccomp:unconfined'
- 'apparmor:unconfined'
command: >-
--innodb-buffer-pool-size=512M
--transaction-isolation=READ-COMMITTED
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--max-connections=512
--innodb-rollback-on-timeout=OFF
--innodb-lock-wait-timeout=120
environment:
MARIADB_AUTO_UPGRADE: '1'
MARIADB_INITDB_SKIP_TZINFO: '1'
MARIADB_DATABASE: 'photoprism'
MARIADB_USER: 'photoprism'
MARIADB_PASSWORD: 'cambia-esto'
MARIADB_ROOT_PASSWORD: 'cambia-esto'
volumes:
- './database:/var/lib/mysql'
photoprism:
image: 'photoprism/photoprism:latest'
depends_on:
- mariadb
stop_grace_period: 10s
security_opt:
- 'seccomp:unconfined'
- 'apparmor:unconfined'
ports:
- '2342:2342'
environment:
PHOTOPRISM_ADMIN_USER: 'admin'
PHOTOPRISM_ADMIN_PASSWORD: 'cambia-esto'
PHOTOPRISM_AUTH_MODE: 'password'
PHOTOPRISM_SITE_URL: 'http://localhost:2342/'
PHOTOPRISM_DEFAULT_TLS: 'true'
PHOTOPRISM_DATABASE_DRIVER: 'mysql'
PHOTOPRISM_DATABASE_SERVER: 'mariadb:3306'
PHOTOPRISM_DATABASE_NAME: 'photoprism'
PHOTOPRISM_DATABASE_USER: 'photoprism'
PHOTOPRISM_DATABASE_PASSWORD: 'cambia-esto'
PHOTOPRISM_ORIGINALS_LIMIT: 5000
PHOTOPRISM_JPEG_QUALITY: 85
PHOTOPRISM_DISABLE_WEBDAV: 'false'
PHOTOPRISM_DISABLE_TENSORFLOW: 'false'
PHOTOPRISM_DETECT_NSFW: 'false'
PHOTOPRISM_SIDECAR_JSON: 'true'
PHOTOPRISM_SIDECAR_YAML: 'true'
working_dir: '/photoprism'
volumes:
- '~/Pictures:/photoprism/originals'
- './storage:/photoprism/storage'
- './import:/photoprism/import'
파일이 준비되면 해당 폴더에서 터미널을 열고 다음을 실행합니다. docker compose up -d첫 번째 초기화는 이미지를 다운로드하고 데이터베이스를 생성합니다. 몇 분 정도 기다리세요. 그런 다음 인덱싱을 시작합니다. 도커 컴포즈 exec 포토프리즘 포토프리즘 인덱스추후 업데이트 예정: 도커 컴포즈 풀 포토프리즘, 도커 컴포즈 정지 포토프리즘 y docker compose up -d –no-deps photoprism.
기본 자격 증명: 관리자 사용자 이름과 환경 변수에 정의한 비밀번호. 약한 비밀번호는 변경하는 것을 잊지 마세요 처음 로그인하는 순간부터 가능합니다. 많은 양의 자료를 가져올 예정이라면, 초기 인덱싱 단계에서 ML 기능을 비활성화했다가 나중에 다시 활성화하는 것이 좋습니다.
보안 액세스, 로컬 도메인 및 역방향 프록시
네트워크 외부에 서비스를 노출하려는 경우 항상 HTTPS 뒤에 넣으세요 Traefik이나 Caddy와 같은 역방향 프록시를 사용합니다. TLS가 없으면 모든 것이 일반 텍스트로 전송되어 가로채기될 수 있습니다. 개인정보 보호는 계획의 일부입니다. 유효한 인증서를 사용하고 HTTP를 HTTPS로 리디렉션하세요.
포트 없이 photoprism.localhost와 같은 도메인으로 로컬로 액세스하려면 두 가지 옵션이 있습니다. 표준 포트 매핑 호스트(예: 로컬 전용인 80:2342)에서 설정하거나 Traefik이 80에서 수신 대기하고 2342에서 서비스로 라우팅하도록 구성합니다. 컨테이너 레이블에 라우터, 진입점, 내부 서비스 포트가 포함되어 있는지 확인합니다. Traefik의 일반적인 패턴은 호스트 규칙, 웹 진입점을 정의하고 서비스 포트를 2342로 지정하는 것입니다.
또 다른 핵심은 방화벽입니다. 들어오는 연결을 허용합니다 사용하는 포트(웹 및 https)로 연결하고, 필요한 경우 지오코딩 API 및 Docker로 아웃바운드 연결을 설정합니다. 이러한 아웃바운드 연결을 차단하면 지도와 장소가 제대로 작동하지 않습니다.
조직, AI, 그리고 변화를 만들어내는 기능들
PhotoPrism은 강력한 카탈로그와 사이드카와 함께 작동합니다. JSON 및 YAML로 메타데이터를 작성할 수 있습니다. 원본 사진과 함께 제공되므로 데이터베이스에만 의존하지 않아도 됩니다. TensorFlow(얼굴, 사물, 장면, NSFW)를 활용한 분류는 검색 속도를 높이고, 민감한 사진을 비공개로 설정할지 여부를 설정하는 것만큼 간단합니다.
성능을 유지하려면 썸네일 품질과 크기, 비디오 코덱, 비트 전송률 제한, 크기 조정을 조정할 수 있습니다. FFmpeg는 변수로 구성됩니다. 하드웨어가 지원하는 경우 Intel QSV, Nvidia, Apple 또는 VAAPI에 위임하여 가속화된 트랜스코딩을 수행할 수 있습니다. 몇 번의 클릭만으로 기본 워크플로에서 시스템에 맞는 워크플로로 전환할 수 있습니다.
탐색 기능이 민첩합니다: 타임라인, 앨범, 태그, 즐겨찾기, 장소. 고급 검색 패널 카메라, 날짜, 국가, 색상 또는 인물별로 필터링할 수 있습니다. 복잡한 라이브러리를 사용하시는 경우, 중복 감지 및 메타데이터 정규화를 통해 손쉽게 정리할 수 있습니다.
모바일 기기에서는 공식 앱이 없지만 PWA를 사용하거나 PhotoSync와 같은 앱을 사용하여 WebDAV와 동기화할 수 있습니다. PWA는 매우 실용적입니다네이티브 앱처럼 설치되므로 매번 브라우저를 사용할 필요가 없습니다. 하지만 이 분야의 대부분 솔루션과 마찬가지로 Android TV나 Google TV에서의 사용 경험은 제한적입니다. 가족과 함께 편안하게 사진을 보고 싶다면 TV에 연결된 노트북에서 브라우저를 사용하는 것이 가장 안정적인 방법입니다.
PhotoPrism을 가장 많이 활용하는 사람은 누구입니까?
전문 사진작가들 수천 개의 RAW 파일을 사용하면 강력한 기능을 활용할 수 있습니다. 바로 인덱싱, 렌즈 또는 카메라별 검색, 중복 감지, 그리고 원본 변경을 방지하는 사이드카 기능입니다. 컬렉션을 관리하고, 태그를 지정하고, 통합하면 중기적으로 작업 시간을 절약할 수 있습니다.
에 그래픽 디자이너와 크리에이티브색상으로 구분된 라벨과 객체 태그를 사용하면 시각적 영감을 빠르게 찾을 수 있습니다. 순간별로 보고 타임라인을 활용하면 아이디어와 자료를 놓치지 않고 찾을 수 있습니다.
부동산 부문에서는 부동산 중개인 위치, 날짜 또는 태그별로 부동산을 분류하고, 만료되는 보호된 링크로 앨범을 공유할 수 있습니다. 여기서는 개인정보 보호가 중요하며, 서버를 제어할 수 있다는 것은 큰 장점입니다.
디지털 마케팅 팀 캠페인, 날짜, 국가별 필터가 적용된 체계적인 자산 라이브러리를 선호합니다. 다중 사용자 지원과 사이드카 기능을 사용하면 원본 콘텐츠 손상 없이 내부 컬렉션을 외부에 노출하지 않고도 쉽게 공유할 수 있습니다.
에 여행자, 디지털 보관자 및 개발자장점은 대화형 지도부터 WebDAV를 통해 갤러리를 다른 서비스와 통합하는 기능까지 다양합니다. 규정 준수가 중요한 경우, 자체 인프라에 데이터를 보관하면 GDPR 및 내부 정책을 준수하는 데 도움이 됩니다.
인기 있는 대안과 그것이 어떻게 들어맞는지
임미치는 강하게 타격하고 있다Google 포토와 매우 흡사하며, 매끄러운 타임라인, 키 기반 즐겨찾기, 모바일 동기화, 그리고 콘셉트나 색상에 따른 의미 검색 기능을 제공합니다. Immich-Go와 같은 도구를 사용하면 Google Takeout에서 가져오는 것이 매우 쉽습니다. 단점은 Android TV 앱의 기능이 제한적이라는 점입니다. TV 시청 시에는 노트북 브라우저를 사용하는 것이 좋습니다.
생산성 제품군 분야에서 Nextcloud Photos 및 Memories 플러그인 Nextcloud를 이미 사용하고 있다면 괜찮은 선택입니다. Recognize 앱은 얼굴 인식 기능을 제공하고, Imaginary와 Preview Generator는 미리보기 속도를 높여줍니다. 인터페이스는 기능적이지만, 즐겨찾기 표시와 같은 빠른 작업은 다른 옵션만큼 즉각적이지 않습니다.
사진 구조 아카이브를 다시 찾아볼 수 있도록 무작위로 선택된 사진을 표시하는 홈 화면을 통해 색다른 접근 방식을 제공합니다. 빠르고 최신 기능을 제공하지만, 플러스 모드에서는 즐겨찾기 및 얼굴 인식과 같은 기능이 활성화되어 무료 및 로컬 콘텐츠를 찾는 사람들에게는 다소 부담스러울 수 있습니다.
피위고, 포토뷰, 리치 또는 포토닉스 간단한 갤러리, 기본적인 인식, 태그별 정리 등 다양한 시나리오를 지원합니다. 타임라인과 빠른 단축키를 중시한다면 LibrePhotos는 부족할 수 있습니다. LibrePhotos는 문서상으로는 매우 유망해 보이지만, 구현이 다소 수동적일 수 있으며 저사양 컴퓨터에서는 항상 원활하게 실행되는 것은 아닙니다.
올라 Plex가 Plex Photos를 출시했습니다. 현재 iOS, Android 및 웹용 베타 버전인 Plex는 기존 Plex 사용자라면 흥미로운 옵션이지만, 아직은 세련된 네이티브 Android TV 앱이 부족합니다. 반면 Ente는 코드를 오픈소스로 공개하고 종단 간 암호화를 자랑합니다. 데스크톱 클라이언트에서도 매우 유망해 보이지만, 자체 호스팅에는 약간의 기술 노하우가 필요합니다.
Docker 초보자를 위한 자주 묻는 질문
YAML 파일은 어디에 넣어야 하나요?원하는 폴더에 넣으세요. 중요한 것은 해당 디렉터리에서 Docker Compose 명령을 실행하여 올바른 YAML을 읽도록 하는 것입니다. docker-compose.yml과 storage, database, import와 같은 하위 폴더를 함께 보관하여 모든 파일을 손쉽게 사용할 수 있도록 하세요.
현재 사진 폴더를 마운트해야 하나요? 네, 사진 폴더를 /photoprism/originals에 매핑하세요. 쓰기 권한을 부여하지 않으려면 읽기 전용으로 마운트할 수 있지만, 이렇게 하면 메타데이터 편집 기능을 사용할 수 없게 됩니다. 또한 PhotoPrism은 사이드카를 사용하여 원본 파일을 수정하지 않습니다.
데이터베이스와 캐시는 어디에 있나요? 사진 폴더 외부, /photoprism/storage(MariaDB를 사용하는 경우 DBMS 컨테이너의 ./database)에 매핑되는 별도의 경로에 저장하는 것이 가장 좋습니다. 이렇게 하면 캐시와 데이터베이스가 원본 파일과 섞이지 않습니다.
Docker에서 폴더를 마운트하는 방법volumes 키에서 host_path:container_path 형식을 사용하세요. 예: ~/Pictures:/photoprism/originals. 컨테이너를 실행하는 사용자의 권한을 확인하세요. 필요한 경우 PHOTOPRISM_UID 및 PHOTOPRISM_GID 변수 또는 user 지시어를 사용하여 권한을 정렬하세요.
트래픽이나 캐디가 필요한가요? 자동 TLS, 깨끗한 도메인 및 경로가 필요하거나 서비스를 인터넷에 노출하려는 경우에만 이 작업을 수행하세요. 로컬에서는 포트 2342를 매핑하는 것으로 충분합니다. Traefik을 사용하는 경우 서비스의 호스트, 웹 진입점, 내부 포트 2342를 정의하세요. 이렇게 하면 :2342를 추가하지 않고도 photoprism.localhost로 서비스에 액세스할 수 있습니다.
지원, 업데이트 및 커뮤니티

이 프로젝트의 목적은 다음과 같습니다. 가장 개인 정보 보호에 친화적인 옵션 역동적인 로드맵을 가지고 있습니다. 무결점 정책을 목표로 하기 때문에 새로운 기능에 대한 확정적인 일정을 정하지 않습니다. 개발 속도는 자금 지원과 커뮤니티 지원에 따라 달라집니다. 만약 자신에게 맞는다면, 멤버가 되면 가장 관심 있는 분야의 개발이 더욱 가속화될 것입니다.
의심을 해결하려면 다음을 수행하세요. GitHub 및 커뮤니티 채팅에 대한 토론실버, 골드, 플래티넘 회원도 기술 지원팀에 문의할 수 있습니다. 버그 보고서를 제출하기 전에 문제 해결 체크리스트를 확인하세요. 로컬 구성 문제인 경우가 많으며 빠르게 해결될 수 있습니다.
업데이트에서는 다음을 사용하여 자동화할 수 있습니다. 망대 괜찮으시다면 괜찮습니다. 그렇지 않다면 안정적인 버전이 출시되면 pull, stop, up 프로세스를 사용하는 것이 좋습니다. 심각한 환경에서는 PhotoPrism과 MariaDB 모두에서 고정 버전을 사용하고 최신 버전 사용을 피하여 업데이트를 제어하세요.
지도와 역 지오코딩에 대해 걱정된다면, PhotoPrism과 MapTiler 이러한 서비스는 매우 높은 수준의 개인정보 보호 기능을 제공합니다. 본 프로젝트는 이러한 서비스 사용을 보호하며, 캐싱을 통해 성능을 향상시키고 쿼리가 과도하게 노출되는 것을 방지합니다.
마지막으로, 당연하지만 필수적인 점을 기억하세요. 백업을 만드는 것은 선택 사항이 아닙니다가족 추억이나 고객 자료를 관리한다면 그 책임은 당신에게 있습니다. 데이터베이스, 저장소, 그리고 가장 중요한 원본 파일을 최소 두 곳 이상의 다른 장소에 백업하세요. 저렴한 USB 드라이브나 느린 네트워크 폴더는 데이터베이스 백업에 사용하지 마세요.
이 단계에서 포토프리즘 그는 그 자리를 얻었다 로컬 Google 포토를 위한 강력한 솔루션으로, AI 기반 분류, SSD 속도, 원본 보존을 위한 사이드카, 그리고 세련된 PWA를 제공합니다. 목록 작성보다 즐거움을 중시한다면 Immich와 같은 인터페이스가 마음에 들 수 있습니다. 꼼꼼한 정리를 중시한다면 PhotoPrism이 빛을 발합니다. 어떤 요구 사항이든, 적절한 Docker Compose 설정, 충분한 스왑 공간, 인터넷 접속을 위한 HTTPS, 그리고 백업 기능을 갖추면 향후 수년간 안정적으로 사용할 수 있는 시스템을 구축할 수 있습니다.
어렸을 때부터 기술에 대한 열정이 있었습니다. 저는 해당 분야의 최신 소식을 접하고 무엇보다 이를 전달하는 것을 좋아합니다. 이것이 바로 제가 수년 동안 기술 및 비디오 게임 웹사이트에서의 커뮤니케이션에 전념해 온 이유입니다. 제가 Android, Windows, MacOS, iOS, Nintendo 또는 떠오르는 기타 관련 주제에 대해 글을 쓰고 있는 것을 볼 수 있습니다.