The Unified Multi-Cloud Storage Pooling & Intelligent Stream Gateway
Aggregate up to 9 Google Drive & S3 cloud accounts into one seamless, high-performance virtual storage pool with zero server disk buffering.
9-in-1 Cloud is a specialized, open-source reverse-proxy storage gateway and virtualization layer built for developers, homelab operators, and power users. It connects and aggregates up to 9 Google Drive accounts (15 GB each = 135.00 GB free) plus enterprise S3 buckets (Cloudflare R2, MinIO, Wasabi, or AWS S3) into a single unified virtual storage pool with zero server disk buffering.
Managing multiple cloud accounts usually requires juggling browser profiles, switching accounts, and dealing with storage imbalances where one drive sits empty while another overflows. Typical VPS gateway solutions write entire files onto the host disk before uploading to cloud storage, risking disk exhaustion, slow I/O bottlenecks, and VPS failure.
- 135 GB+ Free Unified Pool: Immediately unites 9 free Google Drive accounts into a single massive 135 GB virtual storage pool.
- Zero-Buffering Direct Stream: Files pipe directly from the client socket through Node.js stream buffers into Google Drive API v3 without writing a single byte to the VPS server hard drive.
- Dynamic Load Balancing: Real-time quota detection automatically routes incoming files to the account with the most remaining space.
- Relational Virtual Directory: A single unified MySQL or SQLite virtual file system hierarchy gives you complete folder trees, tags, search, and instant shareable streaming links.
flowchart TD
subgraph Clients["Clients & Ingestion Sources"]
UI["Web Dashboard (React 19 + Material 3)"]
CLI["CLI Scripts / cURL Direct Stream"]
APP["Third-Party Software (API Key Auth)"]
end
subgraph GatewayCore["9-in-1 Cloud Gateway Server (Node.js 20+ Express 5)"]
AUTH["Authentication & Token Guard\n(JWT Bearer / Argon2 / SHA-256 API Keys)"]
DISPATCH["Intelligent Dispatcher & Load Balancer\n(Space-Aware / Round-Robin / Priority)"]
STREAM["Direct Memory Stream Engine (Busboy)\nZero Bytes Written to Host Hard Drive"]
VFS["Virtual File System Schema\n(Folder Hierarchy, Tags, Quota Stats)"]
end
subgraph StorageCloud["Distributed Multi-Cloud Storage Matrix"]
GD1["Google Drive #1 (15 GB)"]
GD2["Google Drive #2 (15 GB)"]
GD3["Google Drive #3 (15 GB)"]
GD4["Google Drive #4 (15 GB)"]
GD5["Google Drive #5 (15 GB)"]
GD6["Google Drive #6 (15 GB)"]
GD7["Google Drive #7 (15 GB)"]
GD8["Google Drive #8 (15 GB)"]
GD9["Google Drive #9 (15 GB)"]
S3B["Enterprise S3 (Cloudflare R2 / MinIO / AWS)"]
end
subgraph Database["Metadata Persistence"]
DB[(MySQL / SQLite Database)]
end
UI --> AUTH
CLI --> AUTH
APP --> AUTH
AUTH --> DISPATCH
DISPATCH --> STREAM
STREAM --> VFS
VFS <--> DB
STREAM -- Direct In-Memory Stream Chunking --> GD1
STREAM -- Direct In-Memory Stream Chunking --> GD2
STREAM -- Direct In-Memory Stream Chunking --> GD3
STREAM -- Direct In-Memory Stream Chunking --> GD4
STREAM -- Direct In-Memory Stream Chunking --> GD5
STREAM -- Direct In-Memory Stream Chunking --> GD6
STREAM -- Direct In-Memory Stream Chunking --> GD7
STREAM -- Direct In-Memory Stream Chunking --> GD8
STREAM -- Direct In-Memory Stream Chunking --> GD9
STREAM -- S3 Multipart Upload --> S3B
- Client issues a
POST /files/uploadmultipart stream. - Express pipes request chunks into
Busboyon the fly. - The Intelligent Dispatcher queries remaining capacities across all 9 connected accounts.
- An active OAuth2 client is retrieved (refreshing access tokens automatically if near expiration).
- File chunks pipe directly into Google Drive API v3
drive.files.create({ media: { body: fileStream } }). - Zero bytes of the uploaded file are saved to the server's local hard drive. The file streams straight from the client socket into Google's cloud servers.
- Upon completion, Google returns the remote file ID and size, which is recorded in the MySQL VFS metadata layer.
-
Clone the repository:
git clone https://github.com/smartworldarafath/9-in-1-Cloud.git cd 9-in-1-Cloud -
Configure environment settings:
cp .env.docker.example .env # Edit .env with your JWT secret, database credentials, and encryption key -
Launch the entire stack:
docker compose up -d --build
-
Access your dashboard:
- Web Dashboard:
http://localhost:3000 - Gateway REST API:
http://localhost:5000/api
- Web Dashboard:
- Node.js: v20.x LTS or higher
- MySQL: 8.0+ (or SQLite)
- Google Cloud Console: OAuth2 Client credentials (
client_id,client_secret)
cd backend
npm install
cp .env.example .env
npx prisma migrate deploy
npm run build
npm startcd frontend
npm install
npm run build
npm startUpload and stream files headlessly from backup scripts, automated microservices, and CI/CD pipelines.
curl -X POST "http://localhost:5000/api/files/upload" \
-H "Authorization: Bearer <API_KEY_OR_JWT>" \
-F "file=@/path/to/archive.tar.gz" \
-F "folderId=optional-virtual-folder-id"import fs from 'fs';
import FormData from 'form-data';
import axios from 'axios';
const form = new FormData();
form.append('file', fs.createReadStream('./dataset.zip'));
const response = await axios.post('http://localhost:5000/api/files/upload', form, {
headers: {
...form.getHeaders(),
'Authorization': 'Bearer YOUR_API_KEY'
},
maxBodyLength: Infinity,
maxContentLength: Infinity
});
console.log('Pooled File Uploaded:', response.data);import requests
with open('large_model.bin', 'rb') as f:
files = {'file': f}
headers = {'Authorization': 'Bearer YOUR_API_KEY'}
res = requests.post('http://localhost:5000/api/files/upload', files=files, headers=headers)
print(res.json())If 9-in-1 Cloud saved you cloud storage costs, helped your homelab, or inspired your architecture, please consider supporting the project:
Cards / bKash / Nagad supportkori.com/arafathrahman
|
![]() Ntag: @arafath_rahman9Account: Md Arafath Rahman
|
![]() Account ID: 1965421414
|
![]() Email: arafathrahman710@gmail.comCustomer ID: 70366820
|
| Method | Details & Direct Links |
|---|---|
| supportkori.com/arafathrahman (bKash, Nagad, Visa, Mastercard) | |
Ntag: @arafath_rahman9 · Account: Md Arafath Rahman |
|
Account ID: 1965421414 |
|
Email: arafathrahman710@gmail.com · Customer ID: 70366820 |
9-in-1 Cloud is open-source software licensed under the Apache License, Version 2.0.
Copyright © 2026 Arafath Rahman and Contributors.
- Icons & Design Inspiration: Google Material 3 Expressive, Material Symbols, and Lucide Icons.
- Storage Protocols: Google Drive API v3, AWS SDK v3 Client-S3, and Busboy Stream Duplexing.




