Private Cloud Storage Access: Membangun Cloud Storage Pribadi dengan PHP
Cloud storage biasanya identik dengan layanan seperti Google Drive, OneDrive, atau Dropbox. Namun, konsep cloud storage sebenarnya juga dapat diterapkan pada sistem yang dikelola secara pribadi.
Dari konsep tersebut, dikembangkan sebuah project bernama Private Cloud Storage Access, yaitu aplikasi cloud storage pribadi yang memungkinkan pengguna menyimpan dan mengelola berbagai file melalui antarmuka berbasis web.
Project ini dibuat sebagai single-user private cloud storage dengan fokus pada keamanan, pengelolaan file, dan kompatibilitas dengan lingkungan shared hosting atau cPanel.
Apa Itu Private Cloud Storage Access?
Private Cloud Storage Access merupakan aplikasi penyimpanan file pribadi yang dibangun menggunakan PHP murni.
Berbeda dengan aplikasi yang bergantung pada database SQL, project ini menggunakan JSON sebagai penyimpanan metadata dan filesystem sebagai tempat penyimpanan file.
Arsitektur tersebut membuat project menjadi relatif sederhana untuk dipasang pada lingkungan hosting yang mendukung PHP dan filesystem.
Source code project ini tersedia secara publik melalui repository Private Cloud Storage Access di GitHub.
Tampilan Seperti Cloud Storage Modern
Antarmuka aplikasi dibuat dengan pendekatan yang terinspirasi dari layanan cloud storage modern.
Pada halaman utama, pengguna dapat melihat folder dan file yang tersimpan dalam satu dashboard.
Beberapa bagian yang tersedia antara lain:
- My Cloud
- Starred
- Recent
- Trash
- Activity
- Settings
Tampilan file juga dapat menggunakan mode Grid maupun List, sehingga pengguna dapat memilih cara melihat file sesuai kebutuhan.
![Tampilan Private Cloud Storage]
Fitur Pengelolaan File
Aplikasi menyediakan berbagai fitur untuk mengelola file dan folder.
Pengguna dapat membuat folder baru, mengunggah file, mengatur file, serta melihat berbagai informasi mengenai file yang tersimpan.
Salah satu fitur yang tersedia adalah multi-file drag and drop. Proses upload juga dilengkapi dengan panel progress sehingga pengguna dapat melihat proses pengunggahan file.
Fitur tersebut membuat proses pengelolaan file menjadi lebih praktis dibandingkan sistem upload sederhana.
Universal File Preview
Salah satu bagian yang cukup penting dalam project ini adalah sistem Universal Preview Engine.
Aplikasi mendukung preview untuk beberapa jenis file, antara lain:
- JPG
- PNG
- GIF
- WebP
- SVG
- Video
- Audio
- File teks
- Source code
Untuk video dan audio, sistem juga mendukung HTTP Range Requests, sehingga media dapat melakukan seeking tanpa harus mengunduh seluruh file sekaligus.
Sementara itu, file yang tidak dapat ditampilkan secara langsung akan menggunakan fallback berupa kartu download.
Keamanan Penyimpanan
Karena aplikasi digunakan untuk menyimpan file pribadi, keamanan menjadi salah satu bagian penting dalam project ini.
Sistem login menggunakan password_hash() dengan Bcrypt. Selain itu, terdapat mekanisme rate limiting untuk membatasi percobaan login yang gagal.
Jika terjadi lima kali percobaan login yang gagal, sistem akan melakukan lockout selama 15 menit.
Project ini juga menerapkan perlindungan terhadap session fixation.
Tanpa Database SQL
Salah satu bagian yang menarik dari project ini adalah sistem penyimpanan metadata yang tidak menggunakan MySQL atau database SQL.
Metadata disimpan dalam file JSON yang dikelola melalui repository khusus.
Untuk mencegah masalah ketika terjadi beberapa proses yang mengakses data secara bersamaan, sistem menggunakan exclusive file locking dengan flock dan atomic rename.
Pendekatan tersebut digunakan untuk mengurangi risiko korupsi data ketika terjadi concurrent request.
Melindungi File dari Akses Langsung
File yang tersimpan tidak diletakkan sebagai file publik yang dapat langsung diakses melalui URL.
Folder data dan storage diberikan perlindungan melalui .htaccess. Akses langsung terhadap lokasi penyimpanan dibatasi dan eksekusi script PHP pada storage juga dinonaktifkan.
Dengan pendekatan tersebut, file diproses melalui aplikasi sebelum diberikan kepada pengguna.
Fitur Tambahan
Selain upload dan preview, Private Cloud Storage Access juga memiliki beberapa fitur untuk membantu pengelolaan file sehari-hari.
Beberapa di antaranya:
Starred
Digunakan untuk menandai file yang sering dibutuhkan.
Recent
Menampilkan file yang baru saja digunakan atau dimodifikasi.
Trash
File yang dihapus tidak langsung hilang secara permanen dan dapat dikelola melalui tempat sampah.
Activity
Mencatat aktivitas yang dilakukan pada sistem sehingga pengguna dapat mengetahui aktivitas pengelolaan file.
Project ini juga memiliki desain yang responsif untuk desktop, tablet, dan mobile.
Dibangun untuk Shared Hosting
Salah satu pertimbangan dalam pengembangan project ini adalah lingkungan deployment.
Tidak semua project cloud storage membutuhkan server khusus atau arsitektur yang kompleks. Private Cloud Storage Access dirancang agar dapat berjalan pada lingkungan shared hosting/cPanel yang mendukung PHP.
Struktur project memisahkan bagian public, application core, metadata, dan binary storage sehingga pengelolaan deployment dapat dilakukan dengan lebih terstruktur.
Struktur Project
Secara umum, project memiliki struktur seperti berikut:
cloud-storage/
├── public/
│ ├── index.php
│ ├── app.php
│ └── assets/
├── app/
│ ├── Config/
│ ├── Controllers/
│ ├── Middleware/
│ ├── Services/
│ ├── Preview/
│ ├── Repositories/
│ └── Helpers/
├── data/
├── storage/
│ ├── files/
│ └── trash/
└── .htaccess
Struktur tersebut memisahkan bagian antarmuka publik, logic aplikasi, metadata, dan penyimpanan binary.
Project Open Source
Source code Private Cloud Storage Access tersedia secara publik di GitHub sehingga struktur project dan implementasinya dapat dipelajari lebih lanjut.
Bagi developer yang tertarik dengan PHP, filesystem, keamanan aplikasi web, atau pengembangan cloud storage sederhana, project ini dapat menjadi salah satu contoh untuk dipelajari dan dikembangkan.
Lihat Source Code Private Cloud Storage Access di GitHub
Penutup
Private Cloud Storage Access merupakan contoh bagaimana aplikasi cloud storage pribadi dapat dibangun menggunakan teknologi web yang relatif sederhana.
Project ini menggabungkan beberapa konsep penting dalam pengembangan aplikasi web, mulai dari autentikasi, upload file, filesystem, JSON repository, file locking, preview media, session security, hingga perlindungan direktori menggunakan .htaccess.
Pengembangan project seperti ini juga menunjukkan bahwa aplikasi penyimpanan pribadi tidak selalu harus bergantung pada database SQL atau infrastruktur cloud yang kompleks.
Ke depannya, project ini masih dapat dikembangkan dengan berbagai fitur tambahan sesuai kebutuhan pengguna.