

Photoview-это простая и удобная фотогалерея, которая предназначена для фотографов и направлена на то, чтобы обеспечить простой и быстрый способ навигации на каталоги с тысячами фотографий с высоким разрешением.
Вы настраиваете PhotoView для поиска фотографий и видео в каталоге в вашей файловой системе. Сканер автоматически поднимает ваш носитель и начинает генерировать миниатюрные изображения, чтобы сделать просмотр очень быстро.
Когда ваши средства массовой информации будут отсканированы, они отображаются на веб -сайте, организованные так же, как в файловой системе.
Если у вас есть вопросы, касающиеся настройки или разработки, не стесняйтесь присоединиться к серверу Discord https://discord.gg/jq392948u9
Мы мигрировали в новую реестр Docker https://hub.docker.com/r/photoview/photoview и все новые изображения для master -тега, а также будущие релизы будут опубликованы там вместо ранее используемого реестра. Старые изображения будут все еще доступны в старом реестре https://hub.docker.com/r/viktorstrate/photoview, поэтому, если вы хотите использовать 1 из этих старых изображений, вам нужно вернуться к старому реестру.
Пожалуйста, обновите свой файл docker-compose.yml чтобы использовать новый реестр для изображения photoview , как показано в соответствующем примере файла Compose: https://github.com/photoview/photoview/tree/master/docker-compose%20Exampleme
Посетите https://photos.qpqp.dk/
Имя пользователя: демонстрация
Пароль: демонстрация
Существует уже много фотогалерей с открытым исходным кодом. Вот некоторые, просто чтобы упомянуть несколько.
Так почему же еще один? Я люблю фотографировать, и я храню их всех в своем локальном файловом сервере. Это здорово, потому что я могу организовать свои фотографии непосредственно в файловой системе, поэтому их легко перемещать или взять резервные копии. Я хочу иметь возможность контролировать, где и как хранятся фотографии.
Проблема в том, что необработанные изображения чрезвычайно утомительны, чтобы перемещаться из файлового сервера, даже по локальной сети.
Мой сервер содержит много старых семейных фотографий, к которым я хотел бы получить доступ. И некоторые из картинок, которые я хотел бы легко поделиться с другими людьми, без того, чтобы они были в первую очередь сделать аккаунт в первую очередь.
Таким образом, мне нужно решение, которое может сделать следующее:
Все фотогалереи могут сделать многое из того, что мне нужно, но ни один из них не может сделать все это.
В этом разделе описывается, как получить PhotoView и запуск на вашем сервере с Docker. Убедитесь, что у вас установлены Docker и Docker-Compose и работают на вашем сервере. Следует также установить
make, если вы хотите использовать предоставленнуюMakefile, что является необязательным (см. Шаг 4 для получения более подробной информации).7zzдолжен быть установлен на случай, вы хотели бы использовать его в сценарии резервного копирования вместо формата по умолчанию .tar.xz. Прочитайте комментарий вMakefile, расположенном на вершине разделаbackupдля получения более подробной информации.
Загрузите содержимое папки docker-compose example в папке на вашем сервере, где вы рассчитываете разместить внутренние данные PhotoView (база данных и кэш-файлы).
Обратите внимание, что эта папка содержит 2 версии файла Docker-Compose:
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 Если команды (ы) вернуть Permission denied в ошибке, запустите их при пользователе, владея соответствующими файлами и папками. В качестве альтернативы, запустите их добавление sudo перед командой: это переключит контекст выполнения на root user и попросите пароль root. Вы должны иметь разрешение на запуск sudo в системе.
Если вы не хотите предоставлять необходимые разрешения группе others для ваших файлов, в качестве альтернативы вы можете:
photoview , принадлежащей этой группе; Затем установите соответствующие разрешения в раздел group .photoview на этого пользователя; Затем установите соответствующие разрешения в раздел user . Если вы настроили другие крепления с помощью медиа -файлов из других местоположений на хосте (например, host_photoview_media_family или чего -то еще), вам необходимо запустить одни и те же команды, как в readable цели Makefile , для каждой корневой папки Media Croot на вашем хосте вручную: скопируйте каждую команду в свою оболочку и замените переменную на абсолютный путь к дополнительной папке для корневой носителя без подходящей папки / . Запустите обе команды для каждой дополнительной корневой папки.
В случае, если у вас нет make в своей системе или не хотите использовать его для управления PhotoView, вы можете использовать те же команды из Makefile и напрямую запустить их в своей оболочке или создать свои собственные сценарии. Обязательно примените или замените переменные от вашего .env в этом случае. Makefile предоставляется только для вашего удобства и простоты, но не является обязательным.
Запустите сервер, выполнив следующую команду (или соответствующую последовательность команд из Makefile ):
make all Если конечная точка или порт не были изменены в файле docker-compose.yml , Photoview теперь можно получить по адресу http: // localhost: 8000
Если все настроено правильно, вам следует представить первоначальный мастер настройки при доступе к веб -сайту в первый раз.

