Memulai
Untuk menggandakan repositori:
Apabila kamu ingin membantu untuk menerjemahkan Corsace, mintalah akses pada situs https://translate.corsace.io dan bergabunglah ke server Discord Corsace
*Gunakan hak admin pada konsolmu pada saat menjalankan perintah.
Instal node-modules:
OS | Cmd |
---|---|
WSL/Unix | git clone https://github.com/Corsace/Corsace |
Windows* | git clone -c core.symlinks=true https://github.com/Corsace/Corsace |
*Gunakan hak admin pada konsolmu pada saat menjalankan perintah.
Pada repositori yang kamu fork, kamu dapat mengubah tautan github sesuai kebutuhanmu.
Instalasi
Catatan: Pastikan kamu menggunakan node versi 16.6.0 atau lebih tinggi agar berbagai fitur Discord yang terdapat pada repositori ini dapat berjalan dengan baik.
Instal node-modules:
npm i
Paket
The callback URL should be set to:
- Node.js (v16.6.0 atau lebih tinggi)
- TypeScript (v4.9.4 atau lebih tinggi)
- Docker (v3.8 atau lebih tinggi)
Paket utama:
- TypeORM (v0.3.11)
- Koa (v2.13.1)
- Discord.js (v14.9.0)
- Bancho.js (v0.11.3)
- Nuxt 2 (v2.16.3)
- Astro/Starlight (v0.10.0)
Paket lainnya:
Konfigurasi Awal
Gandakan config/default.json
ke config/user/$USER.json
, dengan $USER
merupakan nama pengguna sistem (yang dapat kamu akses melalui process.env.USER
atau USERNAME
milik node).
Pada terminal, jalankan node
dan ketik process.env.USER
untuk mencari tahu nama penggunamu.
Ke depannya, dokumentasi ini akan merujuk pada nilai config/user/$USER.json
personal pada berkas config milikmu sebagai config
.
API osu!
config.osu.v1.apiKey
Kamu dapat memperoleh kunci API v1 pada bagian “API Lawas” yang terdapat pada halaman pengaturan akun di https://osu.ppy.sh/home/account/edit.
config.osu.v2.clientId
config.osu.v2.clientSecret
You will need to create a “New OAuth Application” in the “OAuth” section from the same osu! account settings page containing the API v1 key at https://osu.ppy.sh/home/account/edit.
Add [config.corsace.publicUrl]/api/login/osu/callback
to the Application Callback URLs
section in the popup.
Create and seed the whole Corsace database using: NODE_ENV=development npm run -- typeorm migration:run -d ormconfig
Apabila sudah, kamu akan memperoleh Client ID
dan Client Secret
yang akan perlu untuk kamu salin ke berkas config milikmu pada kolomnya masing-masing.
config.osu.bancho
Kamu dapat memperoleh kata sandi IRC password at the bottom of the same osu! accounts settings page at https://osu.ppy.sh/home/account/edit.
Apabila kamu menggunakan akan osu! khusus bot, pastikan kamu mengatur nilai parameter botAccount
ke true; apabila tidak, atur nilai ini ke false.
Discord
config.discord
Pengaturan
Langkah ini merupakan langkah pengaturan yang paling memakan waktu. Kamu akan memerlukan:
Developer Mode yang Aktif
Centang opsi yang terdapat pada
User Settings > Appearance > Advanced > Developer Mode
Opsi ini akan memungkinkan kamu untuk mengklik kanan ID pengguna, role, channel, dan lain sebagainya dan menyalin ID mereka.
Server Discord
Buat server Discord baru apabila kamu belum memiliki server. Proses ini hanya akan memerlukan satu channel. Buat role “staff” dan berikan role ini kepada dirimu sendiri.
Klik kanan nama servermu dan pilih “Copy ID”. Salin ID ini ke config.discord.guild
.
Klik kanan nama servermu dan pilih “Copy ID”. Kamu dapat membuat role untuk berbagai kebutuhan pada config, ATAU kamu juga dapat menyalin ID role ini pada baris config berikut untuk memberikanmu kuasa penuh akan segala sesuatunya.
config.discord.roles.corsace.corsace
config.discord.roles.corsace.core
config.discord.roles.corsace.headStaff
config.discord.roles.corsace.staff
yang dilanjutkan dengan menyalin ID kamu pada seluruh role “staff” lainnya pada config.
Aplikasi Discord
Tuju https://discord.com/developers/applications dan buat aplikasi baru melalui menu “New Application”.
Klien
Kamu akan perlu untuk menambahkan “Client ID” dan “Client Secret” kepada config sebagai berikut:
discord: {
...,
clientId: "<Client ID>",
clientSecret: "<Client Secret>",
}
Client ID dan secret ini dapat ditemukan pada tab OAuth2
milik aplikasi Discord.\
OAuth2
Tuju bagian OAuth2 pada bot dan tambahkan URL redirect berikut:
config.corsace.publicUrl + /api/login/discord/callback
Tambahkan juga URL redirect yang mengandung Client ID milik bot milikmu dengan format sebagai berikut:
https://discordapp.com/oauth2/authorize?&client_id=<CLIENT ID>&scope=bot&permissions=8
Ikuti tautan ini untuk menambahkan bot milikmu ke dalam server.
Bot
Tuju bagian Bot dan salin token bot milikmu.
Sisipkan token ini pada config.discord.token
.
Pastikan kamu telah mencentang Server Members
dan Message Content
pada daftar pilihan yang tersedia pada menu Privileged Gateway Intents sebelum memulai bot. Apabila tidak, bot kamu tidak akan berjalan dan kamu akan dihadapkan dengan pesan error [DISALLOWED INTENTS]
.
Webhook GitHub
Langkah ini sepenuhnya opsional, dan hanya akan berguna apabila kamu benar-benar ingin melacak rekam jejak aktivitas fork GitHub milikmu di Discord dan memanfaatkan webhook GitHub milik Corsace.
Pada channel Discord yang ingin kamu gunakan sebagai tempat untuk menerima notifikasi, buat webhook baru melalui Settings -> Integrations -> Create Webhook
, salin URL webhook tersebut, dan sisipkan pada config.github.webhookUrl
di configmu.
Buat kata sandi dan tempatkan kata sandi ini pada config.github.webhookSecret
.
Pada Github, tuju pengaturan repositori dan buat webhook baru. Tulis URL berikut pada kolom yang tersedia:
config.corsace.publicUrl + /api/github
Tentukan tipe konten ke application/json
beserta dengan secret webhook milik kata sandi yang kamu buat sebelumnya.
Database
config.database
Pengaturan
Terdapat dua cara untuk mengatur database, baik melalui Docker atau secara manual.
Melalui Docker (Direkomendasikan)
Kami menyediakan berkas docker-compose.yml
yang akan bertindak selayaknya berkas produksi. Kamu dapat memulai layanan database dengan menggunakan perintah: docker-compose up -d database
atau npm run database
.
Database ini akan merespon permitaan pada 127.0.0.1:3306
dengan nama database, nama pengguna, dan kata sandi corsace
.
Pengaturan MariaDB Manual
Apabila kamu tidak ingin menggunakan Docker, kamu akan perlu untuk mengistal MariaDB dan membuat database kosong yang dapat kamu namai sesuka hati.
Untuk membuat database ini, kamu hanya perlu untuk menjalankan:
mysql -u root -p
MySQL> create database <new_db_name>;
Pastikan kamu memperbarui config.database
dengan nama dan informasi kredensial database yang akan kamu gunakan.
Menghasilkan Seed Database
Berikan seed kepada seluruh database Corsace melalui perintah: NODE_ENV=development npm run -- typeorm migration:run -d ormconfig
Penyimpanan Objek/S3
Kami menggunakan media penyimpanan objek yang kompatibel dengan S3 untuk menyimpan dan melayani paket beatmap, yang seluruhnya terkonfigurasi dalam config.s3
.
Walaupun proyek ini diutamakan untuk Cloudflare R2, kamu dapat menggunakan layanan penyimpanan objek S3 lainnya selama layanan tersebut mendukung unggahan multi-bagian dan URL pre-signed.
Kami menggunakan tiga bucket:
team-avatars
merupakan bucket publik yang menyimpan avatar tim, yang dapat dilayani oleh CDN tanpa autentikasimappacks
merupakan bucket publik yang menyimpan paket map publik, yang dapat dilayani oleh CDN tanpa autentikasimappacks-temp
merupakan bucket pribadi yang menyimpan paket beatmap privat yang tidak ditujukan untuk akses publik
Paket beatmap yang dihasilkan akan terlebih dahulu diunggah ke bucket ini, di mana para pengguna akan kemudian diberikan akses melalui URL yang telah ditandatangani sebelumnya (pre-signed URL).
Paket beatmap yang bersifat privat tidak ditujukan untuk disimpan secara permanen. Kamu dihimbau untuk mengatur agar paket beatmap ini akan dihapus secara otomatis setelah 1 hari.
Paket beatmap yang ke depannya akan dirilis secara publik akan dipindahkan ke bucket mappacks
.
Cloudflare R2
Tuju halaman dasbor Cloudflare R2. Aktifkan paket Cloudflare-mu apabila belum aktif (hati-hati untuk tidak melebihi batas penggunaan pada paket gratis).
Buat bucket mappacks
dan team-avatars
dan aktifkan subdomain R2.dev mereka, atau hubungkan domain khusus untuk masing-masing bucket.
Buat bucket mappacks-temp
dan tambahkan peraturan agar objek otomatis terhapus setelah 7 hari (kosongkan kolom prefix apabila diminta).
Setelahnya, tentukan nama host ke <cloudflare account id>.r2.cloudflarestorage.com
dan peroleh kredensial S3 dari https://dash.cloudflare.com/?to=/:account/r2/api-tokens. Pastikan kamu memberikan izin Edit
kepada token alih-alih izin Read
yang diatur secara default.
Centrifugo
Kami menggunakan Centrifugo untuk menampilkan notifikasi secara real-time. Kamu dapat menemukan dokumentasi seputar Centrifugo di sini.
Pengaturan
Pada Unix:
Jalankan perintah npm run centrifugo
untuk memulai server Centrifugo. Secara default, server ini akan tersedia pada http://localhost:8001
selama kamu tidak mengubah nilai port pada berkas konfigurasi.
Pada WSL/Windows ATAU apabila metode di atas tidak bekerja:
Instal berkas biner (.exe) dari daftar rilisan terbaru dan tambahkan ke folder root proyek ini.
Setelahnya, jalankan perintah npm run centrifugo:local
untuk memulai server Centrifugo. Apabila kamu ingin mengubah nomor port yang digunakan, ubah nilai parameter ‘-p’ pada script yang terkait di berkas package.json
dan URL API config milikmu.
Langkah Berikutnya
Apabila kamu ingin mengembangkan frontend web, kamu disarankan untuk mengikuti instruksi pada kedua dokumen berikut secara berurutan:
Untuk pengembangan dokumentasi, kamu dapat mengunjungi halaman ini.
Untuk pengembangan backend yang spesifik, kamu dapat mengunjungi halaman Menjalankan Lingkungan
yang terkait melalui menu Server/Panduan
yang terdapat pada sidebar.