

Photoview adalah galeri foto sederhana dan ramah pengguna yang dibuat untuk fotografer dan bertujuan untuk memberikan cara yang mudah dan cepat untuk menavigasi direktori, dengan ribuan foto resolusi tinggi.
Anda mengkonfigurasi photoview untuk mencari foto dan video dalam direktori pada sistem file Anda. Pemindai secara otomatis mengambil media Anda dan mulai menghasilkan gambar thumbnail untuk membuat penelusuran sangat cepat.
Ketika media Anda telah dipindai, mereka muncul di situs web, diatur dengan cara yang sama seperti pada sistem file.
Jika Anda memiliki pertanyaan tentang pengaturan atau pengembangan, jangan ragu untuk bergabung dengan Discord Server https://discord.gg/jq392948u9
Kami bermigrasi ke Docker Registry baru https://hub.docker.com/r/photoview/photoview dan semua gambar baru untuk tag master , serta rilis di masa mendatang akan diterbitkan di sana alih -alih registri yang sebelumnya digunakan. Gambar lama masih dapat diakses di registri lama https://hub.docker.com/r/viktortrate/photoview, jadi jika Anda ingin menggunakan 1 gambar lama itu, Anda perlu kembali ke registri lama.
Harap perbarui file docker-compose.yml Anda untuk menggunakan registri baru untuk gambar photoview , seperti yang ditunjukkan pada contoh yang sesuai dari file tusuan: https://github.com/photoview/photoview/tree/master/docker-compose%20example
Kunjungi https://photos.qpqp.dk/
Nama pengguna: Demo
Kata Sandi: Demo
Sudah ada banyak galeri foto open-source-hosting sendiri. Inilah beberapa, hanya untuk menyebutkan beberapa.
Jadi mengapa yang lain? Saya suka mengambil foto, dan saya menyimpan semuanya di server file lokal saya. Ini bagus karena saya dapat mengatur foto saya langsung pada sistem file, jadi mudah untuk memindahkannya atau mengambil cadangan. Saya ingin dapat mengontrol di mana dan bagaimana foto disimpan.
Masalahnya adalah, bagaimanapun, bahwa gambar mentah sangat membosankan untuk dinavigasi dari server, bahkan melalui jaringan lokal.
Server saya memegang banyak foto keluarga lama yang saya inginkan untuk memiliki akses keluarga saya juga. Dan beberapa gambar yang ingin saya bagikan dengan mudah dengan orang lain tanpa kerumitan mereka harus membuat akun terlebih dahulu.
Jadi, saya membutuhkan solusi yang dapat melakukan hal berikut:
Semua galeri foto dapat melakukan banyak hal yang saya butuhkan, tetapi tidak ada satu pun yang bisa melakukan semuanya.
Bagian ini menjelaskan cara membuat fotoview dan berjalan di server Anda dengan Docker. Pastikan Anda memiliki Docker dan Compose Docker yang diinstal dan berjalan di server Anda.
makeharus diinstal juga jika Anda ingin menggunakanMakefileyang disediakan, yang merupakan opsional (lihat Langkah 4 untuk detail lebih lanjut).7zzharus diinstal dalam kasus, Anda ingin menggunakannya dalam ruang lingkup skenario cadangan alih -alih format .tar.xz default. Baca komentar diMakefile, yang terletak di atas bagianbackupuntuk lebih jelasnya.
Unduh konten folder docker-compose example ke folder di server Anda, di mana Anda berharap untuk meng-host data internal Photoview (file database dan cache).
Harap dicatat bahwa folder ini berisi 2 versi file compose Docker:
docker-compose.example.yml -fungsional penuh dan direkomendasikan untuk konfigurasi sebagian besar kasusdocker-compose.minimal.example.yml - konfigurasi minimal dan sederhana untuk mereka, yang menemukan yang sebelumnya terlalu kompleks dan sulit dipahami dan dikelolaSaat mengunduh file, Anda hanya perlu memilih salah satunya.
Ubah nama file yang diunduh dan hapus example dari namanya (jadi, Anda harus memiliki file .env , docker-compose.yml , dan Makefile ). Jika Anda memilih docker-compose.minimal.example.yml pada langkah sebelumnya, pastikan untuk mengganti nama menjadi docker-compose.yml .
Buka file -file ini dalam editor teks dan baca. Ubah di mana diperlukan sesuai dengan komentar dokumentasi untuk mencocokkan pengaturan Anda dengan benar. Ada komentar dari 2 jenis: itu, dimulai dengan ## , adalah penjelasan dan contoh, yang tidak boleh tidak dikomentasikan; Mereka, dimulai dengan # , adalah bagian konfigurasi opsional atau alternatif, yang mungkin tidak dikomentasikan dalam keadaan tertentu, dijelaskan dalam penjelasan yang sesuai. Lebih baik melalui file dalam urutan berikutnya: .env , docker-compose.yml , dan Makefile .
Jika
PGSQL_PASSWORDatauMARIADB_PASSWORDAnda berisi karakter khusus (misalnya@), pastikan untuk URL-Encode mereka.
Pastikan bahwa folder root perpustakaan media Anda dan semua file dan subfolder dapat dibaca dan dapat dicari oleh pengguna lain: Jalankan perintah berikutnya (atau urutan perintah yang sesuai dari Makefile ):
make readable Jika perintah mengembalikan kesalahan Permission denied , jalankan di bawah pengguna, memiliki file dan folder yang sesuai. Atau, jalankan mereka menambahkan sudo sebelum perintah: Ini akan mengalihkan konteks eksekusi ke pengguna root dan meminta kata sandi root. Anda harus memiliki izin untuk menjalankan sudo dalam sistem.
Jika Anda tidak ingin memberikan izin yang diperlukan untuk grup others untuk file Anda, sebagai alternatif, Anda dapat:
photoview yang dimiliki oleh grup ini; kemudian atur izin yang sesuai ke bagian group .photoview untuk pengguna ini; kemudian atur izin yang sesuai ke bagian user . Jika Anda mengkonfigurasi dudukan lain dengan file media dari lokasi lain di host (seperti host_photoview_media_family atau apa pun), Anda perlu menjalankan perintah yang sama, seperti pada target readable Makefile , untuk setiap folder root media pada host Anda secara manual: setiap perintah ke shell Anda dan ganti variabel dengan jalur absolut ke folder root media tambahan tanpa jejak / . Jalankan kedua perintah untuk setiap folder root tambahan.
Dalam hal, Anda tidak memiliki make di sistem Anda atau tidak ingin menggunakannya untuk aktivitas manajemen fotoview, Anda dapat menggunakan perintah yang sama dari Makefile dan menjalankannya di shell Anda secara langsung, atau membuat skrip Anda sendiri. Pastikan untuk menerapkan atau mengganti variabel dari .env Anda terlebih dahulu dalam kasus ini. Makefile disediakan hanya untuk kenyamanan dan kesederhanaan Anda, tetapi opsional.
Mulai server dengan menjalankan perintah berikut (atau urutan perintah yang sesuai dari Makefile ):
make all Jika titik akhir atau port belum diubah dalam file docker-compose.yml , Photoview sekarang dapat diakses di http: // localhost: 8000
Jika semuanya diatur dengan benar, Anda harus disajikan dengan wizard pengaturan awal saat mengakses situs web pertama kali.

