Skip to content

Paket Distribusi Multi-OS & Panduan Hambatan Sistem Operasi ​

Dokumen ini menjelaskan arsitektur distribusi biner mandiri (standalone single-binary) Dracin Launcher untuk berbagai sistem operasi (Windows x64, macOS Intel x64, macOS Apple Silicon arm64, Linux x64), struktur paket rilis, status sertifikat digital, serta panduan transparan untuk mengatasi mekanisme keamanan bawaan masing-masing sistem operasi (OS friction).


1. Ikhtisar Artefak Distribusi ​

Seluruh paket distribusi dihasilkan melalui skrip otomatis scripts/build-distribution.sh ke dalam direktori dist/:

Berkas ArtefakTarget Sistem Operasi / ArsitekturTipe BerkasDeskripsi
dracin-launcher-windows-amd64.exeWindows 10/11, Windows Server (x86_64)PE32+ executable (console)Launcher Go mandiri untuk pengguna Windows
dracin-launcher-darwin-amd64macOS 10.15+ (Intel Core x86_64)Mach-O 64-bit executableLauncher Go mandiri untuk Mac berbasis prosesor Intel
dracin-launcher-darwin-arm64macOS 11+ (Apple Silicon M1/M2/M3/M4)Mach-O 64-bit executableLauncher Go mandiri native untuk Mac Apple Silicon
dracin-launcher-linux-amd64Ubuntu, Debian, CentOS, Fedora (x86_64)ELF 64-bit LSB executableLauncher Go mandiri untuk workstation Linux
dracin-v1.0.0.tar.gzLinux VPS TargetGzip TarballPaket produksi aplikasi Dracin siap pasang (termasuk vendor & frontend)
dracin-v1.0.0.tar.gz.sha256Linux VPS TargetTeks ChecksumHash SHA-256 tunggal untuk verifikasi integritas paket aplikasi
SHA256SUMSSemua PlatformTeks ManifestRekapitulasi hash SHA-256 kriptografis seluruh artefak yang terurut (LC_ALL=C sort)

2. Transparansi Status Code Signing & Baseline Pengujian ​

Status Sertifikat Digital: Unsigned (Tanpa Sertifikat) ​

Proyek Dracin saat ini tidak memiliki sertifikat penandatanganan kode digital (baik Microsoft Authenticode / EV Code Signing Certificate untuk Windows, maupun sertifikat Apple Developer ID untuk notarization macOS).

Oleh karena itu:

  • Seluruh berkas eksekusi biner dikompilasi dalam keadaan unsigned.
  • Kami tidak membuat klaim palsu "zero-friction": sistem operasi modern akan secara aktif memunculkan peringatan keamanan ketika pengguna pertama kali menjalankan biner unduhan.
  • Panduan di bawah ini wajib diikuti oleh pengguna akhir untuk mengizinkan eksekusi.

Status Runner Pengujian CI: ​

  • Saat ini GitHub Actions self-hosted runners untuk native Windows dan native macOS adalah 0 (nol).
  • Baseline jaminan mutu saat ini didasarkan pada:
    1. Kompilasi murni Go cross-compile (CGO_ENABLED=0, -trimpath, -ldflags "-s -w").
    2. Validasi integritas biner via header inspeksi (file utility: PE32+, Mach-O 64-bit x86_64/arm64, dan ELF 64-bit).
    3. Verifikasi checksum kriptografis SHA-256 (sha256sum -c SHA256SUMS).
    4. Pengujian smoke test native lengkap di lingkungan Linux x64 (eksekusi CLI flag, loopback daemon boot, token auth, dan API query).

3. Panduan Mengatasi Hambatan Keamanan OS (Handling OS Friction) ​

A. Microsoft Windows (Windows 10 / 11) ​

Ketika menjalankan dracin-launcher-windows-amd64.exe yang diunduh dari internet, filter Microsoft Defender SmartScreen akan mencegat eksekusi dengan dialog:

"Windows protected your PC — Microsoft Defender SmartScreen prevented an unrecognized app from starting."

Cara Menjalankan: ​

  1. Klik tautan teks "More info" (Informasi selengkapnya) pada jendela peringatan biru tersebut.
  2. Tombol baru "Run anyway" (Tetap jalankan) akan muncul di bagian bawah.
  3. Klik "Run anyway".
  4. Jendela terminal konsol akan terbuka dan peramban default Anda akan otomatis membuka wizard Dracin di http://127.0.0.1:<port>/?token=....

B. Apple macOS (Intel & Apple Silicon) ​

Ketika membuka dracin-launcher-darwin-amd64 atau dracin-launcher-darwin-arm64 yang diunduh melalui browser, mekanisme macOS Gatekeeper akan memblokir eksekusi dengan pesan:

"“dracin-launcher-darwin-arm64” cannot be opened because Apple cannot check it for malicious software." atau "“dracin-launcher” is from an unidentified developer."

Penyebabnya adalah atribut kuarantin (quarantine flag) com.apple.quarantine yang disematkan macOS pada file unduhan dari internet.

Metode 1: Melalui System Settings (GUI) ​

  1. Buka System Settings (Pengaturan Sistem) > Privacy & Security (Privasi & Keamanan).
  2. Gulir ke bagian Security.
  3. Di bawah judul "dracin-launcher was blocked from use because it is not from an identified developer", klik tombol "Open Anyway" (Tetap Buka).
  4. Masukkan password akun Mac atau Touch ID Anda untuk mengonfirmasi.

Metode 2: Menghapus Atribut Kuarantin via Terminal (Rekomendasi Pengguna Mahir) ​

