Panduan Lengkap Mount S3 Object Storage ke Ubuntu dengan s3fs + Cloudflare CDN

Object Storage berbasis S3 semakin banyak digunakan untuk aplikasi modern karena mampu menyimpan file dalam jumlah besar dengan performa tinggi. Pada aplikasi seperti sistem ujian online, e-learning, atau portal media, file seperti gambar, audio, dan video sering diakses oleh ribuan pengguna secara bersamaan.

Dengan menggabungkan Object Storage, Cloudflare CDN, dan mounting filesystem menggunakan s3fs, server aplikasi dapat mengakses storage eksternal seolah-olah seperti disk lokal. Pendekatan ini membuat integrasi aplikasi jauh lebih sederhana sekaligus meningkatkan performa distribusi file melalui CDN.

 

Daftar Isi


Arsitektur Sistem

Berikut gambaran arsitektur penggunaan Object Storage dengan CDN:

User Browser
      │
      ▼
Cloudflare CDN
      │
      ▼
Object Storage (S3 Compatible)
      │
      ▼
Server Ubuntu (s3fs mount)
      │
      ▼
Aplikasi Web

Dengan arsitektur ini, sebagian besar request file akan dilayani oleh Cloudflare CDN sehingga mengurangi beban langsung pada Object Storage.


1. Membuat Bucket Object Storage

Buat bucket baru pada layanan Object Storage, karena ini nanti bucket akan dihubungkan dengan Cloudflare maka buat bucket dengan nama domain full, misalnya:

Nama Bucket: cdn.domainanda.com

Contoh struktur isi bucket:

cdn.domainanda.com/
 ├── public/
 │    ├── images/
 │    ├── audio/
 │    └── video/
 └── private/

Folder public digunakan untuk file yang dapat diakses melalui CDN, sedangkan folder private digunakan untuk backup atau file internal aplikasi.


2. Menghubungkan Storage ke Cloudflare

Buat subdomain CDN, misalnya:

cdn.domainanda.com

Tambahkan DNS record di Cloudflare:

Type : CNAME
Name : cdn
Target : cdn.domainanda.com.is3.cloudhost.id
Proxy : ON

Dengan konfigurasi ini, semua request file akan melewati jaringan CDN Cloudflare.


3. Membuat Cache Rule di Cloudflare

Masuk ke menu Rules → Cache Rules lalu buat rule baru:

IF
Hostname equals cdn.domainanda.com

THEN
Cache eligibility : Eligible for cache
Edge TTL : 1 month
Browser TTL : Respect existing headers

Cache rule ini memastikan file statis dapat disimpan di edge server Cloudflare.


4. Mengaktifkan Tiered Cache

Aktifkan fitur ini pada menu:

Caching → Tiered Cache → Enable

Tiered cache mengurangi jumlah request langsung ke origin storage dengan menggunakan cache regional Cloudflare.


5. Mengatur Bucket Policy Public

Install AWS CLI terlebih dahulu:

sudo apt update
sudo apt install awscli

Konfigurasi access key:

aws configure

Buat file policy:

nano policy.json
{
 "Version":"2012-10-17",
 "Statement":[
  {
   "Effect":"Allow",
   "Principal":"*",
   "Action":["s3:GetObject"],
   "Resource":["arn:aws:s3:::cdn.domainanda.com/public/*"]
  }
 ]
}

Terapkan policy:

aws --endpoint-url https://endpoint-object-storage \
    s3api put-bucket-policy \
    --bucket backupdata \
    --policy file://policy.json

6. Install dan Konfigurasi s3fs

Install s3fs:

sudo apt install s3fs

Buat file credential:

echo ACCESS_KEY:SECRET_KEY | sudo tee /etc/passwd-s3fs
sudo chmod 600 /etc/passwd-s3fs

Buat directory cache:

sudo mkdir -p /var/cache/s3fs
sudo chmod 777 /var/cache/s3fs

7. Mount Object Storage via fstab

Buat mount directory:

sudo mkdir -p /mnt/s3-data

Edit file:

sudo nano /etc/fstab

Tambahkan konfigurasi berikut:

cdn.domainanda.com /mnt/s3-data fuse.s3fs _netdev,allow_other,use_path_request_style,url=https://cdn.domainanda.com.is3.cloudhost.id,passwd_file=/etc/passwd-s3fs,use_cache=/var/cache/s3fs,mp_umask=002,uid=33,gid=33,retries=5,connect_timeout=15,readwrite_timeout=30,stat_cache_expire=300,enable_noobj_cache,parallel_count=20,multireq_max=20,max_background=100 0 0

Mount filesystem:

sudo mount -a

8. Bind Mount ke Folder Aplikasi

Tambahkan bind mount agar aplikasi mengakses folder lokal:

/mnt/s3-data/public /home/app/upload/public none bind,_netdev 0 0

Reload mount:

sudo mount -a

Dengan konfigurasi ini aplikasi cukup mengakses:

/home/app/upload/public

Padahal file sebenarnya berada di Object Storage.


FAQ

Apakah Object Storage bisa melayani ribuan user sekaligus?

Ya. Object Storage dirancang untuk skalabilitas tinggi dan dapat menangani banyak request secara paralel. Namun untuk performa maksimal disarankan menggunakan CDN seperti Cloudflare.

Apakah s3fs aman digunakan di production?

s3fs cukup stabil untuk penggunaan filesystem, terutama untuk file statis seperti gambar, audio, dan video. Namun untuk upload besar biasanya lebih baik menggunakan upload langsung ke S3.

Apakah Cloudflare bisa cache file dari S3?

Ya. Selama file diakses melalui domain yang diproxy oleh Cloudflare, CDN dapat melakukan caching sehingga request tidak selalu menuju Object Storage.


Kesimpulan

Mengintegrasikan Object Storage dengan Cloudflare CDN dan s3fs memberikan solusi penyimpanan yang scalable dan efisien untuk aplikasi modern. Dengan konfigurasi yang tepat, server aplikasi dapat mengakses storage eksternal seperti filesystem lokal sekaligus memanfaatkan performa CDN untuk melayani ribuan pengguna secara bersamaan.

Pendekatan ini sangat cocok digunakan untuk aplikasi seperti sistem platform e-learning, portal media, maupun aplikasi web yang membutuhkan distribusi file dengan performa tinggi dan biaya penyimpanan yang efisien.

The power of documents

Kami sajikan dengan bahasa yang mudah dengan disertai command line yang bisa di copy-paste sehingga memudahkan untuk melakukan modifikasi command line