Masukkan nama pengguna dan kata sandi baru.
Untuk jalur foto, masukkan jalur di dalam wadah Docker tempat foto Anda berada. Ini dapat diatur dari file docker-compose.yml di bawah photoview -> volumes . Lokasi default adalah /photos .
Pengguna admin baru akan dibuat, dengan akses ke foto yang terletak di jalur yang disediakan di bawah pengaturan awal.
Foto -foto harus dipindai sebelum muncul, Anda dapat memulai pemindaian secara manual, dengan menavigasi ke Settings dan mengklik Scan All
Kami menyarankan untuk mengamankan instance Photoview sebelum mengeksposnya di luar jaringan lokal Anda: bahkan sementara itu memberikan akses hanya baca ke galeri media Anda dan memiliki fungsionalitas otentikasi pengguna dasar, itu tidak cukup untuk melindungi media pribadi Anda dari aktor jahat di internet.
Cara yang mungkin untuk mengamankan layanan yang diselenggarakan sendiri mungkin (tetapi tidak terbatas pada):
Menyiapkan dan mengonfigurasi semua perlindungan ini tergantung pada dan membutuhkan banyak info tentang jaringan lokal Anda dan layanan yang diselenggarakan sendiri. Berdasarkan info ini, aliran konfigurasi dan arsitektur layanan yang dihasilkan mungkin sangat berbeda antara kasus. Itulah sebabnya dalam ruang lingkup proyek ini, kami hanya dapat memberi Anda daftar tinggi cara perlindungan layanan web ini. Anda harus menyelidiki mereka, menemukan kombinasi dan konfigurasi terbaik untuk kasus Anda, dan bertanggung jawab untuk mengonfigurasi semuanya dengan cara yang benar dan konsisten. Kami tidak dapat memberikan Anda dukungan untuk pengaturan yang sangat aman seperti itu, karena banyak hal dapat bekerja secara berbeda karena keterbatasan keamanan.
Dimungkinkan untuk menjalankan FFMPEG dengan codec yang menekan akselerasi perangkat keras, dengan mendefinisikan PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION . Nilainya harus salah satu dari qsv , vaapi , nvenc .
Kami hanya memverifikasi percepatan perangkat keras dengan qsv pada chip Intel. Untuk membiarkannya bekerja, harus memetakan /dev/dri perangkat dan mengatur env PHOTOVIEW_VIDEO_HARDWARE_ACCELERATION=qsv . Lihat [Docker-Compose.example.yml] (./ Compose Docker-Compose/Docker-Compose.example.yml).
Jika Anda memverifikasi akselerasi perangkat keras lain bekerja dengan baik, beri tahu kami.
? Pertama, terima kasih atas minat Anda pada kontribusi! ?
Proyek ini adalah hasil kerja keras, dan senang melihat Anda tertarik untuk berkontribusi. Kontribusi bukan hanya tentang kode - Anda dapat membantu dalam banyak hal!
Sebelum Anda mulai, silakan luangkan waktu sejenak untuk membaca panduan berkontribusi kami. Ini termasuk informasi tentang kode perilaku kami, proses untuk mengirimkan permintaan tarik, dan banyak lagi.
Ingat, setiap kontribusi diperhitungkan. Mari kita buat proyek ini lebih baik bersama! ?
Lingkungan pengembangan Docker mudah diatur. Ini hanya membutuhkan plugin Docker dan Docker secara lokal. Semua dependensi dipasang dalam wadah tetapi tidak di host.
Ini juga memiliki beberapa kekurangan. Di MacOS, Docker berjalan di Linux VM. Pemberitahuan FS tidak bekerja dengan baik dalam kasus ini. Anda tidak dapat menggunakan reflex atau nodemon untuk meluncurkan server saat kode berubah. Kompiler berjalan cukup lambat juga.
Kami merekomendasikan untuk menggunakan lingkungan pengembangan Docker. Jika lingkungan Docker tidak bekerja dengan baik, seperti pada macOS, silakan gunakan lingkungan pengembangan lokal.
Mungkin butuh waktu lama untuk membangun dependensi saat meluncurkan server pertama kali.
$ docker compose -f dev-compose.yaml build # Build images for development
$ docker compose -f dev-compose.yaml up # Launch API and UI serversGraphQL Playground sekarang dapat diakses di LocalHost: 4001. Situs ini sekarang dapat diakses di LocalHost: 1234. Kedua server akan diluncurkan kembali setelah kode diubah.
Secara default, menggunakan SQLite3 sebagai database. Untuk menjalankan server dengan database lain, harap perbarui nilai PHOTOVIEW_DATABASE_DRIVER dalam file dev-compose.yaml dan jalankan:
$ 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 databaseJika Anda tidak ingin bergantung pada Docker Compose tetapi hanya Docker, Anda dapat meluncurkan server seperti di bawah ini.
Mungkin butuh waktu lama untuk membangun dependensi saat meluncurkan server pertama kali.
$ 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 Playground sekarang dapat diakses di LocalHost: 4001.
Catatan
Server berjalan pada jaringan host sebagai --network host Flag. Sangat mudah untuk berkomunikasi antara server API dan server UI. Jika Anda tidak ingin melakukan itu, silakan periksa Docker Network untuk membuat jaringan baru untuk menjalankan server.
Mungkin butuh waktu lama untuk membangun dependensi saat meluncurkan server pertama kali.
$ 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 serverSitus ini sekarang dapat diakses di LocalHost: 1234.
Catatan
Server berjalan pada jaringan host sebagai --network host Flag. Sangat mudah untuk berkomunikasi antara server API dan server UI. Jika Anda tidak ingin melakukan itu, silakan periksa Docker Network untuk membuat jaringan baru untuk menjalankan server.
Di Linux, kami sarankan untuk menggunakan Docker Compose atau Docker sebagai lingkungan pengembangan lokal.
Kami tidak dapat terus memverifikasi perintah di bawah ini di setiap lingkungan. Orang mungkin perlu memecahkan dependensi dengan mereka sendiri.
golang > = 1.22g++libc-devlibheif > = 1.15.1dliblibjpeglibblaslibcblas , direkomendasikan menggunakan libatlas-base di Debian.liblapackreflex : Alat pemantauan kode sumber, yang secara otomatis membangun kembali dan memulai kembali server, berjalan dari kode dalam pengembangan.sqlite : SQLite DBMS, berguna untuk berinteraksi dengan SQLite DB Photoview secara langsung jika Anda menggunakannya di lingkungan pengembangan Anda.node = 18Di Debian/Ubuntu, instal dependensi:
$ 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 toolsDi MacOS, instal dependensi:
$ 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 Harap ikuti panduan Paket Manajer jika Anda tidak menggunakan apt atau homebrew .
Untuk node , rekomendasikan untuk menggunakan NVM. Ikuti menginstal dan memperbarui untuk menginstal nvm secara lokal, lalu:
$ nvm install 18
$ nvm use 18 Anda dapat menginstal node dengan manajer paket lain jika Anda suka.
/api/example.env ke .envPHOTOVIEW_SQLITE_PATH jika Anda tidak ingin meletakkan file sqlite di bawah /apiPHOTOVIEW_DATABASE_DRIVER dengan driver AndaJika
PGSQL_PASSWORDatauMARIADB_PASSWORDAnda berisi karakter khusus (misalnya@), pastikan untuk URL-Encode mereka.
/ui/example.env ke .envKemudian jalankan perintah berikut:
# 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 .Jika Anda ingin mengkompilasi ulang server secara otomatis ketika kode berubah:
# Start API server
$ cd ./api
$ reflex -g ' *.go ' -s -- go run .GraphQL Playground sekarang dapat diakses di LocalHost: 4001.
Di jendela terminal baru jalankan perintah berikut:
cd ./ui
npm install
npm startJika Anda ingin mengkompilasi ulang server secara otomatis ketika kode berubah:
$ cd ./ui
$ npm run monSitus ini sekarang dapat diakses di LocalHost: 1234.
@icerkz | @Robin-Moser | @Revorge | @deexno | @Fkrauss | @jupblb |