채팅, 댓글 달기, 알림을 위한 완전한 SDK
cord 개발자에게 실시간 협업 기능을 애플리케이션에 원활하게 통합할 수 있는 강력하고 유연한 솔루션을 제공합니다. 채팅, 현재 상태, 알림을 위한 사전 구축된 구성 요소와 완벽하게 사용자 정의 가능한 UI 기본 요소를 갖춘 cord 사용하면 정교한 앱 내 공동 작업 도구를 신속하게 구현할 수 있습니다. 간단한 메시징 인터페이스를 구축하든 복잡한 다중 사용자 환경을 구축하든, cord 의 SDK는 사용자 참여를 향상하고 제품 내 커뮤니케이션을 간소화하는 데 필요한 안정성과 확장성을 제공합니다.
cord 처음에 웹 애플리케이션에 강력한 실시간 채팅, 댓글 달기 및 알림 기능을 제공하기 위한 상용 솔루션으로 개발되었습니다. 2024년 8월, cord 의 호스팅 서비스가 중단되면서 팀은 전체 코드베이스를 오픈소스화하기로 결정했습니다. cord 의 가치를 인식한 여러 cord 직원과 Preset을 포함한 고객 기반의 오픈 소스 애호가들이 모여 이 오픈 소스 프로젝트를 시작했습니다. 이들 기여자 중 다수는 자신의 제품에서 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
로 설정하세요.리눅스:
apt install mkcert
를 통해 mkcert
설치scripts/generate-localhost-certificates.sh
실행 scripts/generate-dotenv.cjs --include-secrets=false
실행하여 개발 서버 실행을 위한 구성 옵션이 포함된 .env
파일을 생성합니다.
npm run local-dev
실행하여 로컬 개발 환경을 시작합니다.
cord 플랫폼에서 자체 호스팅 인프라로 데이터를 마이그레이션하는 데는 두 단계, 즉 데이터베이스 데이터 마이그레이션과 S3 데이터(예: 메시지 첨부 파일) 마이그레이션이 있습니다.
두 경우 모두 프로젝트 관리 인증 토큰이 필요합니다. 이는 Authorization
헤더에서 다음 API에 제공되어야 합니다.
S3에서 파일을 복사하려면 먼저 사용자 지정 S3 버킷 구성 설명서의 1단계와 2단계에 설명된 대로 S3 버킷을 구성해야 합니다. 그런 다음 버킷과 버킷의 모든 객체 모두에서 arn:aws:iam::869934154475:role/radical-stack-prodServerLondonASGInstanceRole31491-P9EJBVI9CBCR
(프로덕션 서버 사용자)에 대해 최소한 PutObject
및 ListObjects
권한을 허용하는 정책을 생성합니다. 정책은 다음과 같아야 합니다.
{
"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/*"
]
}
]
}
완료되면 동일한 액세스를 승인하기 위해 계정에서 IAM 정책을 구성해야 하므로 cord 의 담당자에게 문의하세요.
권한을 설정한 후 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
호출하세요. 그러면 psql --variable=ON_ERROR_STOP=1
통해 빈 데이터베이스에 대해 실행할 준비가 된 모든 데이터가 포함된 SQL 스크립트가 생성됩니다. 여기에는 모든 프로젝트의 모든 데이터가 포함됩니다. 인내심을 가지세요. 모든 데이터를 수집하는 데 최대 1~2분 정도 걸릴 수 있습니다.
이 데이터는 분명히 명령이 실행되는 시점에만 유효하므로 이를 사용하여 마이그레이션 프로세스를 테스트한 다음 자체 인프라로 전환하기 직전에 다시 실행하여 최신 정보를 캡처할 수 있습니다. -날짜 데이터를 사용할 수 있습니다.
이 리포지토리의 파일을 사용하여 자신의 AWS 계정으로 cord 의 인프라를 실행할 수 있습니다. 이를 시작하고 실행하는 데 필요한 일련의 단계는 대략 다음과 같습니다.
다음 정보가 필요합니다.
1234567890
)eu-central-1
)cord .example.com
)최소한 다음 파일을 찾아 위의 세 가지 항목에 대한 모든 참조를 원하는 값으로 바꿉니다. 이는 상수, 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
에 있어야 합니다.
3개의 기본 서브넷과 함께 실행 중인 지역의 기본 VPC를 찾으세요. 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분이 지났다면(15분마다 사용자 계정에 대한 SSH 공개 키를 가져오고 설치함) 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
로 변경하고 다시 실행하세요. 같은 일이 발생해야 하지만 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
로 설정해야 합니다.)