|
|
|
@ -83,7 +83,7 @@
|
|
|
|
|
|
|
|
|
|
<details> <summary> GitHub Actionsでステータスを確認する (スクリーンショット) </summary>
|
|
|
|
|
<br>
|
|
|
|
|

|
|
|
|
|

|
|
|
|
|
</details>
|
|
|
|
|
|
|
|
|
|
これに失敗した場合は、停止してエラーの確認をします。
|
|
|
|
@ -158,12 +158,12 @@
|
|
|
|
|
|
|
|
|
|
ここでは、コードベースの現在のテスト、ビルド、およびデプロイの状況を示します。
|
|
|
|
|
|
|
|
|
|
| ブランチ | 単体テスト | 統合テスト | ビルド & デプロイ |
|
|
|
|
|
|:-------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |:--------------------------------------------------------------------------------------------------------------------------------- |
|
|
|
|
|
| [`main`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22) | [](https://dashboard.cypress.io/projects/ke77ns/analytics/runs-over-time) | - |
|
|
|
|
|
| [`prod-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22+branch%3Aprod-staging) | [](https://dashboard.cypress.io/projects/ke77ns/analytics/runs-over-time) | [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_dashboards/dashboard/d59f36b9-434a-482d-8dbd-d006b71713d4) |
|
|
|
|
|
| [`prod-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22+branch%3Aprod-current) | [](https://dashboard.cypress.io/projects/ke77ns/analytics/runs-over-time) | [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_dashboards/dashboard/d59f36b9-434a-482d-8dbd-d006b71713d4) |
|
|
|
|
|
| `prod-next` (試験的、予定) | - | - | - |
|
|
|
|
|
| ブランチ | 単体テスト | 統合テスト | ビルド & デプロイ |
|
|
|
|
|
|:-------------------------------------------------------------------------------- |:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |:--------------------------------------------------------------------------------------------------------------------------------- |
|
|
|
|
|
| [`main`](https://github.com/freeCodeCamp/freeCodeCamp/tree/main) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22) | [](https://dashboard.cypress.io/projects/ke77ns/analytics/runs-over-time) | - |
|
|
|
|
|
| [`prod-staging`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22+branch%3Aprod-staging) | [](https://dashboard.cypress.io/projects/ke77ns/analytics/runs-over-time) | [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_dashboards/dashboard/d59f36b9-434a-482d-8dbd-d006b71713d4) |
|
|
|
|
|
| [`prod-current`](https://github.com/freeCodeCamp/freeCodeCamp/tree/prod-staging) | [](https://github.com/freeCodeCamp/freeCodeCamp/actions?query=workflow%3A%22Node.js+CI%22+branch%3Aprod-current) | [](https://dashboard.cypress.io/projects/ke77ns/analytics/runs-over-time) | [Azure Pipelines](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_dashboards/dashboard/d59f36b9-434a-482d-8dbd-d006b71713d4) |
|
|
|
|
|
| `prod-next` (試験的、予定) | - | - | - |
|
|
|
|
|
|
|
|
|
|
## 早期アクセスとベータテスト
|
|
|
|
|
|
|
|
|
@ -195,7 +195,7 @@
|
|
|
|
|
|
|
|
|
|
**プラットフォームの現在のバージョンは [`freeCodeCamp.org`](https://www.freecodecamp.org) で常に利用できます。**
|
|
|
|
|
|
|
|
|
|
開発者チームは、リリース変更時に、`prod-stageing` ブランチから `prod-current` への変更をマージします。 トップコミットは、サイト上で表示されるもののはずです。
|
|
|
|
|
開発者チームは、リリース変更時に、`prod-staging` ブランチから `prod-current` への変更をマージします。 トップコミットは、サイト上で表示されるもののはずです。
|
|
|
|
|
|
|
|
|
|
状況セクションにあるデプロイログおよびビルドにアクセスして、デプロイされた正確なバージョンを確認できます。 あるいは、[contributors チャットルーム](https://chat.freecodecamp.org/channel/contributors) で確認することもできます。
|
|
|
|
|
|
|
|
|
@ -217,7 +217,7 @@
|
|
|
|
|
|
|
|
|
|
- #### サインインページが本番環境とは異なる場合があります。
|
|
|
|
|
|
|
|
|
|
Auth0 上で freeCodeCamp 開発用のテストテナントを使用しているため、カスタムドメインを設定することはできません。 そのため、すべてのリダイレクトコールバックとログインページが `https://freecodecamp-dev.auth0.com/` のようなデフォルトドメインに表示されます。 This does not affect the functionality and is as close to production as we can get.
|
|
|
|
|
Auth0 上で freeCodeCamp.dev にはテストテナントを使用しているため、カスタムドメインを設定することはできません。 そのため、すべてのリダイレクトコールバックとログインページが `https://freecodecamp-dev.auth0.com/` のようなデフォルトドメインに表示されます。 これが機能に影響を与えることはありませんし、本番環境に近いものです。
|
|
|
|
|
|
|
|
|
|
## Issue の報告とフィードバック
|
|
|
|
|
|
|
|
|
@ -264,7 +264,7 @@ az vm list-ip-addresses --output table
|
|
|
|
|
|
|
|
|
|
### Digital Ocean
|
|
|
|
|
|
|
|
|
|
Digital Ocean CLI のインストール `doctl`: https://github.com/digitalocean/doctl#installing-doctl
|
|
|
|
|
Digital Ocean CLI `doctl` のインストール: https://github.com/digitalocean/doctl#installing-doctl
|
|
|
|
|
|
|
|
|
|
> **(一回のみ) [`homebrew`](https://brew.sh) で macOS にインストールします。**
|
|
|
|
|
|
|
|
|
@ -301,19 +301,19 @@ doctl compute droplet list --format "ID,Name,PublicIPv4"
|
|
|
|
|
> - VM が完全にプロビジョニングされており、インストール後の手順が実行されていないことを確認してください。
|
|
|
|
|
> - アプリケーションを既に提供している VM 上で、パッケージを更新する場合は、アプリが停止 / 保存されていることを確認してください。 パッケージ更新により、ネットワーク帯域幅や、メモリ、CPU の使用率が急増し、 実行中のアプリケーションが停止します。
|
|
|
|
|
|
|
|
|
|
パッケージ情報を更新する
|
|
|
|
|
パッケージ情報を更新します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
sudo apt update
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
インストール済みパッケージをアップグレードする
|
|
|
|
|
インストール済みパッケージをアップグレードします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
sudo apt upgrade -y
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
未使用のパッケージをクリーンアップする
|
|
|
|
|
未使用のパッケージをクリーンアップします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
sudo apt autoremove -y
|
|
|
|
@ -350,7 +350,7 @@ NGINX 設定は [このリポジトリ](https://github.com/freeCodeCamp/nginx-co
|
|
|
|
|
|
|
|
|
|
**または**
|
|
|
|
|
|
|
|
|
|
既存の証明書上に移動します。
|
|
|
|
|
既存の証明書を移動させます。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
# Local
|
|
|
|
@ -429,7 +429,7 @@ sudo apt install build-essential
|
|
|
|
|
|
|
|
|
|
1. ノード LTS をインストールします。
|
|
|
|
|
|
|
|
|
|
2. Update `npm` and install PM2 and setup `logrotate` and startup on boot
|
|
|
|
|
2. `npm` を更新して PM2 をインストールし、`logrotate` を設定して起動します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
npm i -g npm@8
|
|
|
|
@ -438,7 +438,7 @@ sudo apt install build-essential
|
|
|
|
|
pm2 startup
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. Clone freeCodeCamp, setup env and keys.
|
|
|
|
|
3. freeCodeCamp をクローンし、env とキーをセットアップします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
git clone https://github.com/freeCodeCamp/freeCodeCamp.git
|
|
|
|
@ -446,30 +446,30 @@ sudo apt install build-essential
|
|
|
|
|
git checkout prod-current # or any other branch to be deployed
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
4. Create the `.env` from the secure credentials storage.
|
|
|
|
|
4. セキュア認証情報ストレージから `.env` を作成します。
|
|
|
|
|
|
|
|
|
|
5. Create the `google-credentials.json` from the secure credentials storage.
|
|
|
|
|
5. セキュア認証ストレージから `google-credentials.json` を作成します。
|
|
|
|
|
|
|
|
|
|
6. Install dependencies
|
|
|
|
|
6. 依存関係をインストールします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
npm ci
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
7. Build the server
|
|
|
|
|
7. サーバーを構築します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
npm run create:config && npm run build:curriculum && npm run build:server
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
8. Start Instances
|
|
|
|
|
8. インスタンスを開始します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
cd api-server
|
|
|
|
|
pm2 start ./lib/production-start.js -i max --max-memory-restart 600M --name org
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Logging and Monitoring
|
|
|
|
|
### ログとモニタリング
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
pm2 logs
|
|
|
|
@ -479,61 +479,61 @@ pm2 logs
|
|
|
|
|
pm2 monit
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Updating Instances (Maintenance)
|
|
|
|
|
### インスタンスの更新 (メンテナンス)
|
|
|
|
|
|
|
|
|
|
Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding environment variables.
|
|
|
|
|
コードの変更は、適宜 API インスタンスにデプロイする必要があります。 ローリング更新または手動更新により実行できます。 依存関係を変更したり、環境変数を追加したりする場合は、後者が必須です。
|
|
|
|
|
|
|
|
|
|
> [!ATTENTION] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs.
|
|
|
|
|
> [!ATTENTION] 自動パイプラインは、分単位で依存関係の更新を処理していません。 デプロイパイプラインが実行される前に、手動で更新する必要があります。
|
|
|
|
|
|
|
|
|
|
#### 1. Manual Updates - Used for updating dependencies, env variables.
|
|
|
|
|
#### 1. 手動更新 - 依存関係や env 変数の更新に使用します。
|
|
|
|
|
|
|
|
|
|
1. Stop all instances
|
|
|
|
|
1. すべてのインスタンスを停止します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
pm2 stop all
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Install dependencies
|
|
|
|
|
2. 依存関係をインストールします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
npm ci
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. Build the server
|
|
|
|
|
3. サーバーを構築します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
npm run create:config && npm run build:curriculum && npm run build:server
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
4. Start Instances
|
|
|
|
|
4. インスタンスを開始します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
pm2 start all --update-env && pm2 logs
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 2. Rolling updates - Used for logical changes to code.
|
|
|
|
|
#### 2. ローリング更新 - コードの論理的な変更に使用されます。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
pm2 reload all --update-env && pm2 logs
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation.
|
|
|
|
|
> [!NOTE] パイプライン経由で、コードやロジックの更新をロールリング処理しています。 これらのコマンドを実行する必要はありません。 ドキュメント用として、ここに記載されているだけです。
|
|
|
|
|
|
|
|
|
|
## Work on Client Instances
|
|
|
|
|
## クライアントインスタンスでの作業
|
|
|
|
|
|
|
|
|
|
1. Install build tools for node binaries (`node-gyp`) etc.
|
|
|
|
|
1. ノードバイナリのビルドツール (`node-gyp`) をインストールします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
sudo apt install build-essential
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### First Install
|
|
|
|
|
### 最初のインストール
|
|
|
|
|
|
|
|
|
|
Provisioning VMs with the Code
|
|
|
|
|
コードを使用して VM をプロビジョニング
|
|
|
|
|
|
|
|
|
|
1. Install Node LTS.
|
|
|
|
|
1. ノード LTS をインストールします。
|
|
|
|
|
|
|
|
|
|
2. Update `npm` and install PM2 and setup `logrotate` and startup on boot
|
|
|
|
|
2. `npm` を更新して PM2 をインストールし、`logrotate` を設定して起動します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
npm i -g npm@8
|
|
|
|
@ -543,16 +543,16 @@ Provisioning VMs with the Code
|
|
|
|
|
pm2 startup
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. Clone client config, setup env and keys.
|
|
|
|
|
3. クライアントの設定をクローンし、envとキーをセットアップします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
git clone https://github.com/freeCodeCamp/client-config.git client
|
|
|
|
|
cd client
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Start placeholder instances for the web client, these will be updated with artifacts from the Azure pipeline.
|
|
|
|
|
Web クライアントのプレイスホルダーインスタンスを開始します。これらは、Azure パイプラインのアーティファクトで更新されます。
|
|
|
|
|
|
|
|
|
|
> Todo: This setup needs to move to S3 or Azure Blob storage
|
|
|
|
|
> Todo: この設定は S3 または Azure Blob ストレージに移動する必要があります。
|
|
|
|
|
>
|
|
|
|
|
> ```console
|
|
|
|
|
> echo "serve -c ../../serve.json www -p 50505" >> client-start-primary.sh
|
|
|
|
@ -565,7 +565,7 @@ Provisioning VMs with the Code
|
|
|
|
|
> pm2 start ./client-start-secondary.sh --name client-secondary
|
|
|
|
|
> ```
|
|
|
|
|
|
|
|
|
|
### Logging and Monitoring
|
|
|
|
|
### ログとモニタリング
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
pm2 logs
|
|
|
|
@ -575,49 +575,49 @@ pm2 logs
|
|
|
|
|
pm2 monit
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Updating Instances (Maintenance)
|
|
|
|
|
### インスタンスの更新 (メンテナンス)
|
|
|
|
|
|
|
|
|
|
Code changes need to be deployed to the API instances from time to time. It can be a rolling update or a manual update. The later is essential when changing dependencies or adding environment variables.
|
|
|
|
|
コードの変更は、適宜 API インスタンスにデプロイする必要があります。 ローリング更新または手動更新により実行できます。 依存関係を変更したり、環境変数を追加したりする場合は、後者が必須です。
|
|
|
|
|
|
|
|
|
|
> [!ATTENTION] The automated pipelines are not handling dependencies updates at the minute. We need to do a manual update before any deployment pipeline runs.
|
|
|
|
|
> [!ATTENTION] 自動パイプラインは、分単位で依存関係の更新を処理していません。 デプロイパイプラインが実行される前に、手動で更新する必要があります。
|
|
|
|
|
|
|
|
|
|
#### 1. Manual Updates - Used for updating dependencies, env variables.
|
|
|
|
|
#### 1. 手動更新 - 依存関係、env 変数の更新に使用します。
|
|
|
|
|
|
|
|
|
|
1. Stop all instances
|
|
|
|
|
1. すべてのインスタンスを停止します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
pm2 stop all
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Install or update dependencies
|
|
|
|
|
2. 依存関係をインストールまたは更新します。
|
|
|
|
|
|
|
|
|
|
3. Start Instances
|
|
|
|
|
3. インスタンスを開始します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
pm2 start all --update-env && pm2 logs
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### 2. Rolling updates - Used for logical changes to code.
|
|
|
|
|
#### 2. ローリング更新 - コードの論理的な変更に使用されます。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
pm2 reload all --update-env && pm2 logs
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> [!NOTE] We are handling rolling updates to code, logic, via pipelines. You should not need to run these commands. These are here for documentation.
|
|
|
|
|
> [!NOTE] パイプライン経由で、コードやロジックの更新をロールリング処理しています。 これらのコマンドを実行する必要はありません。 ドキュメント用として、ここに記載されているだけです。
|
|
|
|
|
|
|
|
|
|
## Work on Chat Servers
|
|
|
|
|
## チャットサーバーでの作業
|
|
|
|
|
|
|
|
|
|
Our chat servers are available with a HA configuration [recommended in Rocket.Chat docs](https://docs.rocket.chat/installation/docker-containers/high-availability-install). The `docker-compose` file for this is [available here](https://github.com/freeCodeCamp/chat-config).
|
|
|
|
|
チャットサーバーは、[Rocket.Chat ドキュメントで推奨されている](https://docs.rocket.chat/installation/docker-containers/high-availability-install) HA 構成で利用可能です。 そのために使用する `docker-compose` ファイルは、[こちらで入手可能](https://github.com/freeCodeCamp/chat-config) です。
|
|
|
|
|
|
|
|
|
|
We provision redundant NGINX instances which are themselves load balanced (Azure Load Balancer) in front of the Rocket.Chat cluster. The NGINX configuration file are [available here](https://github.com/freeCodeCamp/chat-nginx-config).
|
|
|
|
|
Rocket.Chat クラスタの前で、負荷分散型 (Azure ロードバランサー) の冗長 NGINX インスタンスを提供します。 NGINX 設定ファイルは、[こちら入手可能](https://github.com/freeCodeCamp/chat-nginx-config) です。
|
|
|
|
|
|
|
|
|
|
### First Install
|
|
|
|
|
### 最初のインストール
|
|
|
|
|
|
|
|
|
|
Provisioning VMs with the Code
|
|
|
|
|
コードを使用して VM をプロビジョニング
|
|
|
|
|
|
|
|
|
|
**NGINX Cluster:**
|
|
|
|
|
**NGINX クラスタ:**
|
|
|
|
|
|
|
|
|
|
1. Install NGINX and configure from repository.
|
|
|
|
|
1. NGINX をインストールし、リポジトリから設定します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
sudo su
|
|
|
|
@ -632,13 +632,13 @@ Provisioning VMs with the Code
|
|
|
|
|
cd /etc/nginx
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Install Cloudflare origin certificates and upstream application config.
|
|
|
|
|
2. Cloudflare のオリジン証明書とアップストリームアプリケーション設定をインストールします。
|
|
|
|
|
|
|
|
|
|
Get the Cloudflare origin certificates from the secure storage and install at required locations.
|
|
|
|
|
安全なストレージから Cloudflare のオリジン証明書を取得し、 必要な場所にインストールします。
|
|
|
|
|
|
|
|
|
|
**OR**
|
|
|
|
|
**または**
|
|
|
|
|
|
|
|
|
|
Move over existing certificates:
|
|
|
|
|
既存の証明書を移動させます。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
# Local
|
|
|
|
@ -650,67 +650,67 @@ Provisioning VMs with the Code
|
|
|
|
|
mv /tmp/ssl ./
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Update Upstream Configurations:
|
|
|
|
|
アップストリーム設定を更新します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
vi configs/upstreams.conf
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Add/update the source/origin application IP addresses.
|
|
|
|
|
ソース / オリジンアプリケーションの IP アドレスを追加 / 更新します。
|
|
|
|
|
|
|
|
|
|
3. Setup networking and firewalls.
|
|
|
|
|
3. ネットワーキングとファイアウォールを設定します。
|
|
|
|
|
|
|
|
|
|
Configure Azure firewalls and `ufw` as needed for ingress origin addresses.
|
|
|
|
|
必要に応じて、イングレスオリジンアドレスに Azure ファイアウォールと `ufw` を設定します。
|
|
|
|
|
|
|
|
|
|
4. Add the VM to the load balancer backend pool.
|
|
|
|
|
4. VM をロードバランサーバックエンドプールに追加します。
|
|
|
|
|
|
|
|
|
|
Configure and add rules to load balancer if needed. You may also need to add the VMs to load balancer backend pool if needed.
|
|
|
|
|
必要に応じて、ロードバランサーにルールを設定し追加します。 バランサーバックエンドプールをロードするために、VM を追加する必要があるかもしれません。
|
|
|
|
|
|
|
|
|
|
**Docker Cluster:**
|
|
|
|
|
**Docker クラスタ:**
|
|
|
|
|
|
|
|
|
|
1. Install Docker and configure from the repository
|
|
|
|
|
1. Docker をインストールし、リポジトリから設定します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
git clone https://github.com/freeCodeCamp/chat-config.git chat
|
|
|
|
|
cd chat
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Configure the required environment variables and instance IP addresses.
|
|
|
|
|
2. 必要な環境変数とインスタンス IP アドレスを設定します。
|
|
|
|
|
|
|
|
|
|
3. Run rocket-chat server
|
|
|
|
|
3. Rocket-chat サーバーを実行します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
docker-compose config
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Logging and Monitoring
|
|
|
|
|
### ログとモニタリング
|
|
|
|
|
|
|
|
|
|
1. Check status for NGINX service using the below command:
|
|
|
|
|
1. 以下のコマンドを使用して NGINX サービスのステータスを確認します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
sudo systemctl status nginx
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Check status for running docker instances with:
|
|
|
|
|
2. docker インスタンスの実行ステータスを確認します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
docker ps
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Updating Instances (Maintenance)
|
|
|
|
|
### インスタンスの更新 (メンテナンス)
|
|
|
|
|
|
|
|
|
|
**NGINX Cluster:**
|
|
|
|
|
**NGINX クラスタ:**
|
|
|
|
|
|
|
|
|
|
Config changes to our NGINX instances are maintained on GitHub, these should be deployed on each instance like so:
|
|
|
|
|
NGINX インスタンスへの設定変更は、GitHub 上でメンテナンスされています。これらは、以下のように各インスタンスにデプロイされる必要があります。
|
|
|
|
|
|
|
|
|
|
1. SSH into the instance and enter sudo
|
|
|
|
|
1. SSH でインスタンスに接続し、sudo と入力します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
sudo su
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Get the latest config code.
|
|
|
|
|
2. 最新の設定コードを取得します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
cd /etc/nginx
|
|
|
|
@ -718,53 +718,53 @@ Config changes to our NGINX instances are maintained on GitHub, these should be
|
|
|
|
|
git reset --hard origin/main
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. Test and reload the config [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx).
|
|
|
|
|
3. 設定 [with Signals](https://docs.nginx.com/nginx/admin-guide/basic-functionality/runtime-control/#controlling-nginx) をテストし再度読み込みます。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
nginx -t
|
|
|
|
|
nginx -s reload
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Docker Cluster:**
|
|
|
|
|
**Docker クラスタ:**
|
|
|
|
|
|
|
|
|
|
1. SSH into the instance and navigate to the chat config path
|
|
|
|
|
1. インスタンスに SSH で接続し、チャット設定パスに移動します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
cd ~/chat
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Get the latest config code.
|
|
|
|
|
2. 最新の設定コードを取得します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
git fetch --all --prune
|
|
|
|
|
git reset --hard origin/main
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. Pull down the latest docker image for Rocket.Chat
|
|
|
|
|
3. Rocket.Chat の最新 docker 画像をプルダウンします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
docker-compose pull
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
4. Update the running instances
|
|
|
|
|
4. 実行中のインスタンスを更新します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
docker-compose up -d
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
5. Validate the instances are up
|
|
|
|
|
5. インスタンスが起動していることを検証します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
docker ps
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
6. Cleanup extraneous resources
|
|
|
|
|
6. 不要なリソースをクリーンアップします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
docker system prune --volumes
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Output:
|
|
|
|
|
出力:
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
WARNING! This will remove:
|
|
|
|
@ -777,13 +777,13 @@ Config changes to our NGINX instances are maintained on GitHub, these should be
|
|
|
|
|
Are you sure you want to continue? [y/N] y
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Select yes (y) to remove everything that is not in use. This will remove all stopped containers, all networks and volumes not used by at least one container, and all dangling images and build caches.
|
|
|
|
|
使用していないものをすべて削除するには、「はい」(y) を選択しします。 これにより、停止されたコンテナ、コンテナによって使用されていないネットワークとボリューム、および宙ぶらりんイメージとビルドキャッシュを削除します。
|
|
|
|
|
|
|
|
|
|
## Work on Contributor Tools
|
|
|
|
|
## Contributor ツールでの作業
|
|
|
|
|
|
|
|
|
|
### Deploy updates
|
|
|
|
|
### デプロイ更新
|
|
|
|
|
|
|
|
|
|
ssh into the VM (hosted on Digital Ocean).
|
|
|
|
|
(Digital Ocean 上でホストされている) VM に ssh を入力します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
cd tools
|
|
|
|
@ -793,9 +793,9 @@ npm run build
|
|
|
|
|
pm2 restart contribute-app
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Updating Node.js versions on VMs
|
|
|
|
|
## VM での Node.js のバージョン更新
|
|
|
|
|
|
|
|
|
|
List currently installed node & npm versions
|
|
|
|
|
現在インストールされているノード & npm バージョンをリストアップします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
nvm -v
|
|
|
|
@ -805,47 +805,47 @@ npm -v
|
|
|
|
|
nvm ls
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Install the latest Node.js LTS, and reinstall any global packages
|
|
|
|
|
最新の Node.js LTS をインストールし、グローバルパッケージを再インストールします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
nvm install --lts --reinstall-packages-from=default
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Verify installed packages
|
|
|
|
|
インストールされたパッケージを確認します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
npm ls -g --depth=0
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Alias the `default` Node.js version to the current LTS (pinned to latest major version)
|
|
|
|
|
エイリアス `default` Node.js バージョンを現在の LTS に設定します (最新のメジャーバージョンに固定します)。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
nvm alias default 16
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
(Optional) Uninstall old versions
|
|
|
|
|
(オプション) 旧バージョンをアンインストールします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
nvm uninstall <version>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
> [!ATTENTION] For client applications, the shell script can't be resurrected between Node.js versions with `pm2 resurrect`. Deploy processes from scratch instead. This should become nicer when we move to a docker based setup.
|
|
|
|
|
> [!ATTENTION] クライアントアプリケーションでは、`pm2 resurrect` を使用して、Node.js バージョン間でシェルスクリプトを復元することはできません。 ゼロからプロセスをデプロイします。 docker ベースの設定に移行すると、より良くなるはずです。
|
|
|
|
|
>
|
|
|
|
|
> If using PM2 for processes you would also need to bring up the applications and save the process list for automatic recovery on restarts.
|
|
|
|
|
> プロセスに PM2 を使用する場合は、アプリケーションを起動し、再起動時に自動リカバリを行うためのプロセスリストを保存する必要があります。
|
|
|
|
|
|
|
|
|
|
Get the uninstall instructions/commands with the `unstartup` command and use the output to remove the systemctl services
|
|
|
|
|
`unstartup` コマンドでアンインストールの手順 / コマンドを取得し、出力を使用して systemctl サービスを削除します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
pm2 unstartup
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Get the install instructions/commands with the `startup` command and use the output to add the systemctl services
|
|
|
|
|
`startup` コマンドでインストールの手順 / コマンドを取得し、出力を使用して systemctl サービスを追加します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
pm2 startup
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Quick commands for PM2 to list, resurrect saved processes, etc.
|
|
|
|
|
以下は、PM2 からリストへのクイックコマンド、保存されたプロセスの復元などです。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
pm2 ls
|
|
|
|
@ -863,100 +863,100 @@ pm2 save
|
|
|
|
|
pm2 logs
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Installing and Updating Azure Pipeline Agents
|
|
|
|
|
## Azure Pipeline エージェントのインストールと更新
|
|
|
|
|
|
|
|
|
|
See: https://docs.microsoft.com/en-us/azure/devops/pipelines/agents/v2-linux?view=azure-devops and follow the instructions to stop, remove and reinstall agents. Broadly you can follow the steps listed here.
|
|
|
|
|
https://docs.microsoft.com/ja-JP/azure/devops/pipelines/agents/v2-linux?view=azure-devops を参照し、手順に従ってエージェントを停止、削除、再インストールします。 一般的には、ここに記載されている手順に従います。
|
|
|
|
|
|
|
|
|
|
You would need a PAT, that you can grab from here: https://dev.azure.com/freeCodeCamp-org/_usersSettings/tokens
|
|
|
|
|
https://dev.azure.com/freeCodeCamp-org/_usersSettings/tokens から入手できる PAT が必要です。
|
|
|
|
|
|
|
|
|
|
### Installing agents on Deployment targets
|
|
|
|
|
### デプロイターゲットへのエージェントのインストール
|
|
|
|
|
|
|
|
|
|
Navigate to [Azure Devops](https://dev.azure.com/freeCodeCamp-org) and register the agent from scratch in the requisite [deployment groups](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_machinegroup).
|
|
|
|
|
[Azure Devops](https://dev.azure.com/freeCodeCamp-org) に移動し、必要な [デプロイグループ](https://dev.azure.com/freeCodeCamp-org/freeCodeCamp/_machinegroup) でエージェントをゼロから登録します。
|
|
|
|
|
|
|
|
|
|
> [!NOTE] You should run the scripts in the home directory, and make sure no other `azagent` directory exists.
|
|
|
|
|
> [!NOTE] スクリプトをホームディレクトリで実行し、他の `azagent` ディレクトリが存在しないことを確認します。
|
|
|
|
|
|
|
|
|
|
### Updating agents
|
|
|
|
|
### エージェントの更新
|
|
|
|
|
|
|
|
|
|
Currently updating agents requires them to be removed and reconfigured. This is required for them to correctly pick up `PATH` values and other system environment variables. We need to do this for instance updating Node.js on our deployment target VMs.
|
|
|
|
|
現在、エージェントを更新するには、エージェントを削除して再設定する必要があります。 これは、`PATH` の値や他のシステム環境変数を正しく取り出すために必要です。 デプロイターゲット VM 上で、Node.js を更新する場合は、以下を実行する必要があります。
|
|
|
|
|
|
|
|
|
|
1. Navigate and check status of the service
|
|
|
|
|
1. 移動して、サービスのステータスを確認します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
cd ~/azagent
|
|
|
|
|
sudo ./svc.sh status
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
2. Stop the service
|
|
|
|
|
2. サービスを停止します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
sudo ./svc.sh stop
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
3. Uninstall the service
|
|
|
|
|
3. サービスをアンインストールします。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
sudo ./svc.sh uninstall
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
4. Remove the agent from the pipeline pool
|
|
|
|
|
4. パイプラインプールからエージェントを削除します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
./config.sh remove
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
5. Remove the config files
|
|
|
|
|
5. 設定ファイルを削除します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
cd ~
|
|
|
|
|
rm -rf ~/azagent
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Once You have completed the steps above, you can repeat the same steps as installing the agent.
|
|
|
|
|
上記の手順を完了したら、エージェントのインストールと同じ手順を繰り返すことができます。
|
|
|
|
|
|
|
|
|
|
# Flight Manual - Email Blast
|
|
|
|
|
# フライトマニュアル - 一斉配信メール
|
|
|
|
|
|
|
|
|
|
We use [a CLI tool](https://github.com/freecodecamp/sendgrid-email-blast) to send out the weekly newsletter. To spin this up and begin the process:
|
|
|
|
|
[CLIツール](https://github.com/freecodecamp/sendgrid-email-blast) で、ウィークリーニュースレターを送信します。 プロセスは次のとおりです。
|
|
|
|
|
|
|
|
|
|
1. Sign in to DigitalOcean, and spin up new droplets under the `Sendgrid` project. Use the Ubuntu Sendgrid snapshot with the most recent date. This comes pre-loaded with the CLI tool and the script to fetch emails from the database. With the current volume, three droplets are sufficient to send the emails in a timely manner.
|
|
|
|
|
1. DigitalOcean にサインインし、`Sendgrid` プロジェクトの下に新しい droplet を作成してください。 最新の日付の Ubuntu Sendgrid スナップショットを使用します。 これには データベースからメールをフェッチするスクリプトと CLI ツールがあらかじめロードされています。 現在の容量では、3 つの droplet でメールをタイムリーに送信できます。
|
|
|
|
|
|
|
|
|
|
2. Set up the script to fetch the email list.
|
|
|
|
|
2. メールリストをフェッチするスクリプトを設定します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
cd /home/freecodecamp/scripts/emails
|
|
|
|
|
cp sample.env .env
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
You will need to replace the placeholder values in the `.env` file with your credentials.
|
|
|
|
|
`.env` ファイルのプレイスホルダー値を認証情報に置き換える必要があります。
|
|
|
|
|
|
|
|
|
|
3. Run the script.
|
|
|
|
|
3. スクリプトを実行します。
|
|
|
|
|
|
|
|
|
|
```console
|
|
|
|
|
node get-emails.js emails.csv
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This will save the email list in an `emails.csv` file.
|
|
|
|
|
`emails.csv` ファイルにメールリストを保存します。
|
|
|
|
|
|
|
|
|
|
4. Break the emails down into multiple files, depending on the number of droplets you need. This is easiest to do by using `scp` to pull the email list locally and using your preferred text editor to split them into multiple files. Each file will need the `email,unsubscribeId` header.
|
|
|
|
|
4. 必要なドロップレットの数に応じて、メールを複数のファイルに分割します。 `scp` を使用してローカルにメールリストをプルし、お好みのテキストエディターを使用して複数のファイルに分割するのが最も簡単な方法です。 各ファイルに、`email,unsubscribeId` ヘッダーが必要です。
|
|
|
|
|
|
|
|
|
|
5. Switch to the CLI directory with `cd /home/sendgrid-email-blast` and configure the tool [per the documentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/README.md).
|
|
|
|
|
5. `cd /home/sendgrid-email-blast` で CLI ディレクトリに切り替え、[ドキュメントに従って](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/README.md) ツールを構成します。
|
|
|
|
|
|
|
|
|
|
6. Run the tool to send the emails, following the [usage documentation](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/docs/cli-steps.md).
|
|
|
|
|
6. [使用ドキュメント](https://github.com/freeCodeCamp/sendgrid-email-blast/blob/main/docs/cli-steps.md) に従って、ツールを実行してメールを送信します。
|
|
|
|
|
|
|
|
|
|
7. When the email blast is complete, verify that no emails have failed before destroying the droplets.
|
|
|
|
|
7. メールの一斉配信が完了したら、droplet を破棄する前に、メール送信に問題がなかったかどうかを確認します。
|
|
|
|
|
|
|
|
|
|
# Flight Manual - Adding news instances for new languages
|
|
|
|
|
# フライトマニュアル - 新規言語の新しいインスタンスの追加
|
|
|
|
|
|
|
|
|
|
### Theme Changes
|
|
|
|
|
### テーマの変更
|
|
|
|
|
|
|
|
|
|
We use a custom [theme](https://github.com/freeCodeCamp/news-theme) for our news publication. Adding the following changes to the theme enables the addition of new languages.
|
|
|
|
|
ニュースの掲載には、カスタム [テーマ](https://github.com/freeCodeCamp/news-theme) を使用します。 テーマに以下の変更を加えることで、新しい言語の追加が可能になります。
|
|
|
|
|
|
|
|
|
|
1. Include an `else if` statement for the new [ISO language code](https://www.loc.gov/standards/iso639-2/php/code_list.php) in [`setup-locale.js`](https://github.com/freeCodeCamp/news-theme/blob/main/assets/config/setup-locale.js)
|
|
|
|
|
2. Create an initial config folder by duplicating the [`assets/config/en`](https://github.com/freeCodeCamp/news-theme/tree/main/assets/config/en) folder and changing its name to the new language code. (`en` —> `es` for Spanish)
|
|
|
|
|
3. Inside the new language folder, change the variable names in `main.js` and `footer.js` to the relevant language short code (`enMain` —> `esMain` for Spanish)
|
|
|
|
|
4. Duplicate the [`locales/en.json`](https://github.com/freeCodeCamp/news-theme/blob/main/locales/en.json) and rename it to the new language code.
|
|
|
|
|
5. In [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs), add scripts for the newly created config files.
|
|
|
|
|
6. Add the related language `day.js` script from [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) to the [freeCodeCamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale)
|
|
|
|
|
1. 新規 [ISO 言語コード](https://www.loc.gov/standards/iso639-2/php/code_list.php) の `else if` ステートメントを [`setup-locale.js`](https://github.com/freeCodeCamp/news-theme/blob/main/assets/config/setup-locale.js) に含めます。
|
|
|
|
|
2. [`assets/config/en`](https://github.com/freeCodeCamp/news-theme/tree/main/assets/config/en) フォルダをコピーし、フォルダ名を新規言語コードに変更して、初期設定フォルダを作成します。 (スペイン語の場合は、`en` —> `es` となります)。
|
|
|
|
|
3. 新規言語フォルダ内で、`main.js` と `footer.js` の変数名を、該当言語のショートコードに変更します (スペイン語の場合は、`enMain` —> `esMain` となります)。
|
|
|
|
|
4. [`locales/en.json`](https://github.com/freeCodeCamp/news-theme/blob/main/locales/en.json) をコピーして、新規言語コード名に変更します。
|
|
|
|
|
5. [`partials/i18n.hbs`](https://github.com/freeCodeCamp/news-theme/blob/main/partials/i18n.hbs) で、新たに作成された設定ファイルのスクリプトを追加します。
|
|
|
|
|
6. 関連する言語 `day.js` スクリプトを [cdnjs](https://cdnjs.com/libraries/dayjs/1.10.4) から [freeCodeCamp CDN](https://github.com/freeCodeCamp/cdn/tree/main/build/news-assets/dayjs/1.10.4/locale) に追加します。
|
|
|
|
|
|
|
|
|
|
### Ghost Dashboard Changes
|
|
|
|
|
### Ghost ダッシュボードの変更
|
|
|
|
|
|
|
|
|
|
Update the publication assets by going to the Ghost dashboard > settings > general and uploading the publications's [icon](https://github.com/freeCodeCamp/design-style-guide/blob/master/assets/fcc-puck-500-favicon.png), [logo](https://github.com/freeCodeCamp/design-style-guide/blob/master/downloads/fcc_primary_large.png), and [cover](https://github.com/freeCodeCamp/design-style-guide/blob/master/assets/fcc_ghost_publication_cover.png).
|
|
|
|
|
Ghost ダッシュボード > 設定 > 一般と進み、出版物の [アイコン](https://github.com/freeCodeCamp/design-style-guide/blob/master/assets/fcc-puck-500-favicon.png)、[ロゴ](https://github.com/freeCodeCamp/design-style-guide/blob/master/downloads/fcc_primary_large.png) および [カバー](https://github.com/freeCodeCamp/design-style-guide/blob/master/assets/fcc_ghost_publication_cover.png) をアップロードすることで、出版物アセットを更新します。
|
|
|
|
|