Observed since 20 Oct, 21:36 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
9Drive - Personal Cloud Storage & Universal API Gateway

9Drive adalah platform virtual cloud storage gateway modern yang menggabungkan banyak akun Google Drive dan S3-Compatible Storage (Cloudflare R2, MinIO, Wasabi, AWS S3, Backblaze B2) ke dalam satu dashboard terpadu bergaya Google Drive Material Design 3 (MD3).
Dilengkapi dengan High-Performance CDN Media Gateway, External Upload API, serta Client-Side Productivity Tools Suite lengkap (alat olah PDF, AI Hapus Background Gambar, Ekstraksi Audio Video, dan Utilitas Data) yang berjalan 100% di browser secara aman, cepat, dan terintegrasi langsung dengan penyimpanan Drive Anda.
9Drive dapat dipasang secara global di sistem operasi manapun (Windows, macOS, Linux) tanpa perlu setup database manual, menggunakan bundled local-first storage engine (SQLite) dan auto-launching browser dashboard.
Buka terminal / Command Prompt dan jalankan:
npm install -g 9drive
Setelah terpasang, cukup ketik perintah berikut dari direktori mana saja untuk membuka 9Drive:
9drive
9Drive akan otomatis menyiapkan direktori data lokal
~/.9drive, menyinkronkan database SQLite, dan membuka antarmuka web di browser default Anda (http://localhost:9999).
💡 Pasang Icon di Desktop (Opsional):
Bagi Anda yang ingin membuka 9Drive cukup dengan klik dua kali icon Desktop/Start Menu tanpa membuka terminal, jalankan:9drive shortcut(Tersedia untuk Windows, macOS, dan Linux).
(Catatan: Anda juga bisa menjalankannya instan tanpa instalasi menggunakan npx 9drive)
| Perintah | Deskripsi |
|---|---|
9drive / 9drive start | Menjalankan server lokal dan membuka dashboard di browser |
9drive shortcut | Memasang shortcut / icon launcher di Desktop (Opsional) |
9drive status | Memeriksa lokasi direktori data, ukuran database SQLite, & konfigurasi |
9drive backup | Membuat cadangan (snapshot backup) database lokal secara instan |
9drive open | Membuka antarmuka 9Drive di browser |
9drive --port <num> | Menjalankan pada port kustom (contoh: --port 8080) |
9drive --db <url> | Menghubungkan ke database kustom (MySQL / PostgreSQL / SQLite) |
Repositori ini telah disesuaikan dan dikembangkan dengan penambahan serangkaian fitur produktivitas:
#0B57D0, background neutral, rounded cards).ToastContext): Notifikasi mengambang yang responsif dan interaktif untuk memberikan konfirmasi aksi (unggah, hapus, salin tautan, mutasi berkas) tanpa mengganggu alur kerja pengguna.Pusat alat pengolah dokumen dan multimedia yang berjalan sepenuhnya di browser client (tanpa membebani CPU server atau mengirim berkas pribadi ke pihak ketiga):
/tools/pdf)/tools/image & /tools/remove-bg)/tools/remove-bg):
@imgly/background-removal)./tools/video).wav) langsung di browser./tools/data)/cdn)Gerbang pengiriman media berkinerja tinggi untuk kebutuhan embedding gambar, video, dan berkas statis:
GET /cdn/view/:id: Pengiriman berkas dengan header inline disposition. Sangat optimal untuk tag HTML <img>, <video>, audio player, maupun pratinjau dokumen di web eksternal.GET /cdn/raw/:id: Pengiriman berkas dengan header attachment untuk unduhan langsung.ETag, Last-Modified, validasi If-None-Match (HTTP 304 Not Modified), serta Cache-Control: public, max-age=31536000, immutable untuk menghemat bandwidth server.*) khusus untuk jalur /cdn, /api, dan /public.<img>, dan sintaks Markdown)./api)/api):
files:upload).POST /api/v1/uploads dengan otentikasi header X-API-Key atau Authorization: Bearer <API_KEY>.test-external-upload.ts).ShareModal):
/shared): Tampilan tab terpisah untuk berkas yang dibagikan kepada Anda (Shared with me) dan berkas yang Anda bagikan ke orang lain (Shared by me)./starred) & Sampah (/trash): Manajemen berkas favorit yang terhubung ke Google Drive API, serta pemulihan atau penghapusan permanen dari tempat sampah.9drive/
├── backend/ # API Server (Express + TypeScript + Prisma)
│ ├── prisma/ # Skema database & file migrasi MySQL
│ └── src/
│ ├── config/ # Konfigurasi env & Prisma client
│ ├── middleware/ # Otentikasi JWT, API Key, dan error handler
│ ├── modules/
│ │ ├── api-keys/ # Pengelolaan API Key developer
│ │ ├── audit-logs/ # Pencatatan riwayat aktivitas pengguna
│ │ ├── auth/ # Registrasi, login, dan refresh token
│ │ ├── cdn/ # High-performance CDN media streaming gateway
│ │ ├── connected-accounts/ # Manajemen multi-akun Google Drive
│ │ ├── files/ # Manipulasi berkas, streaming, dan preview
│ │ ├── folders/ # Virtual folder tree management
│ │ ├── google/ # Integrasi Google Drive API & OAuth
│ │ ├── public-api/ # Endpoint REST API publik (/api/v1/uploads)
│ │ ├── storage/ # Ringkasan kuota dan manajemen penyimpanan
│ │ ├── system/ # Updater otomatis & status sistem
│ │ └── uploads/ # Multi-part upload streaming engine
│ └── scripts/ # Script pengujian upload eksternal & seeding
│
├── frontend/ # Aplikasi Web Client (React 18 + Vite + Tailwind/MD3)
│ └── src/
│ ├── components/
│ │ ├── drive/ # UI Google Drive MD3 (FileGrid, ContextMenu, Drawer, ShareModal, dll)
│ │ ├── tools/ # UI Tools Suite (Picker, BeforeAfterPreview, SaveDestination, Icons)
│ │ └── ui/ # Komponen atomik UI (Buttons, Inputs, Dialogs, Cards)
│ ├── context/ # State context (DriveFilter, UploadManager, ToastNotification)
│ ├── layouts/ # Layout utama Drive (Sidebar, Header, Main Content Area)
│ ├── lib/tools/ # Core engine tools (PDF, Image, Video-to-audio, Background removal AI)
│ └── pages/
│ ├── tools/ # Halaman Tools Hub, PDF View, Image View, Video View, Data View, RemoveBG
│ ├── AllFilesPage.tsx
│ ├── ApiManagementPage.tsx
│ ├── QuotaTrackerPage.tsx
│ ├── SettingsPage.tsx
│ ├── SharedPage.tsx
│ ├── StarredPage.tsx
│ └── TrashPage.tsx
│
├── setup.ps1 # Script setup otomatis untuk Windows PowerShell
├── setup.sh # Script setup otomatis untuk Linux/macOS
├── docker-compose.yml # Orchestration Docker (MySQL + Backend + Frontend)
└── package.json # Monorepo root dev runner (concurrently)
Default basis data MySQL yang digunakan pada development lokal:
Host: localhost
Port: 3306
Database: 9drive
User: root
Password: (kosong / sesuaikan dengan konfigurasi MySQL Anda)
Script setup akan secara otomatis memasang seluruh dependensi backend dan frontend, membuat berkas .env dengan token acak yang aman, serta membuat skema database Prisma.
Buka PowerShell di direktori 9drive:
powershell -ExecutionPolicy Bypass -File .\setup.ps1
Buka Terminal di direktori 9drive:
chmod +x ./setup.sh
./setup.sh
Dari direktori root proyek 9drive:
# Pasang dependensi monorepo runner
npm install
# Pasang dependensi backend dan frontend
npm run install:all
Pastikan server MySQL Anda telah aktif, lalu buat basis data:
CREATE DATABASE IF NOT EXISTS 9drive;
Salin konfigurasi default atau buat berkas backend/.env:
DATABASE_URL="mysql://root@localhost:3306/9drive"
APP_PORT=4000
FRONTEND_URL="http://localhost:5173"
JWT_ACCESS_SECRET="ganti-dengan-secret-jwt-acak-minimal-32-karakter"
TOKEN_ENCRYPTION_KEY="kunci-enkripsi-tepat-32-karakter-key!"
ACCESS_TOKEN_TTL_SECONDS=900
REFRESH_TOKEN_TTL_DAYS=30
MAX_UPLOAD_BYTES=5368709120
RECAPTCHA_SECRET_KEY=""
# (Opsional) Kredensial Google OAuth juga dapat diisi langsung via UI Settings
GOOGLE_CLIENT_ID=""
GOOGLE_CLIENT_SECRET=""
GOOGLE_REDIRECT_URI="http://localhost:4000/connected-accounts/google/callback"
Buat berkas frontend/.env:
VITE_API_URL=http://localhost:4000
VITE_RECAPTCHA_SITE_KEY=
cd backend
npm run prisma:migrate
cd ..
Jalankan satu perintah di folder root 9drive untuk memulai backend dan frontend secara bersamaan:
npm run dev
Aplikasi dapat langsung diakses pada:
(Opsional jika ingin menjalankan terpisah: npm run dev:backend dan npm run dev:frontend)
.env dari template Docker:
cp .env.docker.example .env
.env (isi password MySQL, kredensial Google, dan secret token).docker compose up -d --build
http://localhost:5173http://localhost:4000localhost:3306🤖 Cara Termudah & Paling Praktis (Rekomendasi): Panduan Interaktif Lewat AI
Konfigurasi Google Cloud Console memiliki banyak submenu (project, consent screen, scopes, test users, redirect URI) dan tata letak antarmuka Google sering kali diperbarui.
Agar tidak bingung dan mendapatkan panduan interaktif step-by-step paling mutakhir, Anda bisa langsung menyalin prompt berikut ke ChatGPT, Claude, atau Gemini:Tolong pandu saya langkah demi langkah secara mendetail untuk membuat Google OAuth 2.0 Credentials (Client ID & Client Secret) di Google Cloud Console untuk aplikasi 9Drive: 1. Cara membuat project baru di Google Cloud Console (https://console.cloud.google.com). 2. Cara mengaktifkan Google Drive API di Library. 3. Cara konfigurasi OAuth Consent Screen (User Type: External, Scopes apa saja yang dibutuhkan seperti Google Drive API & Userinfo). 4. PENTING: Cara menambahkan email Gmail saya ke daftar "Test Users" agar tidak error 403 access_denied saat login. 5. Cara membuat Credentials -> OAuth Client ID (pilih Web Application) dan memasukkan Authorized redirect URIs: - Jika via CLI / Local Dashboard: http://localhost:9999/connected-accounts/google/callback - Jika via Monorepo Dev: http://localhost:4000/connected-accounts/google/callback 6. Di mana saya menyalin Client ID dan Client Secret yang dihasilkan untuk dimasukkan ke 9Drive. Tolong jelaskan secara runut, ringkas, dan jelas sesuai tampilan Google Cloud Console terbaru!
https://www.googleapis.com/auth/drive
https://www.googleapis.com/auth/userinfo.email
https://www.googleapis.com/auth/userinfo.profile
http://localhost:5173
http://localhost:9999
http://localhost:4000/connected-accounts/google/callback
http://localhost:9999/connected-accounts/google/callback
POST /auth/register — Pendaftaran akun pengguna baruPOST /auth/login — Masuk dengan email & kata sandiGET /auth/google/url — Inisiasi login cepat via GooglePOST /auth/google/exchange — Pertukaran kode otentikasi GooglePOST /auth/refresh — Memperbarui token akses JWTGET /auth/me — Mendapatkan profil pengguna saat iniGET /cdn/view/:id — Streaming media publik inline (untuk tag <img>, video player, dll)GET /cdn/raw/:id — Unduhan langsung berkas publik (attachment disposition)GET /cdn/:id — Redirect otomatis ke endpoint viewPOST /api/v1/uploads — Mengunggah berkas menggunakan API Key (X-API-Key)GET /files — Mendapatkan daftar berkas (mendukung parameter folderId, q, mimeType, accountId)POST /uploads — Mengunggah berkas ke Drive/S3 via dashboard (multipart streaming)PATCH /files/:id — Mengubah nama atau metadata berkasDELETE /files/:id — Memindahkan berkas ke sampah atau menghapus permanenPOST /files/:id/share — Membuat tautan berbagi publikGET /folders — Mendapatkan susunan pohon folder virtualPOST /folders — Membuat folder virtual baruGET /connected-accounts — Daftar akun Google Drive & S3 yang terhubungGET /storage/summary — Statistik agregasi total kuota dan penggunaan penyimpananPOST /connected-accounts/:id/sync-quota — Sinkronisasi ulang kuota dari Google DriveTOKEN_ENCRYPTION_KEY)..env telah didaftarkan dalam .gitignore dan tidak boleh di-commit ke repositori publik.Untuk menghasilkan bundle produksi:
# Build frontend dan backend secara bersamaan
npm run build
Bundle produksi yang dihasilkan:
backend/dist (dijalankan dengan node dist/server.js)frontend/dist (dapat disajikan via Nginx atau static file server)Didistribusikan di bawah lisensi Apache 2.0. Lihat berkas LICENSE untuk informasi lisensi selengkapnya.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.1.6Registry latest | 7 Oct 2026 | 15 | |
| 1.1.5 | 3 Oct 2026 | 15 | |
| 1.1.4 | 3 Oct 2026 | 15 | |
| 1.1.3 | 3 Oct 2026 | 15 | |
| 1.1.2 | 3 Oct 2026 | 15 | |
| 1.1.1 | 2 Oct 2026 | 15 | |
| 1.1.0 | 2 Oct 2026 | 15 | |
| 1.0.9 | 2 Oct 2026 | 15 | |
| 1.0.8 | 2 Oct 2026 | 15 | |
| 1.0.7 | 2 Oct 2026 | 15 | |
| 1.0.6 | 2 Oct 2026 | 15 | |
| 1.0.5 | 2 Oct 2026 | 15 | |
| 1.0.4 | 2 Oct 2026 | 15 | |
| 1.0.3 | 2 Oct 2026 | 15 | |
| 1.0.2 | 2 Oct 2026 | 15 | |
| 1.0.1 | 2 Oct 2026 | 15 | |
| 1.0.0 | 1 Oct 2026 | 15 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 21:36 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:414e2d486b0653748e9078c430f1b4fa8f65a7bf1bb2c4d20c3bd730540f4f30