Введите новое имя пользователя и пароль.
Для пути фото введите путь внутри контейнера Docker, где расположены ваши фотографии. Это может быть установлено из файла docker-compose.yml в photoview -> volumes . Расположение по умолчанию /photos .
Будет создан новый пользователь администратора, с доступом к фотографиям, расположенным на пути, указанном при первоначальной настройке.
Фотографии должны быть отсканированы перед тем, как они появятся, вы можете начать сканирование вручную, перейдя на Settings и нажав на Scan All
Мы предлагаем закрепить экземпляр PhotoView, прежде чем разоблачить его за пределами вашей локальной сети: даже если он предоставляет доступ только для чтения к вашей медиа-галерее и имеет основную функциональность аутентификации пользователей, этого недостаточно для защиты ваших частных СМИ от вредоносных актеров в Интернете.
Возможные способы обеспечения самостоятельного обслуживания могут быть (но не ограничиваются):
Настройка и настройка всех этих мер защиты зависит от и требует много информации о вашей локальной сети и самостоятельных службах. На основании этой информации поток конфигурации и полученная архитектура услуг могут сильно различаться между случаями. Вот почему в сфере этого проекта мы можем предоставить вам только этот высокий список возможных способов защиты веб-сервиса. Вам нужно будет исследовать их, найти лучшую комбинацию и конфигурацию для вашего случая и взять на себя ответственность за настройку всего в правильном и последовательном способе. Мы не можем предоставить вам поддержку таким высоко защищенным настройкам, поскольку многие вещи могут работать по -разному из -за ограничений безопасности.
Можно запустить FFMPEG с помощью кодека, добывающего аппаратное ускорение, путем определения PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION . Значение должно быть одним из qsv , vaapi , nvenc .
Мы только проверили аппаратное ускорение с помощью qsv на чипе Intel. Чтобы позволить ему работать, он должен отобразить /dev/dri устройства и установить ENV PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION=qsv . См.
Если вы проверяете другие аппаратные ускорения, работающие хорошо, сообщите нам об этом.
? Во -первых, спасибо за ваш интерес к вкладу! ?
Этот проект является результатом тяжелой работы, и приятно видеть, что вы заинтересованы в соревнованиях. Взносы - это не только код - вы можете помочь во многих отношениях!
Прежде чем начать, пожалуйста, найдите время, чтобы прочитать наше руководство. Он включает в себя информацию о нашем кодексе поведения, процесс отправки запросов на притяжение и многое другое.
Помните, каждый вклад имеет значение. Давайте сделаем этот проект лучше вместе! ?
Среда разработки Docker легко настроить. Это требует только Docker и Docker Compose Plugin локально. Все зависимости установлены в контейнере, но не на хосте.
У этого также есть некоторые недостатки. В MacOS Docker работает в VM Linux. В этом случае уведомление 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 serversНа игровой площадке GraphQL можно получить доступ к Localhost: 4001. Теперь доступ к сайту можно получить по адресу localhost: 1234. Оба сервера будут перезаботиться после изменения кода.
По умолчанию он использует SQLite3 в качестве базы данных. Чтобы запустить серверы с другой базой данных, пожалуйста, обновите значение PHOTOVIEW_DATABASE_DRIVER в файле dev-compose.yaml и запустить:
$ 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 databaseЕсли вы не хотите зависеть от Docker 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 serverНа игровой площадке GraphQL можно получить доступ к Localhost: 4001.
Примечание
Сервер работает в хост -сети как флаг --network host . Между сервером API и пользовательским интерфейсом легко общаться. Если вы не хотите этого делать, проверьте 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 и пользовательским интерфейсом легко общаться. Если вы не хотите этого делать, проверьте Docker Network, чтобы создать новую сеть для запуска серверов.
В Linux мы рекомендуем использовать Docker Compose или Docker в качестве местной среды разработки.
Мы не можем продолжать проверять команды ниже в каждой среде. Людям может потребоваться решать зависимости самостоятельно.
golang > = 1,22g++libc-devlibheif > = 1,15.1dliblibjpeglibblaslibcblas , рекомендуется использовать libatlas-base в Debian.liblapackreflex : инструмент мониторинга исходного кода, который автоматически перестраивает и перезапускает сервер, работающий из кода в разработке.sqlite : СУБД SQLITE, полезный для взаимодействия с SQLite DB PhotoView, если вы используете его в среде разработки.node = 18В Debian/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 toolsВ MacOS установите зависимости:
$ 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 с другим диспетчера пакетов, если хотите.
/api/example.env to .envPHOTOVIEW_SQLITE_PATH если вы не хотите размещать файл sqlite в /apiPHOTOVIEW_DATABASE_DRIVER с вашим драйверомЕсли ваш
PGSQL_PASSWORDилиMARIADB_PASSWORDсодержит специальные символы (например@), убедитесь, что URL-кодируйте их.
/ui/example.env to .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 | @Робин-Мозер | @Revorge | @deexno | @Fkrauss | @jupblb |