SDK lengkap untuk Obrolan, Komentar, dan Pemberitahuan
cord memberi pengembang solusi yang kuat dan fleksibel untuk mengintegrasikan fitur kolaborasi real-time ke dalam aplikasi mereka dengan lancar. Dengan komponen siap pakai untuk obrolan, kehadiran, dan notifikasi, serta UI primitif yang sepenuhnya dapat disesuaikan, cord memungkinkan implementasi cepat alat kolaborasi dalam aplikasi yang canggih. Baik Anda membangun antarmuka perpesanan sederhana atau lingkungan multi-pengguna yang kompleks, SDK cord menawarkan keandalan dan skalabilitas yang diperlukan untuk meningkatkan keterlibatan pengguna dan menyederhanakan komunikasi dalam produk Anda.
cord awalnya dikembangkan sebagai solusi komersial untuk menyediakan fitur obrolan, komentar, dan pemberitahuan yang kuat dan real-time untuk aplikasi web. Pada bulan Agustus 2024, ketika layanan yang dihosting cord ditutup, tim memutuskan untuk menjadikan seluruh basis kode sebagai sumber terbuka. Menyadari nilai cord , beberapa mantan karyawan cord dan penggemar sumber terbuka dalam basis pelanggan mereka, termasuk Preset, telah berkumpul untuk meluncurkan proyek sumber terbuka ini. Banyak dari kontributor ini menggunakan dan bergantung pada cord dalam produk mereka dan berkomitmen untuk menjaga proyek tetap berjalan, menilai minat dalam komunitas sumber terbuka, dan berharap melihat proyek luar biasa ini menumbuhkan komunitas yang berkembang.
Untuk dukungan lebih lanjut dan untuk terhubung dengan komunitas, silakan merujuk ke sumber daya berikut:
Gunakan petunjuk ini untuk menjalankan cord secara lokal, hanya menggunakan sumber daya lokal (DB, Redis, dll).
Catatan: cord hanya dijalankan secara rutin pada distribusi MacOS dan Linux menggunakan apt
. Tidak ada yang harus spesifik pada platform tertentu, namun instruksi untuk platform lain dibiarkan sebagai latihan bagi pembaca.
Sebelum menjalankan cord , Anda perlu menginstal beberapa perangkat lunak.
.nvmrc
dan .node-version
yang menentukan versi Node yang akan digunakan.jq
(Mac: brew install jq
, Linux: apt install jq
)brew install libpq && brew link --force libpq
, Linux: apt install postgresql-client
)Untuk terhubung melalui TLS ke mesin lokal, kita perlu menginstal sertifikat yang ditandatangani sendiri.
Mac:
scripts/generate-localhost-certificates.sh
(yang akan menggunakan Homebrew untuk menginstal mkcert
)security.enterprise_roots.enabled
ke true
di about:config
Linux:
mkcert
melalui apt install mkcert
scripts/generate-localhost-certificates.sh
Jalankan scripts/generate-dotenv.cjs --include-secrets=false
untuk menghasilkan file .env
yang berisi opsi konfigurasi untuk menjalankan server dev.
Jalankan npm run local-dev
untuk memulai lingkungan pengembangan lokal.
Ada dua langkah untuk memigrasikan data Anda dari platform cord ke infrastruktur yang Anda hosting sendiri: memigrasikan data database dan memigrasikan data S3 (seperti lampiran pesan).
Dalam kedua kasus tersebut, Anda memerlukan token autentikasi manajemen proyek. Ini harus diberikan ke API berikut di header Authorization
.
Untuk menyalin file Anda dari S3, pertama-tama Anda perlu mengonfigurasi bucket S3 seperti yang dijelaskan dalam langkah 1 dan 2 dokumentasi untuk mengonfigurasi bucket S3 kustom. Kemudian buat kebijakan yang mengizinkan setidaknya izin PutObject
dan ListObjects
ke arn:aws:iam::869934154475:role/radical-stack-prodServerLondonASGInstanceRole31491-P9EJBVI9CBCR
(pengguna server produksi kami) pada bucket dan setiap objek dalam bucket. Kebijakannya akan terlihat seperti ini:
{
"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/*"
]
}
]
}
Setelah selesai, hubungi seseorang di cord , karena kami juga perlu mengonfigurasi kebijakan IAM di akun kami untuk menyetujui akses yang sama.
Setelah mengatur izin, hubungi https://api.cord.com/v1/customer/copyfiles?region=YOUR-S3-REGION&bucket=YOUR-S3-BUCKET-ID
. Penangan adalah salinan tambahan yang mengambil parameter limit
dari 1 hingga 1000 (default 10) dan mencoba menyalin banyak file ke dalam keranjang Anda, sehingga Anda mungkin harus menjalankannya lebih dari sekali. Terus jalankan hingga ia mengembalikan {"copied":0}
, yang pada saat itu semua file akan disalin.
Anda dapat melakukan langkah ini kapan saja, dan karena bersifat inkremental, Anda dapat menjalankannya sebelum Anda siap untuk beralih ke infrastruktur Anda sendiri, lalu menjalankannya lagi pada titik peralihan untuk sekadar menyalin file baru yang telah diunggah. sejak.
Untuk memigrasikan data database Anda, hubungi https://api.cord.com/v1/customer/dbdump
. Ini akan menghasilkan skrip SQL yang berisi semua data Anda, siap dijalankan pada database kosong melalui psql --variable=ON_ERROR_STOP=1
. Ini akan mencakup semua data untuk semua proyek Anda. Bersabarlah, mungkin perlu satu atau dua menit untuk mengumpulkan semua data.
Data ini jelas hanya valid pada saat perintah dijalankan, jadi Anda mungkin ingin menggunakannya untuk menguji proses migrasi Anda, lalu menjalankannya lagi tepat sebelum beralih ke infrastruktur Anda sendiri untuk mendapatkan hasil maksimal. -data tanggal tersedia.
Anda dapat menggunakan file dalam repo ini untuk menjalankan infrastruktur cord di bawah akun AWS Anda sendiri. Ini kira-kira serangkaian langkah untuk mengaktifkan dan menjalankannya:
Anda memerlukan informasi berikut:
1234567890
)eu-central-1
)cord .example.com
)Temukan setidaknya file berikut dan ganti semua referensi ke tiga hal di atas dengan nilai-nilai Anda. Ini mungkin dalam bentuk konstanta, ARN, dll. Gunakan cari-dan-ganti. (Ada yang lain, tapi ini seharusnya cukup untuk membuat Anda siap dan bekerja.)
package.json
(perintah npm db-ssh-tunnel
dan db-ssh-tunnel-write
)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
Di us-east-1
, buat sertifikat untuk *.
, *.staging.
, dan *.loadtest.
(misal, *.staging. cord .example.com
). Ini digunakan untuk CloudFront, jadi mereka harus berada di us-east-1
tidak peduli di wilayah mana Anda menjalankannya.
Temukan VPC default untuk wilayah tempat Anda menjalankannya, beserta tiga subnet defaultnya. AWS membuat ini secara otomatis untuk Anda di wilayah, dan ini perlu diimpor ke konfigurasi.
Buat kunci SSH RSA dengan ssh-keygen -t rsa -b 4096 -C "[email protected]"
. Kemudian di AWS, buka halaman Kredensial Keamanan Saya dan unggah di bagian "Kredensial AWS CodeCommit". Ini akan digunakan untuk akses SSH ke sistem. Juga di IAM, berikan tag zeroAccount
: yes
kepada pengguna Anda bersama dengan pengguna lain yang Anda inginkan untuk dapat melakukan SSH ke dalam sistem.
Perbarui semua konstanta di ops/aws/src/radical-stack/Config.ts
untuk mengatur domain Anda, tambahkan ARN untuk sertifikat dan VPC dari langkah sebelumnya, dll.
Di ops/aws
, lakukan npm install
dan npm run deploy
. Ini akan memakan waktu lama karena menampilkan banyak layanan (database, instans EC2, dll.). Jika gagal, sayangnya CloudFormation tidak dapat mengembalikan pembuatan banyak hal ini, jadi Anda harus masuk dan menghapus semuanya secara manual atau upaya berikutnya akan gagal karena beberapa objek sudah ada. (Semoga tidak gagal.)
(Mesin EC2 Anda akan segera mulai mogok dan terus restart karena servernya belum tersedia. Tidak apa-apa.)
Host yang kita gunakan sebagai benteng SSH diberi nama zero
. Tambahkan bait ke ~/.ssh/config
(buat jika perlu) yang berbunyi:
Host zero
HostName zero. cord .example.com
Port 28547
User YOUR_AWS_USERNAME
ForwardAgent yes
Kemudian jika sudah setidaknya 15 menit sejak Anda memulai zero (mengambil dan menginstal kunci publik SSH untuk akun pengguna setiap 15 menit), coba lakukan ssh zero
. Ini akan menjatuhkan Anda ke konsol. Jika ya, selamat, Anda sekarang berada di dalam jaringan pribadi virtual dan semuanya akan berfungsi.
Buka scripts/generate-dotenv.cjs
dan edit properti untuk menyesuaikannya dengan kebutuhan Anda. Paling tidak, Anda perlu memperbarui wilayah AWS dan nama host berbasis cord .com. Juga di fungsi buildProdEnv
tambahkan INCLUDE_SDK_TESTBED: '1'
di akhir.
Jalankan yang berikut ini dari mesin lokal Anda:
$ 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)';
Pada zero
, lakukan cssh -l ubuntu build3
, yang akan menghubungkan Anda ke mesin build. Kloning repo yang Anda gunakan (dengan semua perubahan di atas), lalu jalankan ./scripts/ci/build-on-commit.sh
. Ini akan membangun versi server dan memberi tahu Anda bahwa itu tidak akan menyebarkannya secara otomatis karena pengaturan heimdall, tetapi akan memberi Anda perintah untuk menjalankannya untuk mendorongnya secara manual (dimulai dengan scripts/manual-deploy.sh
).
Jalankan perintah penerapan manual. Ini akan gagal untuk di-push karena server saat ini tidak sehat, tapi tidak apa-apa. Setelah selesai, server akan mengambil kode baru pada siklus restart berikutnya dan akan muncul dengan benar.
Ubah staging
menjadi prod
pada perintah yang Anda jalankan dan jalankan lagi. Hal yang sama akan terjadi, tetapi server prod akan baik-baik saja.
Anda sekarang harus memiliki versi semua infrastruktur cord yang berjalan. Anda dapat mengikuti langkah-langkah di bagian README sebelumnya untuk memigrasikan data DB dan S3 Anda ke penyimpanan data.
Pada tahap ini, Anda dapat menambahkan kunci API untuk layanan apa pun yang Anda gunakan, seperti SendGrid dan LaunchDarkly. Kuncinya ada di SecretsManager di bawah item yang dijelaskan dengan cukup baik, atau Anda dapat mencarinya di scripts/generate-dotenv.cjs
.
Sekarang Anda siap berangkat. Kapan pun Anda ingin membuat versi baru, Anda dapat masuk ke mesin build3
dan menjalankannya sendiri, atau Anda dapat menggunakan contoh di github_workflows
untuk menjalankan alur kerja GitHub untuk menjalankan berbagai hal. (Anda harus menyetel INCLUDE_GITHUB_RUNNER
ke true
di ops/aws/src/radical-stack/ec2/build3.ts
agar GitHub Actions Runner dapat berjalan.)