Stash-box adalah pengindeksan video sumber terbuka dan server API metadata untuk pornografi yang dikembangkan oleh Stash App. Tujuan dari stash-box adalah untuk menyediakan database metadata porno berbasis komunitas, mirip dengan apa yang dilakukan MusicBrainz untuk musik. Pengiriman dan pengeditan metadata harus mengikuti prinsip yang sama seperti MusicBrainz. Pelajari lebih lanjut di sini. Menginstal Stash-box akan membuat database kosong untuk Anda isi.
Jika Anda pengguna Stash, Anda tidak perlu menginstal stash-box. Komunitas Stash memiliki server dengan banyak judul tempat Anda dapat mengambil datanya. Anda bisa mendapatkan informasi login dari panduan kami untuk Mengakses StashDB.
Anda dapat menemukan file docker-compose
untuk penerapan produksi di sini. Anda dapat menghilangkan Traefik jika Anda tidak memerlukan proxy terbalik.
Jika Anda sudah menginstal PostgreSQL, Anda dapat menginstal stash-box sendiri dari Docker Hub.
Stash-box mendukung macOS, Windows, dan Linux. Rilis untuk Windows dan Linux dapat ditemukan di sini.
make
untuk membangun aplikasi.stash-box-config.yml
di direktori saat ini). Dalam hal ini, ini akan menghasilkan file konfigurasi default dengan string koneksi PostgreSQL default ( postgres@localhost/stash-box?sslmode=disable
). Anda dapat menyesuaikan string koneksi sesuai kebutuhan.CREATE EXTENSION pg_trgm; CREATE EXTENSION pgcrypto;
oleh pengguna super sebelum menjalankan kembali Stash-box. Jika skema tidak ada, skema akan dibuat di dalam database.sslmode
didokumentasikan di sini. Gunakan sslmode=disable
untuk tidak menggunakan SSL untuk koneksi database. Standarnya adalah require
. Kali kedua stash-box dijalankan, stash-box akan menjalankan migrasi skema untuk membuat tabel yang diperlukan. Ini juga akan menghasilkan pengguna root
dengan kata sandi acak dan kunci API. Kredensial ini dicetak sekali ke stdout dan tidak dicatat. Sistem akan membuat ulang pengguna root saat startup jika tidak ada. Anda dapat memaksa sistem untuk membuat pengguna root baru dengan menghapus baris pengguna root dari database dan memulai ulang Stash-box. Anda harus menangkap output konsol dengan pengguna Admin Anda pada awal eksekusi StashDB pertama yang berhasil. Jika tidak, Anda harus mengizinkan Postgres untuk membuat ulang database sebelum memposting ulang pengguna root
baru.
Stash-box adalah alat dengan opsi baris perintah untuk membuatnya lebih mudah. Untuk melihat opsi apa yang tersedia, jalankan stash-box --help
di terminal Anda.
Berikut ini contoh bagaimana Anda dapat menjalankan stash-box secara lokal pada port 80:
stash-box --host 127.0.0.1 --port 80
Catatan: Perintah ini seharusnya berfungsi di OSX/Linux.
Saat Anda memulai stash-box untuk pertama kalinya, ini menghasilkan file konfigurasi bernama stash-box-config.yml
di direktori kerja Anda saat ini. File ini berisi pengaturan default untuk kotak simpanan, termasuk:
0.0.0.0
9998
Anda dapat mengubah default ini jika diperlukan. Misalnya, jika Anda ingin menonaktifkan taman bermain GraphQL dan cookie lintas domain, Anda dapat menyetel is_production
ke true
.
Ada dua cara untuk mengautentikasi pengguna di Stash-box: sesi atau kunci API.
Otentikasi berbasis sesi: Untuk masuk, kirim permintaan ke /login
dengan username
dan password
dalam teks biasa sebagai nilai formulir. Otentikasi berbasis sesi akan menetapkan cookie yang diperlukan untuk semua permintaan berikutnya. Untuk keluar, kirim permintaan ke /logout
.
Autentikasi kunci API: Untuk menggunakan kunci API, setel header ApiKey
ke nilai kunci API pengguna.
Kunci | Bawaan | Keterangan |
---|---|---|
title | Stash-Box | Judul contoh, digunakan dalam judul halaman. |
require_invite | true | Jika benar, pengguna diharuskan memasukkan kunci undangan, yang dibuat oleh pengguna yang sudah ada untuk membuat akun baru. |
require_activation | false | Jika benar, pengguna diharuskan memverifikasi alamat emailnya sebelum membuat akun. Memerlukan email_from , email_host , dan host_url untuk disetel. |
activation_expiry | 7200 (2 jam) | Waktu - dalam hitungan detik - setelah kunci aktivasi (dikirim melalui email ke pengguna untuk verifikasi email atau keperluan pengaturan ulang kata sandi) habis masa berlakunya. |
email_cooldown | 300 (5 menit) | Waktu - dalam hitungan detik - pengguna harus menunggu sebelum mengirimkan permintaan aktivasi atau setel ulang kata sandi untuk alamat email tertentu. |
default_user_roles | READ , VOTE , EDIT | Peran yang diberikan kepada pengguna baru saat mendaftar. Bidang ini harus dinyatakan sebagai array yaml. |
guidelines_url | (tidak ada) | URL untuk ditautkan ke serangkaian pedoman bagi pengguna yang berkontribusi dalam pengeditan. Harus dalam bentuk https://hostname.com . |
vote_promotion_threshold | (tidak ada) | Jumlah pengeditan yang disetujui sebelum pengguna secara otomatis menetapkan peran VOTE . Biarkan kosong untuk menonaktifkan. |
vote_application_threshold | 3 | Jumlah suara yang sama diperlukan untuk permohonan pengeditan segera. Setel ke nol untuk menonaktifkan aplikasi otomatis. |
voting_period | 345600 | Waktu, dalam hitungan detik, sebelum periode pemungutan suara ditutup. |
min_destructive_voting_period | 172800 | Waktu minimum, dalam hitungan detik, yang harus dilalui sebelum pengeditan yang merusak dapat segera diterapkan dengan suara positif yang memadai. |
vote_cron_interval | 5m | Waktu antara proses hingga menutup pengeditan yang periode pemungutan suaranya telah berakhir. |
email_host | (tidak ada) | Alamat server SMTP. Diperlukan untuk mengirim email untuk keperluan aktivasi dan pemulihan. |
email_port | 25 | Port server SMTP. Hanya STARTTLS yang didukung. Koneksi TLS langsung tidak didukung. |
email_user | (tidak ada) | Nama pengguna untuk server SMTP. Opsional. |
email_password | (tidak ada) | Kata sandi untuk server SMTP. Opsional. |
email_from | (tidak ada) | Alamat email untuk mengirim email. |
host_url | (tidak ada) | URL dasar untuk server. Digunakan saat mengirim email. Harus dalam bentuk https://hostname.com . |
image_location | (tidak ada) | Jalur untuk menyimpan gambar, untuk penyimpanan gambar lokal. Kesalahan akan ditampilkan jika ini tidak disetel saat membuat gambar non-URL. |
image_backend | ( file ) | Solusi penyimpanan untuk gambar. Dapat diatur ke file atau s3 . |
userLogFile | (tidak ada) | Jalur ke file log pengguna, yang mencatat operasi pengguna. Jika tidak disetel, maka ini akan menjadi output ke stderr. |
s3.endpoint | (tidak ada) | Nama host ke titik akhir s3 digunakan untuk penyimpanan gambar. |
s3.base_url | (tidak ada) | URL dasar untuk mengakses gambar di S3. Harus dalam bentuk https://hostname.com . |
s3.bucket | (tidak ada) | Nama bucket S3 yang digunakan untuk menyimpan gambar. |
s3.access_key | (tidak ada) | Kunci akses yang digunakan untuk otentikasi. |
s3.secret | (tidak ada) | Kunci Akses Rahasia digunakan untuk otentikasi. |
s3.max_dimension | (tidak ada) | Jika disetel, salinan yang diubah ukurannya akan dibuat untuk gambar apa pun yang dimensinya melebihi angka ini. Salinan ini akan disajikan sebagai pengganti aslinya. |
s3.upload_headers | (tidak ada) | Peta header untuk dikirim dengan setiap permintaan unggahan. Misalnya, DigitalOcean mengharuskan header x-amz-acl disetel ke public-read atau tidak membuat gambar yang diunggah tersedia. |
phash_distance | 0 | Menentukan jarak biner yang dianggap cocok saat melakukan kueri dengan sidik jari pHash. Menggunakan lebih dari 8 tidak disarankan dan dapat menyebabkan hasil positif palsu dalam jumlah besar. Catatan : Ekstensi pg-spgist_hamming harus dipasang untuk menggunakan pencocokan jarak, jika tidak, Anda akan mendapatkan kesalahan. |
favicon_path | (tidak ada) | Lokasi tempat favicon untuk situs tertaut harus disimpan. Biarkan kosong untuk menonaktifkan. |
draft_time_limit | (24 jam) | Waktu, dalam hitungan detik, sebelum draf dihapus. |
profiler_port | 0 | Port untuk menyajikan keluaran pprof. Abaikan untuk menonaktifkan sepenuhnya. |
postgres.max_open_conns | (0) | Jumlah maksimum koneksi terbuka bersamaan ke database. |
postgres.max_idle_conns | (0) | Jumlah maksimum koneksi database menganggur secara bersamaan. |
postgres.conn_max_lifetime | (0) | Masa pakai maksimum dalam hitungan menit sebelum koneksi dilepaskan. |
Stash-box dapat dijalankan, sebaiknya melalui HTTPS, untuk keamanan tambahan, tetapi memerlukan beberapa pengaturan. Anda harus membuat sertifikat SSL dan pasangan kunci untuk menyiapkannya. Atau gunakan proxy pengakhiran TLS pilihan Anda, seperti Traefik, Nginx (tidak didukung), atau Caddy Server (tidak didukung)
Berikut ini contoh bagaimana Anda dapat melakukan ini menggunakan OpenSSL:
openssl req -x509 -newkey rsa:4096 -sha256 -days 7300 -nodes -keyout stash-box.key -out stash-box.crt -extensions san -config <(echo "[req]"; echo distinguished_name=req; echo "[san]"; echo subjectAltName=DNS:stash-box.server,IP:127.0.0.1) -subj /CN=stash-box.server
Anda mungkin perlu mengubah perintah untuk pengaturan spesifik Anda. Anda dapat menemukan informasi selengkapnya tentang membuat sertifikat yang ditandatangani sendiri dengan OpenSSL di sini.
Setelah Anda membuat sertifikat dan pasangan kunci, pastikan keduanya diberi nama stash-box.crt
dan stash-box.key
, dan letakkan di direktori yang sama dengan stash-box. Ketika Stash-box mendeteksi file-file ini, ia akan menggunakan HTTPS, bukan HTTP.
Jika Anda ingin mengaktifkan pencocokan jarak untuk pHash di kotak simpanan, Anda harus menginstal ekstensi Postgres pg-spgist_hamming.
Cara yang disarankan untuk melakukan ini adalah dengan menggunakan image buruh pelabuhan. Namun, Anda juga dapat menginstalnya secara manual dengan mengikuti instruksi build di repositori pg-spgist_hamming.
Misalkan Anda memasang ekstensi setelah menjalankan migrasi. Dalam hal ini, Anda harus menjalankan migrasi #14 secara manual untuk memasang ekstensi dan menambahkan indeks. Jika Anda tidak ingin melakukan ini, Anda dapat menghapus database, dan migrasi akan berjalan saat berikutnya Anda memulai stash-box.
make lint
.make generate
- Hasilkan file Go GraphQL. Perintah ini harus dijalankan jika skema GraphQL telah berubah.make ui
- Membangun UI.make pre-ui
- Unduh dependensi frontendmake build
- Membangun binermake test
- Menjalankan pengujian unitmake it
- Menjalankan pengujian unit dan integrasimake lint
- Jalankan lintermake fmt
- Memformat dan menyelaraskan spasi Catatan: pengujian integrasi dijalankan terhadap database sqlite3 sementara secara default. Mereka dapat dijalankan pada server Postgres dengan mengatur variabel lingkungan POSTGRES_DB
ke string koneksi Postgres. Misalnya: postgres@localhost/stash-box-test?sslmode=disable
. Ketahuilah bahwa pengujian integrasi menghapus semua tabel sebelum dan sesudah pengujian.
Untuk menjalankan frontend dalam mode pengembangan, jalankan yarn start
dari direktori frontend.
Saat mengembangkan, kunci API dapat diatur di frontend/.env.development.local
untuk menghindari keharusan masuk.
Ketika is_production
diaktifkan di server, ini adalah satu-satunya cara untuk mengotorisasi di lingkungan pengembangan frontend. Jika server menggunakan https atau berjalan pada port khusus, ini juga perlu dikonfigurasi di .env.development.local
.
Lihat frontend/.env.development.local.shadow
sebagai contoh.
Anda dapat mengakses taman bermain GraphQL di host:port/playground
, dan antarmuka GraphQL dapat ditemukan di host:port/graphql
. Untuk menjalankan kueri, tambahkan header dengan kunci API Anda: {"APIKey":"<API_KEY>"}
. Kunci API dapat ditemukan di halaman pengguna Anda di kotak simpanan.
make generate
untuk membuat file yang dihasilkan jika sudah diubah.make ui build
untuk membangun executable untuk platform Anda saat ini.Saya punya pertanyaan yang perlu dijawab di sini.