チャット、コメント、通知のための完全な SDK
cordリアルタイム コラボレーション機能をアプリケーションにシームレスに統合する強力で柔軟なソリューションを開発者に提供します。 cord使用すると、チャット、プレゼンス、通知用の事前構築コンポーネントに加え、完全にカスタマイズ可能な UI プリミティブを使用して、洗練されたアプリ内コラボレーション ツールを迅速に実装できます。シンプルなメッセージング インターフェイスを構築している場合でも、複雑なマルチユーザー環境を構築している場合でも、 cordの SDK は、ユーザー エンゲージメントを強化し、製品内のコミュニケーションを合理化するために必要な信頼性と拡張性を提供します。
cord当初、Web アプリケーションに堅牢なリアルタイム チャット、コメント、通知機能を提供する商用ソリューションとして開発されました。 2024 年 8 月、 cordのホスト型サービスが終了したため、チームはコードベース全体をオープンソースにすることを決定しました。 cordの価値を認識し、Preset を含む数人の元従業員と顧客ベース内のオープンcord愛好家がこのオープンソース プロジェクトを立ち上げるために集まりました。これらの貢献者の多くは、自身の製品でcordを使用および依存しており、プロジェクトを存続させ、オープンソース コミュニティ内の関心を評価し、できればこの素晴らしいプロジェクトがコミュニティを成長させることを期待しています。
さらにサポートを求め、コミュニティとつながるには、次のリソースを参照してください。
ローカル リソース (DB、Redis など) のみを使用してcordローカルで実行するには、次の手順を使用します。
注: cord 、 apt
使用して MacOS および Linux ディストリビューション上で日常的にのみ実行されています。プラットフォーム固有のものであってはなりませんが、他のプラットフォーム向けの説明は読者の演習として残されています。
cord実行する前に、いくつかのソフトウェアをインストールする必要があります。
.nvmrc
ファイルと.node-version
ファイルの両方を提供します。jq
をインストールします (Mac: brew install jq
、Linux: apt install jq
)brew install libpq && brew link --force libpq
、Linux: apt install postgresql-client
)TLS 経由でローカル マシンに接続するには、自己署名証明書をインストールする必要があります。
マック:
scripts/generate-localhost-certificates.sh
を実行します (Homebrew を使用してmkcert
インストールします)about:config
でsecurity.enterprise_roots.enabled
をtrue
に設定します。Linux:
apt install mkcert
経由でmkcert
インストールするscripts/generate-localhost-certificates.sh
を実行します。scripts/generate-dotenv.cjs --include-secrets=false
を実行して、開発サーバーを実行するための構成オプションを含む.env
ファイルを生成します。
npm run local-dev
実行して、ローカル開発環境を開始します。
データをcordプラットフォームから独自のセルフホスト インフラストラクチャに移行するには、データベース データの移行と S3 データ (メッセージ添付ファイルなど) の移行の 2 つの手順があります。
どちらの場合も、プロジェクト管理認証トークンが必要です。これは、 Authorization
ヘッダーで次の API に提供する必要があります。
S3 からファイルをコピーするには、カスタム S3 バケットの構成に関するドキュメントのステップ 1 および 2 の説明に従って、まず S3 バケットを構成する必要があります。次に、バケットとバケット内のすべてのオブジェクトの両方で、少なくともPutObject
およびListObjects
権限をarn:aws:iam::869934154475:role/radical-stack-prodServerLondonASGInstanceRole31491-P9EJBVI9CBCR
(本番サーバー ユーザー) に許可するポリシーを作成します。ポリシーは次のようになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::869934154475:role/radical-stack-prodServerLondonASGInstanceRole31491-P9EJBVI9CBCR"
},
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::YOUR-S3-BUCKET-ID",
"arn:aws:s3:::YOUR-S3-BUCKET-ID/*"
]
}
]
}
それが完了したら、 cordの誰かに連絡してください。同じアクセスを承認するには、アカウントで IAM ポリシーを構成する必要もあります。
権限を設定した後、 https://api.cord.com/v1/customer/copyfiles?region=YOUR-S3-REGION&bucket=YOUR-S3-BUCKET-ID
を呼び出します。このハンドラーは、1 ~ 1000 (デフォルトは 10) のlimit
パラメーターを受け取り、その数のファイルをバケットにコピーしようとする増分コピーであるため、複数回実行する必要がある可能性があります。 {"copied":0}
が返されるまで実行を続け、その時点ですべてのファイルがコピーされます。
このステップはいつでも実行でき、増分であるため、独自のインフラストラクチャに切り替える準備が整う前に実行し、切り替え時点で再度実行して、アップロードされた新しいファイルをコピーするだけです。以来。
データベース データを移行するには、 https://api.cord.com/v1/customer/dbdump
を呼び出します。これにより、すべてのデータを含む SQL スクリプトが作成され、 psql --variable=ON_ERROR_STOP=1
介して空のデータベースに対して実行できるようになります。これには、すべてのプロジェクトのすべてのデータが含まれます。すべてのデータが収集されるまでに最大 1 ~ 2 分かかる場合がありますので、しばらくお待ちください。
このデータは明らかにコマンドの実行時点でのみ有効であるため、このデータを使用して移行プロセスをテストし、独自のインフラストラクチャに切り替える直前に再実行して最新のデータを取得することをお勧めします。 -日付データが利用可能。
このリポジトリ内のファイルを使用して、独自の AWS アカウントでcordのインフラストラクチャを実行できます。これは、これを起動して実行するためのおおよその一連の手順です。
次の情報が必要です。
1234567890
)eu-central-1
)cord .example.com
)少なくとも次のファイルを見つけて、上記の 3 つに対するすべての参照を実際の値に置き換えます。これらは定数、ARN などに含まれている可能性があります。検索と置換を使用してください。 (他にもありますが、起動して実行するにはこれで十分です。)
package.json
( db-ssh-tunnel
およびdb-ssh-tunnel-write
npm コマンド)ops/aws/config/zero/cssh
ops/aws/src/Config.ts
ops/dockerfiles/server.Dockerfile
ops/local-s3/create-buckets.sh
scripts/connect-docker-to-aws-ecr.sh
scripts/manual-deploy.sh
scripts/ci/build-on-commit.sh
scripts/lib/secrets.cjs
server/src/config/Env.ts
us-east-1
で、 *.
、 *.staging.
、および*.loadtest.
(例: *.staging. cord .example.com
)。これらは CloudFront に使用されるため、実行しているリージョンに関係なく、 us-east-1
に存在する必要があります。
実行しているリージョンのデフォルト VPC とその 3 つのデフォルト サブネットを探します。 AWS はこれらをリージョンに自動的に作成し、構成にインポートする必要があります。
ssh-keygen -t rsa -b 4096 -C "[email protected]"
を使用して RSA SSH キーを作成します。次に、AWS で、[セキュリティ認証情報] ページに移動し、[AWS CodeCommit 認証情報] セクションにアップロードします。これは、システムへの SSH アクセスに使用されます。また、IAM では、システムに SSH 接続できるようにする他のユーザーとともに、ユーザーにタグzeroAccount
: yes
を与えます。
ops/aws/src/radical-stack/Config.ts
内のすべての定数を更新してドメインを設定し、前の手順で作成した証明書と VPC の ARN を追加します。
ops/aws
で、 npm install
およびnpm run deploy
実行します。多くのサービス (データベース、EC2 インスタンスなど) が起動されるため、これには時間がかかります。失敗した場合、残念ながら CloudFormation はこれらの一連の作成をロールバックできないため、手動ですべてを削除する必要があります。そうしないと、オブジェクトの一部がすでに存在しているため、次の試行は失敗します。 (失敗しないことを祈ります。)
(EC2 マシンはサーバー ビルドをまだ利用できないため、すぐにクラッシュし、再起動を繰り返します。それでも問題ありません。)
SSH 要塞として使用するホストの名前はzero
です。以下のスタンザを~/.ssh/config
に追加します (必要に応じて作成します)。
Host zero
HostName zero. cord .example.com
Port 28547
User YOUR_AWS_USERNAME
ForwardAgent yes
次に、zero を開始してから少なくとも 15 分が経過している場合 (ユーザー アカウントの SSH 公開キーを 15 分ごとに取得してインストールします)、 ssh zero
実行してみてください。コンソールにドロップされるはずです。そうであれば、おめでとうございます。仮想プライベート ネットワーク内にいますので、問題なく動作するはずです。
scripts/generate-dotenv.cjs
に移動し、プロパティを編集して必要に応じて調整します。少なくとも、AWS リージョンを更新し、.com ベースのホスト名cord必要があります。また、 buildProdEnv
関数の最後にINCLUDE_SDK_TESTBED: '1'
を追加します。
ローカル マシンから次のコマンドを実行します。
$ npm run db-ssh-tunnel-write
$ PGPASSWORD="$(aws secretsmanager get-secret-value --secret-id database-prod-1 | jq -r '.SecretString | fromjson | .password')" createdb -h localhost -p 25432 -U ChuckNorris radical_db
$ PGPASSWORD="$(aws secretsmanager get-secret-value --secret-id database-prod-1 | jq -r '.SecretString | fromjson | .password')" psql -h localhost -p 25432 -U ChuckNorris -d radical_db
radical_db=> CREATE EXTENSION "uuid-ossp";
radical_db=> COMMENT ON EXTENSION "uuid-ossp" IS 'generate universally unique identifiers (UUIDs)';
zero
でcssh -l ubuntu build3
実行すると、ビルド マシンに接続されます。使用しているリポジトリのクローンを作成し (上記の変更をすべて加えて)、 ./scripts/ci/build-on-commit.sh
を実行します。これにより、サーバーのバージョンが構築され、heimdall 設定によりサーバーが自動的にデプロイされないことが示されますが、手動でプッシュするために実行するコマンドが表示されます ( scripts/manual-deploy.sh
で始まります)。
手動デプロイ コマンドを実行します。サーバーが現在正常ではないため、プッシュは失敗しますが、問題ありません。完了すると、サーバーは次の再起動サイクルで新しいコードを取得し、適切に起動するはずです。
実行したコマンドのstaging
prod
に変更し、再度実行します。同じことが起こりますが、本番サーバーは問題ないはずです。
これで、すべてのcordインフラストラクチャの実行バージョンが完成しました。この README の前のセクションの手順に従って、DB および S3 データをデータ ストレージに移行できます。
この時点で、SendGrid や LaunchDarkly など、使用しているサービスの API キーを追加できます。キーは SecretsManager の適切に説明された項目の下にあります。または、 scripts/generate-dotenv.cjs
で検索できます。
これで準備完了です。新しいバージョンをビルドしたいときはいつでも、 build3
マシンにログインして自分で実行することも、 github_workflows
の例を使用して GitHub ワークフローを実行して実行することもできます。 (GitHub Actions Runner を実行するには、 ops/aws/src/radical-stack/ec2/build3.ts
でINCLUDE_GITHUB_RUNNER
true
に設定する必要があります。)