

Photoviewは、写真家のために作られたシンプルでユーザーフレンドリーなフォトギャラリーで、数千の高解像度の写真を備えたディレクトリをナビゲートする簡単で迅速な方法を提供することを目指しています。
ファイルシステムのディレクトリ内で写真やビデオを探すようにPhotoviewを構成します。スキャナーは自動的にメディアを拾い上げ、サムネイル画像を生成して、閲覧を非常に高速にします。
あなたのメディアがスキャンされたとき、彼らはファイルシステムと同じように整理されたウェブサイトに現れます。
セットアップまたは開発に関する質問がある場合は、Discord Server https://discord.gg/jq392948u9にお気軽に参加してください
新しいDockerレジストリhttps://hub.docker.com/r/photoview/photoviewに移行し、 masterタグのすべての新しい画像と、以前に使用されたレジストリの代わりに将来のリリースがそこで公開される予定です。古いレジストリhttps://hub.docker.com/r/viktorstrate/photoviewで古い画像はまだアクセスできます。したがって、それらの古い画像の1つを使用したい場合は、古いレジストリに戻す必要があります。
docker-compose.ymlファイルを更新して、コンポースファイルの対応する例(https://github.com/photoview/tree/master/docker-compose%20exampleに示すように)を使用するために、 photoview画像に新しいレジストリを使用してください。
https://photos.qpqp.dk/をご覧ください
ユーザー名:デモ
パスワード:デモ
すでに多くのオープンソースの自己ホストフォトギャラリーが存在しています。ここにいくつか言及するためにいくつかあります。
では、なぜもう1つ?私は写真を撮るのが大好きで、それらすべてをローカルファイルサーバーに保存します。これは、ファイルシステムで写真を直接整理できるため、これは素晴らしいことです。そのため、それらを移動したり、バックアップを取得したりするのは簡単です。写真がどこでどのように保存されているかを制御できるようになりたいです。
ただし、問題は、生の画像が、ローカルネットワーク上であっても、ファイルサーバーからナビゲートするのに非常に退屈であることです。
私のサーバーには、家族にもアクセスできるようにしたい古い家族の写真がたくさんあります。そして、私が最初にアカウントを作成しなければならないことなく、他の人と簡単に共有できる写真のいくつか。
したがって、以下を実行できるソリューションが必要です。
すべてのフォトギャラリーは私が必要とする多くのことをすることができますが、それをすべてすることはできません。
このセクションでは、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以前のものを複雑すぎて理解して管理するのが難しいと思う人の最小限でシンプルな構成ファイルをダウンロードするときは、そのうちの1つだけを選択する必要があります。
ダウンロードしたファイルを変更して、名前からexampleを削除します(したがって、 .env 、 docker-compose.yml 、およびMakefileファイルを持っている必要があります)。前のステップでdocker-compose.minimal.example.ymlを選択した場合は、 docker-compose.ymlに変更してください。
これらのファイルをテキストエディターで開き、読み取ります。セットアップに適切に一致するように、ドキュメントのコメントに従って必要な場合に変更します。 2つのタイプのコメントがあります。 ##で始まる説明と例は、免除されてはなりません。 #から始まるものは、オプションまたは代替の構成パーツであり、特定の状況では対応する説明で説明されている可能性があります。 .env 、 docker-compose.yml 、およびMakefile :次の順序でファイルを通過することをお勧めします。
PGSQL_PASSWORDまたはMARIADB_PASSWORDが特殊文字(@)が含まれている場合( @)、必ずそれらをエンコードしてください。
メディアライブラリのルートフォルダーとすべてのファイルとサブフォルダーMakefile他のユーザーが読み取り可能で検索可能であることを確認してください。
make readableコマンドを返すPermission denied場合、エラーを拒否するには、ユーザーの下でそれらを実行し、対応するファイルとフォルダーを所有します。または、コマンドの前にsudoを追加することを実行します。これにより、実行コンテキストをユーザーのrootに切り替え、ルートパスワードを要求します。システムでsudoを実行する許可が必要です。
ファイルのためにothersグループに必要なアクセス許可を与えたくない場合は、次のことができます。
photoviewサービスのボリューム内のすべてのファイルとフォルダーを作成します。次に、 groupセクションに適切な権限を設定します。photoviewサービスのボリューム内のすべてのファイルとフォルダーの所有権をこのユーザーに変更します。次に、適切な権限をuserセクションに設定します。ホストの他の場所からメディアファイルを使用して他のマウントを構成した場合(host_photoview_media_familyなど)、 Makefile readableターゲットのように同じコマンドを実行する必要があります。ホストの各メディアルートフォルダーに対して、各コマンドをシェルにコピーし、トレーリング/を使用せずに追加のメディアルートフォルダーに変数を置き換えます。追加のルートフォルダーごとに両方のコマンドを実行します。
場合によっては、システムにインストールmakeれていないか、Photoview管理アクティビティに使用したくない場合は、 Makefileから同じコマンドを使用して直接シェルで実行するか、独自のスクリプトを作成できます。この場合、最初に.envから変数を適用または交換してください。 Makefile 、便利さとシンプルさのためだけに提供されますが、オプションです。
次のコマンドを実行してサーバーを起動します(またはMakefileからのコマンドの対応するシーケンス):
make all docker-compose.ymlファイルでエンドポイントまたはポートが変更されていない場合、Photoviewにhttp:// localhost:8000にアクセスできるようになりました。
すべてが正しくセットアップされている場合は、初めてウェブサイトにアクセスする際に最初のセットアップウィザードを提示する必要があります。

新しいユーザー名とパスワードを入力します。
写真パスについては、写真があるDockerコンテナ内のパスに入ります。これは、 photoview > volumesの下のdocker-compose.ymlファイルから設定できます。デフォルトの場所は/photosです。
新しい管理者ユーザーが作成され、最初のセットアップの下で提供されるパスにある写真にアクセスできます。
写真を表示する前にスキャンする必要があります。 Settingsに移動してScan Allをクリックすることで、手動でスキャンを開始できます。
ローカルネットワークの外側に公開する前に、Photoviewインスタンスを保護することをお勧めします。メディアギャラリーへの読み取り専用アクセスを提供し、基本的なユーザー認証機能を備えていても、インターネット上の悪意のある俳優からプライベートメディアを保護するだけでは不十分です。
自己ホストされたサービスを確保する可能性のある方法は(ただし、これらに限定されない)かもしれません。
これらすべての保護のセットアップと構成は、ローカルネットワークと自己ホストサービスに関する多くの情報が必要です。この情報に基づいて、構成フローと結果のサービスアーキテクチャは、ケース間で大きく異なる場合があります。そのため、このプロジェクトの範囲では、ウェブサービス保護の可能な方法のこの高レベルのリストしか提供できません。それらを調査し、ケースに最適な組み合わせと構成を見つけ、すべてを正しく一貫した方法で構成する責任を負う必要があります。多くのことがセキュリティの制限のために異なって機能する可能性があるため、このような高度に安全なセットアップをサポートすることはできません。
PHOTOVIEW_VIDEO_HARDWARE_ACCELERATIONを定義することにより、ハードウェアアクセラレーションをサポートするコーデックでFFMPEGを実行することができます。値は、 qsv 、 vaapi 、 nvencの1つでなければなりません。
Intelチップ上のqsvを使用したハードウェアアクセラレーションのみを確認しました。それを機能させるには、マップ/dev/driデバイスをマッピングし、env PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION=qsvを設定する必要があります。 [docker-compose.example.yml](./ docker-composeの例/docker-compose.example.yml)を参照してください。
他のハードウェアの加速がうまく機能していることを確認する場合は、お知らせください。
?まず、貢献に興味を持ってくれてありがとう! ?
このプロジェクトは努力の結果であり、貢献に興味を持っているのを見るのは素晴らしいことです。貢献はコードだけではありません。多くの方法で支援できます!
開始する前に、私たちの寄稿ガイドを読んでください。これには、行動規範に関する情報、プルリクエストを送信するプロセスなどが含まれます。
すべての貢献が重要であることを忘れないでください。このプロジェクトを一緒に改善しましょう! ?
Docker開発環境はセットアップが簡単です。 DockerとDockerがローカルでプラグインを構成する必要があります。すべての依存関係はコンテナにインストールされますが、ホストには設置されていません。
また、いくつかの欠点があります。 MacOSでは、DockerはLinux VMで実行されています。この場合、FS通知はうまくいきません。コードが変更されたときに、 reflexやnodemonを使用してサーバーを再起動することはできません。コンパイラもかなり遅くなります。
Docker開発環境を使用することをお勧めします。 MacOSのようにDocker環境がうまくいかない場合は、ローカル開発環境を使用してください。
初めてサーバーを起動するときに依存関係を構築するのに長い時間がかかる場合があります。
$ 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ネットワークをチェックして、サーバーを実行する新しいネットワークを作成してください。
初めてサーバーを起動するときに依存関係を構築するのに長い時間がかかる場合があります。
$ 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ネットワークをチェックして、サーバーを実行する新しいネットワークを作成してください。
Linuxでは、Docker ComposeまたはDockerをローカル開発環境として使用することをお勧めします。
各環境の以下のコマンドを確認し続けることはできません。人々は自分で依存関係を解決する必要があるかもしれません。
golang > = 1.22g++libc-devlibheif > = 1.15.1dliblibjpeglibblaslibcblas 、debianで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をインストールできます。
/api/example.env to .env/api下に配置したくない場合は、 PHOTOVIEW_SQLITE_PATHを更新しますPHOTOVIEW_DATABASE_DRIVERを更新します
PGSQL_PASSWORDまたはMARIADB_PASSWORDが特殊文字(@)が含まれている場合( @)、必ずそれらをエンコードしてください。
/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 |