

PhotoView는 사진 작가를 위해 만들어진 간단하고 사용자 친화적 인 사진 갤러리로 수천 개의 고해상도 사진을 통해 디렉토리를 쉽고 빠르게 탐색하는 방법을 제공하는 것을 목표로합니다.
파일 시스템의 디렉토리 내에서 사진과 비디오를 찾도록 PhotoView를 구성합니다. 스캐너는 자동으로 미디어를 선택하고 썸네일 이미지를 생성하여 탐색을 빠르게 만들기 시작합니다.
미디어가 스캔되면 파일 시스템과 같은 방식으로 웹 사이트에 나타납니다.
설정 또는 개발에 관한 질문이 있으시면 Discord 서버에 가입하십시오 https://discord.gg/jq392948u9
우리는 새로운 Docker Registry https://hub.docker.com/r/photoview/photoview로 master 태그에 대한 모든 새로운 이미지로 마이그레이션했으며, 미래의 릴리스는 이전에 사용 된 레지스트리 대신 게시 될 예정입니다. 이전 이미지는 오래된 레지스트리 https://hub.docker.com/r/viktorstrate/photoview에서 여전히 액세스 할 수 있으므로 이전 이미지 중 하나를 사용하려면 이전 레지스트리로 되돌아 가야합니다.
Compose 파일의 해당 예제에 표시된대로 photoview 이미지의 새 레지스트리를 사용하려면 docker-compose.yml 파일을 업데이트하십시오.
https://photos.qpqp.dk/를 방문하십시오.
사용자 이름 : 데모
비밀번호 : 데모
이미 많은 오픈 소스 자조 사진 갤러리가 있습니다. 몇 가지를 언급할만한 일부가 있습니다.
그래서 왜 다른 사람? 나는 사진을 찍는 것을 좋아하고 모든 사진을 현지 파일 서버에 보관합니다. 파일 시스템에서 직접 사진을 구성 할 수 있으므로 이동하거나 백업을 쉽게 찍을 수 있기 때문에 좋습니다. 사진이 어디서 어떻게 저장되는지 제어 할 수 있기를 원합니다.
그러나 문제는 원시 이미지가 로컬 네트워크를 통해 파일 서버에서 탐색하기가 매우 지루하다는 것입니다.
내 서버에는 가족도 액세스하기를 원하는 오래된 가족 사진이 많이 있습니다. 그리고 내가 먼저 계정을 만들어야 할 번거 로움없이 다른 사람들과 쉽게 공유 할 수 있기를 원하는 일부 사진.
따라서 다음을 수행 할 수있는 솔루션이 필요합니다.
모든 사진 갤러리는 내가 필요한 것을 많이 할 수 있지만, 하나는 모든 것을 할 수 없습니다.
이 섹션에서는 Docker를 사용하여 서버에서 Photoview를 업데이트하고 실행하는 방법에 대해 설명합니다. 서버에 Docker 및 Docker-Compose가 설치되어 실행되어 있는지 확인하십시오. 제공된
Makefile사용하려면 선택 사항make(자세한 내용은 4 단계 참조).7zz설치 해야하는 경우 기본 .TAR.XZ 형식 대신 백업 시나리오의 범위에서 사용하려는 경우. 자세한 내용은backup섹션 위에있는Makefile의 주석을 읽으십시오.
docker-compose example 폴더의 내용을 서버의 폴더로 다운로드하여 PhotoView 내부 데이터 (데이터베이스 및 캐시 파일)를 호스팅해야합니다.
이 폴더에는 Docker-Compose 파일의 2 가지 버전이 포함되어 있습니다.
docker-compose.example.yml 완전 기능 및 가장 많은 경우 구성에 권장됩니다.docker-compose.minimal.example.yml 이전의 것을 너무 복잡하고 이해하고 관리하기 어려운 사람들을위한 최소 및 간단한 구성파일을 다운로드 할 때는 파일 중 하나만 선택해야합니다.
다운로드 된 파일의 이름을 바꾸고 이름에서 example 를 제거하십시오 (따라서 .env , docker-compose.yml 및 Makefile 파일이 있어야합니다). 이전 단계에서 docker-compose.minimal.example.yml 을 선택하면 docker-compose.yml 로 이름을 바꾸십시오.
텍스트 편집기 에서이 파일을 열고 읽으십시오. 설정 주석에 따라 필요한 위치를 수정하여 설정을 올바르게 일치 시키십시오. 두 가지 유형에 대한 주석이 있습니다. ## 로 시작하는 것은 설명과 예제이며, 이는 언급되지 않아야합니다. # 부터 시작하여 선택적 또는 대체 구성 부분이며, 특정 상황에서는 해당 설명에 설명되어있을 수 있습니다. 다음 순서로 파일을 살펴 보는 것이 좋습니다 : .env , docker-compose.yml 및 Makefile .
PGSQL_PASSWORD또는MARIADB_PASSWORD에 특수 문자 (예 :@)가 포함 된 경우 URL을 사용하십시오.
다른 사용자가 미디어 라이브러리의 루트 폴더와 모든 파일 및 하위 폴더를 읽을 수 있고 검색 할 수 있는지 확인하십시오. 다음 명령 (또는 Makefile 의 해당 명령 순서)을 실행하십시오.
make readable 명령 (들) return Permission denied 오류가 오류가 발생하면 사용자 아래에서 실행하여 해당 파일 및 폴더를 소유하십시오. 또는 명령 전에 sudo 추가하는 것을 실행합니다. 이렇게하면 실행 컨텍스트를 root 사용자로 전환하고 루트 비밀번호를 요청합니다. 시스템에서 sudo 실행할 수있는 권한이 있어야합니다.
파일에 대한 others 그룹에 필요한 권한을 제공하고 싶지 않다면 다음과 같이 할 수 있습니다.
photoview 서비스의 볼륨 내부의 모든 파일과 폴더를 만듭니다. 그런 다음 적절한 권한을 group 섹션에 설정하십시오.photoview 서비스의 볼륨 내에서 모든 파일과 폴더의 소유권을이 사용자에게 변경하십시오. 그런 다음 user 섹션에 적절한 권한을 설정하십시오. 호스트의 다른 위치 (host_photoview_media_family 등)의 다른 위치의 미디어 파일로 다른 마운트를 구성한 경우, Makefile readable 대상에서와 동일한 명령을 수동으로 실행해야합니다. 호스트의 각 미디어 루트 폴더에 대해 각 명령을 쉘에 복사하고 변수를 후행없이 추가 미디어 폴더로 교체하십시오 / 각 추가 루트 폴더에 대해 두 명령을 모두 실행하십시오.
시스템에 make 설치하지 않았거나 Photoview Management 활동에 사용하지 않으려면 Makefile 에서 동일한 명령을 사용하여 직접 쉘에서 실행하거나 자신의 스크립트를 만들 수 있습니다. 이 경우 먼저 .env 의 변수를 적용하거나 교체하십시오. Makefile 편의성과 단순성을 위해 제공되지만 선택 사항입니다.
다음 명령을 실행하여 서버를 시작하십시오 (또는 Makefile 의 해당 명령 시퀀스) :
make all docker-compose.yml 파일에서 엔드 포인트 또는 포트가 변경되지 않은 경우 이제 http : // localhost : 8000에서 PhotoView에 액세스 할 수 있습니다.
모든 것이 올바르게 설정되면 웹 사이트에 처음 액세스 할 때 초기 설정 마법사가 제공되어야합니다.

