Relay Pribadi menyediakan alamat email yang dihasilkan untuk digunakan sebagai pengganti alamat email pribadi.
Penerima akan tetap menerima email, namun Private Relay menjaga alamat email pribadi mereka agar tidak diambil, dan kemudian dibeli, dijual, diperdagangkan, atau digabungkan dengan data lain untuk mengidentifikasi, melacak, dan/atau menargetkan mereka secara pribadi.
Silakan lihat standar pengkodean kami untuk gaya kode, konvensi penamaan, dan metodologi lainnya.
sudo apt install postgresql libpq-dev python3-dev
brew install postgresql libpq
sudo dnf install libpq-devel python3-devel
Kloning dan ubah ke direktori:
git clone --recurse-submodules https://github.com/mozilla/fx-private-relay.git
cd fx-private-relay
Membuat dan mengaktifkan lingkungan virtual:
Sistem berbasis Unix:
virtualenv env
source env/bin/activate
jendela:
python -m venv env
source env/Scripts/activate
Jika Anda tidak menggunakan Git Bash di Windows, alih-alih mengetik source env/Scripts/activate
, ketik .envScriptsactivate
.
Catatan: Jika Anda menjalankan Windows dan mendapatkan pesan kesalahan yang menyatakan bahwa skrip eksekusi dinonaktifkan di komputer Anda, masuk ke PowerShell Windows dan ketik Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
, lalu coba lagi.
Instal persyaratan Python dan Node:
pip install -r requirements.txt
cd frontend
npm install
cd ../
Catatan: Jika Anda menggunakan Windows, Anda mungkin mengalami masalah dengan penggunaan variabel lingkungan dalam skrip npm. Anda dapat memaksa npm untuk menggunakan git-bash: npm config set script-shell "C:\Program Files\Git\bin\bash.exe"
. Ini adalah lokasi default, instalasi Anda mungkin berbeda.
Salin file .env
untuk konfigurasi decouple
:
cp .env-dist .env
Tambahkan nilai SECRET_KEY
ke .env
:
SECRET_KEY =secret-key-should-be-different-for-every-install
Migrasikan DB:
python manage.py migrate
Buat pengguna super:
python manage.py createsuperuser
Jalankan bagian belakang:
python manage.py runserver
dan di terminal lain, buat frontend:
cd frontend
npm run watch
Dokumen berikut akan membantu Anda memulai pengembangan, termasuk membuat string baru untuk diterjemahkan. Lihat Terjemahan dan Lokalisasi untuk informasi umum tentang lokalisasi Relay.
Kami menggunakan submodul git untuk file pesan yang diterjemahkan. Langkah instalasi --recurse-submodules
seharusnya sudah membawa file pesan ke direktori kerja Anda, tetapi Anda mungkin juga ingin memperbarui terjemahannya setelah instalasi. Cara termudah untuk melakukannya adalah:
git submodule update --remote
Untuk memperbarui submodul secara otomatis saat menjalankan git pull
atau perintah lainnya:
git config --global submodule.recurse true
Direktori privaterelay/locales
adalah repositori git seperti yang lainnya, jadi untuk membuat perubahan pada pesan:
Buat perubahan apa pun yang Anda perlukan di privaterelay/locales/en
saat Anda bekerja.
cd privaterelay/locales/en
git branch message-updates-yyyymmdd
git push -u origin message-updates-yyyymmdd
Anda kemudian dapat membuka permintaan tarik dari cabang message-updates-yyyymmdd
ke cabang main
repo l10n.
Jika Anda belum siap mengirimkan beberapa string untuk diterjemahkan, Anda dapat menambahkannya secara tentatif ke frontend/pendingTranslations.ftl
. String dalam file itu akan muncul hingga string dengan ID yang sama ditambahkan ke repositori l10n.
Demikian pula, ada pending_locales/pending.ftl
tempat string lokal backend sementara dapat disimpan. Setelah string dari permintaan tarik di repo l10n telah digabungkan ke dalam repo Relay, masing-masing string ini perlu dihapus dari pending_locales/pending.ftl
untuk menghindari kegagalan pengujian CircleCI.
Untuk melakukan pembaruan pada terjemahan aplikasi (misalnya, sebelum rilis), kita perlu melakukan pembaruan submodul ini. Jadi, jika terjemahan yang diperbarui siap untuk dimasukkan ke dalam aplikasi, Anda dapat git add
submodul sama seperti file lainnya:
git add privaterelay/locales
Anda kemudian dapat melakukan dan mendorong untuk mengatur repositori aplikasi ke versi submodul terjemahan yang diperbarui:
git push
Proses otomatis memperbarui submodul setiap hari, membawa perubahan dan terjemahan baru dari Tim Pelokalan.
Untuk mengaktifkan autentikasi Akun Mozilla di server lokal, Anda dapat menggunakan aplikasi OAuth "Firefox Private Relay local dev" di akun.stage.mozaws.net.
Untuk melakukannya:
Setel ADMIN_ENABLED=True
di file .env
Anda
Matikan server jika berjalan, dan tambahkan tabel admin dengan:
python manage.py migrate
Jalankan server, sekarang dengan titik akhir /admin
:
python manage.py runserver
Pergi ke halaman admin Django untuk mengubah situs default.
Ubah example.com
menjadi 127.0.0.1:8000
dan klik Simpan.
Pergi ke halaman admin aplikasi sosial Django-allauth, masuk dengan akun pengguna super yang Anda buat di atas, dan tambahkan aplikasi sosial untuk Akun Firefox:
Bidang | Nilai |
---|---|
Penyedia | Akun Mozilla |
Nama | accounts.stage.mozaws.net |
Id klien | 9ebfe2c2f9ea3c58 |
Kunci rahasia | Minta ini dari saluran Slack #fx-private-relay-eng |
Situs | 127.0.0.1:8000 -> Situs yang dipilih |
Sekarang Anda dapat masuk ke http://127.0.0.1:8000/ dengan FxA.
Catatan: Add-on ini terletak di repo terpisah. Lihat untuk informasi tambahan tentang cara memulai.
Add-on ini menambahkan UI Firefox untuk menghasilkan dan mengisi alamat email secara otomatis di seluruh web. Menjalankan add-on secara lokal memungkinkannya berkomunikasi dengan server lokal Anda ( 127.0.0.1:8000
) dan bukan dengan server produksi ( relay.firefox.com
).
npm run watch
mengawasi direktori frontend/src
dan membangun frontend ketika mendeteksi perubahan. Namun, membuat build produksi cukup memakan waktu sehingga mengganggu alur pengembangan Anda. Oleh karena itu, front-end juga dapat dijalankan pada server terpisah yang hanya mengkompilasi ulang modul yang diubah, dan tidak menerapkan optimalisasi produksi. Untuk melakukannya, alih-alih npm run watch
, jalankan npm run dev
.
Frontend sekarang tersedia di http://localhost:3000. Ingatlah bahwa hal ini membuat lingkungan pengembangan lokal Anda kurang mirip dengan produksi; khususnya, otentikasi biasanya terikat ke server backend, dan karenanya perlu disimulasikan ketika menjalankan frontend pada server terpisah. Jika Anda membuat perubahan apa pun terkait autentikasi, pastikan untuk mengujinya juga menggunakan npm run watch
.
Catatan: Fitur premium diaktifkan secara otomatis untuk setiap pengguna dengan alamat email yang diakhiri dengan mozilla.com
, getpocket.com
, atau mozillafoundation.org
(lihat PREMIUM_DOMAINS
di emails/models.py
). Untuk meniru pengalaman pelanggan, disarankan untuk mengikuti prosedur di bawah ini.
Untuk mengaktifkan fitur Relay premium, kami berintegrasi dengan Platform Berlangganan FXA. Pada tingkat tinggi, untuk menyiapkan langganan premium Relay, kami:
Aktifkan Otentikasi Akun Mozilla seperti dijelaskan di atas.
Buat produk & harga di dasbor Stripe kami. (Tanyakan di #saluran Slack platform berlangganan untuk mendapatkan akses ke dasbor Stripe kami.)
Tautkan pengguna Relay gratis ke alur pembelian SubPlat yang sesuai.
Periksa json profil FXA pengguna untuk bidang subscriptions
untuk melihat apakah mereka dapat mengakses fitur premium khusus langganan.
Secara terperinci:
Aktifkan Otentikasi Akun Mozilla seperti dijelaskan di atas.
Buka dasbor Stripe kami. (Tanyakan di #saluran Slack platform berlangganan untuk mendapatkan akses ke dasbor Stripe kami.)
Buat produk baru di Stripe.
Tambahkan semua product:
metadata.
product:
:. Jadi, misalnya webIconURL
harus dimasukkan sebagai product:webIconURL
. Tambahkan capabilities:
metadata.
capabilities:
, dan nilainya adalah string bentuk bebas untuk menggambarkan "kemampuan" yang diberikan oleh pembelian langganan kepada pengguna. Misalnya, capabilities:9ebfe2c2f9ea3c58
dengan nilai premium-relay
.Tetapkan beberapa env vars dengan nilai dari langkah di atas:
Var | Nilai |
---|---|
FXA_SUBSCRIPTIONS_URL | https://accounts.stage.mozaws.net/subscriptions |
PERIODICAL_PREMIUM_PROD_ID | prod_KEq0LXqs7vysQT (dari Stripe) |
PREMIUM_PLAN_ID_US_MONTHLY | price_1LiMjeKb9q6OnNsLzwixHuRz (dari Stripe) |
PREMIUM_PLAN_ID_US_YEARLY | price_1LiMlBKb9q6OnNsL7tvrtI7y (dari Stripe) |
PHONE_PROD_ID | prod_LviM2I0paxH1DZ (dari Stripe) |
PHONE_PLAN_ID_US_MONTHLY | price_1LDqw3Kb9q6OnNsL6XIDst28 (dari Stripe) |
PHONE_PLAN_ID_US_YEARLY | price_1Lhd35Kb9q6OnNsL9bAxjUGq (dari Stripe) |
BUNDLE_PROD_ID | prod_MQ9Zf1cyI81XS2 (dari Stripe) |
BUNDLE_PLAN_ID_US | price_1Lwp7uKb9q6OnNsLQYzpzUs5 (dari Stripe) |
SUBSCRIPTIONS_WITH_UNLIMITED | "premium-relay" (sesuaikan dengan nilai capabilities yang Anda gunakan di Stripe) |
SUBSCRIPTIONS_WITH_PHONE | "relay-phones" (sesuaikan dengan nilai capabilities yang Anda gunakan di Stripe) |
Di frontend/
, setel ANALYZE=true
saat menjalankan npm run build
untuk menghasilkan laporan yang merinci modul mana yang menggunakan sebagian besar ukuran bundel. Laporan akan dibuat untuk bagian klien dan server dari frontend, tetapi karena kami hanya menggunakan klien, kami hanya tertarik pada hal itu. Laporan akan otomatis terbuka di browser Anda, dan juga dapat ditemukan di /frontend/.next/analyze/
.
ANALYZE=true npm run build
Terdapat dokumen kasus uji komprehensif untuk pembelian Relay premium.
Anda dapat menggunakan detail kartu kredit percobaan Stripe untuk pembayaran.
Fitur-fitur telepon selanjutnya dilindungi oleh phones
wafel. Pada tahap ini, Anda memerlukan SRE untuk menambahkan tanda ke pengguna pengujian Anda. Di server pengembangan, pengembang dapat menambahkan bendera.
Selain persyaratan untuk pengembangan, lingkungan produksi harus menggunakan:
Lingkungan produksi juga harus menetapkan beberapa variabel lingkungan tambahan:
DATABASE_URL=postgresql://:@:/
DJANGO_SECURE_HSTS_SECONDS=15768000
DJANGO_SECURE_SSL_REDIRECT=True