プライベート リレーは、個人の電子メール アドレスの代わりに使用する生成された電子メール アドレスを提供します。
受信者は引き続き電子メールを受信しますが、プライベート リレーにより、個人の電子メール アドレスが収集され、購入、販売、取引、または他のデータと組み合わせられて個人を特定、追跡、および/またはターゲット化されることがなくなります。
コードスタイル、命名規則、その他の方法論については、当社のコーディング標準を参照してください。
sudo apt install postgresql libpq-dev python3-dev
brew install postgresql libpq
sudo dnf install libpq-devel python3-devel
クローンを作成してディレクトリに移動します。
git clone --recurse-submodules https://github.com/mozilla/fx-private-relay.git
cd fx-private-relay
仮想環境を作成してアクティブ化します。
Unix ベースのシステム:
virtualenv env
source env/bin/activate
Windows:
python -m venv env
source env/Scripts/activate
Windows で Git Bash を使用していない場合は、 source env/Scripts/activate
と入力する代わりに、「 .envScriptsactivate
と入力します。
注: Windows で実行していて、コンピューターでスクリプトの実行が無効になっていることを示すエラー メッセージが表示された場合は、Windows PowerShell に移動し、 Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
と入力して、再試行してください。
Python とノードのインストール要件:
pip install -r requirements.txt
cd frontend
npm install
cd ../
注: Windows で実行している場合は、npm スクリプトでの環境変数の使用で問題が発生する可能性があります。 npm で git-bash を使用するように強制できます: npm config set script-shell "C:\Program Files\Git\bin\bash.exe"
。これはデフォルトの場所であり、インストール場所は異なる場合があります。
decouple
設定用の.env
ファイルをコピーします。
cp .env-dist .env
SECRET_KEY
値を.env
に追加します。
SECRET_KEY =secret-key-should-be-different-for-every-install
DBの移行:
python manage.py migrate
スーパーユーザーを作成します。
python manage.py createsuperuser
バックエンドを実行します。
python manage.py runserver
そして別のターミナルでフロントエンドを構築します。
cd frontend
npm run watch
次のドキュメントでは、翻訳する新しい文字列の作成など、開発を始めることができます。 Relay のローカリゼーションに関する一般的な情報については、「翻訳とローカリゼーション」を参照してください。
翻訳されたメッセージ ファイルには git サブモジュールを使用します。インストールの--recurse-submodules
ステップでは、すでにメッセージ ファイルが作業ディレクトリに取り込まれているはずですが、インストール後に翻訳を更新することもできます。それを行う最も簡単な方法は次のとおりです。
git submodule update --remote
git pull
または他のコマンドの実行時にサブモジュールを自動的に更新するには:
git config --global submodule.recurse true
privaterelay/locales
ディレクトリは他のディレクトリと同様に git リポジトリであるため、メッセージを変更するには次のようにします。
作業中に、 privaterelay/locales/en
で必要な変更を加えます。
cd privaterelay/locales/en
git branch message-updates-yyyymmdd
git push -u origin message-updates-yyyymmdd
その後、 message-updates-yyyymmdd
ブランチから l10n リポジトリのmain
ブランチへのプル リクエストを開くことができます。
翻訳用の文字列を送信する準備がまだ整っていない場合は、それらの文字列を暫定的にfrontend/pendingTranslations.ftl
に追加できます。そのファイル内の文字列は、同じ ID を持つ文字列が l10n リポジトリに追加されるまで表示されます。
同様に、一時的なバックエンド ロケール文字列を保存できるpending_locales/pending.ftl
があります。 l10n リポジトリのプル リクエストの文字列が Relay リポジトリにマージされたら、CircleCI テストの失敗を避けるために、これらのそれぞれの文字列をpending_locales/pending.ftl
から削除する必要があります。
アプリの翻訳に更新をコミットするには (リリース前など)、このサブモジュールの更新をコミットする必要があります。したがって、更新された翻訳をアプリにコミットする準備ができている場合は、他のファイルと同じようにサブモジュールgit add
できます。
git add privaterelay/locales
その後、コミットしてプッシュして、アプリ リポジトリを翻訳サブモジュールの更新バージョンに設定できます。
git push
自動化されたプロセスによりサブモジュールが毎日更新され、ローカリゼーション チームからの新しい変更と翻訳が反映されます。
ローカル サーバーで Mozilla アカウント認証を有効にするには、accounts.stage.mozaws.net の「Firefox Private Relay local dev」OAuth アプリを使用します。
そのためには:
.env
ファイルでADMIN_ENABLED=True
を設定します
サーバーが実行中の場合はシャットダウンし、次のように管理テーブルを追加します。
python manage.py migrate
/admin
エンドポイントを使用してサーバーを実行します。
python manage.py runserver
Django 管理ページに移動して、デフォルトのサイトを変更します。
example.com
127.0.0.1:8000
に変更し、「保存」をクリックします。
django-allauth ソーシャル アプリ管理ページに移動し、上で作成したスーパーユーザー アカウントでサインインし、Firefox アカウントにソーシャル アプリを追加します。
分野 | 価値 |
---|---|
プロバイダー | Mozilla アカウント |
名前 | accounts.stage.mozaws.net |
クライアントID | 9ebfe2c2f9ea3c58 |
秘密鍵 | #fx-private-relay-eng Slack チャネルからリクエストしてください |
サイト | 127.0.0.1:8000 -> 選択されたサイト |
これで、FxA を使用して http://127.0.0.1:8000/ にサインインできるようになりました。
注: アドオンは別のリポジトリにあります。開始に関する追加情報については、それを参照してください。
このアドオンは、Web 上で電子メール アドレスを生成および自動入力するための Firefox UI を追加します。アドオンをローカルで実行すると、運用サーバー ( relay.firefox.com
) ではなくローカル サーバー ( 127.0.0.1:8000
) と通信できるようになります。
npm run watch
、 frontend/src
ディレクトリを監視し、変更を検出するとフロントエンドを構築します。ただし、実稼働ビルドの作成には、開発フローを中断するのに十分な時間がかかります。したがって、変更されたモジュールを再コンパイルするだけで実運用の最適化を適用しない別のサーバーでフロントエンドを実行することも可能です。これを行うには、 npm run watch
の代わりにnpm run dev
実行します。
フロントエンドは http://localhost:3000 で利用できるようになりました。これにより、ローカル開発環境が実稼働環境とあまり似なくなることに注意してください。特に、認証は通常バックエンド サーバーにバインドされているため、別のサーバーでフロントエンドを実行する場合はシミュレートする必要があります。認証に関連する変更を加えた場合は、 npm run watch
も使用してテストしてください。
注:プレミアム機能は、 mozilla.com
、 getpocket.com
、またはmozillafoundation.org
で終わる電子メール アドレスを持つユーザーに対して自動的に有効になります ( emails/models.py
のPREMIUM_DOMAINS
参照)。顧客のエクスペリエンスを模倣するには、次の手順に従うことをお勧めします。
プレミアム Relay 機能を有効にするために、FXA サブスクリプション プラットフォームと統合します。 Relay プレミアム サブスクリプションをセットアップするには、大まかに次のことを行います。
上で説明したように、Mozilla アカウント認証を有効にします。
Stripe ダッシュボードで製品と価格を作成します。 (Stripe ダッシュボードにアクセスするには、#subscription-platform Slack チャネルでリクエストしてください。)
Relay の無料ユーザーを適切な SubPlat 購入フローにリンクします。
ユーザーの FXA プロファイル json のsubscriptions
フィールドをチェックして、サブスクリプション限定のプレミアム機能にアクセスできるかどうかを確認します。
詳細:
上で説明したように、Mozilla アカウント認証を有効にします。
Stripe ダッシュボードに移動します。 (Stripe ダッシュボードにアクセスするには、#subscription-platform Slack チャネルでリクエストしてください。)
Stripe で新しい製品を作成します。
必要なすべてのproduct:
メタデータを追加します。
product:
プレフィックスが必要です。したがって、たとえば、 webIconURL
product:webIconURL
として入力する必要があります。 capabilities:
メタデータ。
capabilities:
のような形式が必要です。値は、サブスクリプションの購入によってユーザーに与えられる「機能」を説明する自由形式の文字列です。たとえば、 capabilities:9ebfe2c2f9ea3c58
の値はpremium-relay
です。上記の手順の値を使用していくつかの環境変数を設定します。
ヴァール | 価値 |
---|---|
FXA_SUBSCRIPTIONS_URL | https://accounts.stage.mozaws.net/subscriptions |
PERIODICAL_PREMIUM_PROD_ID | prod_KEq0LXqs7vysQT (Stripe より) |
PREMIUM_PLAN_ID_US_MONTHLY | price_1LiMjeKb9q6OnNsLzwixHuRz (Stripe より) |
PREMIUM_PLAN_ID_US_YEARLY | price_1LiMlBKb9q6OnNsL7tvrtI7y (Stripe より) |
PHONE_PROD_ID | prod_LviM2I0paxH1DZ (Stripe より) |
PHONE_PLAN_ID_US_MONTHLY | price_1LDqw3Kb9q6OnNsL6XIDst28 (Stripe より) |
PHONE_PLAN_ID_US_YEARLY | price_1Lhd35Kb9q6OnNsL9bAxjUGq (Stripe より) |
BUNDLE_PROD_ID | prod_MQ9Zf1cyI81XS2 (Stripe より) |
BUNDLE_PLAN_ID_US | price_1Lwp7uKb9q6OnNsLQYzpzUs5 (Stripe より) |
SUBSCRIPTIONS_WITH_UNLIMITED | "premium-relay" (Stripe で使用したcapabilities の値と一致します) |
SUBSCRIPTIONS_WITH_PHONE | "relay-phones" (Stripe で使用したcapabilities の値と一致します) |
frontend/
で、 npm run build
実行するときにANALYZE=true
を設定すると、バンドル サイズの大部分を占めているモジュールの詳細を示すレポートが生成されます。フロントエンドのクライアント部分とサーバー部分の両方についてレポートが生成されますが、ここではクライアントのみを使用するため、実際にはクライアント部分のみに関心があります。レポートはブラウザで自動的に開き、 /frontend/.next/analyze/
にもあります。
ANALYZE=true npm run build
Premium Relay を購入するためのテスト ケースの包括的なドキュメントがあります。
Stripe のテスト用クレジット カードの詳細を支払いに使用できます。
電話機の機能はワッフルフラッグphones
によってさらに保護されています。ステージでは、テスト ユーザーにフラグを追加するために SRE が必要になります。開発サーバーでは、開発者がフラグを追加できます。
開発の要件に加えて、運用環境では以下を使用する必要があります。
運用環境では、いくつかの追加の環境変数も設定する必要があります。
DATABASE_URL=postgresql://:@:/
DJANGO_SECURE_HSTS_SECONDS=15768000
DJANGO_SECURE_SSL_REDIRECT=True