새 사용자 이름과 비밀번호를 입력하십시오.
사진 경로의 경우 사진이있는 Docker 컨테이너 내부의 경로를 입력하십시오. 이것은 photoview > volumes 에서 docker-compose.yml 파일에서 설정할 수 있습니다. 기본 위치는 /photos 입니다.
초기 설정 아래에 제공된 경로에있는 사진에 액세스 할 수 있도록 새 관리자 사용자가 생성됩니다.
사진이 나타나기 전에 스캔해야하며 Settings 탐색하고 Scan All 클릭하여 수동으로 스캔을 시작할 수 있습니다.
로컬 네트워크 외부에 노출되기 전에 PhotoView 인스턴스를 보안하는 것이 좋습니다. 미디어 갤러리에 대한 읽기 전용 액세스를 제공하고 기본 사용자 인증 기능이 있어도 인터넷의 악의적 인 배우로부터 개인 미디어를 보호하기에 충분하지 않습니다.
자체 주최 서비스를 확보하는 가능한 방법은 다음과 같습니다.
이러한 모든 보호를 설정하고 구성하려면 로컬 네트워크 및 자체 호스팅 서비스에 대한 많은 정보가 필요합니다. 이 정보를 기반으로 구성 흐름 및 결과 서비스 아키텍처는 사례간에 크게 다를 수 있습니다. 그렇기 때문에이 프로젝트의 범위에서 우리는 가능한 Webservice Protection의 가능한이 높은 수준의 목록 만 제공 할 수 있습니다. 그것들을 조사하고, 사례에 가장 적합한 조합과 구성을 찾고, 올바른 일관된 방식으로 모든 것을 구성해야합니다. 보안 제한으로 인해 많은 것들이 다르게 작동 할 수 있으므로 고도로 안전한 설정에 대한 지원을 제공 할 수 없습니다.
PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION 정의하여 하드웨어 가속을 지원하는 코덱으로 FFMPEG를 실행할 수 있습니다. 값은 qsv , vaapi , nvenc 중 하나 여야합니다.
인텔 칩에서 qsv 로 하드웨어 가속도 만 확인했습니다. 작동하게하려면 /dev/dri 장치를 매핑하고 ENV PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION=qsv 설정해야합니다. [docker-compose.example.yml] (./ docker-compose example/docker-compose.example.yml)을 참조하십시오.
다른 하드웨어 가속도가 잘 작동하는지 확인하면 알려주십시오.
? 먼저, 기부에 관심을 가져 주셔서 감사합니다! ?
이 프로젝트는 노력의 결과이며 기여에 관심이있는 것을 보게되어 기쁩니다. 기부금은 단순한 코드에 관한 것이 아닙니다. 여러 가지 방법으로 도울 수 있습니다!
시작하기 전에 잠시 시간을내어 기고 가이드를 읽으십시오. 여기에는 당사의 행동 강령에 대한 정보, 풀 요청을 제출하는 프로세스 등이 포함됩니다.
모든 기여는 중요합니다. 이 프로젝트를 더 좋게 만들어 봅시다! ?
Docker Development 환경은 쉽게 설정할 수 있습니다. Docker와 Docker Compose 플러그인 만 있으면됩니다. 모든 종속성은 컨테이너에 설치되지만 호스트에는 없습니다.
또한 몇 가지 단점이 있습니다. MacOS에서 Docker는 Linux VM에서 실행 중입니다. 이 경우 FS 알림은 잘 작동하지 않습니다. 코드가 변경 될 때 reflex 또는 nodemon 사용하여 서버를 다시 시작할 수 없습니다. 컴파일러도 꽤 느리게 작동합니다.
Docker 개발 환경을 사용하는 것이 좋습니다. Docker 환경이 MacOS와 같이 잘 작동하지 않으면 지역 개발 환경을 사용하십시오.
서버를 처음 시작할 때 종속성을 구축하는 데 시간이 오래 걸릴 수 있습니다.
$ docker compose -f dev-compose.yaml build # Build images for development
$ docker compose -f dev-compose.yaml up # Launch API and UI serversGraphQL 놀이터는 이제 LocalHost : 4001에서 액세스 할 수 있습니다. 사이트는 이제 LocalHost : 1234에서 액세스 할 수 있습니다. 코드가 변경되면 두 서버 모두 다시 시작됩니다.
기본적으로 SQLITE3을 데이터베이스로 사용합니다. 다른 데이터베이스로 서버를 실행하려면 dev-compose.yaml 파일에서 PHOTOVIEW_DATABASE_DRIVER 값을 업데이트하고 실행하십시오.
$ docker compose -f dev-compose.yaml --profile mysql up # Run with mysql database
or
$ docker compose -f dev-compose.yaml --profile postgres up # Run with postgresql databaseDocker Compose에 의존하지 않고 Docker에만 의존하고 싶다면 아래와 같이 서버를 시작할 수 있습니다.
서버를 처음 시작할 때 종속성을 구축하는 데 시간이 오래 걸릴 수 있습니다.
$ docker build --target api -t photoview/api . # Build image for development
$ docker run --rm -it -v ` pwd ` :/app --network host --env-file api/example.env photoview/api
reflex -g ' *.go ' -s -- go run . # Monitor source code and (re)launch API serverGraphQL 놀이터는 이제 LocalHost : 4001에서 액세스 할 수 있습니다.
메모
서버는 호스트 네트워크에서 --network host 플래그로 실행됩니다. API 서버와 UI 서버간에 쉽게 통신 할 수 있습니다. 그렇게하지 않으려면 Docker Network를 확인하여 서버를 실행할 새 네트워크를 작성하십시오.
서버를 처음 시작할 때 종속성을 구축하는 데 시간이 오래 걸릴 수 있습니다.
$ docker build --target ui -t photoview/ui . # Build image for development
$ docker run --rm -it -v ` pwd ` :/app --network host --env-file ui/example.env photoview/ui
npm install # Install dependencies
$ docker run --rm -it -v ` pwd ` :/app --network host --env-file ui/example.env photoview/ui
npm run mon # Monitor source code and (re)launch UI server사이트는 이제 LocalHost : 1234에서 액세스 할 수 있습니다.
메모
서버는 호스트 네트워크에서 --network host 플래그로 실행됩니다. API 서버와 UI 서버간에 쉽게 통신 할 수 있습니다. 그렇게하지 않으려면 Docker Network를 확인하여 서버를 실행할 새 네트워크를 작성하십시오.
Linux에서는 Docker Compose 또는 Docker를 지역 개발 환경으로 사용하는 것이 좋습니다.
각 환경에서 아래 명령을 계속 확인할 수 없습니다. 사람들은 자신의 의존성을 해결해야 할 수도 있습니다.
golang > = 1.22g++libc-devlibheif > = 1.15.1dliblibjpeglibblaslibcblas , 데비안에서 libatlas-base 사용하여 권장합니다.liblapackreflex : 개발중인 코드에서 실행되는 서버를 자동으로 재 구축하고 다시 시작하는 소스 코드 모니터링 도구.sqlite : SQLITE DBMS는 개발 환경에서 사용하는 경우 PhotoView의 SQLite DB와 직접 상호 작용하는 데 유용합니다.node = 18Debian/Ubuntu에서는 종속성을 설치합니다.
$ sudo apt update # Update the package list
$ sudo apt install golang g++ libc-dev libheif-dev libdlib-dev libjpeg-dev libblas-dev libatlas-base-dev liblapack-dev # For API requirement
$ sudo apt install reflex sqlite3 # For API optional toolsMACOS에서는 종속성을 설치합니다.
$ brew update # Update the package list
$ brew install golang gcc pkg-config libheif dlib jpeg # For API
$ brew install reflex sqlite3 # For API optional tools apt 또는 homebrew 사용하지 않으면 패키지 관리자 안내를 따르십시오.
node 의 경우 NVM을 사용하는 것이 좋습니다. 설치 및 업데이트에 따라 nvm 로컬로 설치하십시오.
$ nvm install 18
$ nvm use 18 원하는 경우 다른 패키지 관리자와 함께 node 설치할 수 있습니다.
.env /api/example.env 로 바꾸십시오/api 에 넣고 싶지 않은 경우 PHOTOVIEW_SQLITE_PATH 업데이트PHOTOVIEW_DATABASE_DRIVER 업데이트하십시오
PGSQL_PASSWORD또는MARIADB_PASSWORD에 특수 문자 (예 :@)가 포함 된 경우 URL을 사용하십시오.
/ui/example.env 로 .env그런 다음 다음 명령을 실행합니다.
# Optional: Set the compiler environment in Debian/Ubuntu
$ source ./scripts/set_compiler_env.sh
# Set the compiler environment with `homebrew`
$ export CPLUS_INCLUDE_PATH= " $( brew --prefix ) /opt/jpeg/include: $( brew --prefix ) /opt/dlib/include "
$ export LD_LIBRARY_PATH= " $( brew --prefix ) /opt/jpeg/lib: $( brew --prefix ) /opt/dlib/lib "
$ export LIBRARY_PATH= " $( brew --prefix ) /opt/jpeg/lib: $( brew --prefix ) /opt/dlib/lib "
# Start API server
$ cd ./api
$ go run .코드가 변경되면 서버를 자동으로 다시 컴파일하려면 다음과 같습니다.
# Start API server
$ cd ./api
$ reflex -g ' *.go ' -s -- go run .GraphQL 놀이터는 이제 LocalHost : 4001에서 액세스 할 수 있습니다.
새 터미널 창에서 다음 명령을 실행합니다.
cd ./ui
npm install
npm start코드가 변경되면 서버를 자동으로 다시 컴파일하려면 다음과 같습니다.
$ cd ./ui
$ npm run mon사이트는 이제 LocalHost : 1234에서 액세스 할 수 있습니다.
@ericerkz | @Robin-Moser | @revorge | @deexno | @fkrauss | @jupblb |