Buka aplikasi Terminal dan jalankan perintah berikut sebelum mengeksekusi biner:

bash
# Berikan izin eksekusi
chmod +x dracin-launcher-darwin-arm64

# Hapus quarantine flag
xattr -d com.apple.quarantine dracin-launcher-darwin-arm64

# Jalankan launcher
./dracin-launcher-darwin-arm64

C. Linux (Ubuntu, Debian, Fedora, Arch, CentOS) ​

Pada lingkungan Linux, berkas yang diunduh secara default tidak memiliki izin eksekusi (executable bit).

Cara Menjalankan: ​

Buka terminal di direktori unduhan:

bash
# Berikan izin eksekusi
chmod +x dracin-launcher-linux-amd64

# Jalankan launcher
./dracin-launcher-linux-amd64

Jika Anda menjalankan di lingkungan server tanpa antarmuka grafis (headless) atau tidak ingin peramban terbuka otomatis, gunakan opsi --no-browser:

bash
./dracin-launcher-linux-amd64 --no-browser --port 8080

4. Cara Membangun Paket Distribusi (Build) ​

Untuk mengompilasi seluruh biner dan memaketkan rilis standalone Dracin, jalankan skrip berikut dari root repositori:

bash
./scripts/build-distribution.sh --version v1.0.0

Skrip ini akan:

  1. Memeriksa dan mengompilasi aset antarmuka web wizard tersemat jika belum ada.
  2. Mengompilasi 4 target biner mandiri secara paralel dengan CGO dimatikan (CGO_ENABLED=0) dan simbol debug dibersihkan (-ldflags "-s -w").
  3. Memaketkan aplikasi Laravel lengkap beserta dependensi produksi ke dalam tarball dracin-v1.0.0.tar.gz.
  4. Menghasilkan berkas checksum manifest reproducible dist/SHA256SUMS.

5. Cara Memverifikasi Hasil Distribusi (Targeted Verification) ​

Jalankan pengujian otomatis terarah untuk memverifikasi integritas seluruh artefak:

bash
./scripts/test-distribution.sh --dist-dir dist --version v1.0.0

Skrip verifikasi ini mengeksekusi 4 gerbang pengujian:

  1. Validasi Eksistensi & Ukuran: Memastikan seluruh artefak biner dan paket ada dan memiliki ukuran wajar (> 1 MB untuk biner, > 5 MB untuk tarball rilis).
  2. Validasi Header Biner (file): Memverifikasi signature arsitektur setiap biner (PE32+ untuk Windows, Mach-O 64-bit untuk macOS Intel/Apple Silicon, ELF 64-bit untuk Linux).
  3. Validasi Kriptografis (sha256sum -c): Memverifikasi integritas seluruh hash biner terhadap SHA256SUMS (wajib exit 0).
  4. Smoke Test Native Linux: Mengeksekusi biner native dengan flag --version, --help, dan melakukan uji boot daemon loopback pada port acak untuk memastikan endpoint /api/status merespons sukses.

6. Pipeline Rilis Master & Pengunggahan Cloudflare R2 (scripts/release.sh) ​

Untuk mengotomatisasi seluruh alur dari kompilasi biner hingga publikasi ke penyimpanan publik Cloudflare R2 Dojo:

bash
# Uji simulasi tanpa publikasi (dry-run)
bash scripts/release.sh 3.0.0 --slug agc-dracin --dry-run

# Eksekusi rilis produksi live
bash scripts/release.sh 3.0.0 --slug agc-dracin

Skrip master ini mengorkestrasikan:

  1. Pengecekan status repositori git bersih (100% committed).
  2. Kompilasi 4 launcher biner OS dan bundel mandiri aplikasi via scripts/build-distribution.sh.
  3. Validasi header arsitektur biner dan verifikasi integritas kriptografis dist/SHA256SUMS.
  4. Pengemasan bundel ZIP deliverable pembeli via scripts/package-product-zip.php ke products/agc-dracin-3.0.0.zip (atau dracin-v{version}.zip untuk slug lama) dengan audit sanitasi zero-leak (.git, .env, dev tests).
  5. Pengunggahan artefak ZIP dan SHA256 ke Cloudflare R2 bucket dojo via modul native AWS SigV4 scripts/upload_r2.cjs.

7. Verifikasi Pipeline Rilis Terarah (< 30s) ​

Jalankan skrip pengujian terarah rilis untuk memvalidasi seluruh pipeline rilis dan uploader R2:

bash
bash scripts/test-release.sh

Skrip ini memvalidasi 8 gerbang pemeriksaan:

  1. Pemeriksaan sintaks shell, Node.js, dan PHP (0 syntax error).
  2. Antarmuka CLI dan opsi bantuan (--help).
  3. Pengujian AWS SigV4 zero-dependency uploader dalam mode dry-run.
  4. Simulasi eksekusi master release pipeline scripts/release.sh (--dry-run).
  5. Header arsitektur biner 4 OS (PE32+, Mach-O, ELF).
  6. Integritas kriptografis berkas SHA256SUMS dan checksum zip.
  7. Struktur ZIP deliverable pembeli dan audit sanitasi zero-leak.
  8. Kompatibilitas penamaan berkas dengan scanner membership Dojo (ScanR2Files.php).

Untuk panduan lengkap maintainer, baca [docs/deployment/release-r2.md](file:///home/dev/repos/dracin/docs/deployment/release-r2.md).

AGC Dracin — Platform streaming drama mandiri berkinerja tinggi untuk komunitas Dojo.