Appearance
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 Artefak | Target Sistem Operasi / Arsitektur | Tipe Berkas | Deskripsi |
|---|---|---|---|
dracin-launcher-windows-amd64.exe | Windows 10/11, Windows Server (x86_64) | PE32+ executable (console) | Launcher Go mandiri untuk pengguna Windows |
dracin-launcher-darwin-amd64 | macOS 10.15+ (Intel Core x86_64) | Mach-O 64-bit executable | Launcher Go mandiri untuk Mac berbasis prosesor Intel |
dracin-launcher-darwin-arm64 | macOS 11+ (Apple Silicon M1/M2/M3/M4) | Mach-O 64-bit executable | Launcher Go mandiri native untuk Mac Apple Silicon |
dracin-launcher-linux-amd64 | Ubuntu, Debian, CentOS, Fedora (x86_64) | ELF 64-bit LSB executable | Launcher Go mandiri untuk workstation Linux |
dracin-v1.0.0.tar.gz | Linux VPS Target | Gzip Tarball | Paket produksi aplikasi Dracin siap pasang (termasuk vendor & frontend) |
dracin-v1.0.0.tar.gz.sha256 | Linux VPS Target | Teks Checksum | Hash SHA-256 tunggal untuk verifikasi integritas paket aplikasi |
SHA256SUMS | Semua Platform | Teks Manifest | Rekapitulasi 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:
- Kompilasi murni Go cross-compile (
CGO_ENABLED=0,-trimpath,-ldflags "-s -w"). - Validasi integritas biner via header inspeksi (
fileutility: PE32+, Mach-O 64-bit x86_64/arm64, dan ELF 64-bit). - Verifikasi checksum kriptografis SHA-256 (
sha256sum -c SHA256SUMS). - Pengujian smoke test native lengkap di lingkungan Linux x64 (eksekusi CLI flag, loopback daemon boot, token auth, dan API query).
- Kompilasi murni Go cross-compile (
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:
- Klik tautan teks "More info" (Informasi selengkapnya) pada jendela peringatan biru tersebut.
- Tombol baru "Run anyway" (Tetap jalankan) akan muncul di bagian bawah.
- Klik "Run anyway".
- 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)
- Buka System Settings (Pengaturan Sistem) > Privacy & Security (Privasi & Keamanan).
- Gulir ke bagian Security.
- Di bawah judul "dracin-launcher was blocked from use because it is not from an identified developer", klik tombol "Open Anyway" (Tetap Buka).
- 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-arm64C. 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-amd64Jika 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 80804. 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.0Skrip ini akan:
- Memeriksa dan mengompilasi aset antarmuka web wizard tersemat jika belum ada.
- Mengompilasi 4 target biner mandiri secara paralel dengan CGO dimatikan (
CGO_ENABLED=0) dan simbol debug dibersihkan (-ldflags "-s -w"). - Memaketkan aplikasi Laravel lengkap beserta dependensi produksi ke dalam tarball
dracin-v1.0.0.tar.gz. - 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.0Skrip verifikasi ini mengeksekusi 4 gerbang pengujian:
- Validasi Eksistensi & Ukuran: Memastikan seluruh artefak biner dan paket ada dan memiliki ukuran wajar (> 1 MB untuk biner, > 5 MB untuk tarball rilis).
- 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). - Validasi Kriptografis (
sha256sum -c): Memverifikasi integritas seluruh hash biner terhadapSHA256SUMS(wajib exit 0). - Smoke Test Native Linux: Mengeksekusi biner native dengan flag
--version,--help, dan melakukan uji boot daemon loopback pada port acak untuk memastikan endpoint/api/statusmerespons 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-dracinSkrip master ini mengorkestrasikan:
- Pengecekan status repositori git bersih (
100% committed). - Kompilasi 4 launcher biner OS dan bundel mandiri aplikasi via
scripts/build-distribution.sh. - Validasi header arsitektur biner dan verifikasi integritas kriptografis
dist/SHA256SUMS. - Pengemasan bundel ZIP deliverable pembeli via
scripts/package-product-zip.phpkeproducts/agc-dracin-3.0.0.zip(ataudracin-v{version}.zipuntuk slug lama) dengan audit sanitasi zero-leak (.git, .env, dev tests). - Pengunggahan artefak ZIP dan SHA256 ke Cloudflare R2 bucket
dojovia modul native AWS SigV4scripts/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.shSkrip ini memvalidasi 8 gerbang pemeriksaan:
- Pemeriksaan sintaks shell, Node.js, dan PHP (
0 syntax error). - Antarmuka CLI dan opsi bantuan (
--help). - Pengujian AWS SigV4 zero-dependency uploader dalam mode dry-run.
- Simulasi eksekusi master release pipeline
scripts/release.sh(--dry-run). - Header arsitektur biner 4 OS (PE32+, Mach-O, ELF).
- Integritas kriptografis berkas SHA256SUMS dan checksum zip.
- Struktur ZIP deliverable pembeli dan audit sanitasi zero-leak.
